@streamoid/settings 0.9.0 → 0.9.1

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 (3) hide show
  1. package/dist/index.js +113 -133
  2. package/dist/index.mjs +113 -134
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -5898,7 +5898,12 @@ function OrganizationModal({
5898
5898
  const originalType = organization?.type ?? "shared";
5899
5899
  const originalDomain = organization?.domain ?? "";
5900
5900
  const domainChanged = domain.trim().toLowerCase() !== originalDomain.toLowerCase();
5901
- const hasChanges = isUpdate ? name.trim() !== (organization?.name ?? "") || imageFile !== null || imageRemoved || orgType !== originalType || !!domain.trim() && domainChanged : true;
5901
+ const domainShown = isUpdate ? !!organization?.domain : allowDomain;
5902
+ const effectiveDomain = (domainShown ? domain : originalDomain).trim().toLowerCase();
5903
+ const canShare = !!effectiveDomain;
5904
+ const effectiveType = canShare ? orgType : "private";
5905
+ const visibilityMessage = effectiveType === "shared" ? `People with an email on ${effectiveDomain} can see this organization and join it.` : domainShown && !canShare ? "Without a domain, no one can see this organization. People join only when they're invited to one of its workspaces." : "No one can see this organization. People join only when they're invited to one of its workspaces.";
5906
+ const hasChanges = isUpdate ? name.trim() !== (organization?.name ?? "") || imageFile !== null || imageRemoved || effectiveType !== originalType || !!domain.trim() && domainChanged : true;
5902
5907
  const canSubmit = name.trim().length > 0 && hasChanges;
5903
5908
  function handleFileSelect(e) {
5904
5909
  const file = e.target.files?.[0];
@@ -5921,7 +5926,7 @@ function OrganizationModal({
5921
5926
  setSubmitting(true);
5922
5927
  try {
5923
5928
  const details = {
5924
- type: orgType,
5929
+ type: effectiveType,
5925
5930
  ...domain.trim() && (isUpdate ? domainChanged : true) ? { domain: domain.trim().toLowerCase() } : {}
5926
5931
  };
5927
5932
  const result = isUpdate ? await onUpdate?.(name, imageFile, imageRemoved, details) : await onCreate?.(name, imageFile, details);
@@ -6051,6 +6056,56 @@ function OrganizationModal({
6051
6056
  ]
6052
6057
  }
6053
6058
  ),
6059
+ domainShown && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6060
+ "div",
6061
+ {
6062
+ className: "flex flex-col items-start shrink-0 w-full",
6063
+ style: { gap: "var(--spacing-xs)" },
6064
+ children: [
6065
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center shrink-0 w-full", style: { height: 24 }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6066
+ "span",
6067
+ {
6068
+ style: {
6069
+ fontFamily: T10.font,
6070
+ fontSize: T10.fsSm,
6071
+ fontWeight: 400,
6072
+ lineHeight: T10.lhSm,
6073
+ color: T10.muted
6074
+ },
6075
+ children: "Domain"
6076
+ }
6077
+ ) }),
6078
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6079
+ "div",
6080
+ {
6081
+ className: "shrink-0 w-full",
6082
+ style: {
6083
+ backgroundColor: "var(--alias-fill-neutral-neutral, #1a1a1a)",
6084
+ borderRadius: T10.r3xl,
6085
+ height: 48
6086
+ },
6087
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center size-full", style: { padding: `${T10.sp3xl} ${T10.spXl}` }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6088
+ "input",
6089
+ {
6090
+ type: "text",
6091
+ value: domain,
6092
+ onChange: (e) => setDomain(e.target.value),
6093
+ placeholder: isUpdate ? "e.g. team.acme.com" : defaultDomain || "e.g. acme.com",
6094
+ className: "flex-1 min-w-0 bg-transparent border-none outline-none",
6095
+ style: {
6096
+ fontFamily: T10.font,
6097
+ fontSize: T10.fsSm,
6098
+ fontWeight: 400,
6099
+ lineHeight: T10.lhSm,
6100
+ color: domain ? T10.primary : T10.neutral500
6101
+ }
6102
+ }
6103
+ ) })
6104
+ }
6105
+ )
6106
+ ]
6107
+ }
6108
+ ),
6054
6109
  /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6055
6110
  "div",
6056
6111
  {
@@ -6071,87 +6126,56 @@ function OrganizationModal({
6071
6126
  }
6072
6127
  ) }),
6073
6128
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex w-full", role: "radiogroup", style: { gap: T10.spMd }, children: [
6074
- ["shared", "Shared", "New people from your company can join it"],
6075
- ["private", "Private", "Invite only"]
6076
- ].map(([value, label, hint]) => {
6077
- const active = orgType === value;
6078
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6129
+ ["shared", "Shared"],
6130
+ ["private", "Private"]
6131
+ ].map(([value, label]) => {
6132
+ const active = effectiveType === value;
6133
+ const disabled = value === "shared" && !canShare;
6134
+ const choose = () => {
6135
+ if (!disabled) setOrgType(value);
6136
+ };
6137
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6079
6138
  "div",
6080
6139
  {
6081
6140
  role: "radio",
6082
6141
  "aria-checked": active,
6083
- tabIndex: 0,
6084
- className: "flex-1 flex flex-col cursor-pointer",
6085
- onClick: () => setOrgType(value),
6142
+ "aria-disabled": disabled || void 0,
6143
+ tabIndex: disabled ? -1 : 0,
6144
+ className: `flex-1 flex items-center ${disabled ? "cursor-not-allowed" : "cursor-pointer"}`,
6145
+ onClick: choose,
6086
6146
  onKeyDown: (e) => {
6087
6147
  if (e.key === " " || e.key === "Enter") {
6088
6148
  e.preventDefault();
6089
- setOrgType(value);
6149
+ choose();
6090
6150
  }
6091
6151
  },
6092
6152
  style: {
6093
- gap: "var(--spacing-xxs, 2px)",
6094
6153
  padding: `${T10.spXl} ${T10.sp3xl}`,
6095
6154
  borderRadius: T10.r3xl,
6096
6155
  border: `1px solid ${active ? T10.primary : T10.borderSubtle}`,
6097
- fontFamily: T10.font
6156
+ fontFamily: T10.font,
6157
+ opacity: disabled ? 0.45 : 1
6098
6158
  },
6099
- children: [
6100
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: T10.fsSm, lineHeight: T10.lhSm, color: T10.primary, fontWeight: active ? 600 : 400 }, children: label }),
6101
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: T10.fsSm, lineHeight: T10.lhSm, color: T10.muted }, children: hint })
6102
- ]
6159
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: T10.fsSm, lineHeight: T10.lhSm, color: T10.primary, fontWeight: active ? 600 : 400 }, children: label })
6103
6160
  },
6104
6161
  value
6105
6162
  );
6106
- }) })
6107
- ]
6108
- }
6109
- ),
6110
- (isUpdate ? !!organization?.domain : allowDomain) && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6111
- "div",
6112
- {
6113
- className: "flex flex-col items-start shrink-0 w-full",
6114
- style: { gap: "var(--spacing-xs)" },
6115
- children: [
6116
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center shrink-0 w-full", style: { height: 24 }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6163
+ }) }),
6164
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6117
6165
  "span",
6118
6166
  {
6167
+ "data-testid": "organization-visibility-message",
6168
+ "aria-live": "polite",
6119
6169
  style: {
6170
+ display: "block",
6171
+ marginTop: T10.spMd,
6120
6172
  fontFamily: T10.font,
6121
6173
  fontSize: T10.fsSm,
6122
6174
  fontWeight: 400,
6123
6175
  lineHeight: T10.lhSm,
6124
6176
  color: T10.muted
6125
6177
  },
6126
- children: "Domain"
6127
- }
6128
- ) }),
6129
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6130
- "div",
6131
- {
6132
- className: "shrink-0 w-full",
6133
- style: {
6134
- backgroundColor: "var(--alias-fill-neutral-neutral, #1a1a1a)",
6135
- borderRadius: T10.r3xl,
6136
- height: 48
6137
- },
6138
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex items-center size-full", style: { padding: `${T10.sp3xl} ${T10.spXl}` }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6139
- "input",
6140
- {
6141
- type: "text",
6142
- value: domain,
6143
- onChange: (e) => setDomain(e.target.value),
6144
- placeholder: isUpdate ? "e.g. team.acme.com" : defaultDomain || "e.g. acme.com",
6145
- className: "flex-1 min-w-0 bg-transparent border-none outline-none",
6146
- style: {
6147
- fontFamily: T10.font,
6148
- fontSize: T10.fsSm,
6149
- fontWeight: 400,
6150
- lineHeight: T10.lhSm,
6151
- color: domain ? T10.primary : T10.neutral500
6152
- }
6153
- }
6154
- ) })
6178
+ children: visibilityMessage
6155
6179
  }
6156
6180
  )
6157
6181
  ]
@@ -7249,7 +7273,7 @@ function OrganizationListContent() {
7249
7273
  }
7250
7274
  };
7251
7275
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col w-full", style: { gap: T12.sp5xl, fontFamily: T12.font }, children: [
7252
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between w-full", style: { gap: T12.spMd }, children: [
7276
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between w-full", style: { gap: T12.spMd, paddingBlock: 2 }, children: [
7253
7277
  /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col min-w-0", style: { gap: T12.spXs }, children: [
7254
7278
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { margin: 0, color: T12.primary, fontSize: T12.fsLg, fontWeight: 600, lineHeight: T12.lhLg }, children: "My organizations" }),
7255
7279
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { style: { margin: 0, color: T12.muted, fontSize: T12.fsSm, lineHeight: T12.lhSm }, children: "Every organization you belong to. Open one to work in it." })
@@ -7260,7 +7284,8 @@ function OrganizationListContent() {
7260
7284
  text: "Create organization",
7261
7285
  variant: "primary",
7262
7286
  size: "sm",
7263
- onClick: () => setCreateOpen(true)
7287
+ onClick: () => setCreateOpen(true),
7288
+ style: { flexShrink: 0, transformOrigin: "right center" }
7264
7289
  }
7265
7290
  )
7266
7291
  ] }),
@@ -14049,7 +14074,15 @@ function SettingsContentInner({
14049
14074
  fontWeight: 500,
14050
14075
  lineHeight: "var(--line-height-line-height-sm)"
14051
14076
  },
14052
- onClick: () => onBack ? onBack() : window.history.back(),
14077
+ onClick: () => {
14078
+ if (isBillingSubView) {
14079
+ setBillingShowPlans(false);
14080
+ setBillingShowPerUserLimits(false);
14081
+ return;
14082
+ }
14083
+ if (onBack) onBack();
14084
+ else window.history.back();
14085
+ },
14053
14086
  children: [
14054
14087
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons16.SiconLeft, { className: "w-4 h-4 shrink-0", color: "var(--alias-text---icons-muted)" }),
14055
14088
  "Back"
@@ -14063,7 +14096,8 @@ function SettingsContentInner({
14063
14096
  style: {
14064
14097
  flexWrap: "wrap",
14065
14098
  minHeight: 40,
14066
- gap: 16
14099
+ gap: 16,
14100
+ paddingRight: 20
14067
14101
  },
14068
14102
  children: [
14069
14103
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center flex-1 min-w-0", style: { gap: 8, paddingLeft: 20 }, children: [
@@ -14147,40 +14181,6 @@ function SettingsContentInner({
14147
14181
  )
14148
14182
  ] })
14149
14183
  ] }),
14150
- isBillingSubView && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
14151
- "div",
14152
- {
14153
- className: "flex items-center shrink-0 cursor-pointer",
14154
- style: {
14155
- gap: "var(--spacing-sm)",
14156
- padding: "var(--spacing-xs) var(--spacing-lg)",
14157
- borderRadius: "var(--radius-xl)",
14158
- height: 32,
14159
- border: "1px solid var(--alias-border-subtle)",
14160
- backgroundColor: "var(--alias-surface-base)"
14161
- },
14162
- onClick: () => {
14163
- setBillingShowPlans(false);
14164
- setBillingShowPerUserLimits(false);
14165
- },
14166
- children: [
14167
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_icons16.SiconLeft, { className: "w-4 h-4", color: "var(--alias-text---icons-muted)" }),
14168
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
14169
- "span",
14170
- {
14171
- style: {
14172
- fontFamily: "var(--font-family-font-family-body)",
14173
- fontSize: "var(--font-size-font-size-sm)",
14174
- fontWeight: 500,
14175
- lineHeight: "var(--line-height-line-height-sm)",
14176
- color: "var(--alias-text---icons-muted)"
14177
- },
14178
- children: "Back to billing"
14179
- }
14180
- )
14181
- ]
14182
- }
14183
- ),
14184
14184
  activeTab === "workspaceList" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
14185
14185
  SettingsTooltip,
14186
14186
  {
@@ -14277,32 +14277,7 @@ function SettingsContentInner({
14277
14277
  )
14278
14278
  }
14279
14279
  )
14280
- ] }),
14281
- onClose && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SettingsTooltip, { content: "Close settings (Esc)", placement: "bottom", inline: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
14282
- "button",
14283
- {
14284
- type: "button",
14285
- "aria-label": "Close settings",
14286
- onClick: onClose,
14287
- className: "flex items-center justify-center shrink-0 cursor-pointer",
14288
- style: {
14289
- width: 32,
14290
- height: 32,
14291
- marginRight: 20,
14292
- padding: 0,
14293
- borderRadius: "var(--radius-xl)",
14294
- border: "1px solid var(--alias-border-subtle)",
14295
- backgroundColor: "var(--alias-surface-base)"
14296
- },
14297
- children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
14298
- import_icons16.SiconClose,
14299
- {
14300
- className: "w-5 h-5",
14301
- color: "var(--alias-text---icons-muted)"
14302
- }
14303
- )
14304
- }
14305
- ) })
14280
+ ] })
14306
14281
  ]
14307
14282
  }
14308
14283
  ),
@@ -15115,17 +15090,17 @@ function OrganizationPicker({
15115
15090
  !publicDomain && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex flex-col w-full", style: { gap: T18.spMd }, children: [
15116
15091
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { style: { color: T18.tertiary, fontSize: T18.fsSm, lineHeight: T18.lhSm }, children: "Who can join" }),
15117
15092
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { role: "radiogroup", className: "flex w-full", style: { gap: T18.spMd }, children: [
15118
- ["shared", "Shared", `Anyone from ${companyDomain ?? "your company"} can join`],
15119
- ["private", "Private", "Invite only"]
15120
- ].map(([value, label, hint]) => {
15093
+ ["shared", "Shared"],
15094
+ ["private", "Private"]
15095
+ ].map(([value, label]) => {
15121
15096
  const active = type === value;
15122
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
15097
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
15123
15098
  "div",
15124
15099
  {
15125
15100
  role: "radio",
15126
15101
  "aria-checked": active,
15127
15102
  tabIndex: 0,
15128
- className: "flex-1 flex flex-col cursor-pointer",
15103
+ className: "flex-1 flex items-center cursor-pointer",
15129
15104
  onClick: () => setType(value),
15130
15105
  onKeyDown: (e) => {
15131
15106
  if (e.key === " " || e.key === "Enter") {
@@ -15134,19 +15109,24 @@ function OrganizationPicker({
15134
15109
  }
15135
15110
  },
15136
15111
  style: {
15137
- gap: T18.spXs,
15138
15112
  padding: `${T18.spXl} ${T18.sp3xl}`,
15139
15113
  borderRadius: T18.r3xl,
15140
15114
  border: `1px solid ${active ? T18.primary : T18.borderSubtle}`
15141
15115
  },
15142
- children: [
15143
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { style: { color: T18.primary, fontSize: T18.fsSm, lineHeight: T18.lhSm, fontWeight: active ? 600 : 400 }, children: label }),
15144
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { style: { color: T18.muted, fontSize: T18.fsXs, lineHeight: T18.lhXs }, children: hint })
15145
- ]
15116
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { style: { color: T18.primary, fontSize: T18.fsSm, lineHeight: T18.lhSm, fontWeight: active ? 600 : 400 }, children: label })
15146
15117
  },
15147
15118
  value
15148
15119
  );
15149
- }) })
15120
+ }) }),
15121
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
15122
+ "span",
15123
+ {
15124
+ "data-testid": "organization-visibility-message",
15125
+ "aria-live": "polite",
15126
+ style: { color: T18.muted, fontSize: T18.fsSm, lineHeight: T18.lhSm },
15127
+ children: type === "shared" ? `People with an email on ${companyDomain ?? "your company's domain"} can see this organization and join it.` : "No one can see this organization. People join only when they're invited to one of its workspaces."
15128
+ }
15129
+ )
15150
15130
  ] }),
15151
15131
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "flex items-center justify-end w-full", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
15152
15132
  import_ui22.ScButton,
@@ -15155,7 +15135,7 @@ function OrganizationPicker({
15155
15135
  variant: "primary",
15156
15136
  size: "md",
15157
15137
  state: !name.trim() || busy ? "disabled" : "default",
15158
- onClick: name.trim() && !busy ? () => void run(() => onCreate({ name: name.trim(), type: publicDomain ? "shared" : type })) : void 0
15138
+ onClick: name.trim() && !busy ? () => void run(() => onCreate({ name: name.trim(), type: publicDomain ? "private" : type })) : void 0
15159
15139
  }
15160
15140
  ) })
15161
15141
  ] })
package/dist/index.mjs CHANGED
@@ -357,7 +357,6 @@ import {
357
357
  SiconLock,
358
358
  SiconDown as SiconDown2,
359
359
  SiconGlobe as SiconGlobe3,
360
- SiconClose as SiconClose10,
361
360
  SiconSwitch
362
361
  } from "@streamoid/icons";
363
362
 
@@ -5853,7 +5852,12 @@ function OrganizationModal({
5853
5852
  const originalType = organization?.type ?? "shared";
5854
5853
  const originalDomain = organization?.domain ?? "";
5855
5854
  const domainChanged = domain.trim().toLowerCase() !== originalDomain.toLowerCase();
5856
- const hasChanges = isUpdate ? name.trim() !== (organization?.name ?? "") || imageFile !== null || imageRemoved || orgType !== originalType || !!domain.trim() && domainChanged : true;
5855
+ const domainShown = isUpdate ? !!organization?.domain : allowDomain;
5856
+ const effectiveDomain = (domainShown ? domain : originalDomain).trim().toLowerCase();
5857
+ const canShare = !!effectiveDomain;
5858
+ const effectiveType = canShare ? orgType : "private";
5859
+ const visibilityMessage = effectiveType === "shared" ? `People with an email on ${effectiveDomain} can see this organization and join it.` : domainShown && !canShare ? "Without a domain, no one can see this organization. People join only when they're invited to one of its workspaces." : "No one can see this organization. People join only when they're invited to one of its workspaces.";
5860
+ const hasChanges = isUpdate ? name.trim() !== (organization?.name ?? "") || imageFile !== null || imageRemoved || effectiveType !== originalType || !!domain.trim() && domainChanged : true;
5857
5861
  const canSubmit = name.trim().length > 0 && hasChanges;
5858
5862
  function handleFileSelect(e) {
5859
5863
  const file = e.target.files?.[0];
@@ -5876,7 +5880,7 @@ function OrganizationModal({
5876
5880
  setSubmitting(true);
5877
5881
  try {
5878
5882
  const details = {
5879
- type: orgType,
5883
+ type: effectiveType,
5880
5884
  ...domain.trim() && (isUpdate ? domainChanged : true) ? { domain: domain.trim().toLowerCase() } : {}
5881
5885
  };
5882
5886
  const result = isUpdate ? await onUpdate?.(name, imageFile, imageRemoved, details) : await onCreate?.(name, imageFile, details);
@@ -6006,6 +6010,56 @@ function OrganizationModal({
6006
6010
  ]
6007
6011
  }
6008
6012
  ),
6013
+ domainShown && /* @__PURE__ */ jsxs14(
6014
+ "div",
6015
+ {
6016
+ className: "flex flex-col items-start shrink-0 w-full",
6017
+ style: { gap: "var(--spacing-xs)" },
6018
+ children: [
6019
+ /* @__PURE__ */ jsx17("div", { className: "flex items-center shrink-0 w-full", style: { height: 24 }, children: /* @__PURE__ */ jsx17(
6020
+ "span",
6021
+ {
6022
+ style: {
6023
+ fontFamily: T10.font,
6024
+ fontSize: T10.fsSm,
6025
+ fontWeight: 400,
6026
+ lineHeight: T10.lhSm,
6027
+ color: T10.muted
6028
+ },
6029
+ children: "Domain"
6030
+ }
6031
+ ) }),
6032
+ /* @__PURE__ */ jsx17(
6033
+ "div",
6034
+ {
6035
+ className: "shrink-0 w-full",
6036
+ style: {
6037
+ backgroundColor: "var(--alias-fill-neutral-neutral, #1a1a1a)",
6038
+ borderRadius: T10.r3xl,
6039
+ height: 48
6040
+ },
6041
+ children: /* @__PURE__ */ jsx17("div", { className: "flex items-center size-full", style: { padding: `${T10.sp3xl} ${T10.spXl}` }, children: /* @__PURE__ */ jsx17(
6042
+ "input",
6043
+ {
6044
+ type: "text",
6045
+ value: domain,
6046
+ onChange: (e) => setDomain(e.target.value),
6047
+ placeholder: isUpdate ? "e.g. team.acme.com" : defaultDomain || "e.g. acme.com",
6048
+ className: "flex-1 min-w-0 bg-transparent border-none outline-none",
6049
+ style: {
6050
+ fontFamily: T10.font,
6051
+ fontSize: T10.fsSm,
6052
+ fontWeight: 400,
6053
+ lineHeight: T10.lhSm,
6054
+ color: domain ? T10.primary : T10.neutral500
6055
+ }
6056
+ }
6057
+ ) })
6058
+ }
6059
+ )
6060
+ ]
6061
+ }
6062
+ ),
6009
6063
  /* @__PURE__ */ jsxs14(
6010
6064
  "div",
6011
6065
  {
@@ -6026,87 +6080,56 @@ function OrganizationModal({
6026
6080
  }
6027
6081
  ) }),
6028
6082
  /* @__PURE__ */ jsx17("div", { className: "flex w-full", role: "radiogroup", style: { gap: T10.spMd }, children: [
6029
- ["shared", "Shared", "New people from your company can join it"],
6030
- ["private", "Private", "Invite only"]
6031
- ].map(([value, label, hint]) => {
6032
- const active = orgType === value;
6033
- return /* @__PURE__ */ jsxs14(
6083
+ ["shared", "Shared"],
6084
+ ["private", "Private"]
6085
+ ].map(([value, label]) => {
6086
+ const active = effectiveType === value;
6087
+ const disabled = value === "shared" && !canShare;
6088
+ const choose = () => {
6089
+ if (!disabled) setOrgType(value);
6090
+ };
6091
+ return /* @__PURE__ */ jsx17(
6034
6092
  "div",
6035
6093
  {
6036
6094
  role: "radio",
6037
6095
  "aria-checked": active,
6038
- tabIndex: 0,
6039
- className: "flex-1 flex flex-col cursor-pointer",
6040
- onClick: () => setOrgType(value),
6096
+ "aria-disabled": disabled || void 0,
6097
+ tabIndex: disabled ? -1 : 0,
6098
+ className: `flex-1 flex items-center ${disabled ? "cursor-not-allowed" : "cursor-pointer"}`,
6099
+ onClick: choose,
6041
6100
  onKeyDown: (e) => {
6042
6101
  if (e.key === " " || e.key === "Enter") {
6043
6102
  e.preventDefault();
6044
- setOrgType(value);
6103
+ choose();
6045
6104
  }
6046
6105
  },
6047
6106
  style: {
6048
- gap: "var(--spacing-xxs, 2px)",
6049
6107
  padding: `${T10.spXl} ${T10.sp3xl}`,
6050
6108
  borderRadius: T10.r3xl,
6051
6109
  border: `1px solid ${active ? T10.primary : T10.borderSubtle}`,
6052
- fontFamily: T10.font
6110
+ fontFamily: T10.font,
6111
+ opacity: disabled ? 0.45 : 1
6053
6112
  },
6054
- children: [
6055
- /* @__PURE__ */ jsx17("span", { style: { fontSize: T10.fsSm, lineHeight: T10.lhSm, color: T10.primary, fontWeight: active ? 600 : 400 }, children: label }),
6056
- /* @__PURE__ */ jsx17("span", { style: { fontSize: T10.fsSm, lineHeight: T10.lhSm, color: T10.muted }, children: hint })
6057
- ]
6113
+ children: /* @__PURE__ */ jsx17("span", { style: { fontSize: T10.fsSm, lineHeight: T10.lhSm, color: T10.primary, fontWeight: active ? 600 : 400 }, children: label })
6058
6114
  },
6059
6115
  value
6060
6116
  );
6061
- }) })
6062
- ]
6063
- }
6064
- ),
6065
- (isUpdate ? !!organization?.domain : allowDomain) && /* @__PURE__ */ jsxs14(
6066
- "div",
6067
- {
6068
- className: "flex flex-col items-start shrink-0 w-full",
6069
- style: { gap: "var(--spacing-xs)" },
6070
- children: [
6071
- /* @__PURE__ */ jsx17("div", { className: "flex items-center shrink-0 w-full", style: { height: 24 }, children: /* @__PURE__ */ jsx17(
6117
+ }) }),
6118
+ /* @__PURE__ */ jsx17(
6072
6119
  "span",
6073
6120
  {
6121
+ "data-testid": "organization-visibility-message",
6122
+ "aria-live": "polite",
6074
6123
  style: {
6124
+ display: "block",
6125
+ marginTop: T10.spMd,
6075
6126
  fontFamily: T10.font,
6076
6127
  fontSize: T10.fsSm,
6077
6128
  fontWeight: 400,
6078
6129
  lineHeight: T10.lhSm,
6079
6130
  color: T10.muted
6080
6131
  },
6081
- children: "Domain"
6082
- }
6083
- ) }),
6084
- /* @__PURE__ */ jsx17(
6085
- "div",
6086
- {
6087
- className: "shrink-0 w-full",
6088
- style: {
6089
- backgroundColor: "var(--alias-fill-neutral-neutral, #1a1a1a)",
6090
- borderRadius: T10.r3xl,
6091
- height: 48
6092
- },
6093
- children: /* @__PURE__ */ jsx17("div", { className: "flex items-center size-full", style: { padding: `${T10.sp3xl} ${T10.spXl}` }, children: /* @__PURE__ */ jsx17(
6094
- "input",
6095
- {
6096
- type: "text",
6097
- value: domain,
6098
- onChange: (e) => setDomain(e.target.value),
6099
- placeholder: isUpdate ? "e.g. team.acme.com" : defaultDomain || "e.g. acme.com",
6100
- className: "flex-1 min-w-0 bg-transparent border-none outline-none",
6101
- style: {
6102
- fontFamily: T10.font,
6103
- fontSize: T10.fsSm,
6104
- fontWeight: 400,
6105
- lineHeight: T10.lhSm,
6106
- color: domain ? T10.primary : T10.neutral500
6107
- }
6108
- }
6109
- ) })
6132
+ children: visibilityMessage
6110
6133
  }
6111
6134
  )
6112
6135
  ]
@@ -7204,7 +7227,7 @@ function OrganizationListContent() {
7204
7227
  }
7205
7228
  };
7206
7229
  return /* @__PURE__ */ jsxs16("div", { className: "flex flex-col w-full", style: { gap: T12.sp5xl, fontFamily: T12.font }, children: [
7207
- /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between w-full", style: { gap: T12.spMd }, children: [
7230
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between w-full", style: { gap: T12.spMd, paddingBlock: 2 }, children: [
7208
7231
  /* @__PURE__ */ jsxs16("div", { className: "flex flex-col min-w-0", style: { gap: T12.spXs }, children: [
7209
7232
  /* @__PURE__ */ jsx19("p", { style: { margin: 0, color: T12.primary, fontSize: T12.fsLg, fontWeight: 600, lineHeight: T12.lhLg }, children: "My organizations" }),
7210
7233
  /* @__PURE__ */ jsx19("p", { style: { margin: 0, color: T12.muted, fontSize: T12.fsSm, lineHeight: T12.lhSm }, children: "Every organization you belong to. Open one to work in it." })
@@ -7215,7 +7238,8 @@ function OrganizationListContent() {
7215
7238
  text: "Create organization",
7216
7239
  variant: "primary",
7217
7240
  size: "sm",
7218
- onClick: () => setCreateOpen(true)
7241
+ onClick: () => setCreateOpen(true),
7242
+ style: { flexShrink: 0, transformOrigin: "right center" }
7219
7243
  }
7220
7244
  )
7221
7245
  ] }),
@@ -14032,7 +14056,15 @@ function SettingsContentInner({
14032
14056
  fontWeight: 500,
14033
14057
  lineHeight: "var(--line-height-line-height-sm)"
14034
14058
  },
14035
- onClick: () => onBack ? onBack() : window.history.back(),
14059
+ onClick: () => {
14060
+ if (isBillingSubView) {
14061
+ setBillingShowPlans(false);
14062
+ setBillingShowPerUserLimits(false);
14063
+ return;
14064
+ }
14065
+ if (onBack) onBack();
14066
+ else window.history.back();
14067
+ },
14036
14068
  children: [
14037
14069
  /* @__PURE__ */ jsx29(SiconLeft3, { className: "w-4 h-4 shrink-0", color: "var(--alias-text---icons-muted)" }),
14038
14070
  "Back"
@@ -14046,7 +14078,8 @@ function SettingsContentInner({
14046
14078
  style: {
14047
14079
  flexWrap: "wrap",
14048
14080
  minHeight: 40,
14049
- gap: 16
14081
+ gap: 16,
14082
+ paddingRight: 20
14050
14083
  },
14051
14084
  children: [
14052
14085
  /* @__PURE__ */ jsxs26("div", { className: "flex items-center flex-1 min-w-0", style: { gap: 8, paddingLeft: 20 }, children: [
@@ -14130,40 +14163,6 @@ function SettingsContentInner({
14130
14163
  )
14131
14164
  ] })
14132
14165
  ] }),
14133
- isBillingSubView && /* @__PURE__ */ jsxs26(
14134
- "div",
14135
- {
14136
- className: "flex items-center shrink-0 cursor-pointer",
14137
- style: {
14138
- gap: "var(--spacing-sm)",
14139
- padding: "var(--spacing-xs) var(--spacing-lg)",
14140
- borderRadius: "var(--radius-xl)",
14141
- height: 32,
14142
- border: "1px solid var(--alias-border-subtle)",
14143
- backgroundColor: "var(--alias-surface-base)"
14144
- },
14145
- onClick: () => {
14146
- setBillingShowPlans(false);
14147
- setBillingShowPerUserLimits(false);
14148
- },
14149
- children: [
14150
- /* @__PURE__ */ jsx29(SiconLeft3, { className: "w-4 h-4", color: "var(--alias-text---icons-muted)" }),
14151
- /* @__PURE__ */ jsx29(
14152
- "span",
14153
- {
14154
- style: {
14155
- fontFamily: "var(--font-family-font-family-body)",
14156
- fontSize: "var(--font-size-font-size-sm)",
14157
- fontWeight: 500,
14158
- lineHeight: "var(--line-height-line-height-sm)",
14159
- color: "var(--alias-text---icons-muted)"
14160
- },
14161
- children: "Back to billing"
14162
- }
14163
- )
14164
- ]
14165
- }
14166
- ),
14167
14166
  activeTab === "workspaceList" && /* @__PURE__ */ jsx29(
14168
14167
  SettingsTooltip,
14169
14168
  {
@@ -14260,32 +14259,7 @@ function SettingsContentInner({
14260
14259
  )
14261
14260
  }
14262
14261
  )
14263
- ] }),
14264
- onClose && /* @__PURE__ */ jsx29(SettingsTooltip, { content: "Close settings (Esc)", placement: "bottom", inline: true, children: /* @__PURE__ */ jsx29(
14265
- "button",
14266
- {
14267
- type: "button",
14268
- "aria-label": "Close settings",
14269
- onClick: onClose,
14270
- className: "flex items-center justify-center shrink-0 cursor-pointer",
14271
- style: {
14272
- width: 32,
14273
- height: 32,
14274
- marginRight: 20,
14275
- padding: 0,
14276
- borderRadius: "var(--radius-xl)",
14277
- border: "1px solid var(--alias-border-subtle)",
14278
- backgroundColor: "var(--alias-surface-base)"
14279
- },
14280
- children: /* @__PURE__ */ jsx29(
14281
- SiconClose10,
14282
- {
14283
- className: "w-5 h-5",
14284
- color: "var(--alias-text---icons-muted)"
14285
- }
14286
- )
14287
- }
14288
- ) })
14262
+ ] })
14289
14263
  ]
14290
14264
  }
14291
14265
  ),
@@ -15098,17 +15072,17 @@ function OrganizationPicker({
15098
15072
  !publicDomain && /* @__PURE__ */ jsxs28("div", { className: "flex flex-col w-full", style: { gap: T18.spMd }, children: [
15099
15073
  /* @__PURE__ */ jsx31("span", { style: { color: T18.tertiary, fontSize: T18.fsSm, lineHeight: T18.lhSm }, children: "Who can join" }),
15100
15074
  /* @__PURE__ */ jsx31("div", { role: "radiogroup", className: "flex w-full", style: { gap: T18.spMd }, children: [
15101
- ["shared", "Shared", `Anyone from ${companyDomain ?? "your company"} can join`],
15102
- ["private", "Private", "Invite only"]
15103
- ].map(([value, label, hint]) => {
15075
+ ["shared", "Shared"],
15076
+ ["private", "Private"]
15077
+ ].map(([value, label]) => {
15104
15078
  const active = type === value;
15105
- return /* @__PURE__ */ jsxs28(
15079
+ return /* @__PURE__ */ jsx31(
15106
15080
  "div",
15107
15081
  {
15108
15082
  role: "radio",
15109
15083
  "aria-checked": active,
15110
15084
  tabIndex: 0,
15111
- className: "flex-1 flex flex-col cursor-pointer",
15085
+ className: "flex-1 flex items-center cursor-pointer",
15112
15086
  onClick: () => setType(value),
15113
15087
  onKeyDown: (e) => {
15114
15088
  if (e.key === " " || e.key === "Enter") {
@@ -15117,19 +15091,24 @@ function OrganizationPicker({
15117
15091
  }
15118
15092
  },
15119
15093
  style: {
15120
- gap: T18.spXs,
15121
15094
  padding: `${T18.spXl} ${T18.sp3xl}`,
15122
15095
  borderRadius: T18.r3xl,
15123
15096
  border: `1px solid ${active ? T18.primary : T18.borderSubtle}`
15124
15097
  },
15125
- children: [
15126
- /* @__PURE__ */ jsx31("span", { style: { color: T18.primary, fontSize: T18.fsSm, lineHeight: T18.lhSm, fontWeight: active ? 600 : 400 }, children: label }),
15127
- /* @__PURE__ */ jsx31("span", { style: { color: T18.muted, fontSize: T18.fsXs, lineHeight: T18.lhXs }, children: hint })
15128
- ]
15098
+ children: /* @__PURE__ */ jsx31("span", { style: { color: T18.primary, fontSize: T18.fsSm, lineHeight: T18.lhSm, fontWeight: active ? 600 : 400 }, children: label })
15129
15099
  },
15130
15100
  value
15131
15101
  );
15132
- }) })
15102
+ }) }),
15103
+ /* @__PURE__ */ jsx31(
15104
+ "span",
15105
+ {
15106
+ "data-testid": "organization-visibility-message",
15107
+ "aria-live": "polite",
15108
+ style: { color: T18.muted, fontSize: T18.fsSm, lineHeight: T18.lhSm },
15109
+ children: type === "shared" ? `People with an email on ${companyDomain ?? "your company's domain"} can see this organization and join it.` : "No one can see this organization. People join only when they're invited to one of its workspaces."
15110
+ }
15111
+ )
15133
15112
  ] }),
15134
15113
  /* @__PURE__ */ jsx31("div", { className: "flex items-center justify-end w-full", children: /* @__PURE__ */ jsx31(
15135
15114
  ScButton16,
@@ -15138,7 +15117,7 @@ function OrganizationPicker({
15138
15117
  variant: "primary",
15139
15118
  size: "md",
15140
15119
  state: !name.trim() || busy ? "disabled" : "default",
15141
- onClick: name.trim() && !busy ? () => void run(() => onCreate({ name: name.trim(), type: publicDomain ? "shared" : type })) : void 0
15120
+ onClick: name.trim() && !busy ? () => void run(() => onCreate({ name: name.trim(), type: publicDomain ? "private" : type })) : void 0
15142
15121
  }
15143
15122
  ) })
15144
15123
  ] })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamoid/settings",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",