@wssto2/vue-core 0.2.0 → 0.4.0

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 (309) hide show
  1. package/README.md +36 -0
  2. package/dist/AccessGate.vue_vue_type_script_setup_true_lang-DcbZBINh.js +22 -0
  3. package/dist/AccountMenuItem.vue_vue_type_script_setup_true_lang-CPeNxh5K.js +76 -0
  4. package/dist/ActionRow.vue_vue_type_script_setup_true_lang-LlfIPWsJ.js +45 -0
  5. package/dist/Activity-2gGxQn7v.js +156 -0
  6. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-CeKK8_g5.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-BoinCY93.js} +48 -47
  7. package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-e4hzkzg3.js → AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js} +1 -1
  8. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-CWLB3xsR.js → AsyncSection.vue_vue_type_script_setup_true_lang-Blj6KgCr.js} +4 -4
  9. package/dist/{Banner.vue_vue_type_script_setup_true_lang-n_wGPIIu.js → Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js} +1 -1
  10. package/dist/{BottomDock.vue_vue_type_script_setup_true_lang-DhlMnPC2.js → BottomDock.vue_vue_type_script_setup_true_lang-CjN7xYEr.js} +1 -1
  11. package/dist/{Button.vue_vue_type_script_setup_true_lang-B1eZgLae.js → Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js} +1 -1
  12. package/dist/Changes-Bm8xvagD.js +129 -0
  13. package/dist/CollectionPage.vue_vue_type_script_setup_true_lang-DCBVw2Qd.js +1485 -0
  14. package/dist/DataTable.vue_vue_type_script_setup_true_lang-UH6f9puS.js +52 -0
  15. package/dist/DateField.vue_vue_type_script_setup_true_lang-GVasv8ao.js +255 -0
  16. package/dist/DeadLetters-CMRtXn_N.js +104 -0
  17. package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-DyhYHRyz.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-D1arePCZ.js} +1 -1
  18. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-BeGpHMUP.js → EmptyState.vue_vue_type_script_setup_true_lang-50p-Mp8I.js} +1 -1
  19. package/dist/FormErrors.vue_vue_type_script_setup_true_lang-BQb7wLT0.js +276 -0
  20. package/dist/FormGroup.vue_vue_type_script_setup_true_lang-DG2zdG_a.js +136 -0
  21. package/dist/FormView.vue_vue_type_script_setup_true_lang-cr0xNDXP.js +38 -0
  22. package/dist/General-CTqd0SLK.js +145 -0
  23. package/dist/HeaderAction.vue_vue_type_script_setup_true_lang-Cgji-Jrr.js +45 -0
  24. package/dist/{Icon.vue_vue_type_script_lang-DtC4_mkz.js → Icon.vue_vue_type_script_lang-D7oC-d-S.js} +54 -37
  25. package/dist/{IconTile.vue_vue_type_script_setup_true_lang-Csfv6Sel.js → IconTile.vue_vue_type_script_setup_true_lang-BpIjgu5E.js} +1 -1
  26. package/dist/KeyValue.vue_vue_type_script_setup_true_lang-wcZcvnow.js +35 -0
  27. package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CvwoT1JF.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-Cv7KlA5y.js} +2 -2
  28. package/dist/{Menu.vue_vue_type_script_setup_true_lang-CrMj6KPD.js → Menu.vue_vue_type_script_setup_true_lang-DTbAcDzL.js} +66 -58
  29. package/dist/{Modal.vue_vue_type_script_setup_true_lang-BQZM49gC.js → Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js} +4 -4
  30. package/dist/NewRolePage-DTOWIxxC.js +42 -0
  31. package/dist/NoAccess.vue_vue_type_script_setup_true_lang-DWxq-MTM.js +31 -0
  32. package/dist/NumberField.vue_vue_type_script_setup_true_lang-C7N5nq0P.js +113 -0
  33. package/dist/OtpInput.vue_vue_type_script_setup_true_lang-gp4FfWAH.js +95 -0
  34. package/dist/PageBar.vue_vue_type_script_setup_true_lang-B7qdEeej.js +47 -0
  35. package/dist/{Panel.vue_vue_type_script_setup_true_lang-BQmv3cLb.js → Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js} +1 -1
  36. package/dist/PanelActions.vue_vue_type_script_setup_true_lang-E9VdIGkf.js +46 -0
  37. package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-ElDizaW2.js → PhotoViewer.vue_vue_type_script_setup_true_lang-QPCW3Xi6.js} +1 -1
  38. package/dist/Popover.vue_vue_type_script_setup_true_lang-Dx-tDhNE.js +125 -0
  39. package/dist/ProfilePage-BlpiWH_W.js +654 -0
  40. package/dist/{ProgressTrack.vue_vue_type_script_setup_true_lang-1DDaNs2W.js → ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js} +2 -2
  41. package/dist/RecordHeader.vue_vue_type_script_setup_true_lang-C_ymvhHU.js +64 -0
  42. package/dist/ResourcePage.vue_vue_type_script_setup_true_lang-CwI_sROp.js +173 -0
  43. package/dist/RoleEditor.vue_vue_type_script_setup_true_lang-CmwvSytD.js +300 -0
  44. package/dist/RolePage-DZk7BZOc.js +315 -0
  45. package/dist/RolesPage-DzGGCMnm.js +115 -0
  46. package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +23 -0
  47. package/dist/SectionList.vue_vue_type_script_setup_true_lang-BFYls8fR.js +148 -0
  48. package/dist/SectionNavigator.vue_vue_type_script_setup_true_lang-DSMXEaCs.js +314 -0
  49. package/dist/SegmentedField.vue_vue_type_script_setup_true_lang-BMqWlpsL.js +58 -0
  50. package/dist/SelectField.vue_vue_type_script_setup_true_lang-7O1BAx04.js +423 -0
  51. package/dist/SessionList.vue_vue_type_script_setup_true_lang-D5KRitar.js +111 -0
  52. package/dist/Sessions-CWqjjTr1.js +96 -0
  53. package/dist/SettingsPage-C4s0IdkW.js +255 -0
  54. package/dist/Sheet.vue_vue_type_script_setup_true_lang-DgOFV4fa.js +145 -0
  55. package/dist/SignIn-zzKY__df.js +140 -0
  56. package/dist/SignInPage-Rqnus_s-.js +60 -0
  57. package/dist/SignInTable.vue_vue_type_script_setup_true_lang-CEbAvZ_C.js +79 -0
  58. package/dist/SignIns-Cnf9BVR0.js +66 -0
  59. package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-BJIA2JfI.js +93 -0
  60. package/dist/SwitchField.vue_vue_type_script_setup_true_lang-CM8yp9JQ.js +64 -0
  61. package/dist/Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js +155 -0
  62. package/dist/TextField.vue_vue_type_script_setup_true_lang-B9dwVASU.js +269 -0
  63. package/dist/TextareaField.vue_vue_type_script_setup_true_lang-CqAWfABZ.js +68 -0
  64. package/dist/TimeField.vue_vue_type_script_setup_true_lang-DWfAUlnz.js +164 -0
  65. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-CSY_mMm1.js → Timestamp.vue_vue_type_script_setup_true_lang-FVRUr-9y.js} +1 -1
  66. package/dist/UserRecord-DqigxVxH.js +267 -0
  67. package/dist/UsersList-DNlZsI9J.js +155 -0
  68. package/dist/ViewTabs.vue_vue_type_script_setup_true_lang-BJIoZAlH.js +28 -0
  69. package/dist/access/AddRoleDialog.vue.d.ts +19 -0
  70. package/dist/access/BindingRow.vue.d.ts +19 -0
  71. package/dist/access/EffectiveAccess.vue.d.ts +12 -0
  72. package/dist/access/NewRolePage.vue.d.ts +2 -0
  73. package/dist/access/PermissionTree.vue.d.ts +13 -0
  74. package/dist/access/PersonAccess.vue.d.ts +21 -0
  75. package/dist/access/ReplaceRoleDialog.vue.d.ts +17 -0
  76. package/dist/access/RoleCompareDialog.vue.d.ts +14 -0
  77. package/dist/access/RoleEditor.vue.d.ts +28 -0
  78. package/dist/access/RolePage.vue.d.ts +2 -0
  79. package/dist/access/RolesPage.vue.d.ts +2 -0
  80. package/dist/access/api.d.ts +26 -0
  81. package/dist/access/catalogue.d.ts +64 -0
  82. package/dist/access/context.d.ts +20 -0
  83. package/dist/access/effective.d.ts +42 -0
  84. package/dist/access/feature.d.ts +27 -0
  85. package/dist/access/index.d.ts +13 -0
  86. package/dist/access/index.js +15 -0
  87. package/dist/access/labels.d.ts +35 -0
  88. package/dist/access/refusals.d.ts +6 -0
  89. package/dist/access/routes.d.ts +45 -0
  90. package/dist/access/scopes.d.ts +20 -0
  91. package/dist/app/contributions.d.ts +1 -1
  92. package/dist/app/feature.d.ts +8 -0
  93. package/dist/app/index.js +259 -296
  94. package/dist/bottomDock-BZEiOPYZ.js +12 -0
  95. package/dist/button/Button.vue.d.ts +3 -3
  96. package/dist/button/index.js +1 -1
  97. package/dist/chrome-BS3xJcad.js +93 -0
  98. package/dist/client/client.d.ts +13 -0
  99. package/dist/client/index.d.ts +3 -1
  100. package/dist/client/index.js +11 -138
  101. package/dist/client/route.d.ts +59 -0
  102. package/dist/client-k9euDWF4.js +147 -0
  103. package/dist/closeOverlays-CjVsIrpL.js +8 -0
  104. package/dist/collection/definition.d.ts +3 -0
  105. package/dist/collection/http.d.ts +4 -2
  106. package/dist/collection/index.js +74 -2428
  107. package/dist/collection/useCollection.d.ts +2 -0
  108. package/dist/content/index.js +37 -66
  109. package/dist/contributions-DsfmDoRD.js +26 -0
  110. package/dist/control-7EP4tjYy.js +313 -0
  111. package/dist/controls/DateButton.vue.d.ts +1 -1
  112. package/dist/controls/PopupButton.vue.d.ts +1 -1
  113. package/dist/controls/index.js +11 -10
  114. package/dist/defineRoutes-BGAdiIrt.js +19 -0
  115. package/dist/{describeError-l5T9b8Uv.js → describeError-Ctga6GcS.js} +1 -1
  116. package/dist/environment-Dva-SG8D.js +6 -0
  117. package/dist/{error-Bb_dr_Ay.js → error-CD7x0Jrz.js} +2 -2
  118. package/dist/feature-DdUAfyi4.js +25 -0
  119. package/dist/fieldMessages-C3Rpbktw.js +25 -0
  120. package/dist/form/CheckboxField.vue.d.ts +1 -1
  121. package/dist/form/CommandDialog.vue.d.ts +1 -1
  122. package/dist/form/DateField.vue.d.ts +1 -1
  123. package/dist/form/DateTimeField.vue.d.ts +1 -1
  124. package/dist/form/EditorPage.vue.d.ts +1 -1
  125. package/dist/form/Field.vue.d.ts +1 -1
  126. package/dist/form/FileField.vue.d.ts +1 -1
  127. package/dist/form/FormGroup.vue.d.ts +1 -1
  128. package/dist/form/FormGroupButton.vue.d.ts +1 -1
  129. package/dist/form/FormRow.vue.d.ts +1 -1
  130. package/dist/form/I18nField.vue.d.ts +3 -3
  131. package/dist/form/MoneyField.vue.d.ts +1 -1
  132. package/dist/form/MonthYearField.vue.d.ts +1 -1
  133. package/dist/form/NumberCell.vue.d.ts +1 -1
  134. package/dist/form/NumberField.vue.d.ts +2 -2
  135. package/dist/form/OtpInput.vue.d.ts +2 -2
  136. package/dist/form/PhotoField.vue.d.ts +1 -1
  137. package/dist/form/SwitchField.vue.d.ts +1 -1
  138. package/dist/form/TextField.vue.d.ts +3 -3
  139. package/dist/form/TextareaField.vue.d.ts +3 -3
  140. package/dist/form/TimeField.vue.d.ts +1 -1
  141. package/dist/form/date/DatePickerSheet.vue.d.ts +1 -1
  142. package/dist/form/date/MonthYearPanel.vue.d.ts +1 -1
  143. package/dist/form/index.js +1159 -3474
  144. package/dist/guards-Dve61KjR.js +51 -0
  145. package/dist/http-CNcDHSOj.js +194 -0
  146. package/dist/i18n/index.d.ts +281 -0
  147. package/dist/i18n/index.js +52 -52
  148. package/dist/icon/core.d.ts +17 -0
  149. package/dist/icon/index.js +1 -1
  150. package/dist/identity/ImpersonationBanner.vue.d.ts +2 -0
  151. package/dist/identity/LocaleSync.vue.d.ts +2 -0
  152. package/dist/identity/SessionExpiry.vue.d.ts +2 -0
  153. package/dist/identity/SignInAsButton.vue.d.ts +15 -0
  154. package/dist/identity/SignInPage.vue.d.ts +2 -0
  155. package/dist/identity/context.d.ts +7 -0
  156. package/dist/identity/feature.d.ts +16 -0
  157. package/dist/identity/fieldMessages.d.ts +15 -0
  158. package/dist/identity/index.d.ts +16 -0
  159. package/dist/identity/index.js +18 -0
  160. package/dist/identity/profile/DetailsPanel.vue.d.ts +11 -0
  161. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +14 -0
  162. package/dist/identity/profile/EmailPanel.vue.d.ts +11 -0
  163. package/dist/identity/profile/PanelActions.vue.d.ts +17 -0
  164. package/dist/identity/profile/PasswordPanel.vue.d.ts +2 -0
  165. package/dist/identity/profile/ProfileMenuItem.vue.d.ts +2 -0
  166. package/dist/identity/profile/ProfilePage.vue.d.ts +2 -0
  167. package/dist/identity/profile/SessionsPanel.vue.d.ts +2 -0
  168. package/dist/identity/profile/SignInsPanel.vue.d.ts +2 -0
  169. package/dist/identity/profile/VerifyCode.vue.d.ts +49 -0
  170. package/dist/identity/profile/routes.d.ts +13 -0
  171. package/dist/identity/session.d.ts +30 -0
  172. package/dist/identity/shared/ActionRow.vue.d.ts +20 -0
  173. package/dist/identity/shared/ChangeFeed.vue.d.ts +11 -0
  174. package/dist/identity/shared/PageBar.vue.d.ts +12 -0
  175. package/dist/identity/shared/SectionIntro.vue.d.ts +16 -0
  176. package/dist/identity/shared/SessionList.vue.d.ts +19 -0
  177. package/dist/identity/shared/SignInTable.vue.d.ts +11 -0
  178. package/dist/identity/shared/ViewTabs.vue.d.ts +23 -0
  179. package/dist/identity/shared/signInEvents.d.ts +9 -0
  180. package/dist/identity/signIn.d.ts +27 -0
  181. package/dist/identity/useSignInForm.d.ts +20 -0
  182. package/dist/identity/user.d.ts +6 -0
  183. package/dist/identity/users/DeactivateDialog.vue.d.ts +18 -0
  184. package/dist/identity/users/NewUserDialog.vue.d.ts +9 -0
  185. package/dist/identity/users/SetPasswordDialog.vue.d.ts +16 -0
  186. package/dist/identity/users/UserRecord.vue.d.ts +2 -0
  187. package/dist/identity/users/UsersList.vue.d.ts +2 -0
  188. package/dist/identity/users/access.d.ts +4 -0
  189. package/dist/identity/users/context.d.ts +9 -0
  190. package/dist/identity/users/feature.d.ts +34 -0
  191. package/dist/identity/users/languages.d.ts +4 -0
  192. package/dist/identity/users/list.d.ts +8 -0
  193. package/dist/identity/users/person.d.ts +26 -0
  194. package/dist/identity/users/personSections.d.ts +22 -0
  195. package/dist/identity/users/routes.d.ts +22 -0
  196. package/dist/identity/users/sections/Activity.vue.d.ts +2 -0
  197. package/dist/identity/users/sections/Changes.vue.d.ts +2 -0
  198. package/dist/identity/users/sections/General.vue.d.ts +2 -0
  199. package/dist/identity/users/sections/Sessions.vue.d.ts +2 -0
  200. package/dist/identity/users/sections/SignIn.vue.d.ts +2 -0
  201. package/dist/identity/users/sections/SignIns.vue.d.ts +2 -0
  202. package/dist/identity/users/status.d.ts +4 -0
  203. package/dist/index-BsJ92eub.js +504 -0
  204. package/dist/index-CGv-u1Ws.js +459 -0
  205. package/dist/index-GcLnFF-z.js +706 -0
  206. package/dist/index.d.ts +1 -1
  207. package/dist/index.js +1 -1
  208. package/dist/internal/languageName.d.ts +2 -0
  209. package/dist/keepAlive-WYQGRhuz.js +48 -0
  210. package/dist/languageName-CItV_SOv.js +11 -0
  211. package/dist/languages-BShG9LpE.js +10 -0
  212. package/dist/leaveGuard-Cc8yeLxM.js +72 -0
  213. package/dist/modal/Modal.vue.d.ts +1 -1
  214. package/dist/modal/Sheet.vue.d.ts +2 -0
  215. package/dist/modal/index.js +5 -5
  216. package/dist/modules/access/entities.d.ts +112 -0
  217. package/dist/modules/access/routes.d.ts +67 -0
  218. package/dist/modules/access/schemas.d.ts +73 -0
  219. package/dist/modules/events/entities.d.ts +16 -0
  220. package/dist/modules/events/routes.d.ts +17 -0
  221. package/dist/modules/events/schemas.d.ts +16 -0
  222. package/dist/modules/identity/entities.d.ts +150 -0
  223. package/dist/modules/identity/routes.d.ts +118 -0
  224. package/dist/modules/identity/schemas.d.ts +145 -0
  225. package/dist/modules/notification/entities.d.ts +46 -0
  226. package/dist/modules/notification/routes.d.ts +26 -0
  227. package/dist/modules/notification/schemas.d.ts +25 -0
  228. package/dist/{navigation-B33ikiCS.js → navigation-Cm3iChlR.js} +21 -20
  229. package/dist/neighbors-DpaIMQAL.js +86 -0
  230. package/dist/notifications/InboxPanel.vue.d.ts +16 -0
  231. package/dist/notifications/MarkAllRead.vue.d.ts +7 -0
  232. package/dist/notifications/NotificationBell.vue.d.ts +2 -0
  233. package/dist/notifications/SettingsLink.vue.d.ts +6 -0
  234. package/dist/notifications/context.d.ts +20 -0
  235. package/dist/notifications/deadletters/DeadLetters.vue.d.ts +2 -0
  236. package/dist/notifications/deadletters/access.d.ts +3 -0
  237. package/dist/notifications/deadletters/list.d.ts +3 -0
  238. package/dist/notifications/deadletters/routes.d.ts +13 -0
  239. package/dist/notifications/feature.d.ts +31 -0
  240. package/dist/notifications/inbox.d.ts +62 -0
  241. package/dist/notifications/index.d.ts +13 -0
  242. package/dist/notifications/index.js +8 -0
  243. package/dist/notifications/settings/EmailPanel.vue.d.ts +14 -0
  244. package/dist/notifications/settings/QuietHoursPanel.vue.d.ts +14 -0
  245. package/dist/notifications/settings/SettingsMenuItem.vue.d.ts +2 -0
  246. package/dist/notifications/settings/SettingsPage.vue.d.ts +2 -0
  247. package/dist/notifications/settings/categoryText.d.ts +9 -0
  248. package/dist/notifications/settings/routes.d.ts +13 -0
  249. package/dist/notifications/settings/settings.d.ts +18 -0
  250. package/dist/notifications/settings/state.d.ts +16 -0
  251. package/dist/notifications/state.d.ts +27 -0
  252. package/dist/notifications/stream.d.ts +21 -0
  253. package/dist/options-Ba_0uLWN.js +18 -0
  254. package/dist/overlay/AlertDialog.vue.d.ts +3 -3
  255. package/dist/overlay/Popover.vue.d.ts +1 -1
  256. package/dist/overlay/closeOverlays.d.ts +7 -0
  257. package/dist/overlay/index.js +21 -20
  258. package/dist/page/AdaptivePageShell.vue.d.ts +2 -2
  259. package/dist/page/ResourceHeader.vue.d.ts +2 -2
  260. package/dist/page/index.js +99 -457
  261. package/dist/phone/PhoneField.vue.d.ts +2 -2
  262. package/dist/phone/index.js +68 -67
  263. package/dist/platform/index.d.ts +2 -2
  264. package/dist/platform/index.js +73 -90
  265. package/dist/platform/platform.d.ts +2 -2
  266. package/dist/platform/session.d.ts +22 -1
  267. package/dist/platform-q3cjODLx.js +255 -0
  268. package/dist/resource/index.js +8 -248
  269. package/dist/route-goWMxDUN.js +13 -0
  270. package/dist/routeResource-DstM0hvf.js +82 -0
  271. package/dist/router/guards.d.ts +7 -1
  272. package/dist/router/index.js +23 -37
  273. package/dist/router/navigation.d.ts +1 -1
  274. package/dist/rowLayout-BqTEhEuy.js +603 -0
  275. package/dist/sectionIndex-BS0ic5W7.js +86 -0
  276. package/dist/{sections-LtxV5Mtk.js → sections-CntvUTxn.js} +1 -1
  277. package/dist/shell/AccountMenuItem.vue.d.ts +1 -1
  278. package/dist/shell/BackofficeShell.vue.d.ts +2 -2
  279. package/dist/shell/NavigationList.vue.d.ts +1 -1
  280. package/dist/shell/ShellBrand.vue.d.ts +1 -1
  281. package/dist/shell/backofficeShell.d.ts +1 -1
  282. package/dist/shell/identity.d.ts +1 -1
  283. package/dist/shell/index.js +491 -595
  284. package/dist/state/ProgressTrack.vue.d.ts +1 -1
  285. package/dist/state/index.js +59 -92
  286. package/dist/status-BuP3ULjH.js +33 -0
  287. package/dist/styles.css +1 -1
  288. package/dist/suggestions-BxMm6MQA.js +138 -0
  289. package/dist/testing/index.js +1 -1
  290. package/dist/toast-D9Z5To38.js +13 -0
  291. package/dist/transport-BnP7WC0Y.js +4 -0
  292. package/dist/useCommand-BkONMn3X.js +135 -0
  293. package/dist/useLoad-CYRVx6HW.js +39 -0
  294. package/dist/useResourceForm-D1hIpwW5.js +52 -0
  295. package/dist/useSaveChrome-chi6D3HY.js +25 -0
  296. package/dist/useSheetDrag-OsD6Eb6I.js +72 -0
  297. package/dist/useTypedEntry-aTfPBAhw.js +857 -0
  298. package/package.json +26 -5
  299. package/dist/NoAccess.vue_vue_type_script_setup_true_lang-OKW8pKYU.js +0 -78
  300. package/dist/SectionList.vue_vue_type_script_setup_true_lang-L9ita_Kx.js +0 -230
  301. package/dist/SelectField.vue_vue_type_script_setup_true_lang-DZTrU8NJ.js +0 -661
  302. package/dist/Sheet.vue_vue_type_script_setup_true_lang-CtkJ-4e3.js +0 -210
  303. package/dist/SwipeActions.vue_vue_type_script_setup_true_lang-CGTuEnTv.js +0 -243
  304. package/dist/chrome-D9pwD6iS.js +0 -101
  305. package/dist/environment-D3nozt9a.js +0 -75
  306. package/dist/feature-DyDtyMLU.js +0 -47
  307. package/dist/options-DAkBtYkI.js +0 -330
  308. package/dist/platform-jqlKVJ2e.js +0 -244
  309. package/dist/toast-DvrHQ6Ag.js +0 -131
@@ -0,0 +1,28 @@
1
+ import { defineComponent as u, useModel as m, computed as d, openBlock as r, createBlock as p, unref as c, mergeModels as i } from "vue";
2
+ import { _ as b } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
3
+ const _ = /* @__PURE__ */ u({
4
+ __name: "ViewTabs",
5
+ props: /* @__PURE__ */ i({
6
+ views: {},
7
+ counts: {},
8
+ labelOf: { type: Function },
9
+ label: {}
10
+ }, {
11
+ modelValue: { required: !0 },
12
+ modelModifiers: {}
13
+ }),
14
+ emits: ["update:modelValue"],
15
+ setup(a) {
16
+ const e = a, t = m(a, "modelValue"), n = d(() => e.views.map((l) => ({ value: l, label: e.labelOf(l), badge: e.counts?.find((o) => o.key === l)?.count })));
17
+ return (l, o) => (r(), p(c(b), {
18
+ modelValue: t.value,
19
+ "onUpdate:modelValue": o[0] || (o[0] = (s) => t.value = s),
20
+ tabs: n.value,
21
+ presentation: "scope",
22
+ label: e.label
23
+ }, null, 8, ["modelValue", "tabs", "label"]));
24
+ }
25
+ });
26
+ export {
27
+ _
28
+ };
@@ -0,0 +1,19 @@
1
+ import type { Binding, SubjectRef } from "../modules/access/entities";
2
+ /**
3
+ * *Add role*: where first (a level of the hierarchy and the place, from what the server says this person may be given and the actor may give;
4
+ * an application with one level asks nothing here), then the role, from the ones the actor may give there (delegation already applied). What the
5
+ * chosen role reaches is the role's own and is only shown: it changes in Roles, not here.
6
+ */
7
+ type __VLS_Props = {
8
+ subject: SubjectRef;
9
+ subjectLabel: string;
10
+ };
11
+ declare function present(): Promise<void>;
12
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
13
+ present: typeof present;
14
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ added: (binding: Binding) => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ onAdded?: ((binding: Binding) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ export default _default;
@@ -0,0 +1,19 @@
1
+ import type { Binding } from "../modules/access/entities";
2
+ /**
3
+ * One role a person holds and where it applies, read-only: the role's name, its kind under it, the place on the right. The
4
+ * access panel puts *Remove* in the trailing slot; a profile page shows it as it is.
5
+ */
6
+ type __VLS_Props = {
7
+ binding: Pick<Binding, "role" | "scope">;
8
+ };
9
+ type __VLS_Slots = {
10
+ trailing?: () => unknown;
11
+ };
12
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1,12 @@
1
+ import type { EffectivePermission } from "../modules/access/entities";
2
+ /**
3
+ * *What {name} can do*: the effective permissions by module and screen, worked out from the roles; nothing here edits. Each screen says
4
+ * which actions are held, which roles give them and how wide (whose records, which places); *Why* opens the reason for every action.
5
+ * A permission switched off for the tenant is marked. On a phone the modules beyond the first three sit behind *All n modules*.
6
+ */
7
+ type __VLS_Props = {
8
+ effective: readonly EffectivePermission[];
9
+ name: string;
10
+ };
11
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { type Grants } from "./catalogue";
2
+ /**
3
+ * The permissions of a role as the editor shows them: the catalogue's modules (a list on the left, a tab bar on phones)
4
+ * with what the role holds of each, then each screen as a group of switches. Switching a permission on switches on what it
5
+ * needs, off what needs it; where a screen's records have an owner the group opens with *whose* (own, location's, all), held
6
+ * once per record type. `grants` is edited in place; `readonly` shows the role without letting it change.
7
+ */
8
+ type __VLS_Props = {
9
+ grants: Grants;
10
+ readonly: boolean;
11
+ };
12
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ export default _default;
@@ -0,0 +1,21 @@
1
+ import type { SubjectRef } from "../modules/access/entities";
2
+ /**
3
+ * A person's access: their roles, each with where it applies, *Add role* and removal (both offered only when the server says the actor may
4
+ * manage them), then *What {name} can do*, the effective permissions with their reasons. Put it on the person's record, as a section
5
+ * (`<PersonAccess :subject="{ kind: 'user', id }" :name="person.name" />`); `subjectLabel` says who a role is added for under the dialog's title.
6
+ */
7
+ type __VLS_Props = {
8
+ subject: SubjectRef;
9
+ /** The person's name, for "What Ana can do". */
10
+ name: string;
11
+ /** Under the add dialog's title; by default the name. */
12
+ subjectLabel?: string;
13
+ };
14
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
15
+ reload: () => Promise<void>;
16
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ loaded: (bindings: number) => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ onLoaded?: ((bindings: number) => any) | undefined;
20
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ export default _default;
@@ -0,0 +1,17 @@
1
+ import type { Role, RoleSummary } from "../modules/access/entities";
2
+ /**
3
+ * *Replace*: every holder of a custom role gets a predefined role at the same place instead. It goes through the same rules as
4
+ * giving a role, so it can be refused (you cannot give more than you hold); either every holder moves or none does.
5
+ */
6
+ type __VLS_Props = {
7
+ role: Role;
8
+ others: readonly RoleSummary[];
9
+ };
10
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
11
+ present: () => void;
12
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
+ replaced: (rebound: number) => any;
14
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ onReplaced?: ((rebound: number) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import type { Role, RoleSummary } from "../modules/access/entities";
2
+ /**
3
+ * *Compare with a predefined role*: what a custom role holds that the other does not, what it lacks, and where the whose
4
+ * differs. The way to see how far a copy has drifted before replacing it.
5
+ */
6
+ type __VLS_Props = {
7
+ role: Role;
8
+ others: readonly RoleSummary[];
9
+ };
10
+ declare function present(): void;
11
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
12
+ present: typeof present;
13
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import type { Role } from "../modules/access/entities";
2
+ import { type Grants } from "./catalogue";
3
+ /**
4
+ * A role, read or edited: its name and description, then the permission tree. A custom role edits with Save and Cancel in the
5
+ * page chrome; a predefined or computed role only reads (*Copy* is its way to a custom one). `source` prefills a new role from
6
+ * another (Copy): it is still created as a new role.
7
+ */
8
+ type __VLS_Props = {
9
+ /** The saved role; null while creating a new one. */
10
+ role: Role | null;
11
+ /** The role a new one is copied from. */
12
+ source?: Role | null;
13
+ };
14
+ interface Draft {
15
+ name: string;
16
+ description: string;
17
+ grants: Grants;
18
+ }
19
+ declare function save(): Promise<void>;
20
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {
21
+ form: import("../form").Form<Draft, Draft>;
22
+ save: typeof save;
23
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
24
+ saved: (role: Role) => any;
25
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
26
+ onSaved?: ((role: Role) => any) | undefined;
27
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,26 @@
1
+ import type { HttpClient } from "../client";
2
+ import type { BindInput, CreateRoleInput, UpdateRoleInput } from "../modules/access/schemas";
3
+ import type { SubjectRef } from "../modules/access/entities";
4
+ type Options = {
5
+ readonly signal?: AbortSignal;
6
+ };
7
+ /** go-core's access routes as calls; `data` of each answer already read. */
8
+ export declare function createAccessApi(http: HttpClient): {
9
+ roles: (options?: Options) => Promise<import(".").RoleSummary[]>;
10
+ role: (ref: string, options?: Options) => Promise<import(".").Role>;
11
+ holders: (ref: string, options?: Options) => Promise<import(".").RoleHolder[]>;
12
+ compare: (ref: string, other: string, options?: Options) => Promise<import(".").RoleComparison>;
13
+ create: (input: CreateRoleInput) => Promise<import(".").Role>;
14
+ update: (input: UpdateRoleInput) => Promise<import(".").Role>;
15
+ remove: (ref: string) => Promise<undefined>;
16
+ replace: (ref: string, other: string) => Promise<number>;
17
+ access: (subject: SubjectRef, options?: Options) => Promise<import(".").SubjectAccess>;
18
+ scopes: (subject: SubjectRef, options?: Options) => Promise<import(".").ScopeOptions>;
19
+ bindable: (level: string, scopeId: number | null, options?: Options) => Promise<import(".").Role[]>;
20
+ bind: (subject: SubjectRef, input: Omit<BindInput, "id">) => Promise<import(".").Binding>;
21
+ unbind: (subject: SubjectRef, bindingId: number) => Promise<undefined>;
22
+ };
23
+ export type AccessApi = ReturnType<typeof createAccessApi>;
24
+ /** The calls, over the platform's client; call it in `setup`. */
25
+ export declare const useAccessApi: () => AccessApi;
26
+ export {};
@@ -0,0 +1,64 @@
1
+ import type { AccessQualifier } from "../platform";
2
+ /**
3
+ * What go-core's catalogue says about one permission: the shape of `authzts`'s `PermissionMeta`, so the
4
+ * `permissions` object its generator writes (`frontend/generated/permissions.ts`) is the catalogue as it is.
5
+ */
6
+ export interface PermissionMeta {
7
+ readonly module: string;
8
+ /** Empty for a permission of the module itself. */
9
+ readonly resource: string;
10
+ readonly verb: string;
11
+ /** i18n keys; the texts live in the application. */
12
+ readonly labelKey: string;
13
+ readonly descriptionKey: string;
14
+ readonly sensitive: boolean;
15
+ readonly system: boolean;
16
+ readonly organizationOnly: boolean;
17
+ /** The record type the "whose" qualifiers refer to; null when the permission has no owner. */
18
+ readonly ownable: string | null;
19
+ readonly unownedIsOwn: boolean;
20
+ readonly feature: string | null;
21
+ readonly attributes: readonly string[];
22
+ readonly requires: readonly string[];
23
+ }
24
+ /** Every permission of the application by identifier (`module.resource:verb`). */
25
+ export type PermissionCatalogue = Readonly<Record<string, PermissionMeta>>;
26
+ /** A permission with its identifier. */
27
+ export interface PermissionEntry extends PermissionMeta {
28
+ readonly id: string;
29
+ }
30
+ /** The permissions of one screen (a resource of a module). */
31
+ export interface PermissionScreen {
32
+ /** `module` or `module_resource` (dots turned into underscores): the i18n key of its heading, under `access.resources`. */
33
+ readonly key: string;
34
+ readonly permissions: readonly PermissionEntry[];
35
+ }
36
+ /** One tab of the editor: a module's screens. Permissions that run the system are together in the group `system`. */
37
+ export interface PermissionGroup {
38
+ readonly key: string;
39
+ readonly screens: readonly PermissionScreen[];
40
+ }
41
+ export declare const SYSTEM_GROUP = "system";
42
+ export declare const groupOf: (meta: Pick<PermissionMeta, "module" | "system">) => string;
43
+ export declare const screenKeyOf: (meta: Pick<PermissionMeta, "module" | "resource">) => string;
44
+ /** The catalogue as the editor shows it: module, then screen, then action (view, create, update, manage, delete, the rest by name). */
45
+ export declare function permissionTree(catalogue: PermissionCatalogue): readonly PermissionGroup[];
46
+ /** Everything `id` needs, transitively (not `id` itself). */
47
+ export declare function requiredClosure(catalogue: PermissionCatalogue, id: string): string[];
48
+ /** Everything that needs `id`, transitively (not `id` itself). */
49
+ export declare function dependantsClosure(catalogue: PermissionCatalogue, id: string): string[];
50
+ /** What a role holds: each permission with whose records it reaches (`all` for a permission that has no owner). */
51
+ export type Grants = Record<string, AccessQualifier>;
52
+ /** The whose the role holds of a record type: its view permission's, else any granted one's; null when it holds none. */
53
+ export declare function ownableQualifier(catalogue: PermissionCatalogue, grants: Grants, ownable: string): AccessQualifier | null;
54
+ /** Grants `id` and what it needs; the whose of an ownable one is what the role already holds of its record type, else `own`. */
55
+ export declare function grant(catalogue: PermissionCatalogue, grants: Grants, id: string): void;
56
+ /** Takes `id` away, and what needs it. */
57
+ export declare function revoke(catalogue: PermissionCatalogue, grants: Grants, id: string): void;
58
+ /** Applies one whose to every granted permission of the record type. */
59
+ export declare function setOwnableQualifier(catalogue: PermissionCatalogue, grants: Grants, ownable: string, qualifier: AccessQualifier): void;
60
+ /**
61
+ * Grants what the granted permissions need but the role lacks (a role saved before a permission gained a
62
+ * requirement, which the server would refuse as it is). Returns what was added.
63
+ */
64
+ export declare function completeRequired(catalogue: PermissionCatalogue, grants: Grants): string[];
@@ -0,0 +1,20 @@
1
+ import type { RouteLocationRaw } from "vue-router";
2
+ import type { ScopeOptions, SubjectRef } from "../modules/access/entities";
3
+ import type { PermissionCatalogue } from "./catalogue";
4
+ /** What the access screens need from the feature that installed them. */
5
+ export interface AccessContext {
6
+ readonly catalogue: PermissionCatalogue;
7
+ /** Where a holder's name leads (their record), or null for a name that is not a link. */
8
+ readonly subjectRoute: (subject: SubjectRef) => RouteLocationRaw | null;
9
+ /** The places `subject` may be given roles at; by default what the server says (`GET /v1/iam/users/:id/scopes`). */
10
+ readonly scopes: ((subject: SubjectRef, signal: AbortSignal) => Promise<ScopeOptions>) | null;
11
+ }
12
+ export declare const accessContextKey: import("vue").InjectionKey<AccessContext>, useAccessContext: () => AccessContext;
13
+ /** The permissions go-core's access module guards its routes with: fixed, so a screen can name them. */
14
+ export declare const accessPermissions: {
15
+ readonly viewRoles: "iam.role:view";
16
+ readonly manageRoles: "iam.role:manage";
17
+ readonly deleteRoles: "iam.role:delete";
18
+ readonly viewAccess: "iam.user:view";
19
+ readonly manageBindings: "iam.user:manage";
20
+ };
@@ -0,0 +1,42 @@
1
+ import type { AccessQualifier } from "../platform";
2
+ import type { EffectiveGrant, EffectivePermission, Scope } from "../modules/access/entities";
3
+ import { type PermissionCatalogue } from "./catalogue";
4
+ /** A role that gives a screen's permissions, with the widest whose it gives them at. */
5
+ export interface EffectiveSource {
6
+ readonly roleKey: string;
7
+ readonly roleName: string;
8
+ readonly qualifier: AccessQualifier;
9
+ readonly scope: Scope;
10
+ }
11
+ /** One permission the person holds, with every grant behind it. */
12
+ export interface EffectiveAction {
13
+ readonly permission: string;
14
+ readonly verb: string;
15
+ /** Granted by a role but switched off for this tenant. */
16
+ readonly unavailable: boolean;
17
+ readonly grants: readonly EffectiveGrant[];
18
+ }
19
+ /** One screen: what is held of it, which roles give it, and how wide. */
20
+ export interface EffectiveScreen {
21
+ readonly key: string;
22
+ readonly actions: readonly EffectiveAction[];
23
+ readonly sources: readonly EffectiveSource[];
24
+ /** The widest whose over the screen's ownable actions; null when none of them is ownable. */
25
+ readonly qualifier: AccessQualifier | null;
26
+ /** Where the screen's permissions apply, each place once, the root first. */
27
+ readonly scopes: readonly Scope[];
28
+ readonly ownable: boolean;
29
+ /** Every action here is switched off for the tenant. */
30
+ readonly allUnavailable: boolean;
31
+ }
32
+ export interface EffectiveGroup {
33
+ readonly key: string;
34
+ readonly screens: readonly EffectiveScreen[];
35
+ }
36
+ /**
37
+ * *What a person can do*: the effective permissions by module and screen, worked out from the roles. The server sends one entry per
38
+ * permission with every grant behind it (`EffectivePermission.grants`); this turns them into the rows the panel shows: a screen with the
39
+ * actions held, the roles that give them, and how wide (whose records, which places). A permission the catalogue does not know (a role
40
+ * saved before it was removed) is grouped by its module and shown by its identifier.
41
+ */
42
+ export declare function groupEffective(catalogue: PermissionCatalogue, effective: readonly EffectivePermission[]): readonly EffectiveGroup[];
@@ -0,0 +1,27 @@
1
+ import type { RouteLocationRaw } from "vue-router";
2
+ import { type Feature } from "../app";
3
+ import type { ScopeOptions, SubjectRef } from "../modules/access/entities";
4
+ import type { Destination } from "../router";
5
+ import type { PermissionCatalogue } from "./catalogue";
6
+ export interface AccessFeatureOptions {
7
+ /**
8
+ * The application's permissions: the `permissions` object go-core's `authzts` writes (`frontend/generated/permissions.ts`).
9
+ * The role editor's tree is this catalogue; the texts are the application's (`labelKey`, `access.modules.<module>`, ...).
10
+ */
11
+ catalogue: PermissionCatalogue;
12
+ /** Where a holder's name leads (their record). Default: nowhere, the name is not a link. */
13
+ subjectRoute?: (subject: SubjectRef) => RouteLocationRaw | null;
14
+ /** The places a person may be given roles at. Default: what the server says (`GET /v1/iam/users/:id/scopes`). */
15
+ scopes?: (subject: SubjectRef, signal: AbortSignal) => Promise<ScopeOptions>;
16
+ /** The backend's navigation destination that opens the roles list. Without it the application links to `accessPages.roles` itself. */
17
+ destination?: Destination;
18
+ }
19
+ /**
20
+ * The screens of go-core's access module, one feature to install: the roles list (`/iam/roles`), a role's page and the editor of
21
+ * a new role (`/iam/roles/new`, `?copy=` to start from another role), compare and replace, with every action behind the module's
22
+ * own permissions (`iam.role:view`, `manage`, `delete`). Pair it with `identityFeature()`; the module's routes must be mounted
23
+ * on the server (`access.Install`).
24
+ *
25
+ * createApplication({ platform, shell: backofficeShell(), features: [identityFeature(), accessFeature({ catalogue: permissions })] })
26
+ */
27
+ export declare function accessFeature(options: AccessFeatureOptions): Feature;
@@ -0,0 +1,13 @@
1
+ export type * from "../modules/access/entities";
2
+ export type * as Inputs from "../modules/access/schemas";
3
+ export { accessRoutes } from "../modules/access/routes";
4
+ export { accessFeature } from "./feature";
5
+ export type { AccessFeatureOptions } from "./feature";
6
+ export { accessPages, personRolesSection } from "./routes";
7
+ export { accessPermissions } from "./context";
8
+ export { dependantsClosure, permissionTree, requiredClosure } from "./catalogue";
9
+ export type { Grants, PermissionCatalogue, PermissionEntry, PermissionGroup, PermissionMeta, PermissionScreen } from "./catalogue";
10
+ export { useAccessLabels } from "./labels";
11
+ export { useRefusalMessage } from "./refusals";
12
+ export { default as PersonAccess } from "./PersonAccess.vue";
13
+ export { default as BindingRow } from "./BindingRow.vue";
@@ -0,0 +1,15 @@
1
+ import { _ as a, i as c, j as o, c as r, b as n, k as i, l as u, p as l, m as p, n as t, u as d, f as m } from "../index-GcLnFF-z.js";
2
+ export {
3
+ a as BindingRow,
4
+ c as PersonAccess,
5
+ o as accessFeature,
6
+ r as accessPages,
7
+ n as accessPermissions,
8
+ i as accessRoutes,
9
+ u as dependantsClosure,
10
+ l as permissionTree,
11
+ p as personRolesSection,
12
+ t as requiredClosure,
13
+ d as useAccessLabels,
14
+ m as useRefusalMessage
15
+ };
@@ -0,0 +1,35 @@
1
+ /** A role as the screens name it: predefined roles by their key, custom ones by the name they were saved with. */
2
+ export interface RoleName {
3
+ readonly key?: string | null;
4
+ readonly name: string;
5
+ }
6
+ /** A place as the server names it. */
7
+ export interface ScopeName {
8
+ readonly level: string;
9
+ readonly name?: string | null;
10
+ }
11
+ /**
12
+ * The words of access. The library's own texts are `core.access.*`; the application's catalogue
13
+ * brings its own: a permission's label and description by the keys the catalogue holds, modules under
14
+ * `access.modules.<module>`, screens under `access.resources.<module_resource>`, record types under
15
+ * `access.ownable.<type>`, predefined roles under `access.roles.<key>`, hierarchy levels under
16
+ * `access.levels.<level>`. A name nobody wrote a text for is shown as it is.
17
+ */
18
+ export declare function useAccessLabels(): {
19
+ roleName: (role: RoleName) => string;
20
+ permissionLabel: (id: string) => string;
21
+ permissionDescription: (id: string) => string;
22
+ groupLabel: (group: string) => string;
23
+ screenLabel: (key: string) => string;
24
+ ownableLabel: (ownable: string) => string;
25
+ qualifierLabel: (qualifier: string) => string;
26
+ qualifierHint: (qualifier: string) => string;
27
+ qualifierNoun: (qualifier: string) => string;
28
+ levelLabel: (level: string) => string;
29
+ /** A place: the level and its name (`Dealer · Auto Zagreb`); the root, which has no name, by its level. */
30
+ scopeLabel: (scope: ScopeName) => string;
31
+ roleKind: (role: {
32
+ predefined: boolean;
33
+ computed: boolean;
34
+ }) => string;
35
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * For a form's `failureMessage`: a refusal of go-core's delegation rules (`authz.escalation`, `self_assignment`, `last_admin`,
3
+ * `role_in_use`, ...) says which rule it was, in the app's language (`core.errors.authz.*`, overridable with `errors.authz.*`);
4
+ * any other failure keeps the form's own sentence for its kind. Call it in `setup`.
5
+ */
6
+ export declare function useRefusalMessage(): (kind: unknown, error: unknown) => string | undefined;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The pages of the access feature as typed targets (`accessPages.role({ ref })`), for a link from the application's own
3
+ * pages. `/iam/roles/new` is declared before `/iam/roles/:ref`, so "new" is never read as a role's ref.
4
+ */
5
+ export declare const accessPages: import("../router").DefinedRoutes<{
6
+ readonly roles: {
7
+ readonly name: "access.roles";
8
+ readonly path: "/iam/roles";
9
+ readonly component: () => Promise<typeof import("./RolesPage.vue")>;
10
+ readonly meta: {
11
+ readonly access: "iam.role:view";
12
+ readonly titleKey: "core.access.title";
13
+ };
14
+ };
15
+ readonly newRole: {
16
+ readonly name: "access.roles.new";
17
+ readonly path: "/iam/roles/new";
18
+ readonly component: () => Promise<typeof import("./NewRolePage.vue")>;
19
+ readonly meta: {
20
+ readonly access: "iam.role:manage";
21
+ readonly titleKey: "core.access.new_title";
22
+ };
23
+ };
24
+ readonly role: {
25
+ readonly name: "access.role";
26
+ readonly path: "/iam/roles/:ref";
27
+ readonly component: () => Promise<typeof import("./RolePage.vue")>;
28
+ readonly meta: {
29
+ readonly access: "iam.role:view";
30
+ readonly titleKey: "core.access.title";
31
+ readonly remountOnParam: "ref";
32
+ };
33
+ };
34
+ }>;
35
+ /**
36
+ * What a person's record needs to list *Roles* among its sections (`meta` of a child route whose component shows `PersonAccess`): the
37
+ * label, the icon and the permission go-core guards the person's access with. Spread it into the route's `meta`.
38
+ */
39
+ export declare const personRolesSection: {
40
+ readonly access: "iam.user:view";
41
+ readonly section: {
42
+ readonly labelKey: "core.access.person_roles";
43
+ readonly icon: "shieldStarFill";
44
+ };
45
+ };
@@ -0,0 +1,20 @@
1
+ import type { ScopeOption, ScopeOptions } from "../modules/access/entities";
2
+ /** A way to say where a role applies: a level of the hierarchy, and the chain of places down to it (a dealer, then its location). */
3
+ export interface ScopeLevel {
4
+ readonly level: string;
5
+ /** The levels from just below the root down to this one; empty for the root itself. */
6
+ readonly chain: readonly string[];
7
+ }
8
+ /**
9
+ * The levels a person may be given roles at, from what the server says (`GET /v1/iam/users/:id/scopes`): each level that has places,
10
+ * narrowest first, then the root when roles may be given there. The hierarchy is read off the places (each says its parent level), so
11
+ * the library knows no level names.
12
+ */
13
+ export declare function scopeLevels(options: ScopeOptions): readonly ScopeLevel[];
14
+ /** Where to start: the broadest level below the root (the usual choice), else the root. */
15
+ export declare const defaultLevel: (levels: readonly ScopeLevel[]) => ScopeLevel | null;
16
+ /**
17
+ * The places to choose from at step `index` of `level`'s chain, given what was chosen above (`chosen[i]` is the id at `chain[i]`). A place
18
+ * that has nothing below it in the chain is left out when the level is deeper: it could not complete a choice.
19
+ */
20
+ export declare function placesAt(options: ScopeOptions, level: ScopeLevel, index: number, chosen: readonly (number | null)[]): readonly ScopeOption[];
@@ -1,5 +1,5 @@
1
1
  import { type PropType } from "vue";
2
- import type { Session } from "../platform/session";
2
+ import { type Session } from "../platform/session";
3
3
  import type { ShellContribution, ShellSlot } from "./feature";
4
4
  /** A contribution with the feature that declared it, for error messages. */
5
5
  export interface OwnedContribution {
@@ -20,6 +20,7 @@ export declare function provideContext<T>(key: InjectionKey<T>, value: T): Conte
20
20
  *
21
21
  * - `headerActions`: the actions of the top bar (a notification bell, a search button)
22
22
  * - `accountMenu`: entries of the signed-in user's menu
23
+ * - `banner`: a strip across the top of the whole shell, above everything (a notice that must stay in view: signed in as somebody else)
23
24
  * - `host`: components with no place of their own that must be mounted once (a command palette, a dialog host)
24
25
  */
25
26
  export interface ShellSlots {
@@ -27,6 +28,7 @@ export interface ShellSlots {
27
28
  interface DocumentedShellSlots {
28
29
  headerActions: true;
29
30
  accountMenu: true;
31
+ banner: true;
30
32
  host: true;
31
33
  }
32
34
  export type ShellSlot = keyof DocumentedShellSlots | keyof ShellSlots;
@@ -93,6 +95,11 @@ export interface FeatureDefinition {
93
95
  effects?: readonly FeatureEffect[];
94
96
  /** Capabilities the backend must report (`platform.config.capabilities`); startup fails naming this feature when one is missing. */
95
97
  backend?: readonly string[];
98
+ /**
99
+ * The feature shows its own prompt when a session expires in the middle of work (a sheet to sign in again), so the
100
+ * router keeps the person on their page instead of sending them to the login page.
101
+ */
102
+ holdsExpiredSession?: boolean;
96
103
  /** Features that must be installed too (for a shared integration); checked, never installed for you. */
97
104
  requires?: readonly FeatureReference[];
98
105
  }
@@ -106,6 +113,7 @@ export interface Feature {
106
113
  readonly contributions: readonly ShellContribution[];
107
114
  readonly effects: readonly FeatureEffect[];
108
115
  readonly backend: readonly string[];
116
+ readonly holdsExpiredSession: boolean;
109
117
  readonly requires: readonly string[];
110
118
  }
111
119
  /** Whether `value` came from `defineFeature`. */