@burdenoff/fe-libs 2026.528.2 → 2026.528.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.
Files changed (37) hide show
  1. package/dist/chrome/AutoBreadcrumbs.d.ts.map +1 -1
  2. package/dist/chrome/AutoBreadcrumbs.js +33 -16
  3. package/dist/chrome/Breadcrumb.d.ts.map +1 -1
  4. package/dist/chrome/Breadcrumbs.d.ts +0 -51
  5. package/dist/chrome/Breadcrumbs.d.ts.map +1 -1
  6. package/dist/chrome/Breadcrumbs.js +67 -64
  7. package/dist/chrome/ProductSideNav.d.ts.map +1 -1
  8. package/dist/chrome/ProductSideNav.js +32 -31
  9. package/dist/chrome/ProductSwitcher.js +2 -2
  10. package/dist/shared/actors/ActorIdentity.d.ts +20 -0
  11. package/dist/shared/actors/ActorIdentity.d.ts.map +1 -0
  12. package/dist/shared/actors/ActorIdentity.js +66 -0
  13. package/dist/shared/actors/index.d.ts +3 -0
  14. package/dist/shared/actors/index.d.ts.map +1 -0
  15. package/dist/shared/actors/index.js +2 -0
  16. package/dist/shared/actors/useActorProfiles.d.ts +33 -0
  17. package/dist/shared/actors/useActorProfiles.d.ts.map +1 -0
  18. package/dist/shared/actors/useActorProfiles.js +110 -0
  19. package/dist/shared/hooks/index.d.ts +1 -0
  20. package/dist/shared/hooks/index.d.ts.map +1 -1
  21. package/dist/shared/hooks/useCurrentContextSearchParams.d.ts +17 -0
  22. package/dist/shared/hooks/useCurrentContextSearchParams.d.ts.map +1 -0
  23. package/dist/shared/hooks/useCurrentContextSearchParams.js +30 -0
  24. package/dist/shared/index.d.ts +1 -0
  25. package/dist/shared/index.d.ts.map +1 -1
  26. package/dist/shared-hooks.js +6 -5
  27. package/dist/shared.js +31 -27
  28. package/dist/ui/bottom-sheet.d.ts.map +1 -1
  29. package/dist/ui/bottom-sheet.js +1 -1
  30. package/dist/ui/dialog.js +1 -1
  31. package/dist/ui/index.d.ts +1 -0
  32. package/dist/ui/index.d.ts.map +1 -1
  33. package/dist/ui/page-container.d.ts +24 -0
  34. package/dist/ui/page-container.d.ts.map +1 -0
  35. package/dist/ui/page-container.js +13 -0
  36. package/dist/ui.js +2 -1
  37. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AutoBreadcrumbs.d.ts","sourceRoot":"","sources":["../../src/chrome/AutoBreadcrumbs.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAE9D;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,QAElD;AAiBD,wBAAgB,eAAe,mDAmG9B"}
1
+ {"version":3,"file":"AutoBreadcrumbs.d.ts","sourceRoot":"","sources":["../../src/chrome/AutoBreadcrumbs.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAE9D;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,QAElD;AAiBD,wBAAgB,eAAe,mDAgH9B"}
@@ -46,37 +46,54 @@ function m() {
46
46
  h,
47
47
  m
48
48
  ]);
49
- return _.length === 0 ? null : /* @__PURE__ */ o("nav", {
49
+ if (_.length === 0) return null;
50
+ let v = (() => {
51
+ let e = m("nav.home");
52
+ return e === "nav.home" ? "Home" : e;
53
+ })();
54
+ return /* @__PURE__ */ o("nav", {
50
55
  "aria-label": "Breadcrumb",
51
- className: "mb-spacing-lg px-card-padding py-spacing-sm border-b border-border-subtle bg-bg-surface",
56
+ className: "mb-4 flex min-w-0 items-center border-b border-border-subtle bg-bg-surface px-4 py-2 text-[13px] font-medium sm:px-6",
52
57
  children: /* @__PURE__ */ s("ol", {
53
- className: "flex items-center gap-spacing-xs text-body-sm flex-wrap",
58
+ className: "flex min-w-0 flex-wrap items-center gap-0.5",
54
59
  children: [
55
60
  /* @__PURE__ */ o("li", { children: /* @__PURE__ */ s("button", {
56
61
  type: "button",
57
62
  onClick: () => p("/"),
58
- className: "flex items-center gap-icon-gap text-text-secondary hover:text-text-primary transition-colors",
59
- "aria-label": "Home",
60
- children: [/* @__PURE__ */ o(a, { className: "w-icon-sm h-icon-sm" }), /* @__PURE__ */ o("span", {
61
- className: "hidden sm:inline",
62
- children: (() => {
63
- let e = m("nav.home");
64
- return e === "nav.home" ? "Home" : e;
65
- })()
63
+ className: "inline-flex items-center gap-1 rounded-md p-1.5 text-text-secondary transition-colors duration-150 hover:bg-action-ghost-bg-hover hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
64
+ "aria-label": v,
65
+ children: [/* @__PURE__ */ o(a, { className: "size-3.5" }), /* @__PURE__ */ o("span", {
66
+ className: "sr-only sm:not-sr-only sm:inline",
67
+ children: v
66
68
  })]
67
69
  }) }),
68
- /* @__PURE__ */ o(i, { className: "w-icon-xs h-icon-xs text-text-tertiary" }),
70
+ /* @__PURE__ */ o("li", {
71
+ "aria-hidden": "true",
72
+ className: "flex items-center px-0.5",
73
+ children: /* @__PURE__ */ o(i, {
74
+ className: "size-3.5 shrink-0 text-text-tertiary opacity-60",
75
+ strokeWidth: 2
76
+ })
77
+ }),
69
78
  _.map((e) => /* @__PURE__ */ s("li", {
70
- className: "flex items-center gap-spacing-xs",
79
+ className: "flex min-w-0 items-center",
71
80
  children: [e.isLast ? /* @__PURE__ */ o("span", {
72
- className: "text-text-primary font-medium truncate max-w-[200px] sm:max-w-none",
81
+ className: "inline-flex max-w-[220px] items-center truncate rounded-md px-1.5 py-0.5 font-semibold text-text-primary sm:max-w-[320px]",
82
+ "aria-current": "page",
73
83
  children: e.label
74
84
  }) : /* @__PURE__ */ o("button", {
75
85
  type: "button",
76
86
  onClick: () => p(e.path),
77
- className: "text-text-secondary hover:text-text-primary transition-colors truncate max-w-[120px] sm:max-w-[200px]",
87
+ className: "inline-flex max-w-[140px] items-center truncate rounded-md px-1.5 py-0.5 text-text-secondary transition-colors duration-150 hover:bg-action-ghost-bg-hover hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-strong sm:max-w-[200px]",
78
88
  children: e.label
79
- }), !e.isLast && /* @__PURE__ */ o(i, { className: "w-icon-xs h-icon-xs text-text-tertiary flex-shrink-0" })]
89
+ }), !e.isLast && /* @__PURE__ */ o("span", {
90
+ "aria-hidden": "true",
91
+ className: "flex items-center px-0.5",
92
+ children: /* @__PURE__ */ o(i, {
93
+ className: "size-3.5 shrink-0 text-text-tertiary opacity-60",
94
+ strokeWidth: 2
95
+ })
96
+ })]
80
97
  }, e.path))
81
98
  ]
82
99
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../src/chrome/Breadcrumb.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAW,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,eAAe,EAAE,OAAO,EAAE,CAAC;IAE3B,yCAAyC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACvE;AAiGD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAiF1C,CAAC"}
1
+ {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../src/chrome/Breadcrumb.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAW,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IAEpB,2DAA2D;IAC3D,eAAe,EAAE,OAAO,EAAE,CAAC;IAE3B,yCAAyC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACvE;AAiGD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAuF1C,CAAC"}
@@ -1,69 +1,18 @@
1
1
  import { FC, ReactNode } from 'react';
2
- /**
3
- * Breadcrumb Item Interface
4
- *
5
- * Represents a single breadcrumb item in the navigation trail.
6
- */
7
2
  export interface BreadcrumbItem {
8
- /** Label text to display */
9
3
  label: string;
10
- /** Optional href for navigation */
11
4
  href?: string;
12
- /** Optional icon component */
13
5
  icon?: ReactNode;
14
- /** Click handler (use instead of href for custom navigation) */
15
6
  onClick?: () => void;
16
- /** Whether this is the current page */
17
7
  isCurrentPage?: boolean;
18
8
  }
19
- /**
20
- * Breadcrumbs Props Interface
21
- *
22
- * Generic breadcrumb navigation component that accepts all data via props.
23
- * No dependencies on routing libraries - pure presentation component.
24
- */
25
9
  export interface BreadcrumbsProps {
26
- /** Array of breadcrumb items */
27
10
  items: BreadcrumbItem[];
28
- /** Custom separator element (defaults to chevron) */
29
11
  separator?: ReactNode;
30
- /** Whether to show home icon as first item */
31
12
  showHome?: boolean;
32
- /** Home click handler */
33
13
  onHomeClick?: () => void;
34
- /** Maximum items to show before collapsing (defaults to 5) */
35
14
  maxItems?: number;
36
- /** Additional CSS classes */
37
15
  className?: string;
38
16
  }
39
- /**
40
- * Breadcrumbs Component
41
- *
42
- * Generic breadcrumb navigation for app shells. Pure presentation component
43
- * that accepts all data via props.
44
- *
45
- * Features:
46
- * - Dynamic breadcrumb trail
47
- * - Optional home icon
48
- * - Collapsible items (ellipsis) when exceeds maxItems
49
- * - Custom separators
50
- * - Active page indication
51
- * - Accessible navigation
52
- *
53
- * Uses semantic tokens for styling, which must be provided by the shell.
54
- *
55
- * @example
56
- * ```tsx
57
- * <Breadcrumbs
58
- * items={[
59
- * { label: 'Workspaces', href: '/workspaces' },
60
- * { label: 'My Workspace', href: '/workspaces/123' },
61
- * { label: 'Documents', isCurrentPage: true }
62
- * ]}
63
- * showHome
64
- * onHomeClick={() => navigate('/')}
65
- * />
66
- * ```
67
- */
68
17
  export declare const Breadcrumbs: FC<BreadcrumbsProps>;
69
18
  //# sourceMappingURL=Breadcrumbs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/chrome/Breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,uCAAuC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB,qDAAqD;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmH5C,CAAC"}
1
+ {"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/chrome/Breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK3C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAqF5C,CAAC"}
@@ -1,80 +1,83 @@
1
1
  import { cn as e } from "../shared-utils.js";
2
2
  import { Fragment as t, useMemo as n } from "react";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
3
+ import { ChevronRight as r, Home as i } from "lucide-react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
5
  //#region src/chrome/Breadcrumbs.tsx
5
- var a = ({ items: a, separator: o, showHome: s = !0, onHomeClick: c, maxItems: l = 5, className: u }) => {
6
- let d = n(() => a.length <= l ? a : [
7
- a[0],
6
+ var s = /* @__PURE__ */ a(r, {
7
+ "aria-hidden": "true",
8
+ className: "size-3.5 shrink-0 text-text-tertiary opacity-60",
9
+ strokeWidth: 2
10
+ }), c = "inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-text-secondary transition-colors duration-150 hover:bg-action-ghost-bg-hover hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-strong", l = "inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 font-semibold text-text-primary cursor-default", u = ({ items: r, separator: u, showHome: d = !0, onHomeClick: f, maxItems: p = 5, className: m }) => {
11
+ let h = n(() => r.length <= p ? r : [
12
+ r[0],
8
13
  {
9
14
  label: "...",
10
15
  isEllipsis: !0
11
16
  },
12
- ...a.slice(-2)
13
- ], [a, l]), f = /* @__PURE__ */ r("svg", {
14
- className: "w-icon-sm h-icon-sm text-text-tertiary",
15
- fill: "none",
16
- stroke: "currentColor",
17
- viewBox: "0 0 24 24",
18
- "aria-hidden": "true",
19
- children: /* @__PURE__ */ r("path", {
20
- strokeLinecap: "round",
21
- strokeLinejoin: "round",
22
- strokeWidth: 2,
23
- d: "M9 5l7 7-7 7"
24
- })
25
- });
26
- return /* @__PURE__ */ r("nav", {
17
+ ...r.slice(-2)
18
+ ], [r, p]), g = u ?? s;
19
+ return /* @__PURE__ */ a("nav", {
27
20
  "aria-label": "Breadcrumb",
28
- className: e("flex items-center gap-icon-gap text-body-sm", u),
29
- children: /* @__PURE__ */ i("ol", {
30
- className: "flex items-center gap-icon-gap",
31
- children: [s && /* @__PURE__ */ r("li", { children: /* @__PURE__ */ r("button", {
32
- type: "button",
33
- onClick: c,
34
- className: "text-text-secondary hover:text-text-primary transition-colors p-1 rounded hover:bg-action-ghost-bg-hover",
35
- "aria-label": "Home",
36
- children: /* @__PURE__ */ r("svg", {
37
- className: "w-icon-md h-icon-md",
38
- fill: "none",
39
- stroke: "currentColor",
40
- viewBox: "0 0 24 24",
41
- children: /* @__PURE__ */ r("path", {
42
- strokeLinecap: "round",
43
- strokeLinejoin: "round",
44
- strokeWidth: 2,
45
- d: "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
46
- })
21
+ className: e("flex min-w-0 items-center gap-1 text-[13px] font-medium", m),
22
+ children: /* @__PURE__ */ o("ol", {
23
+ className: "flex min-w-0 flex-wrap items-center gap-0.5",
24
+ children: [d && /* @__PURE__ */ a("li", {
25
+ className: "flex items-center",
26
+ children: /* @__PURE__ */ a("button", {
27
+ type: "button",
28
+ onClick: f,
29
+ className: e(c, "p-1.5"),
30
+ "aria-label": "Home",
31
+ children: /* @__PURE__ */ a(i, { className: "size-3.5" })
47
32
  })
48
- }) }), d.map((n, a) => {
33
+ }), h.map((n, r) => {
49
34
  if (!n) return null;
50
- let c = "isEllipsis" in n && n.isEllipsis;
51
- return /* @__PURE__ */ i(t, { children: [(s || a > 0) && /* @__PURE__ */ r("li", {
35
+ let i = "isEllipsis" in n && n.isEllipsis;
36
+ return /* @__PURE__ */ o(t, { children: [(d || r > 0) && /* @__PURE__ */ a("li", {
52
37
  "aria-hidden": "true",
53
- className: "flex items-center",
54
- children: o || f
55
- }), /* @__PURE__ */ r("li", { children: c ? /* @__PURE__ */ r("span", {
56
- className: "text-text-tertiary px-2",
57
- children: "..."
58
- }) : n.href || n.onClick ? /* @__PURE__ */ i("button", {
59
- type: "button",
60
- onClick: n.onClick || (() => {}),
61
- className: e("flex items-center gap-icon-gap px-2 py-1 rounded transition-colors", n.isCurrentPage ? "text-text-primary font-medium pointer-events-none" : "text-text-secondary hover:text-text-primary hover:bg-action-ghost-bg-hover"),
62
- "aria-current": n.isCurrentPage ? "page" : void 0,
63
- children: [n.icon && /* @__PURE__ */ r("span", {
64
- className: "flex items-center",
65
- children: n.icon
66
- }), /* @__PURE__ */ r("span", { children: n.label })]
67
- }) : /* @__PURE__ */ i("span", {
68
- className: e("flex items-center gap-icon-gap px-2 py-1", n.isCurrentPage ? "text-text-primary font-medium" : "text-text-secondary"),
69
- "aria-current": n.isCurrentPage ? "page" : void 0,
70
- children: [n.icon && /* @__PURE__ */ r("span", {
71
- className: "flex items-center",
72
- children: n.icon
73
- }), /* @__PURE__ */ r("span", { children: n.label })]
74
- }) })] }, a);
38
+ className: "flex items-center px-0.5",
39
+ children: g
40
+ }), /* @__PURE__ */ a("li", {
41
+ className: "flex min-w-0 items-center",
42
+ children: i ? /* @__PURE__ */ a("span", {
43
+ className: "px-1 text-text-tertiary",
44
+ "aria-hidden": "true",
45
+ children: "…"
46
+ }) : n.isCurrentPage ? /* @__PURE__ */ o("span", {
47
+ className: e(l, "max-w-[260px] truncate"),
48
+ "aria-current": "page",
49
+ children: [n.icon && /* @__PURE__ */ a("span", {
50
+ className: "flex items-center",
51
+ children: n.icon
52
+ }), /* @__PURE__ */ a("span", {
53
+ className: "truncate",
54
+ children: n.label
55
+ })]
56
+ }) : n.href || n.onClick ? /* @__PURE__ */ o("button", {
57
+ type: "button",
58
+ onClick: n.onClick,
59
+ className: e(c, "max-w-[180px] truncate"),
60
+ children: [n.icon && /* @__PURE__ */ a("span", {
61
+ className: "flex items-center",
62
+ children: n.icon
63
+ }), /* @__PURE__ */ a("span", {
64
+ className: "truncate",
65
+ children: n.label
66
+ })]
67
+ }) : /* @__PURE__ */ o("span", {
68
+ className: e(c, "pointer-events-none max-w-[180px] truncate"),
69
+ children: [n.icon && /* @__PURE__ */ a("span", {
70
+ className: "flex items-center",
71
+ children: n.icon
72
+ }), /* @__PURE__ */ a("span", {
73
+ className: "truncate",
74
+ children: n.label
75
+ })]
76
+ })
77
+ })] }, `${n.label}-${r}`);
75
78
  })]
76
79
  })
77
80
  });
78
81
  };
79
82
  //#endregion
80
- export { a as Breadcrumbs };
83
+ export { u as Breadcrumbs };
@@ -1 +1 @@
1
- {"version":3,"file":"ProductSideNav.d.ts","sourceRoot":"","sources":["../../src/chrome/ProductSideNav.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,+BAA+B;IAC/B,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAiC,EACjC,aAA0B,GAC3B,EAAE,mBAAmB,2CA4DrB"}
1
+ {"version":3,"file":"ProductSideNav.d.ts","sourceRoot":"","sources":["../../src/chrome/ProductSideNav.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQpD,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,+BAA+B;IAC/B,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAiC,EACjC,aAA0B,GAC3B,EAAE,mBAAmB,2CA6DrB"}
@@ -1,51 +1,52 @@
1
1
  import { useNavRegistryStore as e } from "../shared/hooks/shell/useNavRegistry.js";
2
2
  import { useShellUi as t } from "../shared/providers/shell/ShellUiProvider.js";
3
- import { SideNavigation as n } from "./SideNavigation.js";
4
- import { useMemo as r } from "react";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
- import { useLocation as o, useNavigate as s } from "react-router-dom";
3
+ import { appendContextToPath as n, useCurrentContextSearchParams as r } from "../shared/hooks/useCurrentContextSearchParams.js";
4
+ import { SideNavigation as i } from "./SideNavigation.js";
5
+ import { useMemo as a } from "react";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ import { useLocation as c, useNavigate as l } from "react-router-dom";
7
8
  //#region src/chrome/ProductSideNav.tsx
8
- function c({ logo: c, appName: l, groupOrder: u, groupLabels: d, mobileActions: f, customHeader: p, homeAriaLabel: m = "Go to dashboard", collapseLabel: h = "Collapse" }) {
9
- let g = s(), _ = o(), { sidebarCollapsed: v, toggleSidebar: y } = t(), b = e((e) => e.items), x = r(() => b.filter((e) => e.visible !== !1).sort((e, t) => (e.order ?? 999) - (t.order ?? 999)), [b]), S = (e) => {
10
- g(e);
11
- }, C = () => {
12
- g("/");
13
- }, w = /* @__PURE__ */ a("div", {
9
+ function u({ logo: u, appName: d, groupOrder: f, groupLabels: p, mobileActions: m, customHeader: h, homeAriaLabel: g = "Go to dashboard", collapseLabel: _ = "Collapse" }) {
10
+ let v = l(), y = c(), { sidebarCollapsed: b, toggleSidebar: x } = t(), S = r(), C = e((e) => e.items), w = a(() => C.filter((e) => e.visible !== !1).sort((e, t) => (e.order ?? 999) - (t.order ?? 999)), [C]), T = (e) => {
11
+ v(n(e, S));
12
+ }, E = () => {
13
+ v(n("/", S));
14
+ }, D = /* @__PURE__ */ s("div", {
14
15
  className: "flex items-center gap-icon-gap cursor-pointer",
15
- onClick: C,
16
+ onClick: E,
16
17
  role: "button",
17
18
  tabIndex: 0,
18
19
  onKeyDown: (e) => {
19
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), C());
20
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), E());
20
21
  },
21
- "aria-label": m,
22
- children: [/* @__PURE__ */ i("div", {
22
+ "aria-label": g,
23
+ children: [/* @__PURE__ */ o("div", {
23
24
  className: "size-8 bg-action-primary-bg rounded-md flex items-center justify-center flex-shrink-0",
24
- children: /* @__PURE__ */ i("span", {
25
+ children: /* @__PURE__ */ o("span", {
25
26
  className: "text-action-primary-text font-bold text-sm",
26
- children: c
27
+ children: u
27
28
  })
28
- }), !v && /* @__PURE__ */ i("h1", {
29
+ }), !b && /* @__PURE__ */ o("h1", {
29
30
  className: "text-heading-h4 font-semibold text-text-primary",
30
- children: l
31
+ children: d
31
32
  })]
32
33
  });
33
- return /* @__PURE__ */ i("div", {
34
+ return /* @__PURE__ */ o("div", {
34
35
  "data-tour": "sidenav",
35
36
  className: "h-full",
36
- children: /* @__PURE__ */ i(n, {
37
- items: x,
38
- currentPath: _.pathname,
39
- collapsed: v,
40
- groupOrder: u,
41
- groupLabels: d,
42
- onItemClick: S,
43
- onToggleCollapse: y,
44
- collapseLabel: h,
45
- mobileActions: f,
46
- header: p ?? w
37
+ children: /* @__PURE__ */ o(i, {
38
+ items: w,
39
+ currentPath: y.pathname,
40
+ collapsed: b,
41
+ groupOrder: f,
42
+ groupLabels: p,
43
+ onItemClick: T,
44
+ onToggleCollapse: x,
45
+ collapseLabel: _,
46
+ mobileActions: m,
47
+ header: h ?? D
47
48
  })
48
49
  });
49
50
  }
50
51
  //#endregion
51
- export { c as ProductSideNav };
52
+ export { u as ProductSideNav };
@@ -66,11 +66,11 @@ var a = ({ products: a, currentProductId: o, onProductChange: s, compact: c = !1
66
66
  children: e.icon || e.name.charAt(0)
67
67
  }),
68
68
  /* @__PURE__ */ r("span", {
69
- className: "flex-1 text-left",
69
+ className: "flex-1 truncate text-left",
70
70
  children: e.name
71
71
  }),
72
72
  e.comingSoon ? /* @__PURE__ */ r("span", {
73
- className: "text-body-xs px-2 py-0.5 rounded-full bg-bg-sunken text-text-secondary border border-border-subtle",
73
+ className: "shrink-0 whitespace-nowrap rounded-full border border-border-subtle bg-bg-sunken px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-text-secondary",
74
74
  children: "Coming soon"
75
75
  }) : e.id === o && /* @__PURE__ */ r("svg", {
76
76
  className: "size-5 text-action-primary-text",
@@ -0,0 +1,20 @@
1
+ import { FC } from 'react';
2
+ import { ActorProfile } from './useActorProfiles';
3
+ export type ActorIdentityVariant = 'cell' | 'inline' | 'chip';
4
+ export interface ActorIdentityProps {
5
+ profile: ActorProfile;
6
+ variant?: ActorIdentityVariant;
7
+ className?: string;
8
+ /**
9
+ * Hide the UUID drill-down. Use for very compact lists where the row itself
10
+ * links to a detail page that exposes the ID.
11
+ */
12
+ hideIdDrilldown?: boolean;
13
+ }
14
+ /**
15
+ * Renders an actor (user / app / service) using resolved identity. The UUID
16
+ * is hidden behind a `<details>` drill-down — never shown as the primary
17
+ * heading. Pair with {@link useActorProfiles} to resolve raw actorIds.
18
+ */
19
+ export declare const ActorIdentity: FC<ActorIdentityProps>;
20
+ //# sourceMappingURL=ActorIdentity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorIdentity.d.ts","sourceRoot":"","sources":["../../../src/shared/actors/ActorIdentity.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAUD;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAiFhD,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import { useState as t } from "react";
3
+ import { Check as n, Copy as r, User2 as i } from "lucide-react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ //#region src/shared/actors/ActorIdentity.tsx
6
+ function s(e) {
7
+ let t = e.trim();
8
+ if (!t) return "?";
9
+ let n = t.split(/\s+/).filter(Boolean);
10
+ return n.length === 1 ? n[0].charAt(0).toUpperCase() : (n[0].charAt(0) + n[n.length - 1].charAt(0)).toUpperCase();
11
+ }
12
+ var c = ({ profile: c, variant: l = "cell", className: u, hideIdDrilldown: d = !1 }) => {
13
+ let [f, p] = t(!1), m = () => {
14
+ typeof navigator > "u" || !navigator.clipboard || navigator.clipboard.writeText(c.actorId).then(() => {
15
+ p(!0), setTimeout(() => p(!1), 1500);
16
+ });
17
+ }, h = l === "chip", g = l === "inline";
18
+ return /* @__PURE__ */ o("div", {
19
+ className: e(h ? "inline-flex items-center gap-2 rounded-full border border-border-subtle bg-bg-sunken px-2 py-1" : g ? "inline-flex items-center gap-2" : "flex items-center gap-3", u),
20
+ children: [
21
+ /* @__PURE__ */ a("div", {
22
+ className: e("flex items-center justify-center rounded-full bg-action-primary-bg/15 font-semibold text-action-primary-text", h ? "size-6 text-[10px]" : "size-9 text-xs"),
23
+ "aria-hidden": "true",
24
+ children: c.avatarUrl ? /* @__PURE__ */ a("img", {
25
+ src: c.avatarUrl,
26
+ alt: "",
27
+ className: "size-full rounded-full object-cover"
28
+ }) : c.resolved ? s(c.displayName) : /* @__PURE__ */ a(i, {
29
+ className: "size-4",
30
+ "aria-hidden": "true"
31
+ })
32
+ }),
33
+ /* @__PURE__ */ o("div", {
34
+ className: "min-w-0 flex-1",
35
+ children: [/* @__PURE__ */ a("p", {
36
+ className: e(h ? "text-xs font-medium text-text-primary" : "truncate text-sm font-medium text-text-primary"),
37
+ children: c.displayName
38
+ }), h ? null : /* @__PURE__ */ a("p", {
39
+ className: "truncate text-xs text-text-secondary",
40
+ children: c.email ?? c.secondaryLabel
41
+ })]
42
+ }),
43
+ !h && !g && !d ? /* @__PURE__ */ o("details", {
44
+ className: "group",
45
+ children: [/* @__PURE__ */ a("summary", {
46
+ className: "cursor-pointer text-[10px] uppercase tracking-wider text-text-tertiary transition-colors hover:text-text-primary",
47
+ children: "ID"
48
+ }), /* @__PURE__ */ o("div", {
49
+ className: "mt-1 flex items-center gap-2 rounded-md border border-border-subtle bg-bg-sunken px-2 py-1",
50
+ children: [/* @__PURE__ */ a("span", {
51
+ className: "font-mono text-[11px] text-text-secondary",
52
+ children: c.actorId
53
+ }), /* @__PURE__ */ a("button", {
54
+ type: "button",
55
+ onClick: m,
56
+ className: "text-text-tertiary transition-colors hover:text-text-primary",
57
+ "aria-label": "Copy actor ID",
58
+ children: a(f ? n : r, { className: "size-3.5" })
59
+ })]
60
+ })]
61
+ }) : null
62
+ ]
63
+ });
64
+ };
65
+ //#endregion
66
+ export { c as ActorIdentity };
@@ -0,0 +1,3 @@
1
+ export { useActorProfiles, buildActorFallback, type ActorInput, type ActorProfile, type ActorProfileMap, type UseActorProfilesOptions, } from './useActorProfiles';
2
+ export { ActorIdentity, type ActorIdentityProps, type ActorIdentityVariant } from './ActorIdentity';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "./useActorProfiles.js";
2
+ import "./ActorIdentity.js";
@@ -0,0 +1,33 @@
1
+ export interface ActorProfile {
2
+ actorId: string;
3
+ actorType: string;
4
+ displayName: string;
5
+ secondaryLabel: string;
6
+ email?: string;
7
+ avatarUrl?: string;
8
+ resolved: boolean;
9
+ }
10
+ export type ActorProfileMap = Record<string, ActorProfile>;
11
+ export interface ActorInput {
12
+ actorId: string;
13
+ actorType: string;
14
+ }
15
+ export interface UseActorProfilesOptions {
16
+ apiGatewayUrl?: string;
17
+ authToken?: string;
18
+ orgId?: string;
19
+ }
20
+ export declare function buildActorFallback(actor: ActorInput): ActorProfile;
21
+ /**
22
+ * Resolves a list of actor IDs to human-friendly profiles (displayName + email
23
+ * + avatar), with a 5-minute in-memory cache and inflight de-duplication.
24
+ *
25
+ * Backed by the global gateway `user(id)` query. Non-user actor types resolve
26
+ * locally to a humanized fallback. Network failures return the fallback rather
27
+ * than throwing — UI always has *something* to render.
28
+ *
29
+ * Pair with the {@link ActorIdentity} component for consistent UUID hygiene:
30
+ * displayName + email in the primary slot, UUID hidden in a drill-down.
31
+ */
32
+ export declare function useActorProfiles(actors: ActorInput[], options?: UseActorProfilesOptions): ActorProfileMap;
33
+ //# sourceMappingURL=useActorProfiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActorProfiles.d.ts","sourceRoot":"","sources":["../../../src/shared/actors/useActorProfiles.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmDD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAWlE;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,uBAA4B,GACpC,eAAe,CAwGjB"}
@@ -0,0 +1,110 @@
1
+ import { graphqlFetch as e } from "../graphql/fetch.js";
2
+ import { useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
3
+ //#region src/shared/actors/useActorProfiles.ts
4
+ var a = "\n query ActorProfileUser($id: ID!) {\n user(id: $id) {\n id\n email\n firstName\n lastName\n name\n username\n avatar\n }\n }\n";
5
+ function o(e) {
6
+ return e.length <= 12 ? e : `${e.slice(0, 8)}…${e.slice(-4)}`;
7
+ }
8
+ function s(e) {
9
+ switch (e.toLowerCase()) {
10
+ case "user": return "User";
11
+ case "app": return "App";
12
+ case "service": return "Service";
13
+ case "super_admin": return "Super Admin";
14
+ default: return e.split("_").map((e) => e.charAt(0) + e.slice(1).toLowerCase()).join(" ");
15
+ }
16
+ }
17
+ function c(e) {
18
+ return {
19
+ actorId: e.actorId,
20
+ actorType: e.actorType,
21
+ displayName: e.actorType.toLowerCase() === "user" ? `User ${o(e.actorId)}` : s(e.actorType),
22
+ secondaryLabel: o(e.actorId),
23
+ resolved: !1
24
+ };
25
+ }
26
+ var l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = 300 * 1e3, f = /* @__PURE__ */ new Map();
27
+ function p(e) {
28
+ let t = f.get(e);
29
+ if (!t || t < Date.now()) {
30
+ l.delete(e), f.delete(e);
31
+ return;
32
+ }
33
+ return l.get(e);
34
+ }
35
+ function m(e) {
36
+ l.set(e.actorId, e), f.set(e.actorId, Date.now() + d);
37
+ }
38
+ function h(s, l = {}) {
39
+ let { apiGatewayUrl: d, authToken: f, orgId: h } = l, [g, _] = i(() => {
40
+ let e = {};
41
+ for (let t of s) {
42
+ let n = p(t.actorId);
43
+ e[t.actorId] = n ?? c(t);
44
+ }
45
+ return e;
46
+ }), v = n(() => s.map((e) => `${e.actorId}|${e.actorType}`).sort().join(","), [s]), y = r(void 0);
47
+ return t(() => {
48
+ let t = !1;
49
+ y.current = f;
50
+ async function n(t) {
51
+ let n = p(t.actorId);
52
+ if (n?.resolved) return n;
53
+ if (t.actorType.toLowerCase() !== "user") {
54
+ let e = c(t);
55
+ return m(e), e;
56
+ }
57
+ let r = t.actorId, i = u.get(r);
58
+ if (i) return i;
59
+ let s = (async () => {
60
+ try {
61
+ let n = await e({
62
+ gateway: "global",
63
+ baseUrl: d,
64
+ authToken: f,
65
+ organizationId: h,
66
+ query: a,
67
+ variables: { id: t.actorId }
68
+ });
69
+ if (n.errors?.length || !n.data?.user) {
70
+ let e = c(t);
71
+ return m(e), e;
72
+ }
73
+ let r = n.data.user, i = r.name?.trim() || [r.firstName, r.lastName].filter(Boolean).join(" ").trim() || r.username?.trim() || r.email?.trim() || `User ${o(t.actorId)}`, s = {
74
+ actorId: t.actorId,
75
+ actorType: t.actorType,
76
+ displayName: i,
77
+ secondaryLabel: r.email ?? o(t.actorId),
78
+ email: r.email ?? void 0,
79
+ avatarUrl: r.avatar ?? void 0,
80
+ resolved: !0
81
+ };
82
+ return m(s), s;
83
+ } catch {
84
+ return c(t);
85
+ } finally {
86
+ u.delete(r);
87
+ }
88
+ })();
89
+ return u.set(r, s), s;
90
+ }
91
+ async function r() {
92
+ let e = await Promise.all(s.map(n));
93
+ t || _((t) => {
94
+ let n = { ...t };
95
+ for (let t of e) n[t.actorId] = t;
96
+ return n;
97
+ });
98
+ }
99
+ return r(), () => {
100
+ t = !0;
101
+ };
102
+ }, [
103
+ v,
104
+ f,
105
+ d,
106
+ h
107
+ ]), g;
108
+ }
109
+ //#endregion
110
+ export { c as buildActorFallback, h as useActorProfiles };
@@ -30,4 +30,5 @@ export { useQuotaErrorToast, dispatchQuotaExhausted, QUOTA_EXHAUSTED_EVENT, } fr
30
30
  export type { UseQuotaErrorToastOptions, QuotaExhaustedEventDetail } from './useQuotaErrorToast';
31
31
  export { useUpgradePrompt, publishPlanUsageSnapshot, PLAN_USAGE_SNAPSHOT_EVENT, } from './useUpgradePrompt';
32
32
  export type { UseUpgradePromptOptions, UseUpgradePromptResult, PlanUsageEntry, PlanUsageSnapshot, } from './useUpgradePrompt';
33
+ export { useCurrentContextSearchParams, appendContextToPath, } from './useCurrentContextSearchParams';
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,oBAAoB,8CAA2D,CAAC;AAE7F;;GAEG;AACH,wBAAgB,uBAAuB,2BAMtC;AAOD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAG9E,cAAc,aAAa,CAAC;AAG5B,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjG,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,oBAAoB,8CAA2D,CAAC;AAE7F;;GAEG;AACH,wBAAgB,uBAAuB,2BAMtC;AAOD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAG9E,cAAc,aAAa,CAAC;AAG5B,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjG,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Returns the active context (org, workspace, project, tenant) as a
3
+ * URLSearchParams ready to be appended to a navigation path.
4
+ *
5
+ * Use this when constructing internal links in chrome / sidenav / header /
6
+ * command palette so the first navigation already carries the correct
7
+ * context. Without it, the ActiveContextProvider re-syncs context after the
8
+ * page mounts and produces a second navigation that feels like a reload.
9
+ */
10
+ export declare function useCurrentContextSearchParams(): URLSearchParams;
11
+ /**
12
+ * Merge the current context into a target path. Existing query params on the
13
+ * target take precedence — context values are only added when the target
14
+ * doesn't already specify them.
15
+ */
16
+ export declare function appendContextToPath(path: string, ctxParams: URLSearchParams): string;
17
+ //# sourceMappingURL=useCurrentContextSearchParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCurrentContextSearchParams.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useCurrentContextSearchParams.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,IAAI,eAAe,CAgB/D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAUpF"}
@@ -0,0 +1,30 @@
1
+ import { DEFAULT_ACTIVE_CONTEXT_URL_PARAMS as e } from "../providers/shell/ActiveContextStorage.js";
2
+ import { useActiveContext as t } from "../providers/shell/ActiveContextProvider.js";
3
+ import { useMemo as n } from "react";
4
+ //#region src/shared/hooks/useCurrentContextSearchParams.ts
5
+ function r() {
6
+ let r = t();
7
+ return n(() => {
8
+ let t = new URLSearchParams(), n = [
9
+ [e.organization, r.organizationId],
10
+ [e.workspace, r.workspaceId],
11
+ [e.project, r.projectId],
12
+ [e.tenant, r.tenantId]
13
+ ];
14
+ for (let [e, r] of n) r && t.set(e, r);
15
+ return t;
16
+ }, [
17
+ r.organizationId,
18
+ r.workspaceId,
19
+ r.projectId,
20
+ r.tenantId
21
+ ]);
22
+ }
23
+ function i(e, t) {
24
+ let [n, r] = e.split("?"), i = new URLSearchParams(r ?? "");
25
+ for (let [e, n] of t) n && !i.has(e) && i.set(e, n);
26
+ let a = i.toString();
27
+ return a ? `${n}?${a}` : n;
28
+ }
29
+ //#endregion
30
+ export { i as appendContextToPath, r as useCurrentContextSearchParams };
@@ -9,5 +9,6 @@ export * from './types';
9
9
  export * from './utils';
10
10
  export * from './feature-flags';
11
11
  export * from './native';
12
+ export * from './actors';
12
13
  export declare const FE_SHARED_VERSION = "1.0.0";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAQA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AAEzB,eAAO,MAAM,iBAAiB,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAQA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,eAAO,MAAM,iBAAiB,UAAU,CAAC"}
@@ -29,13 +29,14 @@ import { useReferralAttribution as Y } from "./shared/hooks/useReferralAttributi
29
29
  import { useRecordProductVisit as X } from "./shared/hooks/useRecordProductVisit.js";
30
30
  import { QUOTA_EXHAUSTED_EVENT as Z, dispatchQuotaExhausted as Q, useQuotaErrorToast as ne } from "./shared/hooks/useQuotaErrorToast.js";
31
31
  import { PLAN_USAGE_SNAPSHOT_EVENT as re, publishPlanUsageSnapshot as ie, useUpgradePrompt as ae } from "./shared/hooks/useUpgradePrompt.js";
32
- import oe, { use as se } from "react";
32
+ import { appendContextToPath as oe, useCurrentContextSearchParams as se } from "./shared/hooks/useCurrentContextSearchParams.js";
33
+ import ce, { use as le } from "react";
33
34
  //#region src/shared/hooks/index.ts
34
- var $ = oe.createContext(null);
35
- function ce() {
36
- let e = se($);
35
+ var $ = ce.createContext(null);
36
+ function ue() {
37
+ let e = le($);
37
38
  if (!e) throw Error("useMicrofrontendContext must be used within a MicrofrontendProvider");
38
39
  return e;
39
40
  }
40
41
  //#endregion
41
- export { x as BREAKPOINTS, i as ConsoleTransport, U as GLOBAL_SHORTCUT_CATEGORIES, t as LogLevel, ee as LogManager, n as Logger, R as MODIFIER_KEYS, $ as MicrofrontendContext, re as PLAN_USAGE_SNAPSHOT_EVENT, z as PLATFORM_TYPES, Z as QUOTA_EXHAUSTED_EVENT, W as createGlobalShortcuts, o as detectPlatform, Q as dispatchQuotaExhausted, s as formatKeyCombo, c as getDisplayKeysForPlatform, G as getGlobalShortcutsByCategory, l as getShortcutLabel, u as isMac, d as isMobileDevice, f as isTabletDevice, r as logManager, p as matchesKeyCombo, K as mergeShortcuts, m as normalizeKey, h as normalizePlatformCombo, g as parseKeyCombo, ie as publishPlanUsageSnapshot, _ as shouldEnableKeyboardShortcuts, v as shouldIgnoreShortcut, I as useAsync, L as useAsyncImmediate, S as useBreakpoint, N as useConditionalToggle, O as useCopyToClipboard, y as useDebounce, J as useHasAnimated, V as useHotkeys, E as useKeyPress, D as useKeyboardShortcut, B as useKeyboardShortcuts, k as useLocalStorage, q as useLogger, e as useMediaQuery, ce as useMicrofrontendContext, C as useMobileBreakpoint, w as useOnClickOutside, T as useOnClickOutsideWithRef, a as usePWA, A as usePrevious, j as usePreviousDistinct, M as usePreviousHistory, ne as useQuotaErrorToast, X as useRecordProductVisit, Y as useReferralAttribution, te as useSessionStorage, H as useShortcutHelp, b as useThrottle, P as useToggle, F as useToggleObject, ae as useUpgradePrompt };
42
+ export { x as BREAKPOINTS, i as ConsoleTransport, U as GLOBAL_SHORTCUT_CATEGORIES, t as LogLevel, ee as LogManager, n as Logger, R as MODIFIER_KEYS, $ as MicrofrontendContext, re as PLAN_USAGE_SNAPSHOT_EVENT, z as PLATFORM_TYPES, Z as QUOTA_EXHAUSTED_EVENT, oe as appendContextToPath, W as createGlobalShortcuts, o as detectPlatform, Q as dispatchQuotaExhausted, s as formatKeyCombo, c as getDisplayKeysForPlatform, G as getGlobalShortcutsByCategory, l as getShortcutLabel, u as isMac, d as isMobileDevice, f as isTabletDevice, r as logManager, p as matchesKeyCombo, K as mergeShortcuts, m as normalizeKey, h as normalizePlatformCombo, g as parseKeyCombo, ie as publishPlanUsageSnapshot, _ as shouldEnableKeyboardShortcuts, v as shouldIgnoreShortcut, I as useAsync, L as useAsyncImmediate, S as useBreakpoint, N as useConditionalToggle, O as useCopyToClipboard, se as useCurrentContextSearchParams, y as useDebounce, J as useHasAnimated, V as useHotkeys, E as useKeyPress, D as useKeyboardShortcut, B as useKeyboardShortcuts, k as useLocalStorage, q as useLogger, e as useMediaQuery, ue as useMicrofrontendContext, C as useMobileBreakpoint, w as useOnClickOutside, T as useOnClickOutsideWithRef, a as usePWA, A as usePrevious, j as usePreviousDistinct, M as usePreviousHistory, ne as useQuotaErrorToast, X as useRecordProductVisit, Y as useReferralAttribution, te as useSessionStorage, H as useShortcutHelp, b as useThrottle, P as useToggle, F as useToggleObject, ae as useUpgradePrompt };
package/dist/shared.js CHANGED
@@ -77,34 +77,38 @@ import { useReferralAttribution as Wn } from "./shared/hooks/useReferralAttribut
77
77
  import { useRecordProductVisit as Gn } from "./shared/hooks/useRecordProductVisit.js";
78
78
  import { QUOTA_EXHAUSTED_EVENT as Kn, dispatchQuotaExhausted as qn, useQuotaErrorToast as Jn } from "./shared/hooks/useQuotaErrorToast.js";
79
79
  import { PLAN_USAGE_SNAPSHOT_EVENT as Yn, publishPlanUsageSnapshot as Xn, useUpgradePrompt as Zn } from "./shared/hooks/useUpgradePrompt.js";
80
- import { MicrofrontendContext as Qn, useMicrofrontendContext as $n } from "./shared-hooks.js";
81
- import { detectDeviceType as er, getResponsiveSelector as tr } from "./shared/tours/types.js";
82
- import { useTourPlayer as nr } from "./shared/tours/useTourPlayer.js";
83
- import { TourSpotlight as rr } from "./shared/tours/TourSpotlight.js";
84
- import { TourTooltip as ir } from "./shared/tours/TourTooltip.js";
85
- import { TourPlayerProvider as ar, useIsTourPlaying as or, useStartTour as sr, useStopTour as cr, useTourPlayerContext as lr } from "./shared/tours/TourPlayerProvider.js";
86
- import { TourPlayer as ur, TourTriggerButton as dr, usePlayTour as fr } from "./shared/tours/TourPlayer.js";
87
- import { getTourContextRank as pr, getTourRouteCatalog as mr, getTourRouteModules as hr, getTourRoutePages as gr, isTourVisibleForContext as _r, normalizeTourPath as vr, registerTourRouteCatalog as yr, resolveTourTargetPath as br } from "./shared/tours/routeCatalog.js";
88
- import { withTourProgressStatus as xr } from "./shared/tours/progress.js";
89
- import { ToursProvider as Sr, useAutoStartTour as Cr, useSafeToursContext as wr, useTours as Tr, useToursContext as Er } from "./shared/tours/ToursContext.js";
90
- import { TourTrigger as Dr } from "./shared/tours/TourTrigger.js";
91
- import { TourInitializer as Or } from "./shared/tours/TourInitializer.js";
80
+ import { appendContextToPath as Qn, useCurrentContextSearchParams as $n } from "./shared/hooks/useCurrentContextSearchParams.js";
81
+ import { MicrofrontendContext as er, useMicrofrontendContext as tr } from "./shared-hooks.js";
82
+ import { detectDeviceType as nr, getResponsiveSelector as rr } from "./shared/tours/types.js";
83
+ import { useTourPlayer as ir } from "./shared/tours/useTourPlayer.js";
84
+ import { TourSpotlight as ar } from "./shared/tours/TourSpotlight.js";
85
+ import { TourTooltip as or } from "./shared/tours/TourTooltip.js";
86
+ import { TourPlayerProvider as sr, useIsTourPlaying as cr, useStartTour as lr, useStopTour as ur, useTourPlayerContext as dr } from "./shared/tours/TourPlayerProvider.js";
87
+ import { TourPlayer as fr, TourTriggerButton as pr, usePlayTour as mr } from "./shared/tours/TourPlayer.js";
88
+ import { getTourContextRank as hr, getTourRouteCatalog as gr, getTourRouteModules as _r, getTourRoutePages as vr, isTourVisibleForContext as yr, normalizeTourPath as br, registerTourRouteCatalog as xr, resolveTourTargetPath as Sr } from "./shared/tours/routeCatalog.js";
89
+ import { withTourProgressStatus as Cr } from "./shared/tours/progress.js";
90
+ import { ToursProvider as wr, useAutoStartTour as Tr, useSafeToursContext as Er, useTours as Dr, useToursContext as Or } from "./shared/tours/ToursContext.js";
91
+ import { TourTrigger as kr } from "./shared/tours/TourTrigger.js";
92
+ import { TourInitializer as Ar } from "./shared/tours/TourInitializer.js";
92
93
  import "./shared-tours.js";
93
- import { AppShellProvider as kr, resolveAppShellObservabilityConfig as Ar } from "./shared/providers/AppShellProvider.js";
94
- import { MicrofrontendProvider as jr } from "./shared-providers.js";
95
- import { getNativeBridge as Mr } from "./shared/native/bridge.js";
96
- import { getPlatform as Nr, isAndroid as Pr, isIOS as Fr, isNative as Ir, isWeb as Lr } from "./shared/native/platform.js";
97
- import { nativeConfirm as Rr, nativeCopyText as zr, nativeImpact as Br, nativeNotify as Vr, nativeOpenUrl as Hr, nativeShare as Ur, nativeToast as Wr } from "./shared/native/consumers.js";
98
- import { SafeAreaView as Gr } from "./shared/native/SafeAreaView.js";
99
- import { useNativePlatform as Kr } from "./shared/native/hooks/useNativePlatform.js";
100
- import { useSafeArea as qr } from "./shared/native/hooks/useSafeArea.js";
101
- import { useNativeKeyboard as Jr } from "./shared/native/hooks/useNativeKeyboard.js";
102
- import { useAppState as Yr } from "./shared/native/hooks/useAppState.js";
103
- import { useDeviceInfo as Xr } from "./shared/native/hooks/useDeviceInfo.js";
104
- import { useHaptics as Zr } from "./shared/native/hooks/useHaptics.js";
105
- import { useStatusBar as Qr } from "./shared/native/hooks/useStatusBar.js";
94
+ import { AppShellProvider as jr, resolveAppShellObservabilityConfig as Mr } from "./shared/providers/AppShellProvider.js";
95
+ import { MicrofrontendProvider as Nr } from "./shared-providers.js";
96
+ import { getNativeBridge as Pr } from "./shared/native/bridge.js";
97
+ import { getPlatform as Fr, isAndroid as Ir, isIOS as Lr, isNative as Rr, isWeb as zr } from "./shared/native/platform.js";
98
+ import { nativeConfirm as Br, nativeCopyText as Vr, nativeImpact as Hr, nativeNotify as Ur, nativeOpenUrl as Wr, nativeShare as Gr, nativeToast as Kr } from "./shared/native/consumers.js";
99
+ import { SafeAreaView as qr } from "./shared/native/SafeAreaView.js";
100
+ import { useNativePlatform as Jr } from "./shared/native/hooks/useNativePlatform.js";
101
+ import { useSafeArea as Yr } from "./shared/native/hooks/useSafeArea.js";
102
+ import { useNativeKeyboard as Xr } from "./shared/native/hooks/useNativeKeyboard.js";
103
+ import { useAppState as Zr } from "./shared/native/hooks/useAppState.js";
104
+ import { useDeviceInfo as Qr } from "./shared/native/hooks/useDeviceInfo.js";
105
+ import { useHaptics as $r } from "./shared/native/hooks/useHaptics.js";
106
+ import { useStatusBar as ei } from "./shared/native/hooks/useStatusBar.js";
106
107
  import "./shared-native.js";
108
+ import { buildActorFallback as ti, useActorProfiles as ni } from "./shared/actors/useActorProfiles.js";
109
+ import { ActorIdentity as ri } from "./shared/actors/ActorIdentity.js";
110
+ import "./shared/actors/index.js";
107
111
  //#region src/shared/index.ts
108
- var $r = "1.0.0";
112
+ var ii = "1.0.0";
109
113
  //#endregion
110
- export { yt as AccessDenied, xe as ApolloClient, Se as ApolloProvider, kt as AppErrorBoundary, Ye as AppInitializer, kr as AppShellProvider, hn as BREAKPOINTS, an as BackendAuditSink, rn as BroadcastChannelSink, W as COMMON_SHELL_LESS_ROUTES, Et as ConditionalShell, nt as ConsoleTransport, It as ContextConversationWidget, X as DEFAULT_PAGE_SIZE, G as DEFAULT_SHELL_CONFIG, nn as DevtoolsSink, pt as ErrorBoundary, xt as ErrorFallback, cn as EventBusProvider, $r as FE_SHARED_VERSION, At as FeatureFlagProvider, Ft as FeatureGate, Z as GATEWAYS, Rn as GLOBAL_SHORTCUT_CATEGORIES, ge as GatewayProvider, Ce as InMemoryCache, Xt as KeyboardHelpDialogWrapper, St as LoadingFallback, Qe as LogLevel, et as LogManager, $e as Logger, Nn as MODIFIER_KEYS, Qn as MicrofrontendContext, Tt as MicrofrontendErrorBoundary, jr as MicrofrontendProvider, sn as OtelBrowserSink, Yn as PLAN_USAGE_SNAPSHOT_EVENT, Pn as PLATFORM_TYPES, B as PRODUCTS, V as PRODUCT_URLS, Ot as PWAInstallBanner, Ct as PageLoadingFallback, gt as PermissionButton, bt as PermissionDenied, _t as PermissionGate, vt as PermissionLink, ct as QUOTA_EXHAUSTED_CODE, Kn as QUOTA_EXHAUSTED_EVENT, Zt as QuotaMeter, mt as RequireAuth, ht as RequireGuest, on as RybbitSink, ue as SSELink, We as SSORedirectSpinner, Gr as SafeAreaView, wt as SectionLoadingFallback, Or as TourInitializer, ur as TourPlayer, ar as TourPlayerProvider, rr as TourSpotlight, ir as TourTooltip, Dr as TourTrigger, dr as TourTriggerButton, Sr as ToursProvider, Qt as UPGRADE_PROMPT_EVENT, tn as UpgradeInlineBanner, $t as UpgradePromptModal, n as alertTokens, Ae as attemptTokenRefresh, lt as buildQuotaExhaustedMessage, p as capitalizeFirst, m as capitalizeWords, r as categoryTokens, Ge as checkRemoteSLO, Ke as checkSLO, je as clearAuthSessionStorage, qe as clearLocalAuthState, Ie as clearSSoCookie, Le as clearShellSsoCookies, rt as clearUserContext, ft as cn, t as createApolloClient, ln as createEventBus, zn as createGlobalShortcuts, de as createGraphQLClient, ot as createProfileScopedStorage, er as detectDeviceType, Lt as detectPlatform, qn as dispatchQuotaExhausted, en as dispatchUpgradePrompt, ut as extractQuotaExhaustedExtensions, h as formatBytes, g as formatCompactNumber, _ as formatCurrency, v as formatCurrencyCompact, y as formatDate, b as formatDateTime, x as formatDuration, Rt as formatKeyCombo, S as formatList, C as formatNumber, w as formatOrdinal, T as formatPercentage, E as formatRelativeTime, D as formatTime, i as getAlertTokens, a as getCategoryTokens, zt as getDisplayKeysForPlatform, Q as getGatewayConfig, $ as getGatewayUrl, fe as getGlobalClient, Bn as getGlobalShortcutsByCategory, ee as getGraphQLEndpoint, Mr as getNativeBridge, Nr as getPlatform, H as getProductUrl, U as getProductsWithUrls, st as getProfileScopedKey, o as getProgressTokens, tr as getResponsiveSelector, Je as getSSORedirectUrl, Re as getSSoCookie, K as getShellConfig, Bt as getShortcutLabel, s as getStatusBadgeTokens, c as getStatusTokens, re as getStoredAuthToken, ie as getStoredLocale, ae as getStoredOrganizationId, oe as getStoredWorkspaceId, se as getStoredWorkspaceToken, pr as getTourContextRank, mr as getTourRouteCatalog, hr as getTourRouteModules, gr as getTourRoutePages, l as getTrendTokens, pe as getWorkspaceClient, te as getWorkspaceTokenPayload, we as gql, ce as graphqlFetch, Me as hasAuthGraphQLErrors, me as initializeAppClients, it as initializeLogger, I as installGatewayFetchRewrite, Pr as isAndroid, Ne as isAuthGraphQLError, Pe as isAuthNetworkError, N as isChunkLoadError, Fr as isIOS, Vt as isMac, Ht as isMobileDevice, Ir as isNative, dt as isQuotaExhaustedError, ze as isSharedSsoCookieDomain, q as isShellLessRoute, Ut as isTabletDevice, _r as isTourVisibleForContext, Be as isTrustedSsoOrigin, Lr as isWeb, ne as isWorkspaceTokenValidForContext, P as lazyWithRetry, tt as logManager, Wt as matchesKeyCombo, Vn as mergeShortcuts, Rr as nativeConfirm, zr as nativeCopyText, Br as nativeImpact, Vr as nativeNotify, Hr as nativeOpenUrl, Ur as nativeShare, Wr as nativeToast, Gt as normalizeKey, Kt as normalizePlatformCombo, vr as normalizeTourPath, qt as parseKeyCombo, O as pluralize, u as progressTokens, Xn as publishPlanUsageSnapshot, Ve as readShellSsoCookie, Fe as redirectToLogin, yr as registerTourRouteCatalog, he as resetAppClients, Ar as resolveAppShellObservabilityConfig, z as resolveAuthBridgeConfig, L as resolveGatewayBases, le as resolveGatewayUrl, F as resolveGatewayUrls, br as resolveTourTargetPath, He as setSSoCookie, Ue as setShellSsoCookies, at as setUserContext, Jt as shouldEnableKeyboardShortcuts, Yt as shouldIgnoreShortcut, J as shouldShowBreadcrumb, Y as shouldShowSidebar, k as slugify, d as statusTokens, R as suppressConsole, A as toCamelCase, j as toPascalCase, f as trendTokens, M as truncateText, Te as useApolloClient, Yr as useAppState, jn as useAsync, Mn as useAsyncImmediate, Cr as useAutoStartTour, gn as useBreakpoint, On as useConditionalToggle, Sn as useCopyToClipboard, pn as useDebounce, Xr as useDeviceInfo, un as useEvent, dn as useEventBus, fn as useEventEmitter, Mt as useFeatureFlag, Nt as useFeatureFlagDetails, Pt as useFeatureFlagValue, jt as useFeatureFlags, _e as useGateway, ve as useGatewayClient, Zr as useHaptics, Un as useHasAnimated, In as useHotkeys, or as useIsTourPlaying, bn as useKeyPress, xn as useKeyboardShortcut, Fn as useKeyboardShortcuts, Ee as useLazyQuery, Cn as useLocalStorage, Hn as useLogger, e as useMediaQuery, $n as useMicrofrontendContext, _n as useMobileBreakpoint, De as useMutation, Jr as useNativeKeyboard, Kr as useNativePlatform, vn as useOnClickOutside, yn as useOnClickOutsideWithRef, Dt as usePWA, fr as usePlayTour, Tn as usePrevious, En as usePreviousDistinct, Dn as usePreviousHistory, Oe as useQuery, Jn as useQuotaErrorToast, Gn as useRecordProductVisit, Wn as useReferralAttribution, Xe as useRegistryHelpers, qr as useSafeArea, ye as useSafeGateway, be as useSafeGatewayClient, wr as useSafeToursContext, wn as useSessionStorage, Ze as useShellNavigate, Ln as useShortcutHelp, sr as useStartTour, Qr as useStatusBar, cr as useStopTour, ke as useSubscription, mn as useThrottle, kn as useToggle, An as useToggleObject, nr as useTourPlayer, lr as useTourPlayerContext, Tr as useTours, Er as useToursContext, Zn as useUpgradePrompt, xr as withTourProgressStatus };
114
+ export { yt as AccessDenied, ri as ActorIdentity, xe as ApolloClient, Se as ApolloProvider, kt as AppErrorBoundary, Ye as AppInitializer, jr as AppShellProvider, hn as BREAKPOINTS, an as BackendAuditSink, rn as BroadcastChannelSink, W as COMMON_SHELL_LESS_ROUTES, Et as ConditionalShell, nt as ConsoleTransport, It as ContextConversationWidget, X as DEFAULT_PAGE_SIZE, G as DEFAULT_SHELL_CONFIG, nn as DevtoolsSink, pt as ErrorBoundary, xt as ErrorFallback, cn as EventBusProvider, ii as FE_SHARED_VERSION, At as FeatureFlagProvider, Ft as FeatureGate, Z as GATEWAYS, Rn as GLOBAL_SHORTCUT_CATEGORIES, ge as GatewayProvider, Ce as InMemoryCache, Xt as KeyboardHelpDialogWrapper, St as LoadingFallback, Qe as LogLevel, et as LogManager, $e as Logger, Nn as MODIFIER_KEYS, er as MicrofrontendContext, Tt as MicrofrontendErrorBoundary, Nr as MicrofrontendProvider, sn as OtelBrowserSink, Yn as PLAN_USAGE_SNAPSHOT_EVENT, Pn as PLATFORM_TYPES, B as PRODUCTS, V as PRODUCT_URLS, Ot as PWAInstallBanner, Ct as PageLoadingFallback, gt as PermissionButton, bt as PermissionDenied, _t as PermissionGate, vt as PermissionLink, ct as QUOTA_EXHAUSTED_CODE, Kn as QUOTA_EXHAUSTED_EVENT, Zt as QuotaMeter, mt as RequireAuth, ht as RequireGuest, on as RybbitSink, ue as SSELink, We as SSORedirectSpinner, qr as SafeAreaView, wt as SectionLoadingFallback, Ar as TourInitializer, fr as TourPlayer, sr as TourPlayerProvider, ar as TourSpotlight, or as TourTooltip, kr as TourTrigger, pr as TourTriggerButton, wr as ToursProvider, Qt as UPGRADE_PROMPT_EVENT, tn as UpgradeInlineBanner, $t as UpgradePromptModal, n as alertTokens, Qn as appendContextToPath, Ae as attemptTokenRefresh, ti as buildActorFallback, lt as buildQuotaExhaustedMessage, p as capitalizeFirst, m as capitalizeWords, r as categoryTokens, Ge as checkRemoteSLO, Ke as checkSLO, je as clearAuthSessionStorage, qe as clearLocalAuthState, Ie as clearSSoCookie, Le as clearShellSsoCookies, rt as clearUserContext, ft as cn, t as createApolloClient, ln as createEventBus, zn as createGlobalShortcuts, de as createGraphQLClient, ot as createProfileScopedStorage, nr as detectDeviceType, Lt as detectPlatform, qn as dispatchQuotaExhausted, en as dispatchUpgradePrompt, ut as extractQuotaExhaustedExtensions, h as formatBytes, g as formatCompactNumber, _ as formatCurrency, v as formatCurrencyCompact, y as formatDate, b as formatDateTime, x as formatDuration, Rt as formatKeyCombo, S as formatList, C as formatNumber, w as formatOrdinal, T as formatPercentage, E as formatRelativeTime, D as formatTime, i as getAlertTokens, a as getCategoryTokens, zt as getDisplayKeysForPlatform, Q as getGatewayConfig, $ as getGatewayUrl, fe as getGlobalClient, Bn as getGlobalShortcutsByCategory, ee as getGraphQLEndpoint, Pr as getNativeBridge, Fr as getPlatform, H as getProductUrl, U as getProductsWithUrls, st as getProfileScopedKey, o as getProgressTokens, rr as getResponsiveSelector, Je as getSSORedirectUrl, Re as getSSoCookie, K as getShellConfig, Bt as getShortcutLabel, s as getStatusBadgeTokens, c as getStatusTokens, re as getStoredAuthToken, ie as getStoredLocale, ae as getStoredOrganizationId, oe as getStoredWorkspaceId, se as getStoredWorkspaceToken, hr as getTourContextRank, gr as getTourRouteCatalog, _r as getTourRouteModules, vr as getTourRoutePages, l as getTrendTokens, pe as getWorkspaceClient, te as getWorkspaceTokenPayload, we as gql, ce as graphqlFetch, Me as hasAuthGraphQLErrors, me as initializeAppClients, it as initializeLogger, I as installGatewayFetchRewrite, Ir as isAndroid, Ne as isAuthGraphQLError, Pe as isAuthNetworkError, N as isChunkLoadError, Lr as isIOS, Vt as isMac, Ht as isMobileDevice, Rr as isNative, dt as isQuotaExhaustedError, ze as isSharedSsoCookieDomain, q as isShellLessRoute, Ut as isTabletDevice, yr as isTourVisibleForContext, Be as isTrustedSsoOrigin, zr as isWeb, ne as isWorkspaceTokenValidForContext, P as lazyWithRetry, tt as logManager, Wt as matchesKeyCombo, Vn as mergeShortcuts, Br as nativeConfirm, Vr as nativeCopyText, Hr as nativeImpact, Ur as nativeNotify, Wr as nativeOpenUrl, Gr as nativeShare, Kr as nativeToast, Gt as normalizeKey, Kt as normalizePlatformCombo, br as normalizeTourPath, qt as parseKeyCombo, O as pluralize, u as progressTokens, Xn as publishPlanUsageSnapshot, Ve as readShellSsoCookie, Fe as redirectToLogin, xr as registerTourRouteCatalog, he as resetAppClients, Mr as resolveAppShellObservabilityConfig, z as resolveAuthBridgeConfig, L as resolveGatewayBases, le as resolveGatewayUrl, F as resolveGatewayUrls, Sr as resolveTourTargetPath, He as setSSoCookie, Ue as setShellSsoCookies, at as setUserContext, Jt as shouldEnableKeyboardShortcuts, Yt as shouldIgnoreShortcut, J as shouldShowBreadcrumb, Y as shouldShowSidebar, k as slugify, d as statusTokens, R as suppressConsole, A as toCamelCase, j as toPascalCase, f as trendTokens, M as truncateText, ni as useActorProfiles, Te as useApolloClient, Zr as useAppState, jn as useAsync, Mn as useAsyncImmediate, Tr as useAutoStartTour, gn as useBreakpoint, On as useConditionalToggle, Sn as useCopyToClipboard, $n as useCurrentContextSearchParams, pn as useDebounce, Qr as useDeviceInfo, un as useEvent, dn as useEventBus, fn as useEventEmitter, Mt as useFeatureFlag, Nt as useFeatureFlagDetails, Pt as useFeatureFlagValue, jt as useFeatureFlags, _e as useGateway, ve as useGatewayClient, $r as useHaptics, Un as useHasAnimated, In as useHotkeys, cr as useIsTourPlaying, bn as useKeyPress, xn as useKeyboardShortcut, Fn as useKeyboardShortcuts, Ee as useLazyQuery, Cn as useLocalStorage, Hn as useLogger, e as useMediaQuery, tr as useMicrofrontendContext, _n as useMobileBreakpoint, De as useMutation, Xr as useNativeKeyboard, Jr as useNativePlatform, vn as useOnClickOutside, yn as useOnClickOutsideWithRef, Dt as usePWA, mr as usePlayTour, Tn as usePrevious, En as usePreviousDistinct, Dn as usePreviousHistory, Oe as useQuery, Jn as useQuotaErrorToast, Gn as useRecordProductVisit, Wn as useReferralAttribution, Xe as useRegistryHelpers, Yr as useSafeArea, ye as useSafeGateway, be as useSafeGatewayClient, Er as useSafeToursContext, wn as useSessionStorage, Ze as useShellNavigate, Ln as useShortcutHelp, lr as useStartTour, ei as useStatusBar, ur as useStopTour, ke as useSubscription, mn as useThrottle, kn as useToggle, An as useToggleObject, ir as useTourPlayer, dr as useTourPlayerContext, Dr as useTours, Or as useToursContext, Zn as useUpgradePrompt, Cr as withTourProgressStatus };
@@ -1 +1 @@
1
- {"version":3,"file":"bottom-sheet.d.ts","sourceRoot":"","sources":["../../src/ui/bottom-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAK1D,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAEjF,wBAAgB,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAEzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAE7F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEzF;AAoBD,MAAM,WAAW,uBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,UAAiB,EACjB,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAqCzB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQrF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQrF;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,2CAQ1D"}
1
+ {"version":3,"file":"bottom-sheet.d.ts","sourceRoot":"","sources":["../../src/ui/bottom-sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAK1D,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAEjF,wBAAgB,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAEzD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAE7F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEzF;AAoBD,MAAM,WAAW,uBAAwB,SAAQ,KAAK,CAAC,cAAc,CACnE,OAAO,eAAe,CAAC,OAAO,CAC/B;IACC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,UAAiB,EACjB,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAqCzB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQrF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQrF;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,2CAQ1D"}
@@ -34,7 +34,7 @@ function l({ className: a, children: o, showHandle: s = !0, showCloseButton: l =
34
34
  "data-slot": "bottom-sheet-portal",
35
35
  children: [/* @__PURE__ */ n(c, {}), /* @__PURE__ */ r(i.Content, {
36
36
  "data-slot": "bottom-sheet-content",
37
- className: e("fixed inset-x-0 bottom-0 z-[120] flex max-h-[90vh] flex-col gap-3", "bg-bg-canvas text-text-primary border-t border-border-default", "rounded-t-2xl shadow-lg", "pb-[max(env(safe-area-inset-bottom),1rem)]", "data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom data-[state=open]:duration-300", "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=closed]:duration-200", "focus:outline-none", a),
37
+ className: e("fixed inset-x-0 bottom-0 z-[120] flex max-h-[90vh] flex-col gap-3", "bg-bg-surface text-text-primary border-t border-border-default", "rounded-t-2xl shadow-lg", "pb-[max(env(safe-area-inset-bottom),1rem)]", "data-[state=open]:animate-in data-[state=open]:slide-in-from-bottom data-[state=open]:duration-300", "data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=closed]:duration-200", "focus:outline-none", a),
38
38
  ...u,
39
39
  children: [
40
40
  s ? /* @__PURE__ */ n("div", {
package/dist/ui/dialog.js CHANGED
@@ -41,7 +41,7 @@ function u({ className: a, children: o, showCloseButton: c = !0, ...u }) {
41
41
  "data-slot": "dialog-portal",
42
42
  children: [/* @__PURE__ */ n(l, {}), /* @__PURE__ */ r(i.Content, {
43
43
  "data-slot": "dialog-content",
44
- className: e("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg", a),
44
+ className: e("bg-bg-surface text-text-primary border-border-default data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg", a),
45
45
  ...u,
46
46
  children: [o, c && /* @__PURE__ */ r(i.Close, {
47
47
  "data-slot": "dialog-close",
@@ -29,4 +29,5 @@ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, Tabl
29
29
  export { Tabs, TabsList, TabsTrigger, TabsContent } from './tabs';
30
30
  export { Textarea, type TextareaProps } from './textarea';
31
31
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';
32
+ export { PageContainer, type PageContainerProps, type PageContainerVariant, } from './page-container';
32
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ export type PageContainerVariant = 'surface' | 'canvas';
3
+ export interface PageContainerProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /**
5
+ * Background variant.
6
+ * - "surface" (default): bg-bg-surface — solid card-like background for most pages.
7
+ * - "canvas": bg-bg-canvas — slightly elevated tone used when the page itself
8
+ * contains many surface cards.
9
+ */
10
+ variant?: PageContainerVariant;
11
+ /**
12
+ * Apply default page padding. Set to false when the page provides its own.
13
+ * Defaults to true.
14
+ */
15
+ padded?: boolean;
16
+ }
17
+ /**
18
+ * Standard page wrapper used across microfes to guarantee a consistent
19
+ * background, padding, and minimum height. Pages that omit a background
20
+ * inherit the system default (often appears black in dark mode) which breaks
21
+ * theme parity — wrap with PageContainer to avoid that.
22
+ */
23
+ export declare const PageContainer: React.ForwardRefExoticComponent<PageContainerProps & React.RefAttributes<HTMLDivElement>>;
24
+ //# sourceMappingURL=page-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-container.d.ts","sourceRoot":"","sources":["../../src/ui/page-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,2FAiBzB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { cn as e } from "../lib/utils.js";
2
+ import * as t from "react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region src/ui/page-container.tsx
5
+ var r = t.forwardRef(({ className: t, variant: r = "surface", padded: i = !0, children: a, ...o }, s) => /* @__PURE__ */ n("div", {
6
+ ref: s,
7
+ className: e("min-h-screen w-full text-text-primary", r === "canvas" ? "bg-bg-canvas" : "bg-bg-surface", i && "p-4 sm:p-6", t),
8
+ ...o,
9
+ children: a
10
+ }));
11
+ r.displayName = "PageContainer";
12
+ //#endregion
13
+ export { r as PageContainer };
package/dist/ui.js CHANGED
@@ -29,4 +29,5 @@ import { Switch as dt } from "./ui/switch.js";
29
29
  import { Tabs as ft, TabsContent as pt, TabsList as mt, TabsTrigger as ht } from "./ui/tabs.js";
30
30
  import { Textarea as gt } from "./ui/textarea.js";
31
31
  import { Tooltip as _t, TooltipContent as vt, TooltipProvider as yt, TooltipTrigger as bt } from "./ui/tooltip.js";
32
- export { e as Accordion, t as AccordionContent, n as AccordionItem, r as AccordionTrigger, G as AlertDialog, K as AlertDialogAction, q as AlertDialogCancel, J as AlertDialogContent, Y as AlertDialogDescription, X as AlertDialogFooter, Z as AlertDialogHeader, Q as AlertDialogOverlay, $ as AlertDialogPortal, ee as AlertDialogTitle, te as AlertDialogTrigger, ne as Badge, a as BottomSheet, o as BottomSheetClose, s as BottomSheetContent, c as BottomSheetDescription, l as BottomSheetFooter, u as BottomSheetHeader, d as BottomSheetTitle, f as BottomSheetTrigger, U as Button, ie as Card, ae as CardContent, oe as CardDescription, se as CardFooter, ce as CardHeader, le as CardTitle, ue as Checkbox, de as Command, fe as CommandDialog, pe as CommandEmpty, me as CommandGroup, he as CommandInput, ge as CommandItem, _e as CommandList, ve as CommandSeparator, ye as CommandShortcut, p as Dialog, m as DialogClose, h as DialogContent, g as DialogDescription, _ as DialogFooter, v as DialogHeader, y as DialogOverlay, b as DialogPortal, x as DialogTitle, S as DialogTrigger, be as DropdownMenu, xe as DropdownMenuCheckboxItem, Se as DropdownMenuContent, Ce as DropdownMenuGroup, we as DropdownMenuItem, Te as DropdownMenuLabel, Ee as DropdownMenuPortal, De as DropdownMenuRadioGroup, Oe as DropdownMenuRadioItem, ke as DropdownMenuSeparator, Ae as DropdownMenuShortcut, je as DropdownMenuSub, Me as DropdownMenuSubContent, Ne as DropdownMenuSubTrigger, Pe as DropdownMenuTrigger, H as EmptyState, Fe as Input, Ie as Label, i as OptionalFields, Le as Popover, Re as PopoverAnchor, ze as PopoverContent, Be as PopoverTrigger, C as ResponsiveDialog, w as ResponsiveDialogClose, T as ResponsiveDialogContent, E as ResponsiveDialogDescription, D as ResponsiveDialogFooter, O as ResponsiveDialogHeader, k as ResponsiveDialogTitle, A as ResponsiveDialogTrigger, V as ResponsiveStack, z as ResponsiveTable, Ve as ScrollArea, He as ScrollBar, Ue as Select, We as SelectContent, Ge as SelectGroup, Ke as SelectItem, qe as SelectLabel, Je as SelectScrollDownButton, Ye as SelectScrollUpButton, Xe as SelectSeparator, Ze as SelectTrigger, Qe as SelectValue, $e as Separator, et as Sheet, tt as SheetClose, nt as SheetContent, rt as SheetDescription, it as SheetFooter, at as SheetHeader, ot as SheetTitle, st as SheetTrigger, ct as Skeleton, ut as Spinner, B as Stepper, dt as Switch, j as Table, M as TableBody, N as TableCaption, P as TableCell, F as TableFooter, I as TableHead, L as TableHeader, R as TableRow, ft as Tabs, pt as TabsContent, mt as TabsList, ht as TabsTrigger, gt as Textarea, lt as Toaster, _t as Tooltip, vt as TooltipContent, yt as TooltipProvider, bt as TooltipTrigger, re as badgeVariants, W as buttonVariants };
32
+ import { PageContainer as xt } from "./ui/page-container.js";
33
+ export { e as Accordion, t as AccordionContent, n as AccordionItem, r as AccordionTrigger, G as AlertDialog, K as AlertDialogAction, q as AlertDialogCancel, J as AlertDialogContent, Y as AlertDialogDescription, X as AlertDialogFooter, Z as AlertDialogHeader, Q as AlertDialogOverlay, $ as AlertDialogPortal, ee as AlertDialogTitle, te as AlertDialogTrigger, ne as Badge, a as BottomSheet, o as BottomSheetClose, s as BottomSheetContent, c as BottomSheetDescription, l as BottomSheetFooter, u as BottomSheetHeader, d as BottomSheetTitle, f as BottomSheetTrigger, U as Button, ie as Card, ae as CardContent, oe as CardDescription, se as CardFooter, ce as CardHeader, le as CardTitle, ue as Checkbox, de as Command, fe as CommandDialog, pe as CommandEmpty, me as CommandGroup, he as CommandInput, ge as CommandItem, _e as CommandList, ve as CommandSeparator, ye as CommandShortcut, p as Dialog, m as DialogClose, h as DialogContent, g as DialogDescription, _ as DialogFooter, v as DialogHeader, y as DialogOverlay, b as DialogPortal, x as DialogTitle, S as DialogTrigger, be as DropdownMenu, xe as DropdownMenuCheckboxItem, Se as DropdownMenuContent, Ce as DropdownMenuGroup, we as DropdownMenuItem, Te as DropdownMenuLabel, Ee as DropdownMenuPortal, De as DropdownMenuRadioGroup, Oe as DropdownMenuRadioItem, ke as DropdownMenuSeparator, Ae as DropdownMenuShortcut, je as DropdownMenuSub, Me as DropdownMenuSubContent, Ne as DropdownMenuSubTrigger, Pe as DropdownMenuTrigger, H as EmptyState, Fe as Input, Ie as Label, i as OptionalFields, xt as PageContainer, Le as Popover, Re as PopoverAnchor, ze as PopoverContent, Be as PopoverTrigger, C as ResponsiveDialog, w as ResponsiveDialogClose, T as ResponsiveDialogContent, E as ResponsiveDialogDescription, D as ResponsiveDialogFooter, O as ResponsiveDialogHeader, k as ResponsiveDialogTitle, A as ResponsiveDialogTrigger, V as ResponsiveStack, z as ResponsiveTable, Ve as ScrollArea, He as ScrollBar, Ue as Select, We as SelectContent, Ge as SelectGroup, Ke as SelectItem, qe as SelectLabel, Je as SelectScrollDownButton, Ye as SelectScrollUpButton, Xe as SelectSeparator, Ze as SelectTrigger, Qe as SelectValue, $e as Separator, et as Sheet, tt as SheetClose, nt as SheetContent, rt as SheetDescription, it as SheetFooter, at as SheetHeader, ot as SheetTitle, st as SheetTrigger, ct as Skeleton, ut as Spinner, B as Stepper, dt as Switch, j as Table, M as TableBody, N as TableCaption, P as TableCell, F as TableFooter, I as TableHead, L as TableHeader, R as TableRow, ft as Tabs, pt as TabsContent, mt as TabsList, ht as TabsTrigger, gt as Textarea, lt as Toaster, _t as Tooltip, vt as TooltipContent, yt as TooltipProvider, bt as TooltipTrigger, re as badgeVariants, W as buttonVariants };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.528.2",
3
+ "version": "2026.528.4",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "imports": {