@burdenoff/fe-libs 2026.623.4 → 2026.623.6

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.
@@ -19,6 +19,7 @@ export { useLocalStorage } from './useLocalStorage';
19
19
  export { useSessionStorage } from './useSessionStorage';
20
20
  export { usePrevious, usePreviousDistinct, usePreviousHistory } from './usePrevious';
21
21
  export { useToggle, useToggleObject, useConditionalToggle } from './useToggle';
22
+ export { usePagination, type UsePaginationOptions, type UsePaginationResult } from './usePagination';
22
23
  export { useAsync, useAsyncImmediate, type UseAsyncReturn } from './useAsync';
23
24
  export * from '../keyboard';
24
25
  export * from '../logger';
@@ -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;AAG5B,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,iCAAiC,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;AAC/E,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGrG,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,2 @@
1
+ export declare function useExclusiveMenu(id: string, isOpen: boolean, close: () => void): void;
2
+ //# sourceMappingURL=useExclusiveMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExclusiveMenu.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useExclusiveMenu.ts"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI,CAcrF"}
@@ -0,0 +1,19 @@
1
+ import { useEffect as e } from "react";
2
+ //#region src/shared/hooks/useExclusiveMenu.ts
3
+ var t = "boff:header-menu-open";
4
+ function n(n, r, i) {
5
+ e(() => {
6
+ if (!r) return;
7
+ window.dispatchEvent(new CustomEvent(t, { detail: n }));
8
+ let e = (e) => {
9
+ e.detail !== n && i();
10
+ };
11
+ return window.addEventListener(t, e), () => window.removeEventListener(t, e);
12
+ }, [
13
+ n,
14
+ r,
15
+ i
16
+ ]);
17
+ }
18
+ //#endregion
19
+ export { n as useExclusiveMenu };
@@ -0,0 +1,20 @@
1
+ export interface UsePaginationOptions {
2
+ initialPage?: number;
3
+ initialPageSize?: number;
4
+ maxPageSize?: number;
5
+ }
6
+ export interface UsePaginationResult {
7
+ page: number;
8
+ pageSize: number;
9
+ limit: number;
10
+ offset: number;
11
+ pagination: {
12
+ limit: number;
13
+ offset: number;
14
+ };
15
+ setPage: (page: number) => void;
16
+ setPageSize: (pageSize: number) => void;
17
+ reset: () => void;
18
+ }
19
+ export declare function usePagination(options?: UsePaginationOptions): UsePaginationResult;
20
+ //# sourceMappingURL=usePagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePagination.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/usePagination.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAOD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAiCrF"}
@@ -0,0 +1,29 @@
1
+ import { useState as e } from "react";
2
+ //#region src/shared/hooks/usePagination.ts
3
+ function t(e, t, n) {
4
+ return typeof e != "number" || !Number.isFinite(e) ? t : Math.min(Math.max(1, Math.floor(e)), n);
5
+ }
6
+ function n(n = {}) {
7
+ let r = t(n.maxPageSize, 100, 2 ** 53 - 1), i = t(n.initialPage, 1, 2 ** 53 - 1), a = t(n.initialPageSize, 50, r), [o, s] = e(i), [c, l] = e(a), u = (e) => {
8
+ s(t(e, 1, 2 ** 53 - 1));
9
+ }, d = (e) => {
10
+ l(t(e, a, r)), s(1);
11
+ }, f = () => {
12
+ s(i), l(a);
13
+ }, p = (o - 1) * c;
14
+ return {
15
+ page: o,
16
+ pageSize: c,
17
+ limit: c,
18
+ offset: p,
19
+ pagination: {
20
+ limit: c,
21
+ offset: p
22
+ },
23
+ setPage: u,
24
+ setPageSize: d,
25
+ reset: f
26
+ };
27
+ }
28
+ //#endregion
29
+ export { n as usePagination };
@@ -27,23 +27,16 @@ export declare const staggerItemScale: Variants;
27
27
  export declare const staggerItemRight: Variants;
28
28
  export declare const cardHover: {
29
29
  rest: {
30
- y: number;
31
30
  boxShadow: string;
32
31
  };
33
32
  hover: {
34
- y: number;
35
33
  boxShadow: string;
36
34
  transition: {
37
35
  duration: 0.15;
38
36
  ease: [number, number, number, number];
39
37
  };
40
38
  };
41
- tap: {
42
- scale: number;
43
- transition: {
44
- duration: number;
45
- };
46
- };
39
+ tap: {};
47
40
  };
48
41
  export declare const collapse: Variants;
49
42
  export declare const slideFromRight: Variants;
@@ -1 +1 @@
1
- {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/shared/motion/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG1D,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAGX,eAAO,MAAM,MAAM;cACa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;;CAE/D,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,QAQtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,QAOpB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAQzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAQzB,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAAI,gBAAc,KAAG,QAShD,CAAC;AAEH,eAAO,MAAM,WAAW,UAAyB,CAAC;AAClD,eAAO,MAAM,aAAa,UAAyB,CAAC;AACpD,eAAO,MAAM,WAAW,UAAyB,CAAC;AAIlD,eAAO,MAAM,WAAW,EAAE,QAOzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAQ9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAO9B,CAAC;AAIF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;CAWrB,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,QAoBtB,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAY7B,CAAC;AAIF,eAAO,MAAM,SAAS;;;;;;;CAGrB,CAAC;AAIF,eAAO,MAAM,WAAW,EAAE,QAUzB,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAIF,eAAO,MAAM,aAAa;;;;;;;;CAMzB,CAAC"}
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/shared/motion/variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG1D,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAGX,eAAO,MAAM,MAAM;cACa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;;CAE/D,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,QAQtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,QAOpB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAQzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAQzB,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAAI,gBAAc,KAAG,QAShD,CAAC;AAEH,eAAO,MAAM,WAAW,UAAyB,CAAC;AAClD,eAAO,MAAM,aAAa,UAAyB,CAAC;AACpD,eAAO,MAAM,WAAW,UAAyB,CAAC;AAIlD,eAAO,MAAM,WAAW,EAAE,QAOzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAQ9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAO9B,CAAC;AAOF,eAAO,MAAM,SAAS;;;;;;;;;;;;CASrB,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,QAoBtB,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAY7B,CAAC;AAIF,eAAO,MAAM,SAAS;;;;;;;CAGrB,CAAC;AAIF,eAAO,MAAM,WAAW,EAAE,QAUzB,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,QAY5B,CAAC;AAIF,eAAO,MAAM,aAAa;;;;;;;;CAMzB,CAAC"}
@@ -139,22 +139,15 @@ var e = {
139
139
  }
140
140
  }
141
141
  }, m = {
142
- rest: {
143
- y: 0,
144
- boxShadow: "var(--shadow-elevation-0, 0 1px 2px rgba(0,0,0,0.05))"
145
- },
142
+ rest: { boxShadow: "var(--shadow-elevation-0, 0 1px 2px rgba(0,0,0,0.05))" },
146
143
  hover: {
147
- y: -1,
148
144
  boxShadow: "var(--shadow-elevation-2, 0 2px 8px rgba(0,0,0,0.08))",
149
145
  transition: {
150
146
  duration: e.fast,
151
147
  ease: t.standard
152
148
  }
153
149
  },
154
- tap: {
155
- scale: .99,
156
- transition: { duration: .1 }
157
- }
150
+ tap: {}
158
151
  }, h = {
159
152
  hidden: {
160
153
  height: 0,
@@ -0,0 +1,23 @@
1
+ export interface NotFoundPageProps {
2
+ /** Status / error code shown large. Defaults to 404. */
3
+ code?: string | number;
4
+ /** Heading. Defaults to "Page not found". */
5
+ title?: string;
6
+ /** Supporting copy under the heading. */
7
+ description?: string;
8
+ /** Where the primary "home" action goes (anchor href). Ignored if onGoHome is set. */
9
+ homeHref?: string;
10
+ /** Label for the primary action. Defaults to "Back to home". */
11
+ homeLabel?: string;
12
+ /** Click handler for the primary action (overrides homeHref, e.g. SPA navigate). */
13
+ onGoHome?: () => void;
14
+ /** Click handler for the secondary "Go back" action. Defaults to history.back(). */
15
+ onGoBack?: () => void;
16
+ }
17
+ /**
18
+ * Reusable, theme-aware "not found" page. Drop it into any router catch-all so
19
+ * unknown routes render a friendly graphic + error code instead of an empty
20
+ * content area. Token-only — renders correctly in every Boff UI theme.
21
+ */
22
+ export declare function NotFoundPage({ code, title, description, homeHref, homeLabel, onGoHome, onGoBack, }: NotFoundPageProps): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=NotFoundPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotFoundPage.d.ts","sourceRoot":"","sources":["../../../src/shared/pages/NotFoundPage.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAU,EACV,KAAwB,EACxB,WAAwF,EACxF,QAAc,EACd,SAA0B,EAC1B,QAAQ,EACR,QAAQ,GACT,EAAE,iBAAiB,2CA4DnB"}
@@ -0,0 +1,68 @@
1
+ import { ArrowLeft as e, Compass as t, Home as n } from "lucide-react";
2
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
3
+ //#region src/shared/pages/NotFoundPage.tsx
4
+ function a({ code: a = 404, title: o = "Page not found", description: s = "The page you're looking for doesn't exist, moved, or the link is broken.", homeHref: c = "/", homeLabel: l = "Back to home", onGoHome: u, onGoBack: d }) {
5
+ return /* @__PURE__ */ i("div", {
6
+ className: "flex min-h-[60vh] w-full flex-col items-center justify-center px-6 py-16 text-center",
7
+ children: [
8
+ /* @__PURE__ */ i("div", {
9
+ className: "relative mb-8 flex items-center justify-center",
10
+ children: [/* @__PURE__ */ r("span", {
11
+ "aria-hidden": "true",
12
+ className: "select-none bg-gradient-to-b from-[var(--color-accent-soft)] to-transparent bg-clip-text font-bold leading-none text-transparent",
13
+ style: { fontSize: "clamp(7rem, 22vw, 12rem)" },
14
+ children: a
15
+ }), /* @__PURE__ */ r("span", {
16
+ className: "absolute flex size-20 items-center justify-center rounded-full border border-border-subtle bg-bg-elevated shadow-[var(--shadow-elevation-3)]",
17
+ children: /* @__PURE__ */ r(t, {
18
+ className: "size-9 text-action-primary-bg",
19
+ "aria-hidden": "true"
20
+ })
21
+ })]
22
+ }),
23
+ /* @__PURE__ */ i("p", {
24
+ className: "mb-1 text-sm font-semibold uppercase tracking-wider text-text-muted",
25
+ children: ["Error ", a]
26
+ }),
27
+ /* @__PURE__ */ r("h1", {
28
+ className: "mb-2 text-2xl font-semibold tracking-tight text-text-primary md:text-3xl",
29
+ children: o
30
+ }),
31
+ /* @__PURE__ */ r("p", {
32
+ className: "mb-8 max-w-md text-sm leading-6 text-text-secondary",
33
+ children: s
34
+ }),
35
+ /* @__PURE__ */ i("div", {
36
+ className: "flex flex-wrap items-center justify-center gap-3",
37
+ children: [u ? /* @__PURE__ */ i("button", {
38
+ type: "button",
39
+ onClick: u,
40
+ className: "inline-flex h-10 items-center gap-2 rounded-button bg-action-primary-bg px-5 text-sm font-medium text-action-primary-text shadow-elevation-1 transition-colors hover:bg-action-primary-bgHover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
41
+ children: [/* @__PURE__ */ r(n, {
42
+ className: "size-4",
43
+ "aria-hidden": "true"
44
+ }), l]
45
+ }) : /* @__PURE__ */ i("a", {
46
+ href: c,
47
+ className: "inline-flex h-10 items-center gap-2 rounded-button bg-action-primary-bg px-5 text-sm font-medium text-action-primary-text shadow-elevation-1 transition-colors hover:bg-action-primary-bgHover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
48
+ children: [/* @__PURE__ */ r(n, {
49
+ className: "size-4",
50
+ "aria-hidden": "true"
51
+ }), l]
52
+ }), /* @__PURE__ */ i("button", {
53
+ type: "button",
54
+ onClick: () => {
55
+ d ? d() : typeof window < "u" && window.history.back();
56
+ },
57
+ className: "inline-flex h-10 items-center gap-2 rounded-button border border-border-default bg-bg-surface px-5 text-sm font-medium text-text-primary transition-colors hover:bg-bg-sunken hover:border-border-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
58
+ children: [/* @__PURE__ */ r(e, {
59
+ className: "size-4",
60
+ "aria-hidden": "true"
61
+ }), "Go back"]
62
+ })]
63
+ })
64
+ ]
65
+ });
66
+ }
67
+ //#endregion
68
+ export { a as NotFoundPage };
@@ -4,4 +4,6 @@ export { LegalPage } from './LegalPage';
4
4
  export type { LegalPageProps } from './LegalPage';
5
5
  export { AiPage } from './AiPage';
6
6
  export type { AiPageProps } from './AiPage';
7
+ export { NotFoundPage } from './NotFoundPage';
8
+ export type { NotFoundPageProps } from './NotFoundPage';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TourTrigger.d.ts","sourceRoot":"","sources":["../../../src/shared/tours/TourTrigger.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAWxB,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAQT;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAIpB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,kBAAkB,EAClC,WAAW,EAAE,OAAO,GACnB,sBAAsB,CAOxB;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAQD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAE,gBAAqB,2CAM7D"}
1
+ {"version":3,"file":"TourTrigger.d.ts","sourceRoot":"","sources":["../../../src/shared/tours/TourTrigger.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAWxB,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAQT;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAIpB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,kBAAkB,EAClC,WAAW,EAAE,OAAO,GACnB,sBAAsB,CAOxB;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAQD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAE,gBAAqB,2CAM7D"}
@@ -2,38 +2,39 @@ import { useSafeShellUi as e } from "../providers/shell/ShellUiProvider.js";
2
2
  import { usePlayTour as t } from "./TourPlayer.js";
3
3
  import { getTourContextRank as n, isTourVisibleForContext as r, normalizeTourPath as i, resolveTourTargetPath as a } from "./routeCatalog.js";
4
4
  import { useSafeToursContext as o } from "./ToursContext.js";
5
- import { TourTriggerButton as s } from "./tourTrigger/TourTriggerButton.js";
6
- import { MobileTourSheet as c } from "./tourTrigger/MobileTourSheet.js";
7
- import { DesktopTourDropdown as l } from "./tourTrigger/DesktopTourDropdown.js";
8
- import { useEffect as u, useMemo as d, useRef as f, useState as p } from "react";
9
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
10
- import { useInRouterContext as g, useLocation as _, useNavigate as v } from "react-router-dom";
5
+ import { useExclusiveMenu as s } from "../hooks/useExclusiveMenu.js";
6
+ import { TourTriggerButton as c } from "./tourTrigger/TourTriggerButton.js";
7
+ import { MobileTourSheet as l } from "./tourTrigger/MobileTourSheet.js";
8
+ import { DesktopTourDropdown as u } from "./tourTrigger/DesktopTourDropdown.js";
9
+ import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
10
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
11
+ import { useInRouterContext as v, useLocation as y, useNavigate as b } from "react-router-dom";
11
12
  //#region src/shared/tours/TourTrigger.tsx
12
- var y = 5e3, b = 100, x = 150;
13
- function S(e, t) {
13
+ var x = 5e3, S = 100, C = 150;
14
+ function w(e, t) {
14
15
  let n = t?.trim();
15
16
  return !!(n && e.productId.trim() === n && e.isActive && e.steps?.length > 0);
16
17
  }
17
- function C(e, t) {
18
+ function T(e, t) {
18
19
  let n = a(e);
19
20
  if (n) return i(t) === i(n) ? void 0 : n;
20
21
  }
21
- function w(e, t, n, i) {
22
- let a = C(e, t);
22
+ function E(e, t, n, i) {
23
+ let a = T(e, t);
23
24
  return a ? i ? {
24
25
  type: "navigate",
25
26
  targetPath: a
26
27
  } : { type: "ignore" } : r(e, n) ? { type: "play" } : { type: "ignore" };
27
28
  }
28
- function T({ actions: e } = {}) {
29
- return g() ? /* @__PURE__ */ m(E, { actions: e }) : /* @__PURE__ */ m(D, {
29
+ function D({ actions: e } = {}) {
30
+ return v() ? /* @__PURE__ */ g(O, { actions: e }) : /* @__PURE__ */ g(k, {
30
31
  pathname: typeof window > "u" ? "/" : window.location.pathname,
31
32
  actions: e
32
33
  });
33
34
  }
34
- function E({ actions: e }) {
35
- let t = _(), n = v();
36
- return /* @__PURE__ */ m(D, {
35
+ function O({ actions: e }) {
36
+ let t = y(), n = b();
37
+ return /* @__PURE__ */ g(k, {
37
38
  pathname: t.pathname,
38
39
  navigateTo: (e) => n({
39
40
  pathname: e,
@@ -42,122 +43,124 @@ function E({ actions: e }) {
42
43
  actions: e
43
44
  });
44
45
  }
45
- function D({ pathname: r, navigateTo: i, actions: a }) {
46
- let [g, _] = p(!1), [v, C] = p(!1), [T, E] = p(null), D = f(null), O = f(null), { pageTours: k, productId: A, moduleId: j, pageId: M, loading: N } = o(), P = t(), F = !!i, I = e()?.pageAccessDenied ?? !1;
47
- u(() => {
46
+ function k({ pathname: r, navigateTo: i, actions: a }) {
47
+ let [v, y] = h(!1), [b, T] = h(!1), [D, O] = h(null), k = m(null), A = m(null);
48
+ s("header-help", v, d(() => y(!1), []));
49
+ let { pageTours: j, productId: M, moduleId: N, pageId: P, loading: F } = o(), I = t(), L = !!i, R = e()?.pageAccessDenied ?? !1;
50
+ f(() => {
48
51
  let e = () => {
49
- C(window.innerWidth < 768);
52
+ T(window.innerWidth < 768);
50
53
  };
51
54
  return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
52
- }, []), u(() => {
55
+ }, []), f(() => {
53
56
  let e = (e) => {
54
- O.current && !O.current.contains(e.target) && D.current && !D.current.contains(e.target) && _(!1);
57
+ A.current && !A.current.contains(e.target) && k.current && !k.current.contains(e.target) && y(!1);
55
58
  };
56
- return g && (document.addEventListener("mousedown", e), v && (document.body.style.overflow = "hidden")), () => {
59
+ return v && (document.addEventListener("mousedown", e), b && (document.body.style.overflow = "hidden")), () => {
57
60
  document.removeEventListener("mousedown", e), document.body.style.overflow = "";
58
61
  };
59
- }, [g, v]), u(() => {
62
+ }, [v, b]), f(() => {
60
63
  let e = (e) => {
61
- e.key === "Escape" && _(!1);
64
+ e.key === "Escape" && y(!1);
62
65
  };
63
- return g && document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
64
- }, [g]);
65
- let L = (e) => {
66
- _(!1);
67
- let t = w(e, r, {
68
- productId: A ?? "",
69
- moduleId: j,
70
- pageId: M
71
- }, F);
66
+ return v && document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
67
+ }, [v]);
68
+ let z = (e) => {
69
+ y(!1);
70
+ let t = E(e, r, {
71
+ productId: M ?? "",
72
+ moduleId: N,
73
+ pageId: P
74
+ }, L);
72
75
  if (t.type === "navigate") {
73
- E(e.id), i?.(t.targetPath);
76
+ O(e.id), i?.(t.targetPath);
74
77
  return;
75
78
  }
76
79
  t.type !== "ignore" && window.setTimeout(() => {
77
- P(e);
78
- }, b);
79
- }, R = (e) => {
80
- _(!1), e.onClick?.();
81
- }, z = d(() => ({
82
- productId: A ?? "",
83
- moduleId: j,
84
- pageId: M
80
+ I(e);
81
+ }, S);
82
+ }, B = (e) => {
83
+ y(!1), e.onClick?.();
84
+ }, V = p(() => ({
85
+ productId: M ?? "",
86
+ moduleId: N,
87
+ pageId: P
85
88
  }), [
86
- j,
87
- M,
88
- A
89
- ]), B = d(() => k.filter((e) => S(e, A)).sort((e, t) => {
90
- let r = n(e, z) - n(t, z);
89
+ N,
90
+ P,
91
+ M
92
+ ]), H = p(() => j.filter((e) => w(e, M)).sort((e, t) => {
93
+ let r = n(e, V) - n(t, V);
91
94
  if (r !== 0) return r;
92
95
  let i = (t.priority ?? 0) - (e.priority ?? 0);
93
96
  return i === 0 ? (e.displayOrder ?? 0) - (t.displayOrder ?? 0) : i;
94
97
  }), [
95
- z,
96
- A,
97
- k
98
+ V,
99
+ M,
100
+ j
98
101
  ]);
99
- u(() => {
100
- if (!T) return;
101
- let e = B.find((e) => e.id === T);
102
+ f(() => {
103
+ if (!D) return;
104
+ let e = H.find((e) => e.id === D);
102
105
  if (!e) {
103
- E(null);
106
+ O(null);
104
107
  return;
105
108
  }
106
- let t = w(e, r, z, F);
109
+ let t = E(e, r, V, L);
107
110
  if (t.type === "navigate") return;
108
111
  if (t.type === "ignore") {
109
- E(null);
112
+ O(null);
110
113
  return;
111
114
  }
112
115
  let n = window.setTimeout(() => {
113
- P(e), E(null);
114
- }, x);
116
+ I(e), O(null);
117
+ }, C);
115
118
  return () => window.clearTimeout(n);
116
119
  }, [
117
- B,
118
- F,
119
- z,
120
+ H,
121
+ L,
122
+ V,
120
123
  r,
121
- T,
122
- P
123
- ]), u(() => {
124
- if (!T) return;
124
+ D,
125
+ I
126
+ ]), f(() => {
127
+ if (!D) return;
125
128
  let e = window.setTimeout(() => {
126
- E(null);
127
- }, y);
129
+ O(null);
130
+ }, x);
128
131
  return () => window.clearTimeout(e);
129
- }, [T]);
130
- let V = B.length > 0, H = I;
131
- return u(() => {
132
- H && g && _(!1);
133
- }, [H, g]), H ? null : /* @__PURE__ */ h("div", {
132
+ }, [D]);
133
+ let U = H.length > 0, W = R;
134
+ return f(() => {
135
+ W && v && y(!1);
136
+ }, [W, v]), W ? null : /* @__PURE__ */ _("div", {
134
137
  className: "relative",
135
138
  children: [
136
- /* @__PURE__ */ m(s, {
137
- ref: D,
138
- isOpen: g,
139
- hasTours: V,
140
- onClick: () => _(!g)
139
+ /* @__PURE__ */ g(c, {
140
+ ref: k,
141
+ isOpen: v,
142
+ hasTours: U,
143
+ onClick: () => y(!v)
141
144
  }),
142
- g && v && /* @__PURE__ */ m(c, {
143
- ref: O,
144
- loading: N,
145
- tours: B,
146
- onClose: () => _(!1),
147
- onStartTour: L,
145
+ v && b && /* @__PURE__ */ g(l, {
146
+ ref: A,
147
+ loading: F,
148
+ tours: H,
149
+ onClose: () => y(!1),
150
+ onStartTour: z,
148
151
  actions: a,
149
- onAction: R
152
+ onAction: B
150
153
  }),
151
- g && !v && /* @__PURE__ */ m(l, {
152
- ref: O,
153
- loading: N,
154
- tours: B,
155
- onStartTour: L,
154
+ v && !b && /* @__PURE__ */ g(u, {
155
+ ref: A,
156
+ loading: F,
157
+ tours: H,
158
+ onStartTour: z,
156
159
  actions: a,
157
- onAction: R
160
+ onAction: B
158
161
  })
159
162
  ]
160
163
  });
161
164
  }
162
165
  //#endregion
163
- export { T as TourTrigger };
166
+ export { D as TourTrigger };
@@ -1,42 +1,43 @@
1
- import { useMediaQuery as e } from "./shared/hooks/useMediaQuery.js";
2
- import { LogLevel as t } from "./shared/logger/types.js";
3
- import { Logger as n } from "./shared/logger/Logger.js";
4
- import { LogManager as ee, logManager as r } from "./shared/logger/LogManager.js";
5
- import { ConsoleTransport as i } from "./shared/logger/ConsoleTransport.js";
6
- import { usePWA as a } from "./shared/hooks/usePWA.js";
7
- import { detectPlatform as o, formatKeyCombo as s, getDisplayKeysForPlatform as c, getShortcutLabel as l, isMac as u, isMobileDevice as d, isTabletDevice as f, matchesKeyCombo as p, normalizeKey as m, normalizePlatformCombo as h, parseKeyCombo as g, shouldEnableKeyboardShortcuts as _, shouldIgnoreShortcut as v } from "./shared/keyboard/utils.js";
8
- import { useDebounce as y } from "./shared/hooks/useDebounce.js";
9
- import { useThrottle as b } from "./shared/hooks/useThrottle.js";
10
- import { BREAKPOINTS as x, useBreakpoint as S, useMobileBreakpoint as C } from "./shared/hooks/useBreakpoint.js";
11
- import { useOnClickOutside as w, useOnClickOutsideWithRef as T } from "./shared/hooks/useOnClickOutside.js";
12
- import { useKeyPress as E, useKeyboardShortcut as D } from "./shared/hooks/useKeyPress.js";
13
- import { useCopyToClipboard as O } from "./shared/hooks/useCopyToClipboard.js";
1
+ import { useCopyToClipboard as e } from "./shared/hooks/useCopyToClipboard.js";
2
+ import { useMediaQuery as t } from "./shared/hooks/useMediaQuery.js";
3
+ import { LogLevel as n } from "./shared/logger/types.js";
4
+ import { Logger as ee } from "./shared/logger/Logger.js";
5
+ import { LogManager as r, logManager as i } from "./shared/logger/LogManager.js";
6
+ import { ConsoleTransport as a } from "./shared/logger/ConsoleTransport.js";
7
+ import { usePWA as o } from "./shared/hooks/usePWA.js";
8
+ import { detectPlatform as s, formatKeyCombo as c, getDisplayKeysForPlatform as l, getShortcutLabel as u, isMac as d, isMobileDevice as f, isTabletDevice as p, matchesKeyCombo as m, normalizeKey as h, normalizePlatformCombo as g, parseKeyCombo as _, shouldEnableKeyboardShortcuts as v, shouldIgnoreShortcut as y } from "./shared/keyboard/utils.js";
9
+ import { useDebounce as b } from "./shared/hooks/useDebounce.js";
10
+ import { useThrottle as x } from "./shared/hooks/useThrottle.js";
11
+ import { BREAKPOINTS as S, useBreakpoint as C, useMobileBreakpoint as w } from "./shared/hooks/useBreakpoint.js";
12
+ import { useOnClickOutside as T, useOnClickOutsideWithRef as E } from "./shared/hooks/useOnClickOutside.js";
13
+ import { useKeyPress as D, useKeyboardShortcut as O } from "./shared/hooks/useKeyPress.js";
14
14
  import { useLocalStorage as k } from "./shared/hooks/useLocalStorage.js";
15
15
  import { useSessionStorage as te } from "./shared/hooks/useSessionStorage.js";
16
16
  import { usePrevious as A, usePreviousDistinct as j, usePreviousHistory as M } from "./shared/hooks/usePrevious.js";
17
17
  import { useConditionalToggle as N, useToggle as P, useToggleObject as F } from "./shared/hooks/useToggle.js";
18
- import { useAsync as I, useAsyncImmediate as L } from "./shared/hooks/useAsync.js";
19
- import { MODIFIER_KEYS as R, PLATFORM_TYPES as z } from "./shared/keyboard/types.js";
20
- import { useKeyboardShortcuts as B } from "./shared/keyboard/useKeyboardShortcuts.js";
21
- import { useHotkeys as V } from "./shared/keyboard/useHotkeys.js";
22
- import { useShortcutHelp as H } from "./shared/keyboard/useShortcutHelp.js";
23
- import { GLOBAL_SHORTCUT_CATEGORIES as U, createGlobalShortcuts as W, getGlobalShortcutsByCategory as G, mergeShortcuts as K } from "./shared/keyboard/globalShortcuts.js";
18
+ import { usePagination as I } from "./shared/hooks/usePagination.js";
19
+ import { useAsync as L, useAsyncImmediate as R } from "./shared/hooks/useAsync.js";
20
+ import { MODIFIER_KEYS as z, PLATFORM_TYPES as B } from "./shared/keyboard/types.js";
21
+ import { useKeyboardShortcuts as V } from "./shared/keyboard/useKeyboardShortcuts.js";
22
+ import { useHotkeys as H } from "./shared/keyboard/useHotkeys.js";
23
+ import { useShortcutHelp as U } from "./shared/keyboard/useShortcutHelp.js";
24
+ import { GLOBAL_SHORTCUT_CATEGORIES as W, createGlobalShortcuts as G, getGlobalShortcutsByCategory as K, mergeShortcuts as q } from "./shared/keyboard/globalShortcuts.js";
24
25
  import "./shared-keyboard.js";
25
- import { useLogger as q } from "./shared/logger/useLogger.js";
26
+ import { useLogger as J } from "./shared/logger/useLogger.js";
26
27
  import "./shared-logger.js";
27
- import { useHasAnimated as J } from "./shared/hooks/useHasAnimated.js";
28
- import { useReferralAttribution as Y } from "./shared/hooks/useReferralAttribution.js";
29
- import { useRecordProductVisit as X } from "./shared/hooks/useRecordProductVisit.js";
30
- import { QUOTA_EXHAUSTED_EVENT as Z, dispatchQuotaExhausted as Q, useQuotaErrorToast as ne } from "./shared/hooks/useQuotaErrorToast.js";
31
- import { PLAN_USAGE_SNAPSHOT_EVENT as re, publishPlanUsageSnapshot as ie, useUpgradePrompt as ae } from "./shared/hooks/useUpgradePrompt.js";
32
- import { appendContextToPath as oe, useCurrentContextSearchParams as se } from "./shared/hooks/useCurrentContextSearchParams.js";
33
- import ce, { use as le } from "react";
28
+ import { useHasAnimated as Y } from "./shared/hooks/useHasAnimated.js";
29
+ import { useReferralAttribution as X } from "./shared/hooks/useReferralAttribution.js";
30
+ import { useRecordProductVisit as Z } from "./shared/hooks/useRecordProductVisit.js";
31
+ import { QUOTA_EXHAUSTED_EVENT as Q, dispatchQuotaExhausted as ne, useQuotaErrorToast as re } from "./shared/hooks/useQuotaErrorToast.js";
32
+ import { PLAN_USAGE_SNAPSHOT_EVENT as ie, publishPlanUsageSnapshot as ae, useUpgradePrompt as oe } from "./shared/hooks/useUpgradePrompt.js";
33
+ import { appendContextToPath as se, useCurrentContextSearchParams as ce } from "./shared/hooks/useCurrentContextSearchParams.js";
34
+ import le, { use as ue } from "react";
34
35
  //#region src/shared/hooks/index.ts
35
- var $ = ce.createContext(null);
36
- function ue() {
37
- let e = le($);
36
+ var $ = le.createContext(null);
37
+ function de() {
38
+ let e = ue($);
38
39
  if (!e) throw Error("useMicrofrontendContext must be used within a MicrofrontendProvider");
39
40
  return e;
40
41
  }
41
42
  //#endregion
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 };
43
+ export { S as BREAKPOINTS, a as ConsoleTransport, W as GLOBAL_SHORTCUT_CATEGORIES, n as LogLevel, r as LogManager, ee as Logger, z as MODIFIER_KEYS, $ as MicrofrontendContext, ie as PLAN_USAGE_SNAPSHOT_EVENT, B as PLATFORM_TYPES, Q as QUOTA_EXHAUSTED_EVENT, se as appendContextToPath, G as createGlobalShortcuts, s as detectPlatform, ne as dispatchQuotaExhausted, c as formatKeyCombo, l as getDisplayKeysForPlatform, K as getGlobalShortcutsByCategory, u as getShortcutLabel, d as isMac, f as isMobileDevice, p as isTabletDevice, i as logManager, m as matchesKeyCombo, q as mergeShortcuts, h as normalizeKey, g as normalizePlatformCombo, _ as parseKeyCombo, ae as publishPlanUsageSnapshot, v as shouldEnableKeyboardShortcuts, y as shouldIgnoreShortcut, L as useAsync, R as useAsyncImmediate, C as useBreakpoint, N as useConditionalToggle, e as useCopyToClipboard, ce as useCurrentContextSearchParams, b as useDebounce, Y as useHasAnimated, H as useHotkeys, D as useKeyPress, O as useKeyboardShortcut, V as useKeyboardShortcuts, k as useLocalStorage, J as useLogger, t as useMediaQuery, de as useMicrofrontendContext, w as useMobileBreakpoint, T as useOnClickOutside, E as useOnClickOutsideWithRef, o as usePWA, I as usePagination, A as usePrevious, j as usePreviousDistinct, M as usePreviousHistory, re as useQuotaErrorToast, Z as useRecordProductVisit, X as useReferralAttribution, te as useSessionStorage, U as useShortcutHelp, x as useThrottle, P as useToggle, F as useToggleObject, oe as useUpgradePrompt };
@@ -1,4 +1,5 @@
1
1
  import { SearchPage as e } from "./shared/pages/SearchPage.js";
2
2
  import { LegalPage as t } from "./shared/pages/LegalPage.js";
3
3
  import { AiPage as n } from "./shared/pages/AiPage.js";
4
- export { n as AiPage, t as LegalPage, e as SearchPage };
4
+ import { NotFoundPage as r } from "./shared/pages/NotFoundPage.js";
5
+ export { n as AiPage, t as LegalPage, r as NotFoundPage, e as SearchPage };