@streamoid/settings 0.4.2 → 0.4.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.
package/dist/index.js CHANGED
@@ -20,11 +20,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ APP_KEYS: () => APP_KEYS,
23
24
  BillingContent: () => BillingContent,
24
25
  BuyCreditsModal: () => BuyCreditsModal,
25
26
  ConfirmDeleteModal: () => ConfirmDeleteModal,
26
27
  ConfirmLeaveModal: () => ConfirmLeaveModal,
27
28
  DEFAULT_PERMISSIONS: () => DEFAULT_PERMISSIONS,
29
+ DEFAULT_USER_LANGUAGE: () => DEFAULT_USER_LANGUAGE,
28
30
  ExportDateModal: () => ExportDateModal,
29
31
  InviteUpdateModal: () => InviteUpdateModal,
30
32
  MemberListFrame: () => MemberListFrame,
@@ -49,13 +51,15 @@ __export(index_exports, {
49
51
  TeamsContent: () => TeamsContent,
50
52
  TokensContent: () => TokensContent,
51
53
  URL_TO_TAB: () => URL_TO_TAB,
54
+ USER_LANGUAGES: () => USER_LANGUAGES,
52
55
  WorkspaceGeneralTab: () => WorkspaceGeneralTab,
53
56
  WorkspaceListTab: () => WorkspaceListTab,
54
57
  WorkspaceModal: () => WorkspaceModal,
55
58
  WorkspaceTab: () => WorkspaceTab,
56
59
  countLabel: () => countLabel,
57
60
  resolveSettingsTabFromPath: () => resolveSettingsTabFromPath,
58
- useSettingsAdapters: () => useSettingsAdapters
61
+ useSettingsAdapters: () => useSettingsAdapters,
62
+ userLanguageLabel: () => userLanguageLabel
59
63
  });
60
64
  module.exports = __toCommonJS(index_exports);
61
65
 
@@ -90,6 +94,27 @@ var SiconKey = ({ color = "currentColor", strokeWidth = 1.25, size = 24, ...prop
90
94
  };
91
95
  var SiconKey_default = SiconKey;
92
96
 
97
+ // src/languages.ts
98
+ var USER_LANGUAGES = [
99
+ { code: "en", label: "English" },
100
+ { code: "es", label: "Spanish" },
101
+ { code: "fr", label: "French" },
102
+ { code: "pt", label: "Portuguese" },
103
+ { code: "hi", label: "Hindi" },
104
+ { code: "kn", label: "Kannada" },
105
+ { code: "te", label: "Telugu" },
106
+ { code: "ta", label: "Tamil" },
107
+ { code: "mr", label: "Marathi" },
108
+ { code: "gu", label: "Gujarati" },
109
+ { code: "bn", label: "Bengali" },
110
+ { code: "ar", label: "Arabic" }
111
+ ];
112
+ var DEFAULT_USER_LANGUAGE = "en";
113
+ function userLanguageLabel(code) {
114
+ const resolved = (code || "").trim() || DEFAULT_USER_LANGUAGE;
115
+ return USER_LANGUAGES.find((lang) => lang.code === resolved)?.label ?? resolved;
116
+ }
117
+
93
118
  // src/workspace-modal.tsx
94
119
  var import_react3 = require("react");
95
120
 
@@ -2426,6 +2451,24 @@ var svg_rodctpja6f_default = {
2426
2451
  p83fc200: "M2.25 12.25C2.25 6.72715 6.72715 2.25 12.25 2.25C17.7728 2.25 22.25 6.72715 22.25 12.25C22.25 17.7728 17.7728 22.25 12.25 22.25C6.72715 22.25 2.25 17.7728 2.25 12.25Z"
2427
2452
  };
2428
2453
 
2454
+ // src/team-types.ts
2455
+ var APP_KEYS = [
2456
+ "artifax",
2457
+ "photogenix",
2458
+ "returns",
2459
+ "catalogix"
2460
+ ];
2461
+ var DEFAULT_PERMISSIONS = {
2462
+ artifax: true,
2463
+ photogenix: true,
2464
+ catalogix: true,
2465
+ returns: true,
2466
+ canUseCredits: true,
2467
+ canInviteUser: true,
2468
+ role: "admin",
2469
+ catalogixStores: []
2470
+ };
2471
+
2429
2472
  // src/invite-update-modal.tsx
2430
2473
  var import_jsx_runtime10 = require("react/jsx-runtime");
2431
2474
  var T6 = {
@@ -2532,6 +2575,7 @@ function InviteUpdateModal({
2532
2575
  mode,
2533
2576
  userEmail = "email@domain.in",
2534
2577
  stores = [],
2578
+ hiddenApps = [],
2535
2579
  allowSubmitWithoutChanges = false,
2536
2580
  initialPermissions,
2537
2581
  onClose,
@@ -2546,25 +2590,35 @@ function InviteUpdateModal({
2546
2590
  const [role, setRole] = (0, import_react7.useState)("admin");
2547
2591
  const [canUseCredits, setCanUseCredits] = (0, import_react7.useState)(false);
2548
2592
  const [canInviteUser, setCanInviteUser] = (0, import_react7.useState)(false);
2549
- const [artifaxOn, setArtifaxOn] = (0, import_react7.useState)(true);
2550
- const [photogenixOn, setPhotogenixOn] = (0, import_react7.useState)(true);
2551
- const [catalogixOn, setCatalogixOn] = (0, import_react7.useState)(true);
2552
- const [returnsOn, setReturnsOn] = (0, import_react7.useState)(true);
2593
+ const [artifaxOn, setArtifaxOn] = (0, import_react7.useState)(!hiddenApps.includes("artifax"));
2594
+ const [photogenixOn, setPhotogenixOn] = (0, import_react7.useState)(
2595
+ !hiddenApps.includes("photogenix")
2596
+ );
2597
+ const [catalogixOn, setCatalogixOn] = (0, import_react7.useState)(
2598
+ !hiddenApps.includes("catalogix")
2599
+ );
2600
+ const [returnsOn, setReturnsOn] = (0, import_react7.useState)(!hiddenApps.includes("returns"));
2553
2601
  const [storeSearch, setStoreSearch] = (0, import_react7.useState)("");
2554
2602
  const [selectedStores, setSelectedStores] = (0, import_react7.useState)(/* @__PURE__ */ new Set());
2555
2603
  const filteredStores = stores.filter(
2556
2604
  (s) => (s.name || s._id).toLowerCase().includes(storeSearch.toLowerCase())
2557
2605
  );
2606
+ const hiddenKey = [...hiddenApps].sort().join(",");
2558
2607
  (0, import_react7.useEffect)(() => {
2608
+ const hidden = new Set(hiddenKey ? hiddenKey.split(",") : []);
2559
2609
  if (open && initialPermissions) {
2560
2610
  setRole(initialPermissions.role);
2561
2611
  setCanUseCredits(initialPermissions.canUseCredits);
2562
2612
  setCanInviteUser(initialPermissions.canInviteUser);
2563
- setArtifaxOn(initialPermissions.artifax);
2564
- setPhotogenixOn(initialPermissions.photogenix);
2565
- setCatalogixOn(initialPermissions.catalogix);
2566
- setReturnsOn(initialPermissions.returns);
2567
- setSelectedStores(new Set(initialPermissions.catalogixStores));
2613
+ setArtifaxOn(!hidden.has("artifax") && initialPermissions.artifax);
2614
+ setPhotogenixOn(
2615
+ !hidden.has("photogenix") && initialPermissions.photogenix
2616
+ );
2617
+ setCatalogixOn(!hidden.has("catalogix") && initialPermissions.catalogix);
2618
+ setReturnsOn(!hidden.has("returns") && initialPermissions.returns);
2619
+ setSelectedStores(
2620
+ new Set(hidden.has("catalogix") ? [] : initialPermissions.catalogixStores)
2621
+ );
2568
2622
  }
2569
2623
  if (!open) {
2570
2624
  setEmailValue("");
@@ -2572,21 +2626,32 @@ function InviteUpdateModal({
2572
2626
  setRole("admin");
2573
2627
  setCanUseCredits(true);
2574
2628
  setCanInviteUser(true);
2575
- setArtifaxOn(true);
2576
- setPhotogenixOn(true);
2577
- setCatalogixOn(true);
2578
- setReturnsOn(true);
2629
+ setArtifaxOn(!hidden.has("artifax"));
2630
+ setPhotogenixOn(!hidden.has("photogenix"));
2631
+ setCatalogixOn(!hidden.has("catalogix"));
2632
+ setReturnsOn(!hidden.has("returns"));
2579
2633
  setStoreSearch("");
2580
2634
  setSelectedStores(/* @__PURE__ */ new Set());
2581
2635
  }
2582
- }, [open, initialPermissions]);
2636
+ }, [open, initialPermissions, hiddenKey]);
2583
2637
  if (!open) return null;
2584
2638
  const isInvite = mode === "invite";
2585
2639
  const hasEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(emailValue.trim());
2586
- const isSubmitDisabled = isInvite ? !hasEmail : !(allowSubmitWithoutChanges || hasChanges);
2587
2640
  function markChanged() {
2588
2641
  setHasChanges(true);
2589
2642
  }
2643
+ const shownApps = APP_KEYS.filter((key) => !hiddenApps.includes(key));
2644
+ const showsApp = (key) => shownApps.includes(key);
2645
+ const appToggles = {
2646
+ artifax: artifaxOn,
2647
+ photogenix: photogenixOn,
2648
+ returns: returnsOn,
2649
+ catalogix: catalogixOn
2650
+ };
2651
+ const notLastShown = (key) => shownApps[shownApps.length - 1] !== key;
2652
+ const appValue = (key) => role === "admin" || showsApp(key) ? appToggles[key] : false;
2653
+ const grantsNoApp = role === "member" && shownApps.length > 0 && !shownApps.some((key) => appToggles[key]);
2654
+ const isSubmitDisabled = isInvite ? !hasEmail || grantsNoApp : !(allowSubmitWithoutChanges || hasChanges);
2590
2655
  function toggleStore(storeId) {
2591
2656
  setSelectedStores((prev) => {
2592
2657
  const next = new Set(prev);
@@ -2944,7 +3009,7 @@ function InviteUpdateModal({
2944
3009
  ]
2945
3010
  }
2946
3011
  ),
2947
- role !== "admin" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3012
+ role !== "admin" && shownApps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
2948
3013
  "div",
2949
3014
  {
2950
3015
  className: "flex flex-col items-start justify-center shrink-0 w-full",
@@ -2960,8 +3025,8 @@ function InviteUpdateModal({
2960
3025
  borderRadius: T6.r3xl
2961
3026
  },
2962
3027
  children: [
2963
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "shrink-0 w-full relative", children: [
2964
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3028
+ showsApp("artifax") && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "shrink-0 w-full relative", children: [
3029
+ notLastShown("artifax") && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2965
3030
  "div",
2966
3031
  {
2967
3032
  "aria-hidden": true,
@@ -3054,9 +3119,9 @@ function InviteUpdateModal({
3054
3119
  ]
3055
3120
  }
3056
3121
  ) })
3057
- ] }),
3058
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "shrink-0 w-full relative", children: [
3059
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3122
+ ] }) }),
3123
+ showsApp("photogenix") && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "shrink-0 w-full relative", children: [
3124
+ notLastShown("photogenix") && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3060
3125
  "div",
3061
3126
  {
3062
3127
  "aria-hidden": true,
@@ -3149,234 +3214,179 @@ function InviteUpdateModal({
3149
3214
  ]
3150
3215
  }
3151
3216
  ) })
3152
- ] }),
3153
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "shrink-0 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-col justify-center size-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3217
+ ] }) }),
3218
+ showsApp("returns") && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3154
3219
  "div",
3155
3220
  {
3156
- className: "flex flex-col items-start justify-center w-full",
3157
- style: { padding: T6.sp3xl, gap: T6.sp3xl },
3158
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3221
+ className: "shrink-0 w-full",
3222
+ style: notLastShown("returns") ? { borderBottom: `1px solid ${T6.borderSubtle}` } : void 0,
3223
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-col justify-center size-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3159
3224
  "div",
3160
3225
  {
3161
- className: "flex items-center shrink-0 w-full",
3162
- style: { gap: T6.sp3xl },
3163
- children: [
3164
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3165
- "div",
3166
- {
3167
- className: "flex flex-1 min-w-0 items-center",
3168
- style: { gap: T6.spXl },
3169
- children: [
3170
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3171
- "div",
3172
- {
3173
- className: "shrink-0 flex items-center",
3174
- style: {
3175
- background: T6.fillHover,
3176
- borderRadius: T6.rXl,
3177
- padding: T6.spMd
3178
- },
3179
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3180
- import_icons3.SiconArrowLeftRight,
3226
+ className: "flex flex-col items-start justify-center w-full",
3227
+ style: { padding: T6.sp3xl, gap: T6.sp3xl },
3228
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3229
+ "div",
3230
+ {
3231
+ className: "flex items-center shrink-0 w-full",
3232
+ style: { gap: T6.sp3xl },
3233
+ children: [
3234
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3235
+ "div",
3236
+ {
3237
+ className: "flex flex-1 min-w-0 items-center",
3238
+ style: { gap: T6.spXl },
3239
+ children: [
3240
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3241
+ "div",
3181
3242
  {
3182
- className: "w-6 h-6",
3183
- color: T6.primary
3243
+ className: "shrink-0 flex items-center",
3244
+ style: {
3245
+ background: T6.fillHover,
3246
+ borderRadius: T6.rXl,
3247
+ padding: T6.spMd
3248
+ },
3249
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3250
+ import_icons3.SiconArrowLeftRight,
3251
+ {
3252
+ className: "w-6 h-6",
3253
+ color: T6.primary
3254
+ }
3255
+ )
3256
+ }
3257
+ ),
3258
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3259
+ "div",
3260
+ {
3261
+ className: "flex flex-1 min-w-0 flex-col items-start overflow-hidden text-ellipsis whitespace-nowrap",
3262
+ style: { opacity: returnsOn ? 1 : 0.5 },
3263
+ children: [
3264
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3265
+ "p",
3266
+ {
3267
+ className: "w-full overflow-hidden shrink-0",
3268
+ style: {
3269
+ fontFamily: T6.font,
3270
+ fontSize: T6.fsSm,
3271
+ fontWeight: 500,
3272
+ lineHeight: T6.lhSm,
3273
+ color: T6.primary
3274
+ },
3275
+ children: "Returns"
3276
+ }
3277
+ ),
3278
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3279
+ "p",
3280
+ {
3281
+ className: "w-full overflow-hidden shrink-0",
3282
+ style: {
3283
+ fontFamily: T6.font,
3284
+ fontSize: T6.fsXs,
3285
+ fontWeight: 400,
3286
+ lineHeight: T6.lhXs,
3287
+ color: T6.tertiary
3288
+ },
3289
+ children: "Raise SPF claims for Marketplaces"
3290
+ }
3291
+ )
3292
+ ]
3184
3293
  }
3185
3294
  )
3295
+ ]
3296
+ }
3297
+ ),
3298
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3299
+ ToggleSwitch,
3300
+ {
3301
+ active: returnsOn,
3302
+ onClick: () => {
3303
+ setReturnsOn(!returnsOn);
3304
+ markChanged();
3186
3305
  }
3187
- ),
3188
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3189
- "div",
3190
- {
3191
- className: "flex flex-1 min-w-0 flex-col items-start overflow-hidden text-ellipsis whitespace-nowrap",
3192
- style: { opacity: returnsOn ? 1 : 0.5 },
3193
- children: [
3194
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3195
- "p",
3196
- {
3197
- className: "w-full overflow-hidden shrink-0",
3198
- style: {
3199
- fontFamily: T6.font,
3200
- fontSize: T6.fsSm,
3201
- fontWeight: 500,
3202
- lineHeight: T6.lhSm,
3203
- color: T6.primary
3204
- },
3205
- children: "Returns"
3206
- }
3207
- ),
3208
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3209
- "p",
3210
- {
3211
- className: "w-full overflow-hidden shrink-0",
3212
- style: {
3213
- fontFamily: T6.font,
3214
- fontSize: T6.fsXs,
3215
- fontWeight: 400,
3216
- lineHeight: T6.lhXs,
3217
- color: T6.tertiary
3218
- },
3219
- children: "Raise SPF claims for Marketplaces"
3220
- }
3221
- )
3222
- ]
3223
- }
3224
- )
3225
- ]
3226
- }
3227
- ),
3228
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3229
- ToggleSwitch,
3230
- {
3231
- active: returnsOn,
3232
- onClick: () => {
3233
- setReturnsOn(!returnsOn);
3234
- markChanged();
3235
- }
3236
- }
3237
- )
3238
- ]
3306
+ }
3307
+ )
3308
+ ]
3309
+ }
3310
+ )
3239
3311
  }
3240
- )
3312
+ ) })
3241
3313
  }
3242
- ) }) }),
3243
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "shrink-0 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-col justify-center size-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3314
+ ) }),
3315
+ showsApp("catalogix") && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3244
3316
  "div",
3245
3317
  {
3246
- className: "flex flex-col items-start justify-center w-full",
3247
- style: { padding: T6.sp3xl, gap: T6.sp3xl },
3248
- children: [
3249
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3250
- "div",
3251
- {
3252
- className: "flex items-center shrink-0 w-full",
3253
- style: { gap: T6.sp3xl },
3254
- children: [
3255
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3256
- "div",
3257
- {
3258
- className: "flex flex-1 min-w-0 items-center",
3259
- style: { gap: T6.spXl },
3260
- children: [
3261
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3262
- "div",
3263
- {
3264
- className: "shrink-0 flex items-center",
3265
- style: {
3266
- background: T6.fillHover,
3267
- borderRadius: T6.rXl,
3268
- padding: T6.spMd
3269
- },
3270
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3271
- import_icons3.SiconArtifacts,
3272
- {
3273
- className: "w-6 h-6",
3274
- color: T6.primary
3275
- }
3276
- )
3277
- }
3278
- ),
3279
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3280
- "div",
3281
- {
3282
- className: "flex flex-1 min-w-0 flex-col items-start overflow-hidden text-ellipsis whitespace-nowrap",
3283
- style: { opacity: catalogixOn ? 1 : 0.5 },
3284
- children: [
3285
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3286
- "p",
3287
- {
3288
- className: "w-full overflow-hidden shrink-0",
3289
- style: {
3290
- fontFamily: T6.font,
3291
- fontSize: T6.fsSm,
3292
- fontWeight: 500,
3293
- lineHeight: T6.lhSm,
3294
- color: T6.primary
3295
- },
3296
- children: "Catalogix"
3297
- }
3298
- ),
3299
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3300
- "p",
3301
- {
3302
- className: "w-full overflow-hidden shrink-0",
3303
- style: {
3304
- fontFamily: T6.font,
3305
- fontSize: T6.fsXs,
3306
- fontWeight: 400,
3307
- lineHeight: T6.lhXs,
3308
- color: T6.tertiary
3309
- },
3310
- children: "Centralized product and asset management for every storefront"
3311
- }
3312
- )
3313
- ]
3314
- }
3315
- )
3316
- ]
3317
- }
3318
- ),
3319
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3320
- ToggleSwitch,
3321
- {
3322
- active: catalogixOn,
3323
- onClick: () => {
3324
- setCatalogixOn(!catalogixOn);
3325
- markChanged();
3326
- }
3327
- }
3328
- )
3329
- ]
3330
- }
3331
- ),
3332
- catalogixOn && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3333
- "div",
3334
- {
3335
- className: "shrink-0 w-full",
3336
- style: {
3337
- background: T6.canvasBase,
3338
- borderRadius: T6.r3xl
3339
- },
3340
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3318
+ className: "shrink-0 w-full",
3319
+ style: notLastShown("catalogix") ? { borderBottom: `1px solid ${T6.borderSubtle}` } : void 0,
3320
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-col justify-center size-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3321
+ "div",
3322
+ {
3323
+ className: "flex flex-col items-start justify-center w-full",
3324
+ style: { padding: T6.sp3xl, gap: T6.sp3xl },
3325
+ children: [
3326
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3341
3327
  "div",
3342
3328
  {
3343
- className: "flex flex-col items-start w-full",
3344
- style: { padding: T6.sp3xl, gap: T6.spMd },
3329
+ className: "flex items-center shrink-0 w-full",
3330
+ style: { gap: T6.sp3xl },
3345
3331
  children: [
3346
3332
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3347
3333
  "div",
3348
3334
  {
3349
- className: "flex items-center justify-center shrink-0 w-full",
3350
- style: { gap: T6.spMd },
3335
+ className: "flex flex-1 min-w-0 items-center",
3336
+ style: { gap: T6.spXl },
3351
3337
  children: [
3352
3338
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3353
- "p",
3339
+ "div",
3354
3340
  {
3355
- className: "flex-1 min-w-0 overflow-hidden whitespace-nowrap",
3341
+ className: "shrink-0 flex items-center",
3356
3342
  style: {
3357
- fontFamily: T6.font,
3358
- fontSize: T6.fsSm,
3359
- fontWeight: 400,
3360
- lineHeight: T6.lhSm,
3361
- color: T6.primary
3343
+ background: T6.fillHover,
3344
+ borderRadius: T6.rXl,
3345
+ padding: T6.spMd
3362
3346
  },
3363
- children: "Store access"
3347
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3348
+ import_icons3.SiconArtifacts,
3349
+ {
3350
+ className: "w-6 h-6",
3351
+ color: T6.primary
3352
+ }
3353
+ )
3364
3354
  }
3365
3355
  ),
3366
3356
  /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3367
- "p",
3357
+ "div",
3368
3358
  {
3369
- className: "shrink-0 overflow-hidden text-right",
3370
- style: {
3371
- fontFamily: T6.font,
3372
- fontSize: T6.fsXs,
3373
- fontWeight: 400,
3374
- lineHeight: T6.lhXs,
3375
- color: T6.muted
3376
- },
3359
+ className: "flex flex-1 min-w-0 flex-col items-start overflow-hidden text-ellipsis whitespace-nowrap",
3360
+ style: { opacity: catalogixOn ? 1 : 0.5 },
3377
3361
  children: [
3378
- selectedStores.size,
3379
- " Selected"
3362
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3363
+ "p",
3364
+ {
3365
+ className: "w-full overflow-hidden shrink-0",
3366
+ style: {
3367
+ fontFamily: T6.font,
3368
+ fontSize: T6.fsSm,
3369
+ fontWeight: 500,
3370
+ lineHeight: T6.lhSm,
3371
+ color: T6.primary
3372
+ },
3373
+ children: "Catalogix"
3374
+ }
3375
+ ),
3376
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3377
+ "p",
3378
+ {
3379
+ className: "w-full overflow-hidden shrink-0",
3380
+ style: {
3381
+ fontFamily: T6.font,
3382
+ fontSize: T6.fsXs,
3383
+ fontWeight: 400,
3384
+ lineHeight: T6.lhXs,
3385
+ color: T6.tertiary
3386
+ },
3387
+ children: "Centralized product and asset management for every storefront"
3388
+ }
3389
+ )
3380
3390
  ]
3381
3391
  }
3382
3392
  )
@@ -3384,27 +3394,42 @@ function InviteUpdateModal({
3384
3394
  }
3385
3395
  ),
3386
3396
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3387
- "div",
3397
+ ToggleSwitch,
3388
3398
  {
3389
- className: "shrink-0 w-full",
3390
- style: {
3391
- background: T6.fillPlus,
3392
- height: 48,
3393
- borderRadius: T6.r3xl
3394
- },
3395
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3399
+ active: catalogixOn,
3400
+ onClick: () => {
3401
+ setCatalogixOn(!catalogixOn);
3402
+ markChanged();
3403
+ }
3404
+ }
3405
+ )
3406
+ ]
3407
+ }
3408
+ ),
3409
+ catalogixOn && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3410
+ "div",
3411
+ {
3412
+ className: "shrink-0 w-full",
3413
+ style: {
3414
+ background: T6.canvasBase,
3415
+ borderRadius: T6.r3xl
3416
+ },
3417
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3418
+ "div",
3419
+ {
3420
+ className: "flex flex-col items-start w-full",
3421
+ style: { padding: T6.sp3xl, gap: T6.spMd },
3422
+ children: [
3423
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3396
3424
  "div",
3397
3425
  {
3398
- className: "flex items-center relative size-full",
3399
- style: {
3400
- padding: T6.spXl,
3401
- gap: T6.sp3xl
3402
- },
3426
+ className: "flex items-center justify-center shrink-0 w-full",
3427
+ style: { gap: T6.spMd },
3403
3428
  children: [
3404
3429
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3405
- "input",
3430
+ "p",
3406
3431
  {
3407
- className: "flex-1 min-w-0 bg-transparent border-none outline-none",
3432
+ className: "flex-1 min-w-0 overflow-hidden whitespace-nowrap",
3408
3433
  style: {
3409
3434
  fontFamily: T6.font,
3410
3435
  fontSize: T6.fsSm,
@@ -3412,97 +3437,153 @@ function InviteUpdateModal({
3412
3437
  lineHeight: T6.lhSm,
3413
3438
  color: T6.primary
3414
3439
  },
3415
- placeholder: "Search stores...",
3416
- value: storeSearch,
3417
- onChange: (e) => setStoreSearch(e.target.value)
3440
+ children: "Store access"
3418
3441
  }
3419
3442
  ),
3420
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3421
- import_icons3.SiconSearch,
3422
- {
3423
- className: "w-6 h-6",
3424
- color: T6.primary
3425
- }
3426
- )
3427
- ]
3428
- }
3429
- ) })
3430
- }
3431
- ),
3432
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3433
- "div",
3434
- {
3435
- className: "shrink-0 w-full",
3436
- style: {
3437
- background: T6.fillPlus,
3438
- borderRadius: T6.r3xl
3439
- },
3440
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3441
- "div",
3442
- {
3443
- className: "flex flex-col items-start w-full",
3444
- style: {
3445
- padding: T6.sp3xl,
3446
- gap: T6.spXl
3447
- },
3448
- children: [
3449
- filteredStores.map((store) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3450
- "div",
3451
- {
3452
- className: "flex items-center shrink-0 w-full cursor-pointer",
3453
- style: { gap: T6.spMd },
3454
- onClick: () => toggleStore(store._id),
3455
- children: [
3456
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3457
- "p",
3458
- {
3459
- className: "flex-1 min-w-0",
3460
- style: {
3461
- fontFamily: T6.font,
3462
- fontSize: T6.fsSm,
3463
- fontWeight: 400,
3464
- lineHeight: T6.lhSm,
3465
- color: T6.primary
3466
- },
3467
- children: store.name || store._id
3468
- }
3469
- ),
3470
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3471
- CheckboxSvg,
3472
- {
3473
- checked: selectedStores.has(store._id)
3474
- }
3475
- )
3476
- ]
3477
- },
3478
- store._id
3479
- )),
3480
- filteredStores.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3443
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3481
3444
  "p",
3482
3445
  {
3446
+ className: "shrink-0 overflow-hidden text-right",
3483
3447
  style: {
3484
3448
  fontFamily: T6.font,
3485
- fontSize: T6.fsSm,
3449
+ fontSize: T6.fsXs,
3486
3450
  fontWeight: 400,
3487
- lineHeight: T6.lhSm,
3451
+ lineHeight: T6.lhXs,
3488
3452
  color: T6.muted
3489
3453
  },
3490
- children: "No stores found"
3454
+ children: [
3455
+ selectedStores.size,
3456
+ " Selected"
3457
+ ]
3491
3458
  }
3492
3459
  )
3493
3460
  ]
3494
3461
  }
3462
+ ),
3463
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3464
+ "div",
3465
+ {
3466
+ className: "shrink-0 w-full",
3467
+ style: {
3468
+ background: T6.fillPlus,
3469
+ height: 48,
3470
+ borderRadius: T6.r3xl
3471
+ },
3472
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-row items-center size-full", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3473
+ "div",
3474
+ {
3475
+ className: "flex items-center relative size-full",
3476
+ style: {
3477
+ padding: T6.spXl,
3478
+ gap: T6.sp3xl
3479
+ },
3480
+ children: [
3481
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3482
+ "input",
3483
+ {
3484
+ className: "flex-1 min-w-0 bg-transparent border-none outline-none",
3485
+ style: {
3486
+ fontFamily: T6.font,
3487
+ fontSize: T6.fsSm,
3488
+ fontWeight: 400,
3489
+ lineHeight: T6.lhSm,
3490
+ color: T6.primary
3491
+ },
3492
+ placeholder: "Search stores...",
3493
+ value: storeSearch,
3494
+ onChange: (e) => setStoreSearch(e.target.value)
3495
+ }
3496
+ ),
3497
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3498
+ import_icons3.SiconSearch,
3499
+ {
3500
+ className: "w-6 h-6",
3501
+ color: T6.primary
3502
+ }
3503
+ )
3504
+ ]
3505
+ }
3506
+ ) })
3507
+ }
3508
+ ),
3509
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3510
+ "div",
3511
+ {
3512
+ className: "shrink-0 w-full",
3513
+ style: {
3514
+ background: T6.fillPlus,
3515
+ borderRadius: T6.r3xl
3516
+ },
3517
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3518
+ "div",
3519
+ {
3520
+ className: "flex flex-col items-start w-full",
3521
+ style: {
3522
+ padding: T6.sp3xl,
3523
+ gap: T6.spXl
3524
+ },
3525
+ children: [
3526
+ filteredStores.map((store) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3527
+ "div",
3528
+ {
3529
+ className: "flex items-center shrink-0 w-full cursor-pointer",
3530
+ style: { gap: T6.spMd },
3531
+ onClick: () => toggleStore(store._id),
3532
+ children: [
3533
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3534
+ "p",
3535
+ {
3536
+ className: "flex-1 min-w-0",
3537
+ style: {
3538
+ fontFamily: T6.font,
3539
+ fontSize: T6.fsSm,
3540
+ fontWeight: 400,
3541
+ lineHeight: T6.lhSm,
3542
+ color: T6.primary
3543
+ },
3544
+ children: store.name || store._id
3545
+ }
3546
+ ),
3547
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3548
+ CheckboxSvg,
3549
+ {
3550
+ checked: selectedStores.has(
3551
+ store._id
3552
+ )
3553
+ }
3554
+ )
3555
+ ]
3556
+ },
3557
+ store._id
3558
+ )),
3559
+ filteredStores.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3560
+ "p",
3561
+ {
3562
+ style: {
3563
+ fontFamily: T6.font,
3564
+ fontSize: T6.fsSm,
3565
+ fontWeight: 400,
3566
+ lineHeight: T6.lhSm,
3567
+ color: T6.muted
3568
+ },
3569
+ children: "No stores found"
3570
+ }
3571
+ )
3572
+ ]
3573
+ }
3574
+ )
3575
+ }
3495
3576
  )
3496
- }
3497
- )
3498
- ]
3577
+ ]
3578
+ }
3579
+ )
3499
3580
  }
3500
3581
  )
3501
- }
3502
- )
3503
- ]
3582
+ ]
3583
+ }
3584
+ ) })
3504
3585
  }
3505
- ) }) })
3586
+ ) })
3506
3587
  ]
3507
3588
  }
3508
3589
  )
@@ -3549,11 +3630,15 @@ function InviteUpdateModal({
3549
3630
  role,
3550
3631
  canUseCredits,
3551
3632
  canInviteUser,
3552
- artifax: artifaxOn,
3553
- photogenix: photogenixOn,
3554
- catalogix: catalogixOn,
3555
- returns: returnsOn,
3556
- catalogixStores: Array.from(selectedStores)
3633
+ artifax: appValue("artifax"),
3634
+ photogenix: appValue("photogenix"),
3635
+ catalogix: appValue("catalogix"),
3636
+ returns: appValue("returns"),
3637
+ // Stores ride on Catalogix, so they follow it: a
3638
+ // hidden Catalogix grants no app and therefore no
3639
+ // storefronts. Keeping them would leave a member
3640
+ // scoped to stores in a product they cannot open.
3641
+ catalogixStores: role === "admin" || showsApp("catalogix") ? Array.from(selectedStores) : []
3557
3642
  };
3558
3643
  if (isInvite && onInvite) {
3559
3644
  onInvite(perms, emailValue.trim());
@@ -4306,7 +4391,8 @@ function TeamsContent({
4306
4391
  onInviteOpenChange,
4307
4392
  workspaceName,
4308
4393
  workspaceImageUrl,
4309
- organizationName
4394
+ organizationName,
4395
+ hiddenApps
4310
4396
  } = {}) {
4311
4397
  const { auth, api, organization, workspace, toast } = useSettingsAdapters();
4312
4398
  const user = auth.user;
@@ -4778,6 +4864,7 @@ function TeamsContent({
4778
4864
  mode: modal.mode,
4779
4865
  userEmail: modal.target?.userEmail,
4780
4866
  stores: allStores,
4867
+ hiddenApps,
4781
4868
  allowSubmitWithoutChanges: modal.target?.kind === "invite",
4782
4869
  initialPermissions: currentMemberPermissions,
4783
4870
  onClose: closeModal,
@@ -10556,13 +10643,134 @@ function SpecializationDropdown({
10556
10643
  }
10557
10644
  );
10558
10645
  }
10646
+ function LanguageDropdown({
10647
+ value,
10648
+ onChange,
10649
+ disabled
10650
+ }) {
10651
+ const [open, setOpen] = (0, import_react16.useState)(false);
10652
+ const containerRef = (0, import_react16.useRef)(null);
10653
+ (0, import_react16.useEffect)(() => {
10654
+ if (!open) return;
10655
+ function handleMouseDown(e) {
10656
+ if (containerRef.current && !containerRef.current.contains(e.target)) {
10657
+ setOpen(false);
10658
+ }
10659
+ }
10660
+ function handleKeyDown(e) {
10661
+ if (e.key === "Escape") setOpen(false);
10662
+ }
10663
+ document.addEventListener("mousedown", handleMouseDown);
10664
+ document.addEventListener("keydown", handleKeyDown);
10665
+ return () => {
10666
+ document.removeEventListener("mousedown", handleMouseDown);
10667
+ document.removeEventListener("keydown", handleKeyDown);
10668
+ };
10669
+ }, [open]);
10670
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
10671
+ "div",
10672
+ {
10673
+ ref: containerRef,
10674
+ className: "w-full",
10675
+ style: { position: "relative" },
10676
+ children: [
10677
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("style", { children: DROPDOWN_TRIGGER_STYLES }),
10678
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10679
+ "div",
10680
+ {
10681
+ className: "spec-dropdown-trigger",
10682
+ "data-disabled": disabled ? "true" : "false",
10683
+ onClick: () => !disabled && setOpen((v) => !v),
10684
+ "aria-haspopup": "listbox",
10685
+ "aria-expanded": open,
10686
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10687
+ import_ui12.ScTextField,
10688
+ {
10689
+ label: "Language",
10690
+ labelGroup: "label",
10691
+ value: userLanguageLabel(value),
10692
+ placeholderFilled: "Select language",
10693
+ tfGroup: "icon-right",
10694
+ tfRightIcon: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10695
+ "span",
10696
+ {
10697
+ style: {
10698
+ display: "flex",
10699
+ alignItems: "center",
10700
+ justifyContent: "center",
10701
+ transform: open ? "rotate(180deg)" : "none",
10702
+ transition: "transform 120ms ease-out"
10703
+ },
10704
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_icons12.SiconDown, {})
10705
+ }
10706
+ ),
10707
+ className: "sc-text-field-full-width",
10708
+ style: { width: "100%" },
10709
+ readOnly: true,
10710
+ disabled
10711
+ }
10712
+ )
10713
+ }
10714
+ ),
10715
+ open && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10716
+ "div",
10717
+ {
10718
+ role: "listbox",
10719
+ style: {
10720
+ position: "absolute",
10721
+ top: "calc(100% + 4px)",
10722
+ left: 0,
10723
+ right: 0,
10724
+ zIndex: 50,
10725
+ // The list is longer than the specialization one, so it scrolls
10726
+ // rather than running off the bottom of the panel.
10727
+ maxHeight: 280,
10728
+ overflowY: "auto",
10729
+ background: "var(--alias-surface-subtle, #1a1a1a)",
10730
+ border: "0.5px solid var(--alias-border-subtle, #242424)",
10731
+ borderRadius: "var(--radius-4xl, 18px)",
10732
+ padding: "var(--spacing-md, 8px)",
10733
+ display: "flex",
10734
+ flexDirection: "column",
10735
+ gap: 8,
10736
+ boxShadow: "0 8px 24px rgba(0,0,0,0.4)",
10737
+ backdropFilter: "blur(42px)"
10738
+ },
10739
+ children: USER_LANGUAGES.map((lang) => {
10740
+ const isActive = lang.code === value;
10741
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10742
+ import_ui11.ScMenuOptions,
10743
+ {
10744
+ text: lang.label,
10745
+ icon: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_jsx_runtime20.Fragment, {}),
10746
+ hover: isActive ? "true" : "false",
10747
+ variant: "default",
10748
+ role: "option",
10749
+ "aria-selected": isActive,
10750
+ onClick: () => {
10751
+ onChange(lang.code);
10752
+ setOpen(false);
10753
+ },
10754
+ style: { width: "100%", cursor: "pointer" }
10755
+ },
10756
+ lang.code
10757
+ );
10758
+ })
10759
+ }
10760
+ )
10761
+ ]
10762
+ }
10763
+ );
10764
+ }
10559
10765
  function ProfileTab() {
10560
10766
  const { auth, imageUpload, toast } = useSettingsAdapters();
10561
10767
  const user = auth.user;
10562
10768
  const derivedName = user?.name ?? "";
10563
10769
  const derivedSpec = user?.userSpecialization ?? "";
10770
+ const derivedLanguage = user?.language?.trim() || DEFAULT_USER_LANGUAGE;
10564
10771
  const [fullName, setFullName] = (0, import_react16.useState)(derivedName);
10565
10772
  const [selectedSpec, setSelectedSpec] = (0, import_react16.useState)(derivedSpec);
10773
+ const [selectedLanguage, setSelectedLanguage] = (0, import_react16.useState)(derivedLanguage);
10566
10774
  const [saving, setSaving] = (0, import_react16.useState)(false);
10567
10775
  const [imageSaving, setImageSaving] = (0, import_react16.useState)(false);
10568
10776
  const [imagePreview, setImagePreview] = (0, import_react16.useState)(
@@ -10573,7 +10781,7 @@ function ProfileTab() {
10573
10781
  const profileImage = imagePreview ?? getUserProfileImage(user);
10574
10782
  const profileInitial = profileDisplayName.charAt(0).toUpperCase();
10575
10783
  const disableAllActions = saving || imageSaving;
10576
- const dirty = fullName.trim() !== derivedName || selectedSpec !== derivedSpec;
10784
+ const dirty = fullName.trim() !== derivedName || selectedSpec !== derivedSpec || selectedLanguage !== derivedLanguage;
10577
10785
  (0, import_react16.useEffect)(() => {
10578
10786
  setFullName(derivedName);
10579
10787
  setImagePreview(void 0);
@@ -10581,6 +10789,9 @@ function ProfileTab() {
10581
10789
  (0, import_react16.useEffect)(() => {
10582
10790
  setSelectedSpec(derivedSpec);
10583
10791
  }, [derivedSpec]);
10792
+ (0, import_react16.useEffect)(() => {
10793
+ setSelectedLanguage(derivedLanguage);
10794
+ }, [derivedLanguage]);
10584
10795
  const handleSave = async () => {
10585
10796
  if (disableAllActions || !dirty) return;
10586
10797
  setSaving(true);
@@ -10588,6 +10799,8 @@ function ProfileTab() {
10588
10799
  const patch = {};
10589
10800
  if (fullName.trim() !== derivedName) patch.name = fullName.trim();
10590
10801
  if (selectedSpec !== derivedSpec) patch.userSpecialization = selectedSpec;
10802
+ if (selectedLanguage !== derivedLanguage)
10803
+ patch.language = selectedLanguage;
10591
10804
  await auth.updateProfile(patch);
10592
10805
  await auth.refreshProfile();
10593
10806
  toast.success("Profile updated");
@@ -10807,6 +11020,17 @@ function ProfileTab() {
10807
11020
  }
10808
11021
  ) })
10809
11022
  ] }),
11023
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-start w-full", style: { gap: "var(--spacing-3xl)" }, children: [
11024
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
11025
+ LanguageDropdown,
11026
+ {
11027
+ value: selectedLanguage,
11028
+ onChange: setSelectedLanguage,
11029
+ disabled: disableAllActions
11030
+ }
11031
+ ) }),
11032
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex-1 min-w-0" })
11033
+ ] }),
10810
11034
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "w-full", style: { overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
10811
11035
  import_ui12.ScTextField,
10812
11036
  {
@@ -11079,19 +11303,22 @@ function ReferralTab() {
11079
11303
  function SettingsContent({
11080
11304
  adapters,
11081
11305
  activeTab = "profile",
11082
- onClose
11306
+ onClose,
11307
+ hiddenApps
11083
11308
  }) {
11084
11309
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SettingsAdaptersProvider, { adapters, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
11085
11310
  SettingsContentInner,
11086
11311
  {
11087
11312
  activeTab,
11088
- onClose: onClose ?? adapters.navigation.close
11313
+ onClose: onClose ?? adapters.navigation.close,
11314
+ hiddenApps
11089
11315
  }
11090
11316
  ) });
11091
11317
  }
11092
11318
  function SettingsContentInner({
11093
11319
  activeTab,
11094
- onClose
11320
+ onClose,
11321
+ hiddenApps
11095
11322
  }) {
11096
11323
  const {
11097
11324
  auth: _auth,
@@ -11759,7 +11986,8 @@ function SettingsContentInner({
11759
11986
  onInviteOpenChange: setTeamInviteOpen,
11760
11987
  workspaceName: workspaceScopeName,
11761
11988
  workspaceImageUrl: currentWorkspaceData?.imageUrl,
11762
- organizationName: organizationScopeName
11989
+ organizationName: organizationScopeName,
11990
+ hiddenApps
11763
11991
  }
11764
11992
  ) }),
11765
11993
  activeTab === "workspaceList" && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
@@ -11898,15 +12126,3 @@ function SettingsContentInner({
11898
12126
  }
11899
12127
  );
11900
12128
  }
11901
-
11902
- // src/team-types.ts
11903
- var DEFAULT_PERMISSIONS = {
11904
- artifax: true,
11905
- photogenix: true,
11906
- catalogix: true,
11907
- returns: true,
11908
- canUseCredits: true,
11909
- canInviteUser: true,
11910
- role: "admin",
11911
- catalogixStores: []
11912
- };