@ydtb/tk-scope-app 0.26.1 → 0.26.2

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.
@@ -7,9 +7,9 @@ import { useNavigation } from "../../contexts/navigation/NavigationContext.js";
7
7
  import { useScopeLink } from "@ydtb/tk-scope/client";
8
8
  import { MoreToolsPopover } from "./MoreToolsPopover.js";
9
9
  export function IconRailContent({ onNavigate, scopeSwitcherToggle }) {
10
- const activeTool = useActiveTool();
11
10
  const navigate = useNavigate();
12
- const { visibleTopTools, hiddenTools, bottomTools } = useNavigation();
11
+ const { visibleTopTools, hiddenTools, bottomTools, allTopTools } = useNavigation();
12
+ const activeTool = useActiveTool([...allTopTools, ...bottomTools]);
13
13
  const sl = useScopeLink();
14
14
  const displayTools = useMemo(() => {
15
15
  const activeHiddenTool = hiddenTools.find((tool) => tool.id === activeTool);
@@ -29,8 +29,8 @@ export function IconRailContent({ onNavigate, scopeSwitcherToggle }) {
29
29
  return (_jsx(ReusableIconRailContent, { topItems: topItems, bottomItems: bottomItems, onSelectItem: handleSelectItem, onNavigate: onNavigate, moreTools: _jsx(MoreToolsPopover, {}), scopeSwitcherToggle: scopeSwitcherToggle }));
30
30
  }
31
31
  export function IconRail() {
32
- const activeTool = useActiveTool();
33
- const { visibleTopTools, hiddenTools, bottomTools } = useNavigation();
32
+ const { visibleTopTools, hiddenTools, bottomTools, allTopTools } = useNavigation();
33
+ const activeTool = useActiveTool([...allTopTools, ...bottomTools]);
34
34
  const navigate = useNavigate();
35
35
  const sl = useScopeLink();
36
36
  const displayTools = useMemo(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"IconRail.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/IconRail.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IconRail.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/IconRail.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MoreToolsPopover.d.ts","sourceRoot":"","sources":["../../../../src/dashboard/navigation/MoreToolsPopover.tsx"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,4CAoB/B"}
1
+ {"version":3,"file":"MoreToolsPopover.d.ts","sourceRoot":"","sources":["../../../../src/dashboard/navigation/MoreToolsPopover.tsx"],"names":[],"mappings":"AAUA,wBAAgB,gBAAgB,4CAoB/B"}
@@ -1,15 +1,15 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useNavigate } from "@tanstack/react-router";
3
- import { MoreToolsPopover as ReusableMoreToolsPopover, toShellToolItems } from "@ydtb/tk-scope-shell";
3
+ import { MoreToolsPopover as ReusableMoreToolsPopover, toShellToolItems, } from "@ydtb/tk-scope-shell";
4
4
  import { useNavigation } from "../../contexts/navigation/NavigationContext.js";
5
5
  import { useCommand } from "../../contexts/command/CommandContext.js";
6
6
  import { useActiveTool } from "./use-active-tool.js";
7
7
  import { useScopeLink } from "@ydtb/tk-scope/client";
8
8
  export function MoreToolsPopover() {
9
- const { hiddenTools } = useNavigation();
9
+ const { hiddenTools, allTopTools } = useNavigation();
10
10
  const { openPanel } = useCommand();
11
11
  const navigate = useNavigate();
12
- const activeTool = useActiveTool();
12
+ const activeTool = useActiveTool(allTopTools);
13
13
  const sl = useScopeLink();
14
14
  return (_jsx(ReusableMoreToolsPopover, { items: toShellToolItems(hiddenTools, activeTool), activeItemId: activeTool, onSelectItem: (item) => {
15
15
  if (!item.route)
@@ -1 +1 @@
1
- {"version":3,"file":"MoreToolsPopover.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/MoreToolsPopover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAiD,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA2C,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAA;IACvC,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;IAEzB,OAAO,CACL,KAAC,wBAAwB,IACvB,KAAK,EAAE,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,EAChD,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAM;YACvB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAU,EAAE,CAAC,CAAA;QAC3C,CAAC,EACD,WAAW,EAAE,GAAG,EAAE;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/C,CAAC,GACD,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"MoreToolsPopover.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/MoreToolsPopover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EACL,gBAAgB,IAAI,wBAAwB,EAC5C,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAiD,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA2C,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAA;IACpD,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAG,YAAY,EAAE,CAAA;IAEzB,OAAO,CACL,KAAC,wBAAwB,IACvB,KAAK,EAAE,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,EAChD,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAM;YACvB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAU,EAAE,CAAC,CAAA;QAC3C,CAAC,EACD,WAAW,EAAE,GAAG,EAAE;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/C,CAAC,GACD,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolItem } from "../../lib/navigation-tools.ts";
2
+ export declare function resolveActiveToolFromToolPath(toolPath: string, tools: ToolItem[]): string;
3
+ //# sourceMappingURL=active-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-tool.d.ts","sourceRoot":"","sources":["../../../../src/dashboard/navigation/active-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAmB7D,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAQzF"}
@@ -0,0 +1,24 @@
1
+ function getRouteMatchScore(toolPath, route) {
2
+ if (route === "/")
3
+ return -1;
4
+ if (toolPath === route)
5
+ return 10_000 + route.length;
6
+ if (toolPath.startsWith(`${route}/`))
7
+ return 5_000 + route.length;
8
+ // Some tools use a list route for their rail destination but detail/editor
9
+ // routes under the same top-level namespace. Capture, for example, links the
10
+ // rail to /capture/builder while form builders live at /capture/forms/:id/*.
11
+ const [toolSegment] = toolPath.split("/").filter(Boolean);
12
+ const [routeSegment] = route.split("/").filter(Boolean);
13
+ return toolSegment && routeSegment && toolSegment === routeSegment ? routeSegment.length : -1;
14
+ }
15
+ function isRouteMatch(toolPath, route) {
16
+ return getRouteMatchScore(toolPath, route) >= 0;
17
+ }
18
+ export function resolveActiveToolFromToolPath(toolPath, tools) {
19
+ const match = tools
20
+ .filter((tool) => isRouteMatch(toolPath, tool.route))
21
+ .sort((a, b) => getRouteMatchScore(toolPath, b.route) - getRouteMatchScore(toolPath, a.route))[0];
22
+ return match?.id ?? "dashboard";
23
+ }
24
+ //# sourceMappingURL=active-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-tool.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/active-tool.ts"],"names":[],"mappings":"AAEA,SAAS,kBAAkB,CAAC,QAAgB,EAAE,KAAa;IACzD,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,CAAC,CAAC,CAAA;IAC5B,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;IAEjE,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzD,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvD,OAAO,WAAW,IAAI,YAAY,IAAI,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/F,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,KAAa;IACnD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAgB,EAAE,KAAiB;IAC/E,MAAM,KAAK,GAAG,KAAK;SAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACpD,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CACxF,CAAC,CAAC,CAAC,CAAA;IAEN,OAAO,KAAK,EAAE,EAAE,IAAI,WAAW,CAAA;AACjC,CAAC"}
@@ -1,2 +1,4 @@
1
- export declare function useActiveTool(): string;
1
+ import type { ToolItem } from "../../lib/navigation-tools.ts";
2
+ export declare function resolveActiveToolId(pathname: string, scopeType: string | null | undefined, tools: ToolItem[]): string;
3
+ export declare function useActiveTool(toolsOverride?: ToolItem[]): string;
2
4
  //# sourceMappingURL=use-active-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-active-tool.d.ts","sourceRoot":"","sources":["../../../../src/dashboard/navigation/use-active-tool.ts"],"names":[],"mappings":"AAwCA,wBAAgB,aAAa,IAAI,MAAM,CAgBtC"}
1
+ {"version":3,"file":"use-active-tool.d.ts","sourceRoot":"","sources":["../../../../src/dashboard/navigation/use-active-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AA0B7D,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAMR;AAED,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,CAOhE"}
@@ -2,6 +2,7 @@ import { useLocation } from "@tanstack/react-router";
2
2
  import { useScopeContext } from "../../contexts/scope/ScopeContext.js";
3
3
  import { useToolsForScope } from "../../contexts/navigation/NavigationRegistryContext.js";
4
4
  import { getUrlPrefixes } from "@ydtb/tk-scope/client";
5
+ import { resolveActiveToolFromToolPath } from "./active-tool.js";
5
6
  /**
6
7
  * Extract the tool-relative path from a full pathname by stripping the scope prefix.
7
8
  * e.g. '/l/abc123/contacts/123' with prefix '/l/$scopeId' → '/contacts/123'
@@ -24,30 +25,17 @@ function getToolPath(pathname, scopeType) {
24
25
  }
25
26
  return pathname;
26
27
  }
27
- function isRouteMatch(toolPath, route) {
28
- if (route === "/")
29
- return false;
30
- if (toolPath === route || toolPath.startsWith(`${route}/`))
31
- return true;
32
- // Some tools use a list route for their rail destination but detail/editor
33
- // routes under the same top-level namespace. Capture, for example, links the
34
- // rail to /capture/builder while form builders live at /capture/forms/:id/*.
35
- const [toolSegment] = toolPath.split("/").filter(Boolean);
36
- const [routeSegment] = route.split("/").filter(Boolean);
37
- return Boolean(toolSegment && routeSegment && toolSegment === routeSegment);
38
- }
39
- export function useActiveTool() {
40
- const location = useLocation();
41
- const pathname = location.pathname;
42
- const { scopeType } = useScopeContext();
43
- const tools = useToolsForScope(scopeType);
28
+ export function resolveActiveToolId(pathname, scopeType, tools) {
44
29
  if (!scopeType) {
45
30
  return "dashboard";
46
31
  }
47
- const toolPath = getToolPath(pathname, scopeType);
48
- const match = tools.find((t) => isRouteMatch(toolPath, t.route));
49
- if (match)
50
- return match.id;
51
- return "dashboard";
32
+ return resolveActiveToolFromToolPath(getToolPath(pathname, scopeType), tools);
33
+ }
34
+ export function useActiveTool(toolsOverride) {
35
+ const location = useLocation();
36
+ const { scopeType } = useScopeContext();
37
+ const staticTools = useToolsForScope(scopeType);
38
+ const tools = toolsOverride ?? staticTools;
39
+ return resolveActiveToolId(location.pathname, scopeType, tools);
52
40
  }
53
41
  //# sourceMappingURL=use-active-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-active-tool.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/use-active-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAuC,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAyD,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD;;;GAGG;AACH,SAAS,WAAW,CAAC,QAAgB,EAAE,SAAiB;IACtD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;IACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAA;IAE7B,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACpC,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACvD,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;IAC9C,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,KAAa;IACnD,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IAC/B,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvE,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzD,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvD,OAAO,OAAO,CAAC,WAAW,IAAI,YAAY,IAAI,WAAW,KAAK,YAAY,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IAClC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAA;IACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAEjD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,EAAE,CAAA;IAE1B,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"use-active-tool.js","sourceRoot":"","sources":["../../../../src/dashboard/navigation/use-active-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAuC,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAyD,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE;;;GAGG;AACH,SAAS,WAAW,CAAC,QAAgB,EAAE,SAAiB;IACtD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;IACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAA;IAE7B,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACpC,OAAO,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACvD,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAA;IAC9C,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,SAAoC,EACpC,KAAiB;IAEjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,OAAO,6BAA6B,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,aAA0B;IACtD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAA;IACvC,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,aAAa,IAAI,WAAW,CAAA;IAE1C,OAAO,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AACjE,CAAC"}
@@ -3773,6 +3773,6 @@ export declare const tokensApi: import("@ydtb/tk-scope-api-client").ToolClient<{
3773
3773
  scopeId: string;
3774
3774
  scopeType: string;
3775
3775
  scopeChain: import("@ydtb/tk-scope-extension/orpc").ScopeChainEntry[];
3776
- }>, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("@orpc/contract").Schema<import("@ydtb/tk-scope-tokens/types").TokenListGroup[], import("@ydtb/tk-scope-tokens/types").TokenListGroup[]>, Record<never, never>, Record<never, never>>;
3776
+ }>, import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("@orpc/server").Schema<import("@ydtb/tk-scope-tokens/types").TokenListGroup[], import("@ydtb/tk-scope-tokens/types").TokenListGroup[]>, Record<never, never>, Record<never, never>>;
3777
3777
  }>;
3778
3778
  //# sourceMappingURL=platform-api.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ydtb/tk-scope-app",
3
- "version": "0.26.1",
3
+ "version": "0.26.2",
4
4
  "private": false,
5
5
  "description": "Platform client shell for tk-scope — pages, layouts, dashboard chrome, onboarding, auth strategies",
6
6
  "type": "module",
@@ -83,22 +83,22 @@
83
83
  "@orpc/server": "^1.13.14",
84
84
  "@orpc/tanstack-query": "^1.13.14",
85
85
  "@ydtb/core-client": "^0.13.2",
86
- "@ydtb/tk-scope-api-client": "0.13.0",
87
86
  "@ydtb/tk-scope": "0.14.2",
87
+ "@ydtb/tk-scope-api-client": "0.13.0",
88
+ "@ydtb/tk-scope-dashboard": "0.26.0",
88
89
  "@ydtb/tk-scope-auth": "0.23.12",
89
- "@ydtb/tk-scope-extension": "0.23.12",
90
+ "@ydtb/tk-scope-events": "0.23.12",
90
91
  "@ydtb/tk-scope-launchpad": "0.23.12",
91
- "@ydtb/tk-scope-dashboard": "0.26.0",
92
+ "@ydtb/tk-scope-lib": "0.13.0",
93
+ "@ydtb/tk-scope-extension": "0.23.12",
92
94
  "@ydtb/tk-scope-notifications": "0.23.12",
93
- "@ydtb/tk-scope-platform": "0.23.12",
94
- "@ydtb/tk-scope-query-client": "0.14.0",
95
95
  "@ydtb/tk-scope-onboarding": "0.23.12",
96
- "@ydtb/tk-scope-lib": "0.13.0",
96
+ "@ydtb/tk-scope-query-client": "0.14.0",
97
+ "@ydtb/tk-scope-platform": "0.23.12",
98
+ "@ydtb/tk-scope-search": "0.23.12",
97
99
  "@ydtb/tk-scope-shell": "0.26.0",
98
100
  "@ydtb/tk-scope-tokens": "0.26.0",
99
- "@ydtb/tk-scope-search": "0.23.12",
100
- "@ydtb/tk-scope-ui": "0.26.0",
101
- "@ydtb/tk-scope-events": "0.23.12"
101
+ "@ydtb/tk-scope-ui": "0.26.0"
102
102
  },
103
103
  "peerDependencies": {
104
104
  "@tanstack/react-query": ">=5.99.0 <6.0.0",