@jskit-ai/users-web 0.1.4

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 (97) hide show
  1. package/package.descriptor.mjs +507 -0
  2. package/package.json +31 -0
  3. package/src/client/components/ConsoleSettingsClientElement.vue +24 -0
  4. package/src/client/components/MembersAdminClientElement.vue +404 -0
  5. package/src/client/components/ProfileClientElement.vue +242 -0
  6. package/src/client/components/UsersProfileSurfaceSwitchMenuItem.vue +39 -0
  7. package/src/client/components/UsersShellMenuLinkItem.vue +140 -0
  8. package/src/client/components/UsersSurfaceAwareMenuLinkItem.vue +87 -0
  9. package/src/client/components/UsersWorkspaceMembersMenuItem.vue +36 -0
  10. package/src/client/components/UsersWorkspacePermissionMenuItem.vue +90 -0
  11. package/src/client/components/UsersWorkspaceSelector.vue +237 -0
  12. package/src/client/components/UsersWorkspaceSettingsMenuItem.vue +39 -0
  13. package/src/client/components/UsersWorkspaceToolsWidget.vue +23 -0
  14. package/src/client/components/WorkspaceMembersClientElement.vue +663 -0
  15. package/src/client/components/WorkspaceSettingsClientElement.vue +230 -0
  16. package/src/client/components/WorkspacesClientElement.vue +514 -0
  17. package/src/client/composables/accountSettingsAvatarUploadRuntime.js +241 -0
  18. package/src/client/composables/accountSettingsInvitesRuntime.js +88 -0
  19. package/src/client/composables/accountSettingsRuntimeConstants.js +77 -0
  20. package/src/client/composables/accountSettingsRuntimeHelpers.js +75 -0
  21. package/src/client/composables/errorMessageHelpers.js +66 -0
  22. package/src/client/composables/internal/useOperationScope.js +144 -0
  23. package/src/client/composables/modelStateHelpers.js +49 -0
  24. package/src/client/composables/operationUiHelpers.js +121 -0
  25. package/src/client/composables/operationValidationHelpers.js +52 -0
  26. package/src/client/composables/refValueHelpers.js +19 -0
  27. package/src/client/composables/scopeHelpers.js +145 -0
  28. package/src/client/composables/useAccess.js +109 -0
  29. package/src/client/composables/useAccountSettingsRuntime.js +533 -0
  30. package/src/client/composables/useAddEdit.js +135 -0
  31. package/src/client/composables/useAddEditCore.js +137 -0
  32. package/src/client/composables/useBootstrapQuery.js +52 -0
  33. package/src/client/composables/useCommand.js +112 -0
  34. package/src/client/composables/useCommandCore.js +130 -0
  35. package/src/client/composables/useEndpointResource.js +104 -0
  36. package/src/client/composables/useFieldErrorBag.js +61 -0
  37. package/src/client/composables/useList.js +85 -0
  38. package/src/client/composables/useListCore.js +65 -0
  39. package/src/client/composables/usePagedCollection.js +125 -0
  40. package/src/client/composables/usePaths.js +108 -0
  41. package/src/client/composables/useRealtimeQueryInvalidation.js +105 -0
  42. package/src/client/composables/useScopeRuntime.js +107 -0
  43. package/src/client/composables/useSurfaceRouteContext.js +31 -0
  44. package/src/client/composables/useUiFeedback.js +96 -0
  45. package/src/client/composables/useView.js +89 -0
  46. package/src/client/composables/useViewCore.js +104 -0
  47. package/src/client/composables/useWorkspaceRouteContext.js +28 -0
  48. package/src/client/composables/useWorkspaceSurfaceId.js +43 -0
  49. package/src/client/index.js +7 -0
  50. package/src/client/lib/bootstrap.js +95 -0
  51. package/src/client/lib/httpClient.js +67 -0
  52. package/src/client/lib/menuIcons.js +192 -0
  53. package/src/client/lib/permissions.js +34 -0
  54. package/src/client/lib/profileSurfaceMenuLinks.js +142 -0
  55. package/src/client/lib/surfaceAccessPolicy.js +350 -0
  56. package/src/client/lib/theme.js +99 -0
  57. package/src/client/lib/workspaceLinkResolver.js +207 -0
  58. package/src/client/lib/workspaceSurfaceContext.js +82 -0
  59. package/src/client/lib/workspaceSurfacePaths.js +163 -0
  60. package/src/client/providers/UsersWebClientProvider.js +85 -0
  61. package/src/client/runtime/bootstrapPlacementRouteGuards.js +371 -0
  62. package/src/client/runtime/bootstrapPlacementRuntime.js +413 -0
  63. package/src/client/runtime/bootstrapPlacementRuntimeConstants.js +32 -0
  64. package/src/client/runtime/bootstrapPlacementRuntimeHelpers.js +157 -0
  65. package/src/client/support/contractGuards.js +34 -0
  66. package/src/client/support/realtimeWorkspace.js +12 -0
  67. package/src/client/support/runtimeNormalization.js +27 -0
  68. package/src/client/support/workspaceQueryKeys.js +15 -0
  69. package/templates/packages/main/src/client/components/AccountPendingInvitesCue.vue +162 -0
  70. package/templates/src/components/WorkspaceNotFoundCard.vue +33 -0
  71. package/templates/src/components/account/settings/AccountSettingsClientElement.vue +153 -0
  72. package/templates/src/components/account/settings/AccountSettingsInvitesSection.vue +77 -0
  73. package/templates/src/components/account/settings/AccountSettingsNotificationsSection.vue +55 -0
  74. package/templates/src/components/account/settings/AccountSettingsPreferencesSection.vue +125 -0
  75. package/templates/src/components/account/settings/AccountSettingsProfileSection.vue +94 -0
  76. package/templates/src/composables/useWorkspaceNotFoundState.js +48 -0
  77. package/templates/src/pages/account/index.vue +17 -0
  78. package/templates/src/pages/admin/members/index.vue +7 -0
  79. package/templates/src/pages/admin/workspace/settings/index.vue +16 -0
  80. package/templates/src/pages/console/settings/index.vue +16 -0
  81. package/templates/src/surfaces/admin/index.vue +29 -0
  82. package/templates/src/surfaces/admin/root.vue +20 -0
  83. package/templates/src/surfaces/app/index.vue +27 -0
  84. package/templates/src/surfaces/app/root.vue +20 -0
  85. package/test/bootstrap.test.js +38 -0
  86. package/test/bootstrapPlacementRuntime.test.js +991 -0
  87. package/test/errorMessageHelpers.test.js +28 -0
  88. package/test/exportsContract.test.js +39 -0
  89. package/test/menuIcons.test.js +33 -0
  90. package/test/permissions.test.js +35 -0
  91. package/test/profileSurfaceMenuLinks.test.js +207 -0
  92. package/test/refValueHelpers.test.js +14 -0
  93. package/test/scopeHelpers.test.js +57 -0
  94. package/test/surfaceAccessPolicy.test.js +129 -0
  95. package/test/theme.test.js +95 -0
  96. package/test/workspaceLinkResolver.test.js +61 -0
  97. package/test/workspaceSurfacePaths.test.js +39 -0
@@ -0,0 +1,61 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { resolveWorkspaceShellLinkPath } from "../src/client/lib/workspaceLinkResolver.js";
4
+
5
+ function createContext({ defaultSurfaceId = "dashboard", enabledSurfaceIds = ["dashboard"], surfacesById = {} } = {}) {
6
+ return {
7
+ surfaceConfig: {
8
+ defaultSurfaceId,
9
+ enabledSurfaceIds,
10
+ surfacesById
11
+ }
12
+ };
13
+ }
14
+
15
+ test("resolveWorkspaceShellLinkPath resolves workspace path for known workspace surfaces", () => {
16
+ const context = {
17
+ surfaceConfig: {
18
+ defaultSurfaceId: "dashboard",
19
+ enabledSurfaceIds: ["dashboard"],
20
+ surfacesById: {
21
+ dashboard: {
22
+ routeBase: "/dashboard",
23
+ requiresWorkspace: true
24
+ }
25
+ }
26
+ }
27
+ };
28
+
29
+ const path = resolveWorkspaceShellLinkPath({
30
+ context,
31
+ surface: "dashboard",
32
+ mode: "workspace",
33
+ workspaceSlug: "acme"
34
+ });
35
+
36
+ assert.equal(path, "/w/acme");
37
+ });
38
+
39
+ test("resolveWorkspaceShellLinkPath returns empty path for unknown non-default workspace surface", () => {
40
+ const context = createContext();
41
+ const path = resolveWorkspaceShellLinkPath({
42
+ context,
43
+ surface: "admin",
44
+ mode: "workspace",
45
+ workspaceSlug: "acme"
46
+ });
47
+
48
+ assert.equal(path, "");
49
+ });
50
+
51
+ test("resolveWorkspaceShellLinkPath returns empty path for unknown console-like surface ids", () => {
52
+ const context = createContext();
53
+ const path = resolveWorkspaceShellLinkPath({
54
+ context,
55
+ surface: "console",
56
+ mode: "workspace",
57
+ workspaceSlug: "acme"
58
+ });
59
+
60
+ assert.equal(path, "");
61
+ });
@@ -0,0 +1,39 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+
4
+ import {
5
+ resolveAccountSettingsPathFromPlacementContext,
6
+ resolveSurfaceWorkspacePathFromPlacementContext
7
+ } from "../src/client/lib/workspaceSurfacePaths.js";
8
+
9
+ test("resolveSurfaceWorkspacePathFromPlacementContext returns empty path without workspace slug", () => {
10
+ const context = {
11
+ surfaceConfig: {
12
+ defaultSurfaceId: "home",
13
+ enabledSurfaceIds: ["home", "app", "admin", "console"],
14
+ surfacesById: {
15
+ home: { id: "home", routeBase: "/home", requiresWorkspace: false },
16
+ app: { id: "app", routeBase: "/w/:workspaceSlug", requiresWorkspace: true },
17
+ admin: { id: "admin", routeBase: "/w/:workspaceSlug/admin", requiresWorkspace: true },
18
+ console: { id: "console", routeBase: "/console", requiresWorkspace: false }
19
+ }
20
+ }
21
+ };
22
+
23
+ assert.equal(resolveSurfaceWorkspacePathFromPlacementContext(context, "app", "", "/"), "");
24
+ });
25
+
26
+ test("resolveAccountSettingsPathFromPlacementContext uses account surface route when available", () => {
27
+ const context = {
28
+ surfaceConfig: {
29
+ defaultSurfaceId: "home",
30
+ enabledSurfaceIds: ["home", "account"],
31
+ surfacesById: {
32
+ home: { id: "home", routeBase: "/home", requiresWorkspace: false },
33
+ account: { id: "account", routeBase: "/profile", requiresWorkspace: false }
34
+ }
35
+ }
36
+ };
37
+
38
+ assert.equal(resolveAccountSettingsPathFromPlacementContext(context), "/profile");
39
+ });