@stratum-hq/react 0.4.1 → 0.5.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.
package/README.md CHANGED
@@ -24,7 +24,8 @@ import {
24
24
 
25
25
  function App() {
26
26
  return (
27
- <StratumProvider controlPlaneUrl="http://localhost:3001" apiKey="sk_live_your_key">
27
+ // "/api/stratum" is a server-side proxy on your own origin (see below).
28
+ <StratumProvider controlPlaneUrl="/api/stratum">
28
29
  <Layout />
29
30
  </StratumProvider>
30
31
  );
@@ -51,7 +52,20 @@ function Layout() {
51
52
  }
52
53
  ```
53
54
 
54
- The provider creates a `StratumClient` internally and manages the current tenant state.
55
+ The provider manages the current tenant state and sends its requests to `controlPlaneUrl`.
56
+
57
+ ### Keep the API key on the server
58
+
59
+ Everything the provider runs with is visible to whoever loads the page, and bundlers inline
60
+ `NEXT_PUBLIC_*`, `REACT_APP_*` and `VITE_*` variables into the JavaScript they ship. So never
61
+ pass a control-plane API key to `StratumProvider` from browser code. Point `controlPlaneUrl` at a
62
+ route on your own server that authenticates the signed-in user, checks what they may do, and then
63
+ forwards the request to the control plane with the key added. `stratum scaffold nextjs` and
64
+ `stratum scaffold react` in `@stratum-hq/cli` generate such a proxy. The `apiKey` prop is optional
65
+ and should only be used where the code does not run in a browser.
66
+
67
+ `TenantThemeProvider`'s `branding.customCss` accepts plain CSS declarations only. Values with
68
+ braces, at-rules, backslashes, quotes or `url()` are ignored.
55
69
 
56
70
  ## Components & Hooks
57
71
 
@@ -109,7 +109,7 @@ export function DraggableTenantTree({ rootId, onSelect, onMove, onReorder, onEdi
109
109
  const siblings = findSiblings(targetNode.parent_id);
110
110
  const targetIndex = siblings.findIndex((s) => s.id === targetId);
111
111
  const position = Math.max(0, targetIndex);
112
- await apiCall(`/api/v1/tenants/${draggedId}/reorder`, {
112
+ await apiCall(`/api/v1/tenants/${encodeURIComponent(draggedId)}/reorder`, {
113
113
  method: "POST",
114
114
  headers: { "Content-Type": "application/json" },
115
115
  body: JSON.stringify({ position }),
@@ -119,7 +119,7 @@ export function DraggableTenantTree({ rootId, onSelect, onMove, onReorder, onEdi
119
119
  }
120
120
  else {
121
121
  // Reparent — move to target as new parent
122
- await apiCall(`/api/v1/tenants/${draggedId}/move`, {
122
+ await apiCall(`/api/v1/tenants/${encodeURIComponent(draggedId)}/move`, {
123
123
  method: "POST",
124
124
  headers: { "Content-Type": "application/json" },
125
125
  body: JSON.stringify({ new_parent_id: targetId }),
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableTenantTree.js","sourceRoot":"","sources":["../../src/components/DraggableTenantTree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DraggableTenantTree.js","sourceRoot":"","sources":["../../src/components/DraggableTenantTree.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@ export interface TenantBranding {
3
3
  primaryColor?: string;
4
4
  logoUrl?: string;
5
5
  companyName?: string;
6
+ /**
7
+ * CSS declarations applied to this provider's subtree, for example
8
+ * `"color: #333; font-weight: 600;"`. Only plain declarations are accepted:
9
+ * a value containing braces, `@`, `<`, backslashes, quotes or `url(` is
10
+ * ignored, so it cannot add rules outside the subtree or load resources.
11
+ */
6
12
  customCss?: string;
7
13
  }
8
14
  export interface TenantThemeProviderProps {
@@ -1 +1 @@
1
- {"version":3,"file":"TenantThemeProvider.d.ts","sourceRoot":"","sources":["../../src/components/TenantThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE,wBAAwB,qBA6B1B"}
1
+ {"version":3,"file":"TenantThemeProvider.d.ts","sourceRoot":"","sources":["../../src/components/TenantThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE,wBAAwB,qBA8B1B"}
@@ -1,5 +1,22 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useId } from "react";
3
+ /**
4
+ * Characters and functions that would let customCss leave its declaration
5
+ * block (braces, at-rules, a closing </style>), smuggle those in through CSS
6
+ * escapes or strings, or fetch from another origin (url(), image-set() and
7
+ * friends all need url() or a quoted string).
8
+ */
9
+ const UNSAFE_CUSTOM_CSS = /[{}@<\\"']|url\s*\(/i;
10
+ function safeCustomCss(customCss) {
11
+ if (!customCss)
12
+ return null;
13
+ if (UNSAFE_CUSTOM_CSS.test(customCss)) {
14
+ console.warn("[stratum] TenantThemeProvider ignored customCss: only plain CSS declarations are allowed " +
15
+ "(no braces, at-rules, backslashes, quotes or url()).");
16
+ return null;
17
+ }
18
+ return customCss;
19
+ }
3
20
  export function TenantThemeProvider({ branding, children, className, }) {
4
21
  const scopeId = useId().replace(/:/g, "").toLowerCase();
5
22
  const dataAttr = `data-stratum-theme-${scopeId}`;
@@ -14,6 +31,7 @@ export function TenantThemeProvider({ branding, children, className, }) {
14
31
  cssVars["--stratum-company-name"] = `"${branding.companyName}"`;
15
32
  }
16
33
  const scopeSelector = `[${dataAttr}]`;
17
- return (_jsxs("div", { className: `stratum-tenant-theme-provider ${className || ""}`, style: cssVars, [dataAttr]: "", children: [branding.customCss && (_jsx("style", { children: `${scopeSelector} { ${branding.customCss} }` })), children] }));
34
+ const customCss = safeCustomCss(branding.customCss);
35
+ return (_jsxs("div", { className: `stratum-tenant-theme-provider ${className || ""}`, style: cssVars, [dataAttr]: "", children: [customCss && (_jsx("style", { children: `${scopeSelector} { ${customCss} }` })), children] }));
18
36
  }
19
37
  //# sourceMappingURL=TenantThemeProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TenantThemeProvider.js","sourceRoot":"","sources":["../../src/components/TenantThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAerC,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,SAAS,GACgB;IACzB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,sBAAsB,OAAO,EAAE,CAAC;IAEjD,MAAM,OAAO,GAAiD,EAAE,CAAC;IACjE,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;IACrD,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,QAAQ,CAAC,OAAO,GAAG,CAAC;IAC7D,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,QAAQ,GAAG,CAAC;IAEtC,OAAO,CACL,eACE,SAAS,EAAE,iCAAiC,SAAS,IAAI,EAAE,EAAE,EAC7D,KAAK,EAAE,OAAO,EACR,CAAC,QAAQ,CAAC,EAAE,EAAE,aAEnB,QAAQ,CAAC,SAAS,IAAI,CACrB,0BAAQ,GAAG,aAAa,MAAM,QAAQ,CAAC,SAAS,IAAI,GAAS,CAC9D,EACA,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"TenantThemeProvider.js","sourceRoot":"","sources":["../../src/components/TenantThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAqBrC;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAEjD,SAAS,aAAa,CAAC,SAA6B;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CACV,2FAA2F;YACzF,sDAAsD,CACzD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,SAAS,GACgB;IACzB,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,sBAAsB,OAAO,EAAE,CAAC;IAEjD,MAAM,OAAO,GAAiD,EAAE,CAAC;IACjE,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;IACrD,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,QAAQ,CAAC,OAAO,GAAG,CAAC;IAC7D,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,wBAAwB,CAAC,GAAG,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,QAAQ,GAAG,CAAC;IACtC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEpD,OAAO,CACL,eACE,SAAS,EAAE,iCAAiC,SAAS,IAAI,EAAE,EAAE,EAC7D,KAAK,EAAE,OAAO,EACR,CAAC,QAAQ,CAAC,EAAE,EAAE,aAEnB,SAAS,IAAI,CACZ,0BAAQ,GAAG,aAAa,MAAM,SAAS,IAAI,GAAS,CACrD,EACA,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -13,7 +13,7 @@ export function useAuditLogs(limit = 20) {
13
13
  setLoading(true);
14
14
  setError(null);
15
15
  try {
16
- const data = await apiCall(`/api/v1/audit-logs?tenant_id=${tenant.id}&limit=${limit}`);
16
+ const data = await apiCall(`/api/v1/audit-logs?tenant_id=${encodeURIComponent(tenant.id)}&limit=${limit}`);
17
17
  setEntries(Array.isArray(data) ? data : []);
18
18
  }
19
19
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-audit-logs.js","sourceRoot":"","sources":["../../src/hooks/use-audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB5C,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE;IAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,gCAAgC,MAAM,CAAC,EAAE,UAAU,KAAK,EAAE,CAC3D,CAAC;YACF,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"use-audit-logs.js","sourceRoot":"","sources":["../../src/hooks/use-audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB5C,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE;IAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,gCAAgC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,EAAE,CAC/E,CAAC;YACF,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
@@ -25,8 +25,8 @@ export function useConfigCascade() {
25
25
  try {
26
26
  // Fetch parent config + children list in parallel
27
27
  const [configRes, childrenRes] = await Promise.all([
28
- apiCall(`/api/v1/tenants/${tenant.id}/config`),
29
- apiCall(`/api/v1/tenants/${tenant.id}/descendants`).catch(() => []),
28
+ apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/config`),
29
+ apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/descendants`).catch(() => []),
30
30
  ]);
31
31
  // Transform parent config to array
32
32
  const parentConfig = Object.entries(configRes).map(([key, entry]) => ({ ...entry, key }));
@@ -40,7 +40,7 @@ export function useConfigCascade() {
40
40
  // Fetch config for each direct child (limit to first 5 for performance)
41
41
  const childConfigs = await Promise.all(directChildren.slice(0, 5).map(async (child) => {
42
42
  try {
43
- const childConfig = await apiCall(`/api/v1/tenants/${child.id}/config`);
43
+ const childConfig = await apiCall(`/api/v1/tenants/${encodeURIComponent(child.id)}/config`);
44
44
  return {
45
45
  id: child.id,
46
46
  name: child.name,
@@ -1 +1 @@
1
- {"version":3,"file":"use-config-cascade.js","sourceRoot":"","sources":["../../src/hooks/use-config-cascade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-config-cascade.js","sourceRoot":"","sources":["../../src/hooks/use-config-cascade.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export function useConfig() {
13
13
  setLoading(true);
14
14
  setError(null);
15
15
  try {
16
- const result = await apiCall(`/api/v1/tenants/${tenant.id}/config`);
16
+ const result = await apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/config`);
17
17
  setConfig(Object.entries(result).map(([key, entry]) => ({
18
18
  key,
19
19
  value: entry.value,
@@ -35,7 +35,7 @@ export function useConfig() {
35
35
  const setConfigValue = useCallback(async (key, value, locked = false) => {
36
36
  if (!tenant)
37
37
  return;
38
- await apiCall(`/api/v1/tenants/${tenant.id}/config/${key}`, {
38
+ await apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/config/${encodeURIComponent(key)}`, {
39
39
  method: "PUT",
40
40
  body: JSON.stringify({ value, locked }),
41
41
  });
@@ -44,7 +44,7 @@ export function useConfig() {
44
44
  const deleteConfigValue = useCallback(async (key) => {
45
45
  if (!tenant)
46
46
  return;
47
- await apiCall(`/api/v1/tenants/${tenant.id}/config/${key}`, {
47
+ await apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/config/${encodeURIComponent(key)}`, {
48
48
  method: "DELETE",
49
49
  });
50
50
  await fetchConfig();
@@ -1 +1 @@
1
- {"version":3,"file":"use-config.js","sourceRoot":"","sources":["../../src/hooks/use-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-config.js","sourceRoot":"","sources":["../../src/hooks/use-config.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export function usePermissions() {
13
13
  setLoading(true);
14
14
  setError(null);
15
15
  try {
16
- const result = await apiCall(`/api/v1/tenants/${tenant.id}/permissions`);
16
+ const result = await apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/permissions`);
17
17
  setPermissions(Object.values(result));
18
18
  }
19
19
  catch (err) {
@@ -29,7 +29,7 @@ export function usePermissions() {
29
29
  const createPermission = useCallback(async (key, value, mode, revocationMode) => {
30
30
  if (!tenant)
31
31
  return;
32
- await apiCall(`/api/v1/tenants/${tenant.id}/permissions`, {
32
+ await apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/permissions`, {
33
33
  method: "POST",
34
34
  body: JSON.stringify({ key, value, mode, revocation_mode: revocationMode }),
35
35
  });
@@ -38,7 +38,7 @@ export function usePermissions() {
38
38
  const deletePermission = useCallback(async (policyId) => {
39
39
  if (!tenant)
40
40
  return;
41
- await apiCall(`/api/v1/tenants/${tenant.id}/permissions/${policyId}`, {
41
+ await apiCall(`/api/v1/tenants/${encodeURIComponent(tenant.id)}/permissions/${encodeURIComponent(policyId)}`, {
42
42
  method: "DELETE",
43
43
  });
44
44
  await fetchPermissions();
@@ -1 +1 @@
1
- {"version":3,"file":"use-permissions.js","sourceRoot":"","sources":["../../src/hooks/use-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAuB,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,mBAAmB,MAAM,CAAC,EAAE,cAAc,CAC3C,CAAC;YACF,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtB,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,GAAW,EAAE,KAAc,EAAE,IAAY,EAAE,cAAsB,EAAE,EAAE;QAC1E,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,CAAC,mBAAmB,MAAM,CAAC,EAAE,cAAc,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;SAC5E,CAAC,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACpC,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzB,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,CAAC,mBAAmB,MAAM,CAAC,EAAE,gBAAgB,QAAQ,EAAE,EAAE;YACpE,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACpC,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AACxG,CAAC"}
1
+ {"version":3,"file":"use-permissions.js","sourceRoot":"","sources":["../../src/hooks/use-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAuB,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,mBAAmB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAC/D,CAAC;YACF,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtB,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,GAAW,EAAE,KAAc,EAAE,IAAY,EAAE,cAAsB,EAAE,EAAE;QAC1E,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,CAAC,mBAAmB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE;YAC5E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;SAC5E,CAAC,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACpC,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzB,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,CAAC,mBAAmB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE;YAC5G,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CACpC,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AACxG,CAAC"}
@@ -35,7 +35,7 @@ export function useTenantTree(rootId) {
35
35
  setError(null);
36
36
  try {
37
37
  const path = rootId
38
- ? `/api/v1/tenants/${rootId}/descendants`
38
+ ? `/api/v1/tenants/${encodeURIComponent(rootId)}/descendants`
39
39
  : `/api/v1/tenants`;
40
40
  const res = await apiCall(path);
41
41
  const nodes = Array.isArray(res) ? res : res.data;
@@ -1 +1 @@
1
- {"version":3,"file":"use-tenant-tree.js","sourceRoot":"","sources":["../../src/hooks/use-tenant-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-tenant-tree.js","sourceRoot":"","sources":["../../src/hooks/use-tenant-tree.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export declare function useTenant(): {
2
2
  tenant: {
3
3
  id: string;
4
- status: "active" | "suspended" | "archived";
4
+ status: "active" | "pending" | "suspended" | "archived";
5
5
  metadata: Record<string, unknown>;
6
6
  created_at: string;
7
7
  updated_at: string;
@@ -13,7 +13,7 @@ export function useWebhooks() {
13
13
  setLoading(true);
14
14
  setError(null);
15
15
  try {
16
- const data = await apiCall(`/api/v1/webhooks?tenant_id=${tenant.id}`);
16
+ const data = await apiCall(`/api/v1/webhooks?tenant_id=${encodeURIComponent(tenant.id)}`);
17
17
  setWebhooks(Array.isArray(data) ? data : []);
18
18
  }
19
19
  catch (err) {
@@ -35,11 +35,11 @@ export function useWebhooks() {
35
35
  await refresh();
36
36
  }, [tenant?.id, apiCall, refresh]);
37
37
  const deleteWebhook = useCallback(async (id) => {
38
- await apiCall(`/api/v1/webhooks/${id}`, { method: "DELETE" });
38
+ await apiCall(`/api/v1/webhooks/${encodeURIComponent(id)}`, { method: "DELETE" });
39
39
  await refresh();
40
40
  }, [apiCall, refresh]);
41
41
  const testWebhook = useCallback(async (id) => {
42
- return apiCall(`/api/v1/webhooks/${id}/test`, { method: "POST" });
42
+ return apiCall(`/api/v1/webhooks/${encodeURIComponent(id)}/test`, { method: "POST" });
43
43
  }, [apiCall]);
44
44
  return { webhooks, loading, error, refresh, createWebhook, deleteWebhook, testWebhook };
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-webhooks.js","sourceRoot":"","sources":["../../src/hooks/use-webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkB5C,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAiB,8BAA8B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACtF,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3C,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,GAAW,EAAE,MAAgB,EAAE,EAAE;QACxE,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,CAAC,kBAAkB,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnC,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QACrD,MAAM,OAAO,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,EAAU,EAA8B,EAAE;QAC/E,OAAO,OAAO,CAAoB,oBAAoB,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"use-webhooks.js","sourceRoot":"","sources":["../../src/hooks/use-webhooks.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,19 @@ import type { TenantNode, ResolvedTenantContext } from "@stratum-hq/core";
3
3
  import { type Messages } from "./i18n.js";
4
4
  import type { UseToastReturn } from "./hooks/use-toast.js";
5
5
  export interface StratumProviderProps {
6
+ /**
7
+ * Base URL requests are sent to. In a browser app, point this at a
8
+ * same-origin server-side proxy that authenticates the user and adds the
9
+ * control-plane API key, for example "/api/stratum".
10
+ */
6
11
  controlPlaneUrl: string;
7
- apiKey: string;
12
+ /**
13
+ * Sent as X-API-Key on every request. Anything passed here is readable by
14
+ * whoever loads the page, so never pass a control-plane API key from browser
15
+ * code (including NEXT_PUBLIC_, REACT_APP_ or VITE_ variables). Omit it and
16
+ * use a server-side proxy instead.
17
+ */
18
+ apiKey?: string;
8
19
  initialTenantId?: string;
9
20
  /** Partial message overrides merged on top of `defaultMessages`. */
10
21
  messages?: Messages;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAsC,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gCAAgC;IAChC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,QAAA,MAAM,cAAc,2CAAkD,CAAC;AAEvE,iEAAiE;AACjE,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAgB,eAAe,CAAC,EAC9B,eAAe,EACf,MAAM,EACN,eAAe,EACf,QAAQ,EAAE,YAAY,EACtB,QAAQ,GACT,EAAE,oBAAoB,qBAsFtB;AAED,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpH,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAsC,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gCAAgC;IAChC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,QAAA,MAAM,cAAc,2CAAkD,CAAC;AAEvE,iEAAiE;AACjE,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAgB,eAAe,CAAC,EAC9B,eAAe,EACf,MAAM,EACN,eAAe,EACf,QAAQ,EAAE,YAAY,EACtB,QAAQ,GACT,EAAE,oBAAoB,qBAuFtB;AAED,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD"}
package/dist/provider.js CHANGED
@@ -15,9 +15,10 @@ export function StratumProvider({ controlPlaneUrl, apiKey, initialTenantId, mess
15
15
  const mergedMessages = useMemo(() => ({ ...defaultMessages, ...userMessages }), [userMessages]);
16
16
  const baseUrl = controlPlaneUrl.replace(/\/$/, "");
17
17
  const apiCall = useCallback(async (path, options) => {
18
- const headers = {
19
- "X-API-Key": apiKey,
20
- };
18
+ const headers = {};
19
+ if (apiKey) {
20
+ headers["X-API-Key"] = apiKey;
21
+ }
21
22
  // Only set Content-Type for requests that have a body
22
23
  if (options?.body) {
23
24
  headers["Content-Type"] = "application/json";
@@ -43,10 +44,10 @@ export function StratumProvider({ controlPlaneUrl, apiKey, initialTenantId, mess
43
44
  setLoading(true);
44
45
  setError(null);
45
46
  try {
46
- const tenant = await apiCall(`/api/v1/tenants/${tenantId}`);
47
+ const tenant = await apiCall(`/api/v1/tenants/${encodeURIComponent(tenantId)}`);
47
48
  const [config, permissions] = await Promise.all([
48
- apiCall(`/api/v1/tenants/${tenantId}/config`),
49
- apiCall(`/api/v1/tenants/${tenantId}/permissions`),
49
+ apiCall(`/api/v1/tenants/${encodeURIComponent(tenantId)}/config`),
50
+ apiCall(`/api/v1/tenants/${encodeURIComponent(tenantId)}/permissions`),
50
51
  ]);
51
52
  setCurrentTenant(tenant);
52
53
  setTenantContext({
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stratum-hq/react",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "type": "module",
5
5
  "description": "Stratum React UI components for multi-tenant administration",
6
6
  "keywords": [
@@ -33,7 +33,7 @@
33
33
  ],
34
34
  "scripts": {
35
35
  "build": "tsc",
36
- "postbuild": "cp -r src/styles dist/styles",
36
+ "postbuild": "node ../../scripts/copy-dir.mjs src/styles dist/styles",
37
37
  "test": "vitest run",
38
38
  "typecheck": "tsc --noEmit",
39
39
  "lint": "eslint .",
@@ -46,7 +46,7 @@
46
46
  "registry": "https://registry.npmjs.org/"
47
47
  },
48
48
  "dependencies": {
49
- "@stratum-hq/core": "*",
49
+ "@stratum-hq/core": "^1.4.0",
50
50
  "@dnd-kit/core": "^6.3.0",
51
51
  "@dnd-kit/utilities": "^3.2.0"
52
52
  },