@saasicat/ui-vue 0.26.1 → 0.27.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 (31) hide show
  1. package/LICENSE +90 -201
  2. package/dist/{catalog-Dch1Ryw0.d.cts → catalog-Dv2twuNi.d.cts} +205 -4
  3. package/dist/{catalog-Dch1Ryw0.d.ts → catalog-Dv2twuNi.d.ts} +205 -4
  4. package/dist/{chunk-COVQLDBZ.js → chunk-4IZWT4UY.js} +402 -1
  5. package/dist/{chunk-DT25QAU2.js → chunk-LK6YJDXC.js} +1 -1
  6. package/dist/{chunk-O3Y3BYYS.js → chunk-NRVF3JJJ.js} +1 -1
  7. package/dist/client/index.cjs +413 -3
  8. package/dist/client/index.d.cts +55 -4
  9. package/dist/client/index.d.ts +55 -4
  10. package/dist/client/index.js +22 -4
  11. package/dist/index.cjs +416 -6
  12. package/dist/index.d.cts +5 -5
  13. package/dist/index.d.ts +5 -5
  14. package/dist/index.js +23 -5
  15. package/dist/quasar/index.cjs +399 -1
  16. package/dist/quasar/index.d.cts +2 -2
  17. package/dist/quasar/index.d.ts +2 -2
  18. package/dist/quasar/index.js +2 -2
  19. package/dist/{resource-registry-D7Xjs-5f.d.cts → resource-registry-BxFpnzHY.d.cts} +1 -1
  20. package/dist/{resource-registry-TaR7rtq0.d.ts → resource-registry-Cn1Gy2LE.d.ts} +1 -1
  21. package/package.json +3 -3
  22. package/src/client/resources/bundles.resource.ts +145 -0
  23. package/src/client/resources/catalog.resource.ts +160 -0
  24. package/src/client/resources/discovery.resource.ts +108 -0
  25. package/src/client/resources/index.ts +52 -14
  26. package/src/client/resources/marketing.resource.ts +121 -0
  27. package/src/client/resources/promo-codes.resource.ts +63 -0
  28. package/src/client/resources/promotions.resource.ts +44 -0
  29. package/src/client/resources/subscriptions.resource.ts +19 -0
  30. package/src/client/resources/tenants.resource.ts +35 -9
  31. package/src/client/resources/users.resource.ts +31 -0
package/dist/index.cjs CHANGED
@@ -89,6 +89,9 @@ __export(src_exports, {
89
89
  buildQuotaRegistry: () => buildQuotaRegistry,
90
90
  buildRoutes: () => buildRoutes,
91
91
  buildSidebar: () => buildSidebar,
92
+ bundleVersionsResource: () => bundleVersionsResource,
93
+ bundlesResource: () => bundlesResource,
94
+ catalogResource: () => catalogResource,
92
95
  clampListPage: () => clampListPage,
93
96
  clampListPageSize: () => clampListPageSize,
94
97
  countPlans: () => countPlans,
@@ -112,6 +115,7 @@ __export(src_exports, {
112
115
  defineListOp: () => defineListOp,
113
116
  defineMessages: () => defineMessages,
114
117
  defineResource: () => defineResource,
118
+ discoveryResource: () => discoveryResource,
115
119
  filterQueryString: () => filterQueryString,
116
120
  formatCurrency: () => formatCurrency,
117
121
  formatMessage: () => formatMessage,
@@ -134,12 +138,15 @@ __export(src_exports, {
134
138
  markEmptyResponse: () => markEmptyResponse,
135
139
  markPlatformError: () => markPlatformError,
136
140
  markTransportFailure: () => markTransportFailure,
141
+ marketingResource: () => marketingResource,
137
142
  mergeMessages: () => mergeMessages,
138
143
  planChangeWizardI18n: () => planChangeWizardI18n,
139
144
  planVersionsResource: () => planVersionsResource,
140
145
  plansResource: () => plansResource,
141
146
  platformResources: () => platformResources,
142
147
  postJson: () => postJson,
148
+ promoCodesResource: () => promoCodesResource,
149
+ promotionsResource: () => promotionsResource,
143
150
  provideEntitlement: () => provideEntitlement,
144
151
  readErrorCode: () => readErrorCode,
145
152
  readErrorDetail: () => readErrorDetail,
@@ -152,6 +159,7 @@ __export(src_exports, {
152
159
  resolveMessages: () => resolveMessages,
153
160
  resolvePlans: () => resolvePlans,
154
161
  resolveSuperAdminEndpoints: () => resolveSuperAdminEndpoints,
162
+ subscriptionsResource: () => subscriptionsResource,
155
163
  tenantsResource: () => tenantsResource,
156
164
  toAdminError: () => toAdminError,
157
165
  todayIsoDate: () => todayIsoDate,
@@ -199,7 +207,8 @@ __export(src_exports, {
199
207
  useTenantBillingCatalog: () => useTenantBillingCatalog,
200
208
  useTenantManifest: () => useTenantManifest,
201
209
  useTenantSubscriptionBundles: () => useTenantSubscriptionBundles,
202
- useTenants: () => useTenants
210
+ useTenants: () => useTenants,
211
+ usersResource: () => usersResource
203
212
  });
204
213
  module.exports = __toCommonJS(src_exports);
205
214
 
@@ -842,9 +851,392 @@ var planVersionsResource = defineResource("planVersions", {
842
851
  )
843
852
  });
844
853
 
854
+ // src/client/resources/bundles.resource.ts
855
+ function bundlesUrl(ctx) {
856
+ return `${ctx.apiBase}/catalog/bundles`;
857
+ }
858
+ function bundleVersionsUrl(ctx) {
859
+ return `${ctx.apiBase}/catalog/bundle-versions`;
860
+ }
861
+ function scoped2(url, ctx) {
862
+ return `${url}?projectKey=${encodeURIComponent(ctx.projectKey)}`;
863
+ }
864
+ var bundlesResource = defineResource(
865
+ "bundles",
866
+ {
867
+ list: async (http, ctx) => await requestJson(http, scoped2(bundlesUrl(ctx), ctx)) ?? [],
868
+ create: (http, ctx, data) => requestJsonBody(http, bundlesUrl(ctx), "Create returned no body", {
869
+ method: "POST",
870
+ body: { ...data, projectKey: ctx.projectKey }
871
+ }),
872
+ update: (http, ctx, bundleId, data) => requestJsonBody(
873
+ http,
874
+ `${bundlesUrl(ctx)}/${bundleId}`,
875
+ "Update returned no body",
876
+ { method: "PATCH", body: data }
877
+ ),
878
+ /** Marks the bundle deleted. */
879
+ softDelete: async (http, ctx, bundleId) => {
880
+ await requestJson(http, `${bundlesUrl(ctx)}/${bundleId}`, { method: "DELETE" });
881
+ }
882
+ },
883
+ { projectScoped: true }
884
+ );
885
+ var bundleVersionsResource = defineResource("bundleVersions", {
886
+ listForBundle: async (http, ctx, bundleId) => await requestJson(http, `${bundlesUrl(ctx)}/${bundleId}/versions`) ?? [],
887
+ createDraft: (http, ctx, bundleId, data) => requestJsonBody(
888
+ http,
889
+ `${bundlesUrl(ctx)}/${bundleId}/versions`,
890
+ "CreateDraft returned no body",
891
+ { method: "POST", body: data }
892
+ ),
893
+ updateDraft: (http, ctx, versionId, data) => requestJsonBody(
894
+ http,
895
+ `${bundleVersionsUrl(ctx)}/${versionId}`,
896
+ "UpdateDraft returned no body",
897
+ { method: "PATCH", body: data }
898
+ ),
899
+ publish: (http, ctx, versionId, options = {}) => requestJsonBody(
900
+ http,
901
+ `${bundleVersionsUrl(ctx)}/${versionId}/publish`,
902
+ "Publish returned no body",
903
+ { method: "POST", body: options }
904
+ ),
905
+ /**
906
+ * Discards a draft. A published version cannot be discarded — the API
907
+ * answers 422 `BUNDLE_VERSION_ALREADY_PUBLISHED`.
908
+ */
909
+ discardDraft: async (http, ctx, versionId) => {
910
+ await requestJson(http, `${bundleVersionsUrl(ctx)}/${versionId}`, { method: "DELETE" });
911
+ }
912
+ });
913
+
914
+ // src/client/resources/catalog.resource.ts
915
+ function catalogUrl(ctx) {
916
+ return `${ctx.apiBase}/catalog`;
917
+ }
918
+ function scoped3(url, ctx) {
919
+ return `${url}?projectKey=${encodeURIComponent(ctx.projectKey)}`;
920
+ }
921
+ var catalogResource = defineResource(
922
+ "catalog",
923
+ {
924
+ capabilities: async (http, ctx) => await requestJson(
925
+ http,
926
+ scoped3(`${catalogUrl(ctx)}/capabilities`, ctx)
927
+ ) ?? [],
928
+ features: async (http, ctx) => await requestJson(
929
+ http,
930
+ scoped3(`${catalogUrl(ctx)}/features`, ctx)
931
+ ) ?? [],
932
+ quotas: async (http, ctx) => await requestJson(
933
+ http,
934
+ scoped3(`${catalogUrl(ctx)}/quotas`, ctx)
935
+ ) ?? [],
936
+ reviewFeature: (http, ctx, featureKey, data) => requestJsonBody(
937
+ http,
938
+ scoped3(`${catalogUrl(ctx)}/features/${encodeURIComponent(featureKey)}/review`, ctx),
939
+ "Review returned no body",
940
+ { method: "PATCH", body: data }
941
+ ),
942
+ reviewQuota: (http, ctx, quotaKey, data) => requestJsonBody(
943
+ http,
944
+ scoped3(`${catalogUrl(ctx)}/quotas/${encodeURIComponent(quotaKey)}/review`, ctx),
945
+ "Review returned no body",
946
+ { method: "PATCH", body: data }
947
+ ),
948
+ /** The translations are wrapped in `{ i18n }` here, not by the caller. */
949
+ setFeatureI18n: (http, ctx, featureKey, i18n) => requestJsonBody(
950
+ http,
951
+ scoped3(`${catalogUrl(ctx)}/features/${encodeURIComponent(featureKey)}/i18n`, ctx),
952
+ "i18n returned no body",
953
+ { method: "PATCH", body: { i18n } }
954
+ ),
955
+ setQuotaI18n: (http, ctx, quotaKey, i18n) => requestJsonBody(
956
+ http,
957
+ scoped3(`${catalogUrl(ctx)}/quotas/${encodeURIComponent(quotaKey)}/i18n`, ctx),
958
+ "i18n returned no body",
959
+ { method: "PATCH", body: { i18n } }
960
+ ),
961
+ setFeatureBase: (http, ctx, featureKey, data) => requestJsonBody(
962
+ http,
963
+ scoped3(`${catalogUrl(ctx)}/features/${encodeURIComponent(featureKey)}`, ctx),
964
+ "Base returned no body",
965
+ { method: "PATCH", body: data }
966
+ ),
967
+ setQuotaBase: (http, ctx, quotaKey, data) => requestJsonBody(
968
+ http,
969
+ scoped3(`${catalogUrl(ctx)}/quotas/${encodeURIComponent(quotaKey)}`, ctx),
970
+ "Base returned no body",
971
+ { method: "PATCH", body: data }
972
+ ),
973
+ /**
974
+ * Writes a discovery snapshot into the catalogue.
975
+ *
976
+ * The request only. `useCatalogEntries.syncDiscovery` reloads the three
977
+ * lists afterwards, which is that composable keeping its refs true —
978
+ * not part of the call, and not something an override should inherit
979
+ * invisibly.
980
+ */
981
+ syncDiscovery: (http, ctx, snapshot) => requestJsonBody(
982
+ http,
983
+ `${catalogUrl(ctx)}/discovery/sync`,
984
+ "Sync returned no body",
985
+ { method: "POST", body: { snapshot } }
986
+ )
987
+ },
988
+ { projectScoped: true }
989
+ );
990
+
991
+ // src/client/resources/discovery.resource.ts
992
+ function discoveryUrl(ctx) {
993
+ return `${ctx.apiBase}/discovery`;
994
+ }
995
+ function fail(status, method, url, message) {
996
+ return new AdminError({ status, url, method, message });
997
+ }
998
+ var discoveryResource = defineResource("discovery", {
999
+ /**
1000
+ * Reads the snapshot, revalidating against `etag` when one is passed.
1001
+ *
1002
+ * Pass `null` (or nothing) to force a full read — that is what
1003
+ * `useDiscovery.reload()` does when the operator asks for fresh data.
1004
+ */
1005
+ read: async (http, ctx, etag = null) => {
1006
+ const url = discoveryUrl(ctx);
1007
+ const headers = {};
1008
+ if (etag) headers["If-None-Match"] = etag;
1009
+ const response = await http(url, { method: "GET", headers });
1010
+ requireServerAnswer(
1011
+ response.status,
1012
+ "GET",
1013
+ url,
1014
+ (diagnostic) => fail(response.status, "GET", url, diagnostic)
1015
+ );
1016
+ if (response.status === 304) return { status: "unchanged" };
1017
+ if (response.status !== 200) {
1018
+ throw fail(
1019
+ response.status,
1020
+ "GET",
1021
+ url,
1022
+ `Discovery endpoint responded with HTTP ${response.status}`
1023
+ );
1024
+ }
1025
+ return {
1026
+ status: "loaded",
1027
+ snapshot: await response.json(),
1028
+ etag: response.headers.get("ETag")
1029
+ };
1030
+ },
1031
+ /**
1032
+ * Re-runs the scan and returns what it found.
1033
+ *
1034
+ * Unconditional by construction: a rescan asks the server to look again,
1035
+ * so revalidating against a tag the previous scan produced would answer
1036
+ * with the snapshot the rescan was meant to replace.
1037
+ */
1038
+ rescan: async (http, ctx) => {
1039
+ const url = `${discoveryUrl(ctx)}/rescan`;
1040
+ const response = await http(url, {
1041
+ method: "POST",
1042
+ headers: { "content-type": "application/json" }
1043
+ });
1044
+ requireServerAnswer(
1045
+ response.status,
1046
+ "POST",
1047
+ url,
1048
+ (diagnostic) => fail(response.status, "POST", url, diagnostic)
1049
+ );
1050
+ if (response.status !== 200 && response.status !== 201) {
1051
+ throw fail(
1052
+ response.status,
1053
+ "POST",
1054
+ url,
1055
+ `Discovery rescan responded with HTTP ${response.status}`
1056
+ );
1057
+ }
1058
+ return {
1059
+ snapshot: await response.json(),
1060
+ etag: response.headers.get("ETag")
1061
+ };
1062
+ }
1063
+ });
1064
+
1065
+ // src/client/resources/marketing.resource.ts
1066
+ function projectionsUrl(ctx) {
1067
+ return `${ctx.apiBase}/catalog/marketing-projections`;
1068
+ }
1069
+ function settingsUrl(ctx) {
1070
+ return `${ctx.apiBase}/catalog/marketing-settings`;
1071
+ }
1072
+ var marketingResource = defineResource(
1073
+ "marketing",
1074
+ {
1075
+ listProjections: async (http, ctx, filter = {}) => {
1076
+ const params = new URLSearchParams();
1077
+ params.set("projectKey", ctx.projectKey);
1078
+ if (filter.targetType) params.set("targetType", filter.targetType);
1079
+ if (filter.targetVersionId) params.set("targetVersionId", filter.targetVersionId);
1080
+ if (filter.locale) params.set("locale", filter.locale);
1081
+ return await requestJson(
1082
+ http,
1083
+ `${projectionsUrl(ctx)}?${params.toString()}`
1084
+ ) ?? [];
1085
+ },
1086
+ /**
1087
+ * The request only. `useMarketingProjections.create` reloads the list
1088
+ * afterwards because a unique-tuple insert can change what the filter
1089
+ * matches — that is the composable keeping its refs true, not part of
1090
+ * the call.
1091
+ */
1092
+ createProjection: (http, ctx, data) => requestJsonBody(
1093
+ http,
1094
+ projectionsUrl(ctx),
1095
+ "Create returned no body",
1096
+ { method: "POST", body: data }
1097
+ ),
1098
+ updateProjection: (http, ctx, id, data) => requestJsonBody(
1099
+ http,
1100
+ `${projectionsUrl(ctx)}/${id}`,
1101
+ "Update returned no body",
1102
+ { method: "PATCH", body: data }
1103
+ ),
1104
+ deleteProjection: async (http, ctx, id) => {
1105
+ await requestJson(http, `${projectionsUrl(ctx)}/${id}`, { method: "DELETE" });
1106
+ },
1107
+ /**
1108
+ * The activated locale subset, or `null` when none was ever stored.
1109
+ *
1110
+ * `null` means the full pool is active — the server's answer for "no
1111
+ * row", and the state the page falls back to.
1112
+ */
1113
+ settings: (http, ctx) => requestJson(
1114
+ http,
1115
+ `${settingsUrl(ctx)}?projectKey=${encodeURIComponent(ctx.projectKey)}`
1116
+ ),
1117
+ /** `PUT`, not `PATCH`: the endpoint replaces the set it is given. */
1118
+ saveSettings: async (http, ctx, activeLocales) => {
1119
+ await requestJson(http, settingsUrl(ctx), {
1120
+ method: "PUT",
1121
+ body: { projectKey: ctx.projectKey, activeLocales }
1122
+ });
1123
+ }
1124
+ },
1125
+ { projectScoped: true }
1126
+ );
1127
+
1128
+ // src/client/resources/promo-codes.resource.ts
1129
+ function promoCodesUrl(ctx) {
1130
+ return `${ctx.apiBase}/promo-codes`;
1131
+ }
1132
+ var promoCodesResource = defineResource("promoCodes", {
1133
+ list: async (http, ctx, filter = {}) => await requestJson(
1134
+ http,
1135
+ `${promoCodesUrl(ctx)}${filterQueryString({
1136
+ search: filter.search,
1137
+ status: filter.status
1138
+ })}`
1139
+ ) ?? [],
1140
+ /**
1141
+ * Returns nothing, matching `createAdminResourceClient.createPromo`.
1142
+ *
1143
+ * The endpoint does answer with the created record, but the page it feeds
1144
+ * reloads the list rather than reading it, and promising a body a caller
1145
+ * would then have to trust is a wider contract than anything holds today.
1146
+ */
1147
+ create: async (http, ctx, payload) => {
1148
+ await requestJson(http, promoCodesUrl(ctx), { method: "POST", body: payload });
1149
+ },
1150
+ update: async (http, ctx, id, payload) => {
1151
+ await requestJson(http, `${promoCodesUrl(ctx)}/${encodeURIComponent(id)}`, {
1152
+ method: "PATCH",
1153
+ body: payload
1154
+ });
1155
+ },
1156
+ remove: async (http, ctx, id) => {
1157
+ await requestJson(http, `${promoCodesUrl(ctx)}/${encodeURIComponent(id)}`, {
1158
+ method: "DELETE"
1159
+ });
1160
+ }
1161
+ });
1162
+
1163
+ // src/client/resources/promotions.resource.ts
1164
+ function promotionsUrl(ctx) {
1165
+ return `${ctx.apiBase}/catalog/promotions`;
1166
+ }
1167
+ var promotionsResource = defineResource(
1168
+ "promotions",
1169
+ {
1170
+ list: async (http, ctx) => await requestJson(
1171
+ http,
1172
+ `${promotionsUrl(ctx)}?projectKey=${encodeURIComponent(ctx.projectKey)}`
1173
+ ) ?? [],
1174
+ create: (http, ctx, data) => requestJsonBody(http, promotionsUrl(ctx), "Create returned no body", {
1175
+ method: "POST",
1176
+ body: data
1177
+ }),
1178
+ update: (http, ctx, id, data) => requestJsonBody(
1179
+ http,
1180
+ `${promotionsUrl(ctx)}/${id}`,
1181
+ "Update returned no body",
1182
+ { method: "PATCH", body: data }
1183
+ ),
1184
+ remove: async (http, ctx, id) => {
1185
+ await requestJson(http, `${promotionsUrl(ctx)}/${id}`, { method: "DELETE" });
1186
+ }
1187
+ },
1188
+ { projectScoped: true }
1189
+ );
1190
+
845
1191
  // src/client/resources/tenants.resource.ts
1192
+ function tenantsUrl(ctx) {
1193
+ return `${ctx.apiBase}/tenants`;
1194
+ }
1195
+ function tenantUrl(ctx, slug) {
1196
+ return `${tenantsUrl(ctx)}/${encodeURIComponent(slug)}`;
1197
+ }
846
1198
  var tenantsResource = defineResource("tenants", {
847
- list: defineListOp((ctx) => `${ctx.apiBase}/tenants`)
1199
+ list: defineListOp((ctx) => tenantsUrl(ctx)),
1200
+ detail: async (http, ctx, slug) => requestJson(http, tenantUrl(ctx, slug)),
1201
+ /**
1202
+ * Suspends a tenant. The reason is recorded on the audit trail, so it is a
1203
+ * required argument rather than an option with a default.
1204
+ */
1205
+ suspend: async (http, ctx, slug, reason) => {
1206
+ await requestJson(http, `${tenantUrl(ctx, slug)}/suspend`, {
1207
+ method: "POST",
1208
+ body: { reason }
1209
+ });
1210
+ },
1211
+ reactivate: async (http, ctx, slug) => {
1212
+ await requestJson(http, `${tenantUrl(ctx, slug)}/reactivate`, { method: "POST" });
1213
+ }
1214
+ });
1215
+
1216
+ // src/client/resources/users.resource.ts
1217
+ function usersUrl(ctx) {
1218
+ return `${ctx.apiBase}/users`;
1219
+ }
1220
+ var usersResource = defineResource("users", {
1221
+ /**
1222
+ * `q` searches name and mail, `tenant` narrows to one tenant's members.
1223
+ *
1224
+ * Both are dropped when empty rather than sent as `q=` — see
1225
+ * `isSentInQuery`; an empty search that reached the server would filter
1226
+ * every row away on an endpoint that treats the parameter as a substring.
1227
+ */
1228
+ list: async (http, ctx, filter = {}) => await requestJson(
1229
+ http,
1230
+ `${usersUrl(ctx)}${filterQueryString({ q: filter.q, tenant: filter.tenant })}`
1231
+ ) ?? []
1232
+ });
1233
+
1234
+ // src/client/resources/subscriptions.resource.ts
1235
+ function subscriptionsUrl(ctx) {
1236
+ return `${ctx.apiBase}/subscriptions`;
1237
+ }
1238
+ var subscriptionsResource = defineResource("subscriptions", {
1239
+ list: async (http, ctx) => await requestJson(http, subscriptionsUrl(ctx)) ?? []
848
1240
  });
849
1241
 
850
1242
  // src/client/resources/audit.resource.ts
@@ -856,7 +1248,16 @@ var auditResource = defineResource("audit", {
856
1248
  var platformResources = {
857
1249
  plans: plansResource,
858
1250
  planVersions: planVersionsResource,
1251
+ bundles: bundlesResource,
1252
+ bundleVersions: bundleVersionsResource,
1253
+ catalog: catalogResource,
1254
+ discovery: discoveryResource,
1255
+ marketing: marketingResource,
1256
+ promoCodes: promoCodesResource,
1257
+ promotions: promotionsResource,
859
1258
  tenants: tenantsResource,
1259
+ users: usersResource,
1260
+ subscriptions: subscriptionsResource,
860
1261
  audit: auditResource
861
1262
  };
862
1263
 
@@ -6396,7 +6797,7 @@ function useBundleVersions(options) {
6396
6797
  const versions = (0, import_vue24.ref)([]);
6397
6798
  const loading = (0, import_vue24.ref)(false);
6398
6799
  const error = (0, import_vue24.ref)(null);
6399
- const bundleVersionsUrl = `${options.adminEndpoint}/catalog/bundles/${options.bundleId}/versions`;
6800
+ const bundleVersionsUrl2 = `${options.adminEndpoint}/catalog/bundles/${options.bundleId}/versions`;
6400
6801
  const versionUrlBase = `${options.adminEndpoint}/catalog/bundle-versions`;
6401
6802
  function authHeaders() {
6402
6803
  const token = options.getAuthToken?.();
@@ -6430,7 +6831,7 @@ function useBundleVersions(options) {
6430
6831
  loading.value = true;
6431
6832
  error.value = null;
6432
6833
  try {
6433
- const data = await fetchJson(bundleVersionsUrl);
6834
+ const data = await fetchJson(bundleVersionsUrl2);
6434
6835
  versions.value = data ?? [];
6435
6836
  } catch (err) {
6436
6837
  error.value = err instanceof Error ? err : new Error(String(err));
@@ -6439,7 +6840,7 @@ function useBundleVersions(options) {
6439
6840
  }
6440
6841
  }
6441
6842
  async function createDraft(data) {
6442
- const result = await fetchJson(bundleVersionsUrl, {
6843
+ const result = await fetchJson(bundleVersionsUrl2, {
6443
6844
  method: "POST",
6444
6845
  body: JSON.stringify(data)
6445
6846
  });
@@ -8031,6 +8432,9 @@ function planChangeWizardI18n(i18n) {
8031
8432
  buildQuotaRegistry,
8032
8433
  buildRoutes,
8033
8434
  buildSidebar,
8435
+ bundleVersionsResource,
8436
+ bundlesResource,
8437
+ catalogResource,
8034
8438
  clampListPage,
8035
8439
  clampListPageSize,
8036
8440
  countPlans,
@@ -8054,6 +8458,7 @@ function planChangeWizardI18n(i18n) {
8054
8458
  defineListOp,
8055
8459
  defineMessages,
8056
8460
  defineResource,
8461
+ discoveryResource,
8057
8462
  filterQueryString,
8058
8463
  formatCurrency,
8059
8464
  formatMessage,
@@ -8076,12 +8481,15 @@ function planChangeWizardI18n(i18n) {
8076
8481
  markEmptyResponse,
8077
8482
  markPlatformError,
8078
8483
  markTransportFailure,
8484
+ marketingResource,
8079
8485
  mergeMessages,
8080
8486
  planChangeWizardI18n,
8081
8487
  planVersionsResource,
8082
8488
  plansResource,
8083
8489
  platformResources,
8084
8490
  postJson,
8491
+ promoCodesResource,
8492
+ promotionsResource,
8085
8493
  provideEntitlement,
8086
8494
  readErrorCode,
8087
8495
  readErrorDetail,
@@ -8094,6 +8502,7 @@ function planChangeWizardI18n(i18n) {
8094
8502
  resolveMessages,
8095
8503
  resolvePlans,
8096
8504
  resolveSuperAdminEndpoints,
8505
+ subscriptionsResource,
8097
8506
  tenantsResource,
8098
8507
  toAdminError,
8099
8508
  todayIsoDate,
@@ -8141,5 +8550,6 @@ function planChangeWizardI18n(i18n) {
8141
8550
  useTenantBillingCatalog,
8142
8551
  useTenantManifest,
8143
8552
  useTenantSubscriptionBundles,
8144
- useTenants
8553
+ useTenants,
8554
+ usersResource
8145
8555
  });
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { AdminError, BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.cjs';
2
- export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, toAdminError, todayIsoDate, trimTrailingSlashes } from './client/index.cjs';
3
- import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-Dch1Ryw0.cjs';
4
- export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as HttpResponse, L as LIST_FIRST_PAGE, m as LIST_PAGE_SIZE_DEFAULT, n as LIST_PAGE_SIZE_MAX, o as LIST_PAGINATION_PARAMS, q as ListFilterOf, r as ListOp, s as ListQuery, M as MessageTree, t as MissingHandlerError, u as PartialMessages, v as PublishPlanVersionOptions, w as ResolvedAction, f as ResourceContext, R as ResourceDef, x as ResourceOp, y as SA_INTL_LOCALES, z as SA_LOCALES, C as SA_LOCALE_LABELS, E as SA_MESSAGES, F as SaBuiltinLocale, G as SaCatalog, I as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TenantsListFilter, J as TranslationOf, N as auditResource, O as bindResource, Q as clampListPage, U as clampListPageSize, V as createSaCatalog, W as defaultHttpClient, X as defaultKvStore, Y as defineListOp, Z as defineMessages, _ as defineResource, $ as filterQueryString, a0 as isSaBuiltinLocale, a1 as isSentInQuery, a2 as listUrl, a3 as mergeMessages, a4 as planVersionsResource, a5 as plansResource, p as platformResources, a6 as readListPage, a7 as resolveMessages, a8 as tenantsResource } from './catalog-Dch1Ryw0.cjs';
5
- import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-D7Xjs-5f.cjs';
6
- export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-D7Xjs-5f.cjs';
2
+ export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, catalogResource, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, promotionsResource, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, subscriptionsResource, toAdminError, todayIsoDate, trimTrailingSlashes, usersResource } from './client/index.cjs';
3
+ import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-Dv2twuNi.cjs';
4
+ export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as DiscoveryRead, m as HttpResponse, L as LIST_FIRST_PAGE, n as LIST_PAGE_SIZE_DEFAULT, o as LIST_PAGE_SIZE_MAX, q as LIST_PAGINATION_PARAMS, r as ListFilterOf, s as ListOp, t as ListQuery, M as MarketingProjectionsFilter, u as MessageTree, v as MissingHandlerError, w as PartialMessages, x as PromoCodesFilter, y as PublishBundleVersionOptions, z as PublishPlanVersionOptions, C as ResolvedAction, f as ResourceContext, R as ResourceDef, E as ResourceOp, F as SA_INTL_LOCALES, G as SA_LOCALES, I as SA_LOCALE_LABELS, J as SA_MESSAGES, N as SaBuiltinLocale, O as SaCatalog, Q as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TenantsListFilter, U as TranslationOf, V as auditResource, W as bindResource, X as bundleVersionsResource, Y as bundlesResource, Z as clampListPage, _ as clampListPageSize, $ as createSaCatalog, a0 as defaultHttpClient, a1 as defaultKvStore, a2 as defineListOp, a3 as defineMessages, a4 as defineResource, a5 as discoveryResource, a6 as filterQueryString, a7 as isSaBuiltinLocale, a8 as isSentInQuery, a9 as listUrl, aa as marketingResource, ab as mergeMessages, ac as planVersionsResource, ad as plansResource, p as platformResources, ae as promoCodesResource, af as readListPage, ag as resolveMessages, ah as tenantsResource } from './catalog-Dv2twuNi.cjs';
5
+ import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-BxFpnzHY.cjs';
6
+ export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-BxFpnzHY.cjs';
7
7
  import { AdminManifest, TenantListFilter, TenantDto, AuditQuery, AuditEntry, FeatureUiRegistry, PromoPreviewResponse, OnboardingSelectionRequest, PublicMarketingBundle, FeatureDef, FeatureKey, PublicBootResponse, DiscoverySnapshot, CapabilityCatalogEntryRow, FeatureCatalogEntryRow, QuotaCatalogEntryRow, ReviewCatalogEntryData, CatalogEntryI18n, UpdateCatalogEntryBaseData, SyncDiscoveryResult, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, SubscriptionBundleRecord, MarketingProjectionFilter, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, PromotionRow, CreatePromotionData, UpdatePromotionData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
8
8
  import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
9
9
  import * as vue from 'vue';
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { AdminError, BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.js';
2
- export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, toAdminError, todayIsoDate, trimTrailingSlashes } from './client/index.js';
3
- import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-Dch1Ryw0.js';
4
- export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as HttpResponse, L as LIST_FIRST_PAGE, m as LIST_PAGE_SIZE_DEFAULT, n as LIST_PAGE_SIZE_MAX, o as LIST_PAGINATION_PARAMS, q as ListFilterOf, r as ListOp, s as ListQuery, M as MessageTree, t as MissingHandlerError, u as PartialMessages, v as PublishPlanVersionOptions, w as ResolvedAction, f as ResourceContext, R as ResourceDef, x as ResourceOp, y as SA_INTL_LOCALES, z as SA_LOCALES, C as SA_LOCALE_LABELS, E as SA_MESSAGES, F as SaBuiltinLocale, G as SaCatalog, I as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TenantsListFilter, J as TranslationOf, N as auditResource, O as bindResource, Q as clampListPage, U as clampListPageSize, V as createSaCatalog, W as defaultHttpClient, X as defaultKvStore, Y as defineListOp, Z as defineMessages, _ as defineResource, $ as filterQueryString, a0 as isSaBuiltinLocale, a1 as isSentInQuery, a2 as listUrl, a3 as mergeMessages, a4 as planVersionsResource, a5 as plansResource, p as platformResources, a6 as readListPage, a7 as resolveMessages, a8 as tenantsResource } from './catalog-Dch1Ryw0.js';
5
- import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-TaR7rtq0.js';
6
- export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-TaR7rtq0.js';
2
+ export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, catalogResource, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, promotionsResource, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, subscriptionsResource, toAdminError, todayIsoDate, trimTrailingSlashes, usersResource } from './client/index.js';
3
+ import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-Dv2twuNi.js';
4
+ export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as DiscoveryRead, m as HttpResponse, L as LIST_FIRST_PAGE, n as LIST_PAGE_SIZE_DEFAULT, o as LIST_PAGE_SIZE_MAX, q as LIST_PAGINATION_PARAMS, r as ListFilterOf, s as ListOp, t as ListQuery, M as MarketingProjectionsFilter, u as MessageTree, v as MissingHandlerError, w as PartialMessages, x as PromoCodesFilter, y as PublishBundleVersionOptions, z as PublishPlanVersionOptions, C as ResolvedAction, f as ResourceContext, R as ResourceDef, E as ResourceOp, F as SA_INTL_LOCALES, G as SA_LOCALES, I as SA_LOCALE_LABELS, J as SA_MESSAGES, N as SaBuiltinLocale, O as SaCatalog, Q as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TenantsListFilter, U as TranslationOf, V as auditResource, W as bindResource, X as bundleVersionsResource, Y as bundlesResource, Z as clampListPage, _ as clampListPageSize, $ as createSaCatalog, a0 as defaultHttpClient, a1 as defaultKvStore, a2 as defineListOp, a3 as defineMessages, a4 as defineResource, a5 as discoveryResource, a6 as filterQueryString, a7 as isSaBuiltinLocale, a8 as isSentInQuery, a9 as listUrl, aa as marketingResource, ab as mergeMessages, ac as planVersionsResource, ad as plansResource, p as platformResources, ae as promoCodesResource, af as readListPage, ag as resolveMessages, ah as tenantsResource } from './catalog-Dv2twuNi.js';
5
+ import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-Cn1Gy2LE.js';
6
+ export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-Cn1Gy2LE.js';
7
7
  import { AdminManifest, TenantListFilter, TenantDto, AuditQuery, AuditEntry, FeatureUiRegistry, PromoPreviewResponse, OnboardingSelectionRequest, PublicMarketingBundle, FeatureDef, FeatureKey, PublicBootResponse, DiscoverySnapshot, CapabilityCatalogEntryRow, FeatureCatalogEntryRow, QuotaCatalogEntryRow, ReviewCatalogEntryData, CatalogEntryI18n, UpdateCatalogEntryBaseData, SyncDiscoveryResult, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, SubscriptionBundleRecord, MarketingProjectionFilter, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, PromotionRow, CreatePromotionData, UpdatePromotionData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
8
8
  import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
9
9
  import * as vue from 'vue';