@fastr-pro/global-header 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +217 -0
- package/dist/index.cjs +5 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +235 -0
- package/dist/index.js +3857 -0
- package/dist/index.js.map +1 -0
- package/dist/style.css +3 -0
- package/package.json +60 -0
package/README.md
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# @fastr-pro/global-header
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
## Installation
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
npm install /path/to/fastr-global-header
|
|
8
|
+
# or once published to your npm registry:
|
|
9
|
+
# npm install @fastr-pro/global-header
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Peer Dependencies
|
|
13
|
+
Make sure your project has React 18+ installed:
|
|
14
|
+
```bash
|
|
15
|
+
npm install react react-dom
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Quick Start (Using Full Config)
|
|
21
|
+
|
|
22
|
+
```jsx
|
|
23
|
+
import React from "react";
|
|
24
|
+
import { GlobalHeader } from "@fastr-pro/global-header";
|
|
25
|
+
import { Activity, TrendingUp, Zap } from "lucide-react";
|
|
26
|
+
import "@fastr-pro/global-header/style.css";
|
|
27
|
+
|
|
28
|
+
const headerConfig = {
|
|
29
|
+
authApiUrl: "https://auth.fastrpro.com/api",
|
|
30
|
+
authRedirectUrl: "https://auth.fastrpro.com",
|
|
31
|
+
profileGetter: async () => {
|
|
32
|
+
const res = await fetch("https://auth.fastrpro.com/api/user/profile", { credentials: "include" });
|
|
33
|
+
return res.json();
|
|
34
|
+
},
|
|
35
|
+
uiTheme: "dark",
|
|
36
|
+
currentApp: "xray",
|
|
37
|
+
apps: {
|
|
38
|
+
xray: {
|
|
39
|
+
id: "xray",
|
|
40
|
+
name: "Stock X-Ray",
|
|
41
|
+
url: "https://xray.fastrpro.com",
|
|
42
|
+
icon: Activity, // or JSX node: <Activity className="size-4 text-yellow-400" />
|
|
43
|
+
bannerImage: "/images/bull_market.png",
|
|
44
|
+
badgeColor: "text-yellow-400",
|
|
45
|
+
footerNote: "Click any section to inspect diagnostic",
|
|
46
|
+
menuHeader: "Matrices",
|
|
47
|
+
description: "Comprehensive multi-dimensional stock diagnostics & matrix insights for precision trading.",
|
|
48
|
+
pages: [
|
|
49
|
+
{
|
|
50
|
+
id: "performance",
|
|
51
|
+
icon: TrendingUp,
|
|
52
|
+
label: "Performance",
|
|
53
|
+
value: "performance_matrix",
|
|
54
|
+
description: "Relative Rotation Grade, Stage Identification & Momentum Analysis",
|
|
55
|
+
sections: [
|
|
56
|
+
{
|
|
57
|
+
id: "rrg",
|
|
58
|
+
title: "Relative Rotation Grade",
|
|
59
|
+
desc: "Leading, Weakening, Lagging & Improving zones",
|
|
60
|
+
route: "/performance_matrix#rrg",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "stage",
|
|
64
|
+
title: "Stage Identifier",
|
|
65
|
+
desc: "Accumulation, Markup, Distribution & Markdown",
|
|
66
|
+
route: "/performance_matrix#stage",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "price-strength",
|
|
70
|
+
title: "Price Strength",
|
|
71
|
+
desc: "Comparative outperformance against benchmark",
|
|
72
|
+
route: "/performance_matrix#price-strength",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: "momentum",
|
|
76
|
+
title: "Momentum",
|
|
77
|
+
desc: "Speed and acceleration across short to long terms",
|
|
78
|
+
route: "/performance_matrix#momentum",
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export default function App() {
|
|
88
|
+
return (
|
|
89
|
+
<div className="min-h-screen bg-background text-foreground">
|
|
90
|
+
<GlobalHeader config={headerConfig} />
|
|
91
|
+
<main className="p-6">
|
|
92
|
+
<h1>Welcome to Stock X-Ray</h1>
|
|
93
|
+
</main>
|
|
94
|
+
</div>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Configuration Schema
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
interface HeaderConfig {
|
|
105
|
+
/** SSO / Auth API base URL for fetching profile or logging in */
|
|
106
|
+
authApiUrl?: string;
|
|
107
|
+
|
|
108
|
+
/** SSO Frontend / Redirect base URL (for login, register, purchase, profile) */
|
|
109
|
+
authRedirectUrl?: string;
|
|
110
|
+
|
|
111
|
+
/** Async or sync function to retrieve the authenticated user profile */
|
|
112
|
+
profileGetter?: () => Promise<User> | User;
|
|
113
|
+
|
|
114
|
+
/** Default or initial UI theme ("light" | "dark" | "system") */
|
|
115
|
+
uiTheme?: "light" | "dark" | "system" | string;
|
|
116
|
+
|
|
117
|
+
/** Identifier of the currently active app (e.g. "xray", "derivatives", etc.) */
|
|
118
|
+
currentApp?: string;
|
|
119
|
+
|
|
120
|
+
/** Directly pass user object (takes precedence over profileGetter) */
|
|
121
|
+
user?: User | null;
|
|
122
|
+
|
|
123
|
+
/** Custom logout callback */
|
|
124
|
+
logout?: () => void | Promise<void>;
|
|
125
|
+
|
|
126
|
+
/** Micro-application endpoints mapping */
|
|
127
|
+
urls?: {
|
|
128
|
+
landing?: string;
|
|
129
|
+
sso?: string;
|
|
130
|
+
purchase?: string;
|
|
131
|
+
profile?: string;
|
|
132
|
+
xray?: string;
|
|
133
|
+
scanner?: string;
|
|
134
|
+
charting?: string;
|
|
135
|
+
macro?: string;
|
|
136
|
+
derivatives?: string;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/** Dictionary of apps configuration */
|
|
140
|
+
apps?: Record<string, AppConfig> | AppConfig[];
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### App Configuration (`AppConfig`)
|
|
145
|
+
|
|
146
|
+
| Field | Type | Description |
|
|
147
|
+
| :--- | :--- | :--- |
|
|
148
|
+
| `id` | `string` | Unique application identifier (e.g. `"xray"`, `"scanner"`, `"charting"`, `"derivatives"`). |
|
|
149
|
+
| `name` / `label` | `string` | Display name in the navbar. |
|
|
150
|
+
| `url` | `string` | Base URL of the application. |
|
|
151
|
+
| `icon` | `Component \| JSX` | Lucide icon component, functional component, or pre-rendered JSX element. |
|
|
152
|
+
| `bannerImage` | `string` | Image URL displayed in the leftmost overview card. |
|
|
153
|
+
| `badge` | `string` | Badge label displayed over the banner card (defaults to `name`). |
|
|
154
|
+
| `badgeColor` | `string` | Tailwind text color class for the icon/badge (e.g. `"text-yellow-400"`). |
|
|
155
|
+
| `description` | `string` | Description text rendered inside the overview card. |
|
|
156
|
+
| `menuHeader` | `string` | Header text above the category/pages column (e.g. `"Matrices"`, `"Filter Groups"`). |
|
|
157
|
+
| `footerNote` | `string` | Helper note in the bottom of the overview card. |
|
|
158
|
+
| `quickActions` | `QuickAction[]` | Action buttons rendered at the bottom of the overview card (e.g. "Saved Filters", "Live Radar"). |
|
|
159
|
+
| `pages` / `categories` | `AppPage[]` | List of category pages rendered in the middle navigation column. |
|
|
160
|
+
|
|
161
|
+
### Page Configuration (`AppPage`)
|
|
162
|
+
|
|
163
|
+
| Field | Type | Description |
|
|
164
|
+
| :--- | :--- | :--- |
|
|
165
|
+
| `id` | `string` | Unique page identifier. |
|
|
166
|
+
| `label` / `title` | `string` | Display title of the category. |
|
|
167
|
+
| `icon` | `Component \| JSX` | Category icon. |
|
|
168
|
+
| `description` | `string` | Overview description of the page shown in the right column header. |
|
|
169
|
+
| `sections` / `items` | `AppItem[]` | List of items or sub-sections rendered in the right-side grid. |
|
|
170
|
+
| `onClick` | `(page, app) => void` | Optional custom click handler when clicking the category tab. |
|
|
171
|
+
|
|
172
|
+
### Section / Item Configuration (`AppItem`)
|
|
173
|
+
|
|
174
|
+
| Field | Type | Description |
|
|
175
|
+
| :--- | :--- | :--- |
|
|
176
|
+
| `id` | `string` | Unique item identifier. |
|
|
177
|
+
| `title` / `name` | `string` | Item title. |
|
|
178
|
+
| `desc` / `description`| `string` | Subtitle / description for the item card. |
|
|
179
|
+
| `route` / `href` | `string` | Target route or URL when clicked. |
|
|
180
|
+
| `onClick` | `(item, page, app) => void` | Custom click handler for the item. |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Modifying Defaults (`createHeaderConfig`)
|
|
185
|
+
|
|
186
|
+
You can extend or modify the default Fastr Pro configuration using `createHeaderConfig`:
|
|
187
|
+
|
|
188
|
+
```jsx
|
|
189
|
+
import { GlobalHeader, createHeaderConfig, defaultHeaderConfig } from "@fastr-pro/global-header";
|
|
190
|
+
|
|
191
|
+
const myConfig = createHeaderConfig({
|
|
192
|
+
uiTheme: "dark",
|
|
193
|
+
currentApp: "scanner",
|
|
194
|
+
apps: {
|
|
195
|
+
scanner: {
|
|
196
|
+
menuHeader: "Custom Scans",
|
|
197
|
+
footerNote: "Custom screener note",
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
export default function Header() {
|
|
203
|
+
return <GlobalHeader config={myConfig} />;
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Exports
|
|
210
|
+
|
|
211
|
+
- `GlobalHeader` (default and named)
|
|
212
|
+
- `GlobalMegaMenu`
|
|
213
|
+
- `FasterProLogo`
|
|
214
|
+
- `createHeaderConfig`, `defaultHeaderConfig`
|
|
215
|
+
- `renderIcon`
|
|
216
|
+
- Data matrices: `stockXRayCategories`, `chartingCategories`, `scannerCategories`, `macroPulseCategories`, `derivativesCategories`
|
|
217
|
+
- UI primitives: `NavigationMenu*`, `DropdownMenu*`, `Popover*`, `cn`
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("react");c=s(c,1);let l=require("react/jsx-runtime"),u=require("@base-ui/react/menu"),d=require("@base-ui/react/navigation-menu"),f=require("class-variance-authority"),p=require("lucide-react"),m=require("@base-ui/react/popover");var h=({className:e=`h-9 w-auto cursor-pointer`,isDarkMode:t,theme:n,...r})=>{let[i,a]=(0,c.useState)(!1);(0,c.useEffect)(()=>{if(typeof window>`u`)return;let e=()=>{let e=document.documentElement.classList.contains(`dark`)||document.body.classList.contains(`dark`);a(e)};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let o=(t===void 0?n===`dark`||n!==`light`&&i:t)?`#F5F7FA`:`#17212B`;return(0,l.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 1000 500`,className:e,...r,children:[(0,l.jsx)(`defs`,{children:(0,l.jsxs)(`linearGradient`,{id:`faster-blue`,x1:`0%`,y1:`0%`,x2:`100%`,y2:`0%`,children:[(0,l.jsx)(`stop`,{offset:`0%`,stopColor:`#1455E8`}),(0,l.jsx)(`stop`,{offset:`55%`,stopColor:`#087FF5`}),(0,l.jsx)(`stop`,{offset:`100%`,stopColor:`#08B9E8`})]})}),(0,l.jsx)(`rect`,{x:`170`,y:`120`,width:`120`,height:`14`,rx:`7`,fill:`#087FF5`}),(0,l.jsx)(`rect`,{x:`130`,y:`158`,width:`170`,height:`14`,rx:`7`,fill:`#5BB5FA`}),(0,l.jsx)(`rect`,{x:`160`,y:`196`,width:`130`,height:`14`,rx:`7`,fill:`#087FF5`}),(0,l.jsx)(`path`,{d:`M360 80 C380 48 410 32 448 32 H680 L650 78
|
|
2
|
+
C638 97 616 108 585 108 H330 Z`,fill:`url(#faster-blue)`}),(0,l.jsx)(`path`,{d:`M410 125 H635 L605 174 C594 191 576 199 552 199
|
|
3
|
+
H492 L450 305 C439 333 418 350 385 350 H325
|
|
4
|
+
L400 165 C403 151 406 137 410 125 Z`,fill:o}),(0,l.jsx)(`path`,{d:`M465 225 H565 L540 270 H447 Z`,fill:o}),(0,l.jsxs)(`text`,{x:`500`,y:`440`,textAnchor:`middle`,fontFamily:`Arial, Helvetica, sans-serif`,fontSize:`130`,fontWeight:`900`,fontStyle:`italic`,letterSpacing:`-3`,children:[(0,l.jsx)(`tspan`,{fill:o,children:`FASTER`}),(0,l.jsx)(`tspan`,{fill:`url(#faster-blue)`,children:` PRO`})]})]})},g=48,_=(e,t=0)=>{let n=new Int32Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r)-g-t;return n},v=e=>{let t=new Int32Array(e.length+1);for(let n=0;n<e.length;n++)t[n+1]=t[n]+e[n];return t},y=e=>{let t=new Int32Array(e.length),n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r)-g;n+=i>>>1^-(i&1),t[r]=n}return t},b=384,x=[],S=v(_(`E0500002005282000000002000150000020021820000011200000003022202000300004200120000200420001200021200301200010400162000010000220021010:2192001200220012000220012000200200200400010200040000000000400200108200110100000022010313000162002000020020012020080213000228200000000082000000000120002000120020020040101020300130001001010`)),C=v(_(`:11111111211111119311546544411119731869:671397415686432441111111111161114151214313433415:78311132233313187211117221449443411141111151152226611131111112212518142224214215421421542142424242516171151615616347111111111197911327451111111111111111111113134714133513411111311111111111111111111112444411111342312715245411117:3`)),w=`@containerabcdefghinlmoprstunderlineviawzccentlignnimatespectuto-colsrowsaglorightnessckdrop-sisbcontrastfiltergrayscalehue-rotateinvertopacityslurrightnessaturateepia-coniclinearpositionradialsizeockurrderttom-belrstxyespacing-xyaretoursorlnt-umnsendspantartainentrasteividerop-shadowurationcorationlay-xyasendillexontromlter-featuresstretchapr-xyayscaleidow-colsrowsue-rotatedentlinesetvert-beringsxyeshadoweiadingftnest-clamp-imageabein-lrstxyskx--b-coniclpositionrsizet-x-y-fromto-fromto-inearfromto-fromto-adialfromto-fromtofromtofromtofromtoblockhinlinew-screenesblockhinlinewbjectpacityrutlinederigin-offsetbelrstxyesrspective-originaceholderioghtng-offsettateundedw-xyz-belrstlreseslr-endspantartaturatecepiahizekewpace-taleroll-xyz-barmpbelrstxyesbelrstxyes-thumbrackadowrink-xyxyartrokeabextora-shadowpckingnsformitionlate-xyz-offsetill-changeoom`,ee=(()=>{let e=S.length-1,t=new Int32Array(e);for(let n=e-1;n>=0;n--){let e=1,r=n+1;for(let i=S[n];i<S[n+1];i++)e+=t[r],r+=t[r];t[n]=e}let n=new Int32Array(S[e]),r=0;for(let i=0;i<e;i++){let e=i+1;for(let a=S[i];a<S[i+1];a++)n[r++]=e,e+=t[e]}return n})(),T=_(`02000000000000900<=0?000B000F00F00ŏI0J0LNPRTVX0000]_a00000000000000000000000rst0000000zŏ00000000000
ŏ0000000ŏ00000000000000000000000000000000000000000000000000000000000000Ë000000000000000000000Þ000000000000000000ð0000000ø0ùúûüýþÿĀāĂ㥹Ć000000000000000000000000000000000000000000ħ0ĨĪ00000000000000000000ļĽ00000Ŭ000000`,1),E=v(_(`123333359346463635126536711576`)),D=_(`93203242332583253248325D>E?F@03263243255B:032523853:0325B:8GA032542H<C=12727B:0328432553;D>E?3257D>032585:0325B:;0328B:032`),O=_(`012113445661666666789111:5;;;;;;;;444;;;:62999<1161=62>>?61:21@ABCD4446996:64E:::;:?::64:F114GHHIHHHHIHH1HH1HH1HHHHHH::EEJ4444::EE4444441691;644444114244444:;K6666555555555555555999666664444444444444444444444226?6:66644L9M?D:111::::6DE199`),k=y(`020200202020020020020020020020200200200200200200200002020202001003040106000200200200200200200200200200200200200200200200200200200200200200200200200200200200020020020020020020002020200202002002002002002002002002002020002002020020200220200200200200200200200200200200020020020000200020002000200200200020020020002000200200200020020202002020202000200200020022000200200020020002002000200220002002000200W0Z00020020002002020002002000200g0j0002002000200200020020002002000200200020020002000200002000002002002002002000200020000200002002002002002002002020020020200200200200200200200200202020020020020020020020020002002002020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020002002002002002002000200200200200200200200200200020202020002000200020002002002002000020200200`),te=(()=>{let e=new Int32Array(319).fill(-1),t=y(`02422242:222222242224222242442222222422222244442242226224222426222422442462222422622222222626222462242622422622422424242422222222422222222242422222222222222222622442224222222222222224424442262222222222222222222226224222424242422224422422422222`),n=y(`02222222222222222222202222222222222222222222221422222222222222222222222222222222222Y\\222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221422222222222222222222222222222222222222Ŀł222222222222222222`);for(let r=0;r<t.length;r++)e[t[r]]=n[r];return e})(),A=`container |break-after- all auto avoid avoid-page column left page right|break-before- all auto avoid avoid-page column left page right|break-inside-a uto void void-column void-page|box-decoration- clone slice|box- border content| contents flow-root hidden table table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group| not-sr-only sr-only|float- end left none right start|clear- both end left none right start|isolat e ion-auto|overflow- auto clip hidden scroll visible|overflow-x- auto clip hidden scroll visible|overflow-y- auto clip hidden scroll visible|overscroll- auto contain none|overscroll-x- auto contain none|overscroll-y- auto contain none| absolute fixed relative static sticky| collapse invisible visible|justify- around baseline between center center-safe end end-safe evenly normal start stretch|justify-items- center center-safe end end-safe normal start stretch|justify-self- auto center center-safe end end-safe start stretch|items- baseline baseline-last center center-safe end end-safe start stretch|self- auto baseline baseline-last center center-safe end end-safe start stretch|place-content- around baseline between center center-safe end end-safe evenly start stretch|place-items- baseline center center-safe end end-safe start stretch|place-self- auto center center-safe end end-safe start stretch| antialiased subpixel-antialiased| italic not-italic|normal-nums |ordinal |slashed-zero | lining-nums oldstyle-nums| proportional-nums tabular-nums| diagonal-fractions stacked-fractions| no-underline overline| capitalize lowercase normal-case uppercase|truncate |whitespace- break-spaces normal nowrap pre pre-line pre-wrap|break- all keep normal words|wrap- anywhere break-word normal|hyphens- auto manual none|mix-blend- color color-burn color-dodge darken difference exclusion hard-light hue lighten luminosity multiply normal overlay plus-darker plus-lighter saturation screen soft-light|table- auto fixed|caption- bottom top|backface- hidden visible|appearance- auto none|scheme- dark light light-dark normal only-dark only-light|field-sizing- content fixed|pointer-events- auto none|resize -none -x -y|snap- align-none center end start|snap- always normal|snap- both none x y|snap- mandatory proximity|touch- auto manipulation none|touch-pan- left right x|touch-pan- down up y|touch-pinch-zoom |select- all auto none text|forced-color-adjust- auto none| normal size| baseline bottom middle sub super text-bottom text-top top| bounce none ping pulse spin| auto square video| auto fr max min px|none | auto full px| fixed local scroll|clip- border content padding text|origin- border content padding| bottom bottom-left bottom-right center left left-bottom left-top right right-bottom right-top top top-left top-right| no-repeat repeat repeat-round repeat-space repeat-x repeat-y| auto contain cover| gradient-to-b gradient-to-bl gradient-to-br gradient-to-l gradient-to-r gradient-to-t gradient-to-tl gradient-to-tr none|blend- color color-burn color-dodge darken difference exclusion hard-light hue lighten luminosity multiply normal overlay saturation screen soft-light|to- b bl br l r t tl tr| auto dvh fit full lh lvh max min px screen svh| dashed dotted double hidden none solid| collapse separate|px |auto |full | content none strict| inline-size size|layout |paint |style | around baseline between center center-safe end end-safe evenly normal start stretch| alias all-scroll auto cell col-resize context-menu copy crosshair default e-resize ew-resize grab grabbing help move n-resize ne-resize nesw-resize no-drop none not-allowed ns-resize nw-resize nwse-resize pointer progress row-resize s-resize se-resize sw-resize text vertical-text w-resize wait zoom-in zoom-out| dashed dotted double solid wavy| auto from-font|reverse |initial | in in-out initial linear out| col col-reverse row row-reverse| nowrap wrap wrap-reverse| auto initial none| black bold extrabold extralight light medium normal semibold thin| condensed expanded extra-condensed extra-expanded normal semi-condensed semi-expanded ultra-condensed ultra-expanded|flow- col col-dense dense row row-dense| none subgrid| auto dvh dvw fit full lh lvh lvw max min px screen svh svw| block flex grid table| auto dvw fit full lvw max min px screen svw| loose none normal px relaxed snug tight|through |item | inside outside| decimal disc none| auto px| clip-border clip-content clip-fill clip-padding clip-stroke clip-view no-clip| add exclude intersect subtract| alpha luminance match|origin- border content fill padding stroke view|type- alpha luminance| circle ellipse| closest-corner closest-side farthest-corner farthest-side|at- bottom bottom-left bottom-right center left left-bottom left-top right right-bottom right-top top top-left top-right| dvh fit full lh lvh max min none px screen svh| auto dvh dvw fit full lh lvh lvw max min none px screen svh svw| dvw fit full lvw max min none px screen svw| auto dvh dvw fit full lvh lvw max min none prose px svh svw| auto dvh dvw fit full lvh lvw max min none px screen svh svw| contain cover fill none scale-down| first last none| distant dramatic midrange near none normal|inset | full none|3d | auto smooth|gutter- auto both stable| auto none thin| inner none| auto dvh dvw fit full lvh lvw max min px svh svw|base | center end justify left right start| clip ellipsis| balance nowrap pretty wrap| normal tight tighter wide wider widest| cpu gpu none| 3d flat| all colors none opacity shadow transform| discrete normal| full px| auto dvh dvw fit full lvh lvw max min px screen svh svw| auto contents scroll transform`.split(`|`).map(e=>{let t=e.split(` `),n=t.shift();for(let e=0;e<t.length;e++)t[e]=n+t[e];return t}),j=y(`0000000000000000000000000000000000000000000000000000000000000262242:6@200000006:240B428:4422400002046044222426220026642642462026224222824220022400000000\\00N222422242222222224062242222222422226264222422222222222222442804222422222222222222222222220<4<0204260002444020204224422`),M=y(`ɠ222222222222222222222222222222222222222222222222222222222222˕4222226>ʶ22ʷʺʷ2ʸʷ42ʴ2ʓ22>621422ɶ222ɹɼɷɺɷɺ22ɱ42222ɨ2ɧ26622ɘɓ244ƸƵ222]d24242ǖǓƚÄȫ2263ȨȥȨ2222222ǣ222222222222222222ǂƽ2ƾƵ2222222422222ƜƑ22222222222222222222144Ŧţ22Ţş222222222222222222222ĸ2ı68ĦģĦɡŰ4Ġ«®ĝ822ĔđĔ2ē2222622`),N=y(`02222222222222222222222222222222222222222222222222222222222222222202022222222222EH2200IL021042222Y\\222IL0cf2e10j2222U00X202[^2y0000120|{~22
:22|22222222222G000qOVI00000}2>40000B00000I¨©000¬00000000000000021M®00°000000000000000000000222HGHa1º222¿2À2222ÉÌ000°2±`),P=new Int32Array(995),F=new Int32Array(995),I=new Int32Array(995),L=``,ne=new Int32Array(1038);{let e=new Map,t=0,n=0;for(let r=0;r<j.length;r++)for(let i of A[N[r]]){let a=e.get(i);a===void 0&&(a=t++,e.set(i,a),ne[a*2]=L.length,ne[a*2+1]=i.length,L+=i),P[n]=j[r],F[n]=M[r],I[n]=a,n++}}var re=y(`0b2N:222@R>F@286¦2@H2D266226FB22B2>BD\\6N22222Z222D222p`),ie=v(_(`1::24444432:442:44:44>222222:44:4421322511111311111114`)),ae=y(`24A;33N=C@H4A;33N=C@<27;83:;8393NQ:3NQʰ222ˉºŴŽ2R2=18cƴÅŇ=cĞÛC1ƈǝȈ:ħ25=11D3A@4=<1;1DEr25;11B3?<6;:371BCn9@7=<8192>2E121@9@EHE@9>2T25511<398454131<=V25511<398454131<=ƧNž2Đå242L222290000f22500ɛ000ǘ222`),R=_(`ij`),z=_(``),oe=_(`1`),B={GROUP_COUNT:b,customValidatorNames:x,edgeStart:S,labelStart:C,labelText:w,edgeTarget:ee,nodeGroup:T,nodeVlist:te,vlistPat:E,vlistOps:D,vlistRef:O,vlistGroup:k,litAnchor:P,litGroup:F,litPool:I,poolOffsets:ne,poolText:L,adjGid:re,adjStart:ie,adjTgt:ae,patGid:R,patTgt:z,postfixLookupGroups:oe,orderSensitiveModifiers:`* ** after backdrop before details-content file first-letter first-line marker placeholder selection`},se=`line`in Error(),V=-1,H=-1,ce=(e,t,n)=>{let r=2166136261;for(let i=t;i<n;i++)r=Math.imul(r^e.charCodeAt(i),16777619);return r},U=(e,t,n)=>{let r=n-t,i=Math.imul(r,2654435761)^e.charCodeAt(t);if(r>3){let a=r>>2,o=r>>1;i=Math.imul(i^e.charCodeAt(t+1)<<8^e.charCodeAt(t+2)<<16^e.charCodeAt(t+a),2246822507),i=Math.imul(i^e.charCodeAt(t+o)<<8^e.charCodeAt(t+o+a)<<16^e.charCodeAt(n-3),3266489909),i^=e.charCodeAt(n-2)<<8^e.charCodeAt(n-1)<<16;for(let r=t+3,a=n-4;r<t+8&&r<a;r++,a--)i=Math.imul(i^e.charCodeAt(r)^e.charCodeAt(a)<<8,16777619)}return i^i>>>15|0},W=(e,t,n={})=>{let{GROUP_COUNT:r,edgeStart:i,labelStart:a,labelText:o,edgeTarget:s,nodeGroup:c,nodeVlist:l,vlistPat:u,vlistOps:d,vlistRef:f,vlistGroup:p,litAnchor:m,litGroup:h,litPool:g,poolOffsets:_,poolText:v,adjGid:y,adjStart:b,adjTgt:x,patGid:S,patTgt:C,postfixLookupGroups:w,customValidatorNames:ee,orderSensitiveModifiers:T}=e,E=new Int32Array(r).fill(-1);for(let e=0;e<y.length;e++)E[y[e]]=e;let D=0;for(let e=0;e+1<b.length;e++){let t=b[e+1]-b[e];t>D&&(D=t)}let O=32;for(;O<2*(1+D+S.length);)O<<=1;let k=new Int32Array(f.length+1);for(let e=0;e<f.length;e++)k[e+1]=k[e]+u[f[e]+1]-u[f[e]];let te=new Uint8Array(r);for(let e=0;e<w.length;e++)te[w[e]]=1;let A=i.length-1,j=new Uint8Array(A),M=0,N=!0;for(let e=0;e<m.length;e++){j[m[e]]=1;let t=_[g[e]*2+1];t>M&&(M=t);let n=v.charCodeAt(_[g[e]*2]);(n===91||n===40)&&(N=!1)}let P=1;for(;P<m.length*2;)P<<=1;let F=new Int32Array(P).fill(-1);for(let e=0;e<m.length;e++){let t=_[g[e]*2],n=(ce(v,t,t+_[g[e]*2+1])^Math.imul(m[e],2654435761)|0)&P-1;for(;F[n]!==-1;)n=n+1&P-1;F[n]=e}let I=(e,t,n,r)=>{let i=(ce(t,n,r)^Math.imul(e,2654435761)|0)&P-1,a=r-n;for(;;){let r=F[i];if(r===-1)return-1;if(m[r]===e&&_[g[r]*2+1]===a){let e=_[g[r]*2],i=!0;for(let r=0;r<a;r++)if(v.charCodeAt(e+r)!==t.charCodeAt(n+r)){i=!1;break}if(i)return h[r]}i=i+1&P-1}},L=n.cacheSize??8192,ne=n.prefix??e.prefix??``,re=ne===``?``:ne+`:`,ie=re.length,ae=(ee??[]).map(e=>{let n=t&&t[e];if(!n)throw Error(`cn: missing validator `+e);return n}),R=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,z=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,oe=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,B=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,W=0,G=-1,le=-1,K=-1,de=-1,fe=e=>e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||e===95,pe=e=>/\s/.test(String.fromCharCode(e)),me=(e,t,n)=>{if(W=0,G=-1,n-t<3)return;let r=e.charCodeAt(t),i=e.charCodeAt(n-1);if(r===91&&i===93)W=1;else if(r===40&&i===41)W=2;else return;K=t+1,de=n-1;let a=t+1;if(fe(e.charCodeAt(a))){for(a++;a<n-1;){let t=e.charCodeAt(a);if(!fe(t)&&t!==45)break;a++}a<n-2&&e.charCodeAt(a)===58&&(G=t+1,le=a,K=a+1)}},he=(e,t,n,r)=>{if(n-t!==r.length)return!1;for(let n=0;n<r.length;n++)if(e.charCodeAt(t+n)!==r.charCodeAt(n))return!1;return!0},q=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,ge=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,_e=e=>!!e&&!Number.isNaN(Number(e)),ve=(e,t,n)=>{if(n-t<11||!he(e,t,t+10,`@container`))return!1;if(e.charCodeAt(t+10)===47)return n-t>=12;let r=e.charCodeAt(t+11);return r===115&&n-t>=17&&he(e,t+10,t+16,`-size/`)||r===110&&n-t>=19&&he(e,t+10,t+18,`-normal/`)},ye=[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2],be=`length|number|number weight|family-name|position percentage|length size bg-size|image url|shadow|length|family-name|position percentage|length size bg-size|image url|shadow|number weight`.split(`|`).map(e=>e.split(` `)),xe=[2,3,1,0,0,0,4,5,0,0,0,0,0,1,1],Se=(e,t,n,r)=>{if(e>=10){if(e>=25)return ae[e-25](t.slice(n,r));let i=e-10;if(W!==ye[i])return!1;if(G>=0){for(let e of be[i])if(he(t,G,le,e))return!0;return!1}switch(xe[i]){case 0:return!1;case 1:return!0;case 2:{let e=t.slice(K,de);return R.test(e)&&!z.test(e)}case 3:return _e(t.slice(K,de));case 4:return B.test(t.slice(K,de));default:return oe.test(t.slice(K,de))}}switch(e){case 0:return!0;case 1:return W===0;case 2:return W===1;case 3:return W===2;case 4:return q.test(t.slice(n,r));case 5:return _e(t.slice(n,r));case 6:{let e=t.slice(n,r);return!!e&&Number.isInteger(Number(e))}case 7:return r>n&&t.charCodeAt(r-1)===37&&_e(t.slice(n,r-1));case 8:return ge.test(t.slice(n,r));default:return ve(t,n,r)}},Ce=new Set(typeof T==`string`?T.split(` `):T),we=(e,t,n,r,i,a)=>{let o=ce(t,n,r)^(i?2654435769:0)|0,s=e.get(o);if(s!==void 0)outer:for(let e=0;e<s.length;e++){let a=s[e];if(a.imp===i&&a.k.length===r-n){for(let e=0;e<a.k.length;e++)if(a.k.charCodeAt(e)!==t.charCodeAt(n+e))continue outer;return a.id}}else e.set(o,s=[]);let c=t.slice(n,r),l=a(c);return s.push({k:c,imp:i,id:l}),l},Te=new Map,Ee=new Map,De=2,Oe=4096,ke=(e,t)=>{let n=[],r=0,i=0,a=0;for(let t=0;t<e.length;t++){let o=e.charCodeAt(t);r===0&&i===0&&o===58?(n.push(e.slice(a,t)),a=t+1):o===91?r++:o===93?r--:o===40?i++:o===41&&i--}n.push(e.slice(a));let o=n[0];if(n.length>1){let e=[],t=[];for(let r of n)r.charCodeAt(0)===91||Ce.has(r)?(t.length&&(e.push(...t.sort()),t=[]),e.push(r)):t.push(r);t.length&&e.push(...t.sort()),o=e.join(`:`)}let s=t?o+` !`:o,c=Ee.get(s);return c===void 0&&Ee.set(s,c=De++),c},Ae=new Map,je=r,Me=r+4096,Ne=()=>je++,Pe=2097152,Fe=8192,Ie=new Int32Array(Fe),J=Array(Fe).fill(null),Le=new Int32Array(Fe),Re=new Int32Array(Fe),ze=new Uint8Array(Fe),Be=0,Ve=(e,t,n,r,i,a,o,s)=>{let c=e;if(J[e]!==null){if(J[e|1]===null)c=e|1;else if(!(Be++&3))c=e|Be>>2&1;else return}J[c]=t.slice(n,r),Ie[c]=i,Le[c]=a,Re[c]=o,ze[c]=s},He=()=>J.fill(null),Y=256,Ue=[new Int32Array(Y),new Int32Array(Y),new Int32Array(Y),new Int32Array(Y)],[X,Z,We,Ge]=Ue,Ke=new Uint8Array(Y),qe=new Uint8Array(Y),Je=()=>{Y*=2,Ue=Ue.map(e=>{let t=new Int32Array(Y);return t.set(e),t}),[X,Z,We,Ge]=Ue;let e=new Uint8Array(Y);e.set(Ke),Ke=e,qe=new Uint8Array(Y)},Ye=64,Xe=new Int32Array(Ye),Ze=new Int32Array(Ye),Qe=new Int32Array(r),$e=2048,et=21,tt=new Float64Array($e),nt=new Int32Array($e),rt=0,it=(e,t)=>{if(e===0&&t<r)return Qe[t]===rt?1:(Qe[t]=rt,0);let n=e*2097152+t+1,i=Math.imul(n,2654435761)>>>et;for(;nt[i]===rt;){if(tt[i]===n)return 1;i=i+1&$e-1}return tt[i]=n,nt[i]=rt,0},at=(e,t,n,r,i)=>{if(n-t>=2&&e.charCodeAt(t)===91&&e.charCodeAt(n-1)===93){let r=-1;for(let i=t+1;i<n-1;i++)if(e.charCodeAt(i)===58){r=i;break}return r===-1||r===t+1?V:we(Ae,e,t+1,r,0,Ne)}if(r>=0&&c[r]>=0)return c[r];for(let t=i-1;t>=0;t--){let r=Ze[t];if(r>n)continue;let i=Xe[t],a=n-r;if(j[i]===1&&a>0&&a<=M){let t=e.charCodeAt(r);if(N===!1||t!==91&&t!==40){let t=I(i,e,r,n);if(t>=0)return t}}let o=l[i];if(o<0)continue;let s=f[o],c=u[s],m=u[s+1];if(c===m)continue;me(e,r,n);let h=k[o]-c;for(let t=c;t<m;t++)if(Se(d[t],e,r,n))return p[h+t]}return V},ot=e=>{let t=e.length,n=0,c=0,u=!1;(De>Oe||Te.size>Oe)&&(Te=new Map,Ee=new Map,De=2,He()),je>Me&&(Ae=new Map,je=r,He());let d=0;for(;d<t;){let f=e.charCodeAt(d);if(f===32||f>=9&&f<=13||f>=160&&pe(f)){f!==32&&(u=!0),d++;continue}let p=d,m=0;for(;d<t;){if(f=e.charCodeAt(d),f<=32){if(f===32)break;if(f>=9&&f<=13){u=!0;break}}else if(f>=160&&pe(f)){u=!0;break}m=Math.imul(m^f,16777619),d++}let h=d,g=h-p;n===Y&&Je();let _=n++;X[_]=p,Z[_]=h,c+=g,m^=Math.imul(g,2654435761);let v=m^m>>>15|0,y=v&8190;{let t=-1;if(Ie[y]===v&&J[y]!==null&&J[y].length===g?t=y:Ie[y|1]===v&&J[y|1]!==null&&J[y|1].length===g&&(t=y|1),t>=0){let n=J[t],r=!0;for(let t=0;t<g;t++)if(n.charCodeAt(t)!==e.charCodeAt(p+t)){r=!1;break}if(r){We[_]=Le[t],Ge[_]=Re[t],Ke[_]=ze[t];continue}}}let b=p;if(ie!==0){if(h-p<=ie||!e.startsWith(re,p)){We[_]=V,Ve(y,e,p,h,v,V,0,0);continue}b=p+ie}let x=0,S=0,C=-1,w=-1;for(let t=b;t<h;t++){let n=e.charCodeAt(t);if(x===0&&S===0){if(n===58){C=t;continue}if(n===47){w=t;continue}}n===91?x++:n===93?x--:n===40?S++:n===41&&S--}let ee=C>=b?C+1:b,T=ee,E=h,D=!1,O=0;E>T&&e.charCodeAt(E-1)===33?(D=!0,E--):E>T&&e.charCodeAt(T)===33&&(D=!0,T++,O=1);let k=-1;w>ee&&(k=w+O,k>=E&&(k=-1));let A=T;E-T>1&&e.charCodeAt(T)===45&&(A=T+1);let M=0,N=0,P=0,F=-1,I=0;(l[0]>=0||j[0]===1)&&(Xe[0]=0,Ze[0]=A,I=1);let L=H,ne=0;for(let t=A;t<E;t++)if(t===k&&(L=N<P?H:M,ne=I),M!==H){let n=e.charCodeAt(t),r=-1;if(N<P)o.charCodeAt(N)===n?(N++,N===P&&(r=M=F)):M=H;else{let e=i[M],t=i[M+1],c=H;for(let i=e;i<t;i++){let e=a[i];if(o.charCodeAt(e)===n){a[i+1]-e===1?r=c=s[i]:(N=e+1,P=a[i+1],F=s[i],c=M);break}}M=c}if(r>=0&&(l[r]>=0||j[r]===1)&&t+1<E&&e.charCodeAt(t+1)===45){if(I===Ye){Ye*=2;let e=new Int32Array(Ye);e.set(Xe),Xe=e;let t=new Int32Array(Ye);t.set(Ze),Ze=t}Xe[I]=r,Ze[I]=t+2,I++}}k===E&&(L=N<P?H:M,ne=I);let ae=N<P?H:M,R,z=!1;if(k>=0){if(z=!0,R=at(e,T,k,L,ne),R!==V&&R<r&&te[R]){let t=at(e,T,E,ae,I);t!==V&&t!==R&&(R=t,z=!1)}else R===V&&(R=at(e,T,E,ae,I),z=!1)}else R=at(e,T,E,ae,I);let oe=0,B=0;R===V?We[_]=V:(B=+!!z,oe=b>=C?+!!D:we(Te,e,b,C,+!!D,e=>ke(e,D)),We[_]=R,Ke[_]=B,Ge[_]=oe),Ve(y,e,p,h,v,R,oe,B)}if(n===0)return``;if(n===1)return X[0]===0&&Z[0]===t?e:e.slice(X[0],Z[0]);if(n*O>$e){for(;n*O>$e;)$e<<=1,et--;tt=new Float64Array($e),nt=new Int32Array($e)}if(De>=Pe||je>=Pe)throw Error(`cn: too many distinct classes in one merge`);rt=rt+1|0,rt===0&&(Qe.fill(0),nt.fill(0),rt=1);let f=!1;for(let e=n-1;e>=0;e--){let t=We[e];if(t===V){qe[e]=1;continue}let n=Ge[e];if(it(n,t)===1){qe[e]=0,f=!0;continue}if(qe[e]=1,t<r){let r=E[t];if(r>=0)for(let e=b[r];e<b[r+1];e++)it(n,x[e]);if(Ke[e]&1)for(let e=0;e<S.length;e++)S[e]===t&&it(n,C[e])}}if(!f&&!u&&t===c+n-1)return e;let p=``,m=0;for(;m<n;){if(!qe[m]){m++;continue}let t=X[m],r=Z[m],i=m+1;for(;i<n&&qe[i]&&X[i]===r+1&&e.charCodeAt(r)===32;)r=Z[i],i++;p.length>0&&(p+=` `),p+=e.slice(t,r),m=i}return p},st=16384,Q=new Int32Array(st*2),ct=0,$=1,lt=Object.create(null),ut=Object.create(null),dt=new Map,ft=new Map,pt=0,mt=0,ht=()=>{ct^=st,$=$+1|0,mt=0},gt=e=>{let t=lt[e];if(t!==void 0)return t;let n=U(e,0,e.length),r=(n&16383)+ct,i=Q[r]===(n^$)||Q[r^st]===(n^$-1);return i&&(t=ut[e],t!==void 0)?(lt[e]=t,t):(t=ot(e),i?(lt[e]=t,++pt>L&&(pt=0,ut=lt,lt=Object.create(null),ht())):(Q[r]=n^$,++mt>st&&ht()),t)},_t=e=>{let t=dt.get(e);if(t!==void 0)return t;let n=U(e,0,e.length),r=(n&16383)+ct,i=Q[r]===(n^$)||Q[r^st]===(n^$-1);return i&&(t=ft.get(e),t!==void 0)?(dt.set(e,t),t):(t=ot(e),i?(dt.set(e,t),++pt>L&&(pt=0,ft=dt,dt=new Map,ht())):(Q[r]=n^$,++mt>st&&ht()),t)},vt=e=>{let t=U(e,0,e.length),n=(t&16383)+ct;return Q[n]===(t^$)||Q[n^st]===(t^$-1)||(Q[n]=t^$,++mt>st&&ht(),!1)},yt=L===0?ot:se?e=>{let t=dt.get(e);return t===void 0?_t(e):t}:gt;return{merge:function(){return arguments.length===1&&typeof arguments[0]==`string`?yt(arguments[0]):yt(ue.apply(null,arguments))},mergeString:yt,seenBefore:L===0?()=>!1:vt,mergeUncached:ot}},G=(e,t)=>{if(!e)return``;if(typeof e==`string`)return e;let n=``;if(typeof e.length==`number`&&(!t||Array.isArray(e))){let r=e;for(let e=0;e<r.length;e++){let i=r[e];if(!i)continue;let a=typeof i==`string`?i:G(i,t);a&&(n&&(n+=` `),n+=a)}return n}if(t){if(typeof e==`number`)return``+e;if(typeof e==`object`)for(let t in e)e[t]&&(n&&(n+=` `),n+=t)}return n},le=(e,t)=>{let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(!i)continue;let a=typeof i==`string`?i:G(i,t);a&&(n&&(n+=` `),n+=a)}return n},ue=function(){return le(arguments,!1)},K=256,de=16,fe=1024,pe=4096,me=(e,t)=>{let n=t===void 0?()=>!0:t.seenBefore,r=t===void 0?e:t.mergeUncached,i=new Map,a=new Map,o=0,s=null,c=null,l=[],u=[],d=0,f=(t,n,r)=>{c===null&&(c=Array(pe).fill(``),l=Array(pe).fill(``),u=Array(pe).fill(``));let i=U(t,0,t.length)&4094;if(c[i]===t&&l[i]===n)return u[i];if(c[i|1]===t&&l[i|1]===n)return u[i|1];let a=e(r?n+` `+t:t),o=c[i]===``?i:i|(c[i|1]===``?1:d++&1);return c[o]=t,l[o]=n,u[o]=a,a},p=(e,t,n,r)=>{let i=0;if(t){if(t!==e.a0)return!1;i=1}if(n){if(n!==(i===0?e.a0:e.a1))return!1;i++}if(r){if(r!==(i===0?e.a0:i===1?e.a1:e.a2))return!1;i++}return i===e.t},m=(e,t)=>{let n=e.a,r=0;for(let e=0;e<t.length;e++){let i=t[e];if(i){if(i!==n[r])return!1;r++}}return r===e.t},h=(t,c)=>{let l=t.length,u=s===null?null:s.n;if(!c){if(u!==null&&m(u,t))return s=u,u.r;if(s!==null&&s!==u&&m(s,t))return s.r}let d=``,p=-1,h=0,g=!1;for(let e=0;e<l;e++){let n=t[e];if(n){if(typeof n!=`string`){if(n=t[e]=G(n,!0),!n)continue;g=!0}p<0&&(d=n,p=e),h++}}if(h===0)return``;if(h===1)return e(d);if(g){if(u!==null&&m(u,t))return s=u,u.r;if(s!==null&&s!==u&&m(s,t))return s.r}let _=i.get(d);_===void 0&&(_=a.get(d),_!==void 0&&i.set(d,_));let v=null;if(_!==void 0){if(_.skip>0){_.skip--,s=null;let e=d;for(let n=p+1;n<l;n++){let r=t[n];r&&(e+=` `+r)}return f(e,``,!1)}let e=_.e;outer:for(let n=0;n<e.length;n++){let r=e[n];if(r.t!==h)continue;let i=r.a,a=1;for(let e=p+1;e<l;e++){let n=t[e];if(n&&n!==i[a++])continue outer}v=r;break}v!==null&&(_.miss=0)}if(v===null){let s=d,c=[d];for(let e=p+1;e<l;e++){let n=t[e];n&&(s+=` `+n,c.push(n))}if(!n(s))return r(s);v={r:e(s),t:c.length,a0:c[0],a1:c[1],a2:c[2]??``,a:c,n:null},_===void 0?i.set(d,_={e:[],miss:0,skip:0,at:0}):++_.miss>de&&(_.miss=de,_.skip=fe,_.e.length=0,_.at=0);let u=_.e;u.length<K?u.push(v):(u[_.at]=v,_.at=_.at+1&255),++o>1e3&&(o=0,a=i,i=new Map)}return s!==null&&s!==v&&(s.n=v),s=v,v.r},g=t=>Array.isArray(t)?h(t.slice(),!1):e(G(t,!0));return function(t,n,r){let a=arguments.length;if((a|1)==3){let e=s;if(e!==null){let i=e.n;if(i!==null&&p(i,t,n,r))return s=i,i.r;if(e!==i&&p(e,t,n,r))return e.r}if(a===2&&typeof n==`string`&&n!==``){let e=i.get(t);if(e!==void 0&&e.skip>0)return e.skip--,s=null,f(n,t,!0)}return h([t,n,r],!0)}if(a===1)return typeof t==`string`?e(t):g(t);let o=s;if(o!==null){let e=o.n;if(e!==null){let t=e.a,n=0,r=!0;for(let e=0;e<a;e++){let i=arguments[e];if(i){if(i!==t[n]){r=!1;break}n++}}if(r&&n===e.t)return s=e,e.r}if(o!==e){let e=o.a,t=0,n=!0;for(let r=0;r<a;r++){let i=arguments[r];if(i){if(i!==e[t]){n=!1;break}t++}}if(n&&t===o.t)return o.r}}let c=[];for(let e=0;e<a;e++)c.push(arguments[e]);return h(c,!0)}},he=W(B),q=me(he.mergeString,he);he.merge;function ge({...e}){return(0,l.jsx)(u.Menu.Root,{"data-slot":`dropdown-menu`,...e})}function _e({...e}){return(0,l.jsx)(u.Menu.Portal,{"data-slot":`dropdown-menu-portal`,...e})}function ve({...e}){return(0,l.jsx)(u.Menu.Trigger,{"data-slot":`dropdown-menu-trigger`,...e})}function ye({align:e=`start`,alignOffset:t=0,side:n=`bottom`,sideOffset:r=4,className:i,...a}){return(0,l.jsx)(u.Menu.Portal,{children:(0,l.jsx)(u.Menu.Positioner,{className:`isolate z-[1000000] outline-none`,align:e,alignOffset:t,side:n,sideOffset:r,children:(0,l.jsx)(u.Menu.Popup,{"data-slot":`dropdown-menu-content`,className:q(`bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md p-1 shadow-md ring-1 duration-100 outline-none data-closed:overflow-hidden`,i),...a})})})}function be({...e}){return(0,l.jsx)(u.Menu.Group,{"data-slot":`dropdown-menu-group`,...e})}function xe({className:e,inset:t,...n}){return(0,l.jsx)(u.Menu.GroupLabel,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:q(`text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7`,e),...n})}function Se({className:e,inset:t,variant:n=`default`,...r}){return(0,l.jsx)(u.Menu.Item,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:q(`group/dropdown-menu-item focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:*:[svg]:text-destructive relative flex cursor-default items-center gap-1.5 rounded px-2 py-1 text-xs outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5`,e),...r})}function Ce({className:e,...t}){return(0,l.jsx)(u.Menu.Separator,{"data-slot":`dropdown-menu-separator`,className:q(`bg-border -mx-1 my-1 h-px`,e),...t})}function we({align:e=`start`,className:t,children:n,...r}){return(0,l.jsxs)(d.NavigationMenu.Root,{"data-slot":`navigation-menu`,className:q(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,t),...r,children:[n,(0,l.jsx)(Ae,{align:e})]})}function Te({className:e,...t}){return(0,l.jsx)(d.NavigationMenu.List,{"data-slot":`navigation-menu-list`,className:q(`group flex flex-1 list-none items-center justify-center gap-0`,e),...t})}function Ee({className:e,...t}){return(0,l.jsx)(d.NavigationMenu.Item,{"data-slot":`navigation-menu-item`,className:q(`relative`,e),...t})}var De=(0,f.cva)(`group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted`);function Oe({className:e,children:t,...n}){return(0,l.jsxs)(d.NavigationMenu.Trigger,{"data-slot":`navigation-menu-trigger`,className:q(De(),`group`,e),...n,children:[t,` `,(0,l.jsx)(p.ChevronDownIcon,{className:`relative top-px ml-1 size-5 -mr-1 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180`,"aria-hidden":`true`})]})}function ke({className:e,...t}){return(0,l.jsx)(d.NavigationMenu.Content,{"data-slot":`navigation-menu-content`,className:q(`h-full w-auto p-0 rounded-xl overflow-hidden`,e),...t})}function Ae({className:e,side:t=`bottom`,sideOffset:n=8,align:r=`start`,alignOffset:i=0,...a}){return(0,l.jsx)(d.NavigationMenu.Portal,{children:(0,l.jsx)(d.NavigationMenu.Positioner,{side:t,sideOffset:n,align:r,alignOffset:i,className:q(`isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:-top-2.5 data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0`,e),...a,children:(0,l.jsx)(d.NavigationMenu.Popup,{className:`xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-xl bg-transparent text-popover-foreground outline-none transition-[width,height] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)]`,children:(0,l.jsx)(d.NavigationMenu.Viewport,{className:`relative size-full rounded-xl overflow-hidden`})})})})}function je({className:e,...t}){return(0,l.jsx)(d.NavigationMenu.Link,{"data-slot":`navigation-menu-link`,className:q(`flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4`,e),...t})}function Me({className:e,...t}){return(0,l.jsx)(d.NavigationMenu.Icon,{"data-slot":`navigation-menu-indicator`,className:q(`top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in`,e),...t,children:(0,l.jsx)(`div`,{className:`relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md`})})}function Ne({...e}){return(0,l.jsx)(m.Popover.Root,{"data-slot":`popover`,...e})}function Pe({className:e,...t}){return(0,l.jsx)(m.Popover.Trigger,{"data-slot":`popover-trigger`,className:q(`w-full`,e),...t})}function Fe({className:e,align:t=`center`,alignOffset:n=0,side:r=`bottom`,sideOffset:i=4,...a}){return(0,l.jsx)(m.Popover.Portal,{children:(0,l.jsx)(m.Popover.Positioner,{align:t,alignOffset:n,side:r,sideOffset:i,className:`isolate z-[1000000]`,children:(0,l.jsx)(m.Popover.Popup,{"data-slot":`popover-content`,className:q(`bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 z-[1000000] flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-md p-1 text-xs shadow-md ring-1 outline-hidden duration-100`,e),...a})})})}function Ie({className:e,...t}){return(0,l.jsx)(`div`,{"data-slot":`popover-header`,className:q(`flex flex-col gap-0.5 text-xs`,e),...t})}function J({className:e,...t}){return(0,l.jsx)(m.Popover.Title,{"data-slot":`popover-title`,className:q(`font-heading font-medium`,e),...t})}function Le({className:e,...t}){return(0,l.jsx)(m.Popover.Description,{"data-slot":`popover-description`,className:q(`text-muted-foreground`,e),...t})}var Re=[{id:`performance`,label:`Performance`,value:`performance_matrix`,route:`/performance_matrix`,icon:p.TrendingUp,description:`Relative Rotation Grade, Stage Identification & Momentum Analysis`,sections:[{id:`rrg`,title:`Relative Rotation Grade`,desc:`Leading, Weakening, Lagging & Improving zones`,route:`/performance_matrix#rrg`,hash:`rrg`,queryParams:{matrix:`performance`,section:`rrg`}},{id:`stage`,title:`Stage Identifier`,desc:`Accumulation, Markup, Distribution & Markdown`,route:`/performance_matrix#stage`,hash:`stage`,queryParams:{matrix:`performance`,section:`stage`}},{id:`price-strength`,title:`Price Strength`,desc:`Comparative outperformance against benchmark`,route:`/performance_matrix#price-strength`,hash:`price-strength`,queryParams:{matrix:`performance`,section:`price-strength`}},{id:`momentum`,title:`Momentum`,desc:`Speed and acceleration across short to long terms`,route:`/performance_matrix#momentum`,hash:`momentum`,queryParams:{matrix:`performance`,section:`momentum`}}]},{id:`price-range`,label:`Price Range`,value:`price_range_matrix`,route:`/price_range_matrix`,icon:p.Activity,description:`Price Range dynamics, Candle Spread, and Circuit Chart diagnostics`,sections:[{id:`price-range`,title:`Price Range`,desc:`252D high-low channels and range positioning`,route:`/price_range_matrix#price-range`,hash:`price-range`,queryParams:{matrix:`price-range`,section:`price-range`}},{id:`candle-spread`,title:`Candle Spread`,desc:`Body vs wick distributions and spread sizes`,route:`/price_range_matrix#candle-spread`,hash:`candle-spread`,queryParams:{matrix:`price-range`,section:`candle-spread`}},{id:`candle-control`,title:`Candle Spread Control`,desc:`Buyer vs seller price control dominances`,route:`/price_range_matrix#candle-control`,hash:`candle-control`,queryParams:{matrix:`price-range`,section:`candle-control`}},{id:`circuit`,title:`Circuit Chart`,desc:`Historical upper and lower circuit hits`,route:`/price_range_matrix#circuit`,hash:`circuit`,queryParams:{matrix:`price-range`,section:`circuit`}}]},{id:`engagement`,label:`Engagement`,value:`engagement_matrix`,route:`/engagement_matrix`,icon:p.Layers,description:`Ask/bid ratios, average volumes, F&O open interest and delivery deals`,sections:[{id:`ask-bid`,title:`Ask Bid Ratios`,desc:`Order book buying and selling pressures`,route:`/engagement_matrix#ask-bid`,hash:`ask-bid`,queryParams:{matrix:`engagement`,section:`ask-bid`}},{id:`avg-volume`,title:`Average Volume`,desc:`Multi-day average share turnover rates`,route:`/engagement_matrix#avg-volume`,hash:`avg-volume`,queryParams:{matrix:`engagement`,section:`avg-volume`}},{id:`fno-volume`,title:`F&O Volume`,desc:`Futures and options derivative volumes`,route:`/engagement_matrix#fno-volume`,hash:`fno-volume`,queryParams:{matrix:`engagement`,section:`fno-volume`}},{id:`fno-oi`,title:`F&O Open Interest`,desc:`Long build-up and short covering profiles`,route:`/engagement_matrix#fno-oi`,hash:`fno-oi`,queryParams:{matrix:`engagement`,section:`fno-oi`}},{id:`cpr-pcr`,title:`PCR / CPR Profile`,desc:`Put-call ratios and central pivot ranges`,route:`/engagement_matrix#cpr-pcr`,hash:`cpr-pcr`,queryParams:{matrix:`engagement`,section:`cpr-pcr`}},{id:`bulk-block`,title:`Bulk & Block Deals`,desc:`Large institutional block trades`,route:`/engagement_matrix#bulk-block`,hash:`bulk-block`,queryParams:{matrix:`engagement`,section:`bulk-block`}},{id:`mf-holdings`,title:`MF Holdings`,desc:`Mutual fund quarterly holding changes`,route:`/engagement_matrix#mf-holdings`,hash:`mf-holdings`,queryParams:{matrix:`engagement`,section:`mf-holdings`}}]},{id:`steering`,label:`Steering`,value:`steering_matrix`,route:`/steering_matrix`,icon:p.Compass,description:`Financial profiles, Cash flow analysis, Shareholding & Industry mapping`,sections:[{id:`financial-profile`,title:`Financial Profile`,desc:`Key financial metrics and growth indicators`,route:`/steering_matrix#financial-profile`,hash:`financial-profile`,queryParams:{matrix:`steering`,section:`financial-profile`}},{id:`cash-flow`,title:`Cash Flow Analysis`,desc:`Operating, investing and financing cash flows`,route:`/steering_matrix#cash-flow`,hash:`cash-flow`,queryParams:{matrix:`steering`,section:`cash-flow`}},{id:`shareholding`,title:`Shareholding Pattern`,desc:`Promoter, FII, DII and public shareholding`,route:`/steering_matrix#shareholding`,hash:`shareholding`,queryParams:{matrix:`steering`,section:`shareholding`}},{id:`industry-mapping`,title:`Industry Mapping`,desc:`Sectoral peers and industry benchmarks`,route:`/steering_matrix#industry-mapping`,hash:`industry-mapping`,queryParams:{matrix:`steering`,section:`industry-mapping`}},{id:`market-cap`,title:`Market Cap Position`,desc:`Capitalization ranking and category tier`,route:`/steering_matrix#market-cap`,hash:`market-cap`,queryParams:{matrix:`steering`,section:`market-cap`}},{id:`index-chart`,title:`Index Chart`,desc:`Relative performance against index components`,route:`/steering_matrix#index-chart`,hash:`index-chart`,queryParams:{matrix:`steering`,section:`index-chart`}}]},{id:`indicators`,label:`Indicators`,value:`indicators_matrix`,route:`/indicators_matrix`,icon:p.Sliders,description:`Technical indicators including Moving Averages, Supertrend, Bollinger & MACD`,sections:[{id:`sma`,title:`SMA`,desc:`Simple Moving Average trends`,route:`/indicators_matrix#sma`,hash:`sma`,queryParams:{matrix:`indicators`,section:`sma`}},{id:`ema`,title:`EMA`,desc:`Exponential Moving Average signals`,route:`/indicators_matrix#ema`,hash:`ema`,queryParams:{matrix:`indicators`,section:`ema`}},{id:`supertrend`,title:`Supertrend`,desc:`Trend-following trailing levels`,route:`/indicators_matrix#supertrend`,hash:`supertrend`,queryParams:{matrix:`indicators`,section:`supertrend`}},{id:`bollinger-band`,title:`Bollinger Band`,desc:`Volatility envelopes and bands`,route:`/indicators_matrix#bollinger-band`,hash:`bollinger-band`,queryParams:{matrix:`indicators`,section:`bollinger-band`}},{id:`atr`,title:`Average True Range`,desc:`Market volatility measurements`,route:`/indicators_matrix#atr`,hash:`atr`,queryParams:{matrix:`indicators`,section:`atr`}},{id:`vwap`,title:`VWAP`,desc:`Volume Weighted Average Price`,route:`/indicators_matrix#vwap`,hash:`vwap`,queryParams:{matrix:`indicators`,section:`vwap`}},{id:`rsi`,title:`RSI`,desc:`Momentum oscillator diagnostics`,route:`/indicators_matrix#rsi`,hash:`rsi`,queryParams:{matrix:`indicators`,section:`rsi`}},{id:`stochastic`,title:`Stochastic`,desc:`Cycle speed and turning points`,route:`/indicators_matrix#stochastic`,hash:`stochastic`,queryParams:{matrix:`indicators`,section:`stochastic`}},{id:`macd`,title:`MACD`,desc:`Trend convergence and divergence`,route:`/indicators_matrix#macd`,hash:`macd`,queryParams:{matrix:`indicators`,section:`macd`}},{id:`adx`,title:`ADX`,desc:`Directional trend strength indicator`,route:`/indicators_matrix#adx`,hash:`adx`,queryParams:{matrix:`indicators`,section:`adx`}}]},{id:`quant`,label:`Quant`,value:`risk_reward_matrix`,route:`/risk_reward_matrix`,icon:p.Percent,description:`Quantitative risk-return profile, Volatility measures & Bell curves`,sections:[{id:`performance`,title:`Performance Measure`,desc:`Sharpe, Treynor & risk-adjusted returns`,route:`/risk_reward_matrix#performance`,hash:`performance`,queryParams:{matrix:`quant`,section:`performance`}},{id:`volatility`,title:`Volatility Measure`,desc:`Beta, variance and standard deviation`,route:`/risk_reward_matrix#volatility`,hash:`volatility`,queryParams:{matrix:`quant`,section:`volatility`}},{id:`market-sensitivity`,title:`Market Sensitivity`,desc:`Correlation, co-variance and R-squared`,route:`/risk_reward_matrix#market-sensitivity`,hash:`market-sensitivity`,queryParams:{matrix:`quant`,section:`market-sensitivity`}},{id:`risk-profile`,title:`Risk Profile`,desc:`Downside risk and maximum drawdown`,route:`/risk_reward_matrix#risk-profile`,hash:`risk-profile`,queryParams:{matrix:`quant`,section:`risk-profile`}},{id:`bell-curves`,title:`Bell Curves`,desc:`Normal return distribution curves`,route:`/risk_reward_matrix#bell-curves`,hash:`bell-curves`,queryParams:{matrix:`quant`,section:`bell-curves`}}]},{id:`formation`,label:`Formation`,value:`formation_matrix`,route:`/formation_matrix`,icon:p.Sparkles,description:`Candlestick patterns, Fib retracement, VCP & AVWAP analysis`,sections:[{id:`single-candle`,title:`Single Candle Patterns`,desc:`Doji, hammer, marubozu formations`,route:`/formation_matrix#single-candle`,hash:`single-candle`,queryParams:{matrix:`formation`,section:`single-candle`}},{id:`double-candle`,title:`Double Candle Patterns`,desc:`Engulfing, harami and kicker reversals`,route:`/formation_matrix#double-candle`,hash:`double-candle`,queryParams:{matrix:`formation`,section:`double-candle`}},{id:`capitulation-exhaustion`,title:`Capitulation & Exhaustion`,desc:`Climax volume exhaustion signatures`,route:`/formation_matrix#capitulation-exhaustion`,hash:`capitulation-exhaustion`,queryParams:{matrix:`formation`,section:`capitulation-exhaustion`}},{id:`fav-unfav`,title:`Fav & Unfav Candles`,desc:`High-probability setup identification`,route:`/formation_matrix#fav-unfav`,hash:`fav-unfav`,queryParams:{matrix:`formation`,section:`fav-unfav`}},{id:`fib-retracement`,title:`Fib Retracement`,desc:`Key Golden Ratio retracement zones`,route:`/formation_matrix#fib-retracement`,hash:`fib-retracement`,queryParams:{matrix:`formation`,section:`fib-retracement`}},{id:`vcp`,title:`Volatility Contraction`,desc:`Volatility contraction pattern (VCP)`,route:`/formation_matrix#vcp`,hash:`vcp`,queryParams:{matrix:`formation`,section:`vcp`}},{id:`avwap`,title:`AVWAP Analysis`,desc:`Anchored volume-weighted average price`,route:`/formation_matrix#avwap`,hash:`avwap`,queryParams:{matrix:`formation`,section:`avwap`}}]},{id:`news`,label:`News`,value:`news_matrix`,route:`/news_matrix`,icon:p.Newspaper,description:`Real-time curated financial news feeds & industry developments`,sections:[{id:`latest-news`,title:`Latest News`,desc:`Live market headlines and breaking stories`,route:`/news_matrix#latest-news`,hash:`latest-news`,queryParams:{matrix:`news`,section:`latest-news`}},{id:`industry-news`,title:`Industry News`,desc:`Sectoral developments and macro updates`,route:`/news_matrix#industry-news`,hash:`industry-news`,queryParams:{matrix:`news`,section:`industry-news`}}]}],ze=[{id:`chart_types`,label:`Chart Types`,type:`candleType`,route:`/`,icon:p.BarChart2,description:`Select your preferred visual candlestick or price action representation`,items:[{id:`candle`,title:`Standard Candle`,desc:`Traditional open-high-low-close candlestick`,route:`/`,queryParams:{candleType:`candle`}},{id:`heikinAshi`,title:`Heikin Ashi`,desc:`Filtered smoothed trend candlestick`,route:`/`,queryParams:{candleType:`heikinAshi`}},{id:`line`,title:`Line Chart`,desc:`Continuous close-to-close price line`,route:`/`,queryParams:{candleType:`line`}},{id:`area`,title:`Area Chart`,desc:`Filled gradient area under the close line`,route:`/`,queryParams:{candleType:`area`}},{id:`ohlc`,title:`OHLC Bars`,desc:`Western bar tick chart display`,route:`/`,queryParams:{candleType:`ohlc`}},{id:`hollow`,title:`Hollow Candles`,desc:`Color & fill based on close vs open and prior close`,route:`/`,queryParams:{candleType:`hollow`}},{id:`stepline`,title:`Step Line`,desc:`Stepped horizontal price progression`,route:`/`,queryParams:{candleType:`stepline`}},{id:`lineWithMarker`,title:`Line + Markers`,desc:`Close price line with discrete data points`,route:`/`,queryParams:{candleType:`lineWithMarker`}}]},{id:`trend_indicators`,label:`Trend Indicators`,type:`indicator`,route:`/`,icon:p.TrendingUp,description:`Moving averages and directional trend-following indicators`,items:[{id:`EMA`,title:`Exponential Moving Average (EMA)`,desc:`Weighted trend line responsive to recent data`,route:`/`,queryParams:{indicator:`EMA`}},{id:`SMA`,title:`Simple Moving Average (SMA)`,desc:`Arithmetic mean price over specified periods`,route:`/`,queryParams:{indicator:`SMA`}},{id:`wma`,title:`Weighted Moving Average (WMA)`,desc:`Linearly weighted trend moving average`,route:`/`,queryParams:{indicator:`wma`}},{id:`supertrend`,title:`SuperTrend (SuperT)`,desc:`ATR-based directional trend-following band`,route:`/`,queryParams:{indicator:`supertrend`}},{id:`alligator`,title:`Williams Alligator`,desc:`Jaw, teeth and lips trend phase indicator`,route:`/`,queryParams:{indicator:`alligator`}},{id:`psar`,title:`Parabolic SAR (PSAR)`,desc:`Trailing stop-and-reverse price markers`,route:`/`,queryParams:{indicator:`psar`}},{id:`AVWAP`,title:`Anchored VWAP (AVWAP)`,desc:`Volume weighted average price from anchor date`,route:`/`,queryParams:{indicator:`AVWAP`}}]},{id:`momentum_oscillators`,label:`Momentum`,type:`indicator`,route:`/`,icon:p.Activity,description:`Speed, rate of change, overbought and oversold condition detectors`,items:[{id:`rsiController`,title:`Relative Strength Index (RSI)`,desc:`Speed and magnitude of recent price changes`,route:`/`,queryParams:{indicator:`rsiController`}},{id:`macd`,title:`MACD Oscillator`,desc:`Moving Average Convergence Divergence`,route:`/`,queryParams:{indicator:`macd`}},{id:`stochastic_9_slow`,title:`Stochastic Slow`,desc:`Smoothed momentum oscillator for swing cycles`,route:`/`,queryParams:{indicator:`stochastic_9_slow`}},{id:`stochastic_9_fast`,title:`Stochastic Fast`,desc:`Fast-reacting momentum trigger`,route:`/`,queryParams:{indicator:`stochastic_9_fast`}},{id:`stochastic_9`,title:`Stochastic Full`,desc:`Full customizable stochastic oscillator`,route:`/`,queryParams:{indicator:`stochastic_9`}},{id:`ao`,title:`Awesome Oscillator (AO)`,desc:`Market momentum comparison of 34 and 5 periods`,route:`/`,queryParams:{indicator:`ao`}},{id:`adxController`,title:`Average Directional Index (ADX)`,desc:`Trend strength quantifier without direction`,route:`/`,queryParams:{indicator:`adxController`}}]},{id:`volatility_bands`,label:`Volatility & Range`,type:`indicator`,route:`/`,icon:p.Sliders,description:`Statistical price distribution and market volatility measurements`,items:[{id:`bollingerBands`,title:`Bollinger Bands (BB)`,desc:`Standard deviation volatility envelope`,route:`/`,queryParams:{indicator:`bollingerBands`}},{id:`atrController`,title:`Average True Range (ATR)`,desc:`True price volatility measure across candles`,route:`/`,queryParams:{indicator:`atrController`}},{id:`vo`,title:`Volume Oscillator (VO)`,desc:`Volume momentum oscillator`,route:`/`,queryParams:{indicator:`vo`}},{id:`fibonacciRetracement`,title:`Fibonacci Retracement (FIR)`,desc:`Golden Ratio price levels & extensions`,route:`/`,queryParams:{indicator:`fibonacciRetracement`}}]},{id:`volume_analytics`,label:`Volume Analytics`,type:`indicator`,route:`/`,icon:p.Layers,description:`Order flow, liquidity profiles and institutional accumulation levels`,items:[{id:`volume`,title:`Volume Bars`,desc:`Color-coded traded volume bars with EMA`,route:`/`,queryParams:{indicator:`volume`}},{id:`volprofile`,title:`Volume Profile (VolProfile)`,desc:`Volume distribution by price level (POC/VA)`,route:`/`,queryParams:{indicator:`volprofile`}},{id:`vwap`,title:`Volume Weighted Avg Price (VWAP)`,desc:`Session volume-weighted benchmark`,route:`/`,queryParams:{indicator:`vwap`}},{id:`VSMA`,title:`Volume SMA (VSMA)`,desc:`Volume simple moving average overlay`,route:`/`,queryParams:{indicator:`VSMA`}},{id:`vma`,title:`Volume Moving Average (VMA)`,desc:`Smooth volume moving average`,route:`/`,queryParams:{indicator:`vma`}},{id:`accumulation_distribution`,title:`Accumulation / Distribution`,desc:`Cumulative volume flow indicator`,route:`/`,queryParams:{indicator:`accumulation_distribution`}}]},{id:`patterns`,label:`Candle Patterns`,type:`pattern`,route:`/`,icon:p.Sparkles,description:`Algorithmic detection of single and multi-candle reversal structures`,items:[{id:`all_patterns`,title:`All Candle Patterns`,desc:`Auto-detect all known candlestick structures`,route:`/`,queryParams:{pattern:`all_patterns`}},{id:`perfect_doji`,title:`Perfect Doji`,desc:`Indecision bar with matching open and close`,route:`/`,queryParams:{pattern:`perfect_doji`}},{id:`hammer`,title:`Hammer`,desc:`Bullish reversal with long lower wick`,route:`/`,queryParams:{pattern:`hammer`}},{id:`reverse_hammer`,title:`Reverse Hammer`,desc:`Bullish bounce attempt after downtrend`,route:`/`,queryParams:{pattern:`reverse_hammer`}},{id:`marubozu`,title:`Marubozu`,desc:`Full-bodied momentum candle without wicks`,route:`/`,queryParams:{pattern:`marubozu`}},{id:`inside_bar`,title:`Inside Bar`,desc:`Volatility compression candle inside mother bar`,route:`/`,queryParams:{pattern:`inside_bar`}},{id:`bullish_harami`,title:`Bullish Harami`,desc:`Two-bar inside bullish reversal`,route:`/`,queryParams:{pattern:`bullish_harami`}},{id:`bearish_harami`,title:`Bearish Harami`,desc:`Two-bar inside bearish reversal`,route:`/`,queryParams:{pattern:`bearish_harami`}},{id:`bullish_engulfing`,title:`Bullish Engulfing`,desc:`Bullish candle completely engulfing prior bar`,route:`/`,queryParams:{pattern:`bullish_engulfing`}},{id:`bearish_engulfing`,title:`Bearish Engulfing`,desc:`Bearish candle completely engulfing prior bar`,route:`/`,queryParams:{pattern:`bearish_engulfing`}},{id:`bullish_kicker`,title:`Bullish Kicker`,desc:`Gap reversal explosive upward momentum`,route:`/`,queryParams:{pattern:`bullish_kicker`}},{id:`bearish_kicker`,title:`Bearish Kicker`,desc:`Gap reversal downward momentum`,route:`/`,queryParams:{pattern:`bearish_kicker`}}]},{id:`conditions`,label:`Market Conditions`,type:`condition`,route:`/`,icon:p.SlidersHorizontal,description:`Smart algorithmic scanner filters and market structure conditions`,items:[{id:`gapUp`,title:`Gap Up Open`,desc:`Today's open exceeds previous candle high`,route:`/`,queryParams:{condition:`gapUp`}},{id:`gapDown`,title:`Gap Down Open`,desc:`Today's open falls below previous candle low`,route:`/`,queryParams:{condition:`gapDown`}},{id:`tightCandle`,title:`Tight Range Candle`,desc:`Extremely compressed range coiling bar`,route:`/`,queryParams:{condition:`tightCandle`}},{id:`favCandle`,title:`Favorable Candle`,desc:`High conviction bullish market structure`,route:`/`,queryParams:{condition:`favCandle`}},{id:`unfavCandle`,title:`Unfavorable Candle`,desc:`High conviction bearish market structure`,route:`/`,queryParams:{condition:`unfavCandle`}},{id:`volumeAboveEMA`,title:`Volume Above EMA`,desc:`Surge above multi-day average volume`,route:`/`,queryParams:{condition:`volumeAboveEMA`}},{id:`ath52WHRange`,title:`ATH / 52W High Range`,desc:`Proximity to all-time or 52-week high`,route:`/`,queryParams:{condition:`ath52WHRange`}},{id:`atl52WLRange`,title:`ATL / 52W Low Range`,desc:`Proximity to all-time or 52-week low`,route:`/`,queryParams:{condition:`atl52WLRange`}},{id:`latestCHoch`,title:`Latest CHoCH Break`,desc:`Change of character market structure shift`,route:`/`,queryParams:{condition:`latestCHoch`}},{id:`latestSH`,title:`Latest Swing High`,desc:`Current prominent swing high resistance point`,route:`/`,queryParams:{condition:`latestSH`}},{id:`latestSL`,title:`Latest Swing Low`,desc:`Current prominent swing low support point`,route:`/`,queryParams:{condition:`latestSL`}}]},{id:`timeframes`,label:`Timeframes`,type:`timeframe`,route:`/`,icon:p.Clock,description:`Multi-timeframe analysis from intraday scalping to macro swing periods`,items:[{id:`minute`,title:`1 Minute`,desc:`Ultra-fast scalping resolution`,route:`/`,queryParams:{interval:`minute`}},{id:`3minute`,title:`3 Minutes`,desc:`Intraday micro momentum`,route:`/`,queryParams:{interval:`3minute`}},{id:`5minute`,title:`5 Minutes`,desc:`Standard day trading resolution`,route:`/`,queryParams:{interval:`5minute`}},{id:`15minute`,title:`15 Minutes`,desc:`Intraday trend structure`,route:`/`,queryParams:{interval:`15minute`}},{id:`30minute`,title:`30 Minutes`,desc:`Intraday swing structure`,route:`/`,queryParams:{interval:`30minute`}},{id:`60minute`,title:`1 Hour`,desc:`Intermediate hourly trend`,route:`/`,queryParams:{interval:`60minute`}},{id:`2hour`,title:`2 Hours`,desc:`Multi-hour position trend`,route:`/`,queryParams:{interval:`2hour`}},{id:`4hour`,title:`4 Hours`,desc:`Major session market structure`,route:`/`,queryParams:{interval:`4hour`}},{id:`day`,title:`Daily`,desc:`EOD swing trading baseline`,route:`/`,queryParams:{interval:`day`}},{id:`week`,title:`Weekly`,desc:`Medium-term macro trend`,route:`/`,queryParams:{interval:`week`}},{id:`month`,title:`Monthly`,desc:`Long-term investment perspective`,route:`/`,queryParams:{interval:`month`}}]}],Be=[{id:`popular_strategies`,label:`Popular Scans`,route:`/`,icon:p.Zap,description:`Battle-tested multi-factor algorithmic screening strategies`,items:[{id:`bullish_breakout`,title:`Bullish Breakout (Volume + Price)`,desc:`Price break with 2x volume expansion`,indicator:`rsi_14`,route:`/`,queryParams:{addFilter:`rsi_14`,title:`Bullish Breakout (Volume + Price)`}},{id:`momentum_leaders`,title:`Momentum Leaders (RRG)`,desc:`Leading quadrant rotation with high RS`,indicator:`momentum`,route:`/`,queryParams:{addFilter:`momentum`,title:`Momentum Leaders (RRG)`}},{id:`52w_high_break`,title:`52-Week High Breakouts`,desc:`Crossing multi-month resistance levels`,indicator:`252d_high_low_range`,route:`/`,queryParams:{addFilter:`252d_high_low_range`,title:`52-Week High Breakouts`}},{id:`golden_crossover`,title:`Golden Cross (EMA 50 / 200)`,desc:`Medium to long-term trend reversal`,indicator:`ema_price_50`,route:`/`,queryParams:{addFilter:`ema_price_50`,title:`Golden Cross (EMA 50 / 200)`}},{id:`oversold_reversal`,title:`Oversold RSI Reversal (< 30)`,desc:`Extreme discount bounce candidates`,indicator:`rsi_14`,route:`/`,queryParams:{addFilter:`rsi_14`,title:`Oversold RSI Reversal (< 30)`}},{id:`supertrend_bull`,title:`SuperTrend Bullish Flip`,desc:`Directional trend change confirmation`,indicator:`supertrend_direction_10`,route:`/`,queryParams:{addFilter:`supertrend_direction_10`,title:`SuperTrend Bullish Flip`}},{id:`high_delivery`,title:`High Delivery & Bulk Deals`,desc:`Institutional accumulation signatures`,indicator:`share_volume_profile_delivery`,route:`/`,queryParams:{addFilter:`share_volume_profile_delivery`,title:`High Delivery & Bulk Deals`}},{id:`vcp_coil`,title:`Volatility Contraction (VCP)`,desc:`Tightening range before explosive move`,indicator:`candle_spread`,route:`/`,queryParams:{addFilter:`candle_spread`,title:`Volatility Contraction (VCP)`}}]},{id:`matrix_filters`,label:`Matrix Filters`,route:`/`,icon:p.Activity,description:`Scan stocks using multi-dimensional diagnostic matrix attributes`,items:[{id:`rrg`,title:`Relative Rotation Grade (RRG)`,desc:`Leading, Weakening, Lagging, Improving`,indicator:`rrg`,route:`/`,queryParams:{addFilter:`rrg`,title:`Relative Rotation Grade (RRG)`}},{id:`price_strength`,title:`Price Strength Analysis`,desc:`Outperformance relative to Nifty index`,indicator:`price_strength`,route:`/`,queryParams:{addFilter:`price_strength`,title:`Price Strength Analysis`}},{id:`momentum`,title:`Momentum Diagnostics`,desc:`Rate of change and acceleration index`,indicator:`momentum`,route:`/`,queryParams:{addFilter:`momentum`,title:`Momentum Diagnostics`}},{id:`candle_spread`,title:`Candle Spread & Control`,desc:`Body vs wick dynamics and spread shifts`,indicator:`candle_spread`,route:`/`,queryParams:{addFilter:`candle_spread`,title:`Candle Spread & Control`}},{id:`circuits`,title:`Circuit Chart Diagnostics`,desc:`Upper and lower circuit boundary proximity`,indicator:`circuits`,route:`/`,queryParams:{addFilter:`circuits`,title:`Circuit Chart Diagnostics`}},{id:`ask_bid`,title:`Ask / Bid Ratio Flow`,desc:`Order book aggressive buyer dominance`,indicator:`ask_bid_ratio`,route:`/`,queryParams:{addFilter:`ask_bid_ratio`,title:`Ask / Bid Ratio Flow`}},{id:`fno_oi`,title:`F&O Open Interest Profile`,desc:`Long build-up and short covering shifts`,indicator:`fno_open_interest_profile`,route:`/`,queryParams:{addFilter:`fno_open_interest_profile`,title:`F&O Open Interest Profile`}},{id:`mf_holdings`,title:`Mutual Fund Accumulation`,desc:`Consecutive quarter stake increases`,indicator:`mf_holding`,route:`/`,queryParams:{addFilter:`mf_holding`,title:`Mutual Fund Accumulation`}}]},{id:`technical_indicators`,label:`Indicators`,route:`/`,icon:p.Sliders,description:`Technical condition triggers and mathematical indicator filters`,items:[{id:`sma_20`,title:`Simple Moving Average (SMA 20)`,desc:`20-day trend baseline`,indicator:`sma_price_20`,route:`/`,queryParams:{addFilter:`sma_price_20`,title:`Simple Moving Average (SMA 20)`}},{id:`ema_50`,title:`Exponential Moving Average (EMA 50)`,desc:`50-day momentum baseline`,indicator:`ema_price_50`,route:`/`,queryParams:{addFilter:`ema_price_50`,title:`Exponential Moving Average (EMA 50)`}},{id:`rsi_14`,title:`Relative Strength Index (RSI 14)`,desc:`Momentum speed and oversold levels`,indicator:`rsi_14`,route:`/`,queryParams:{addFilter:`rsi_14`,title:`Relative Strength Index (RSI 14)`}},{id:`macd`,title:`MACD Histogram (12, 26, 9)`,desc:`Zero line and signal line trigger filters`,indicator:`macd_histogram_26`,route:`/`,queryParams:{addFilter:`macd_histogram_26`,title:`MACD Histogram (12, 26, 9)`}},{id:`bollinger`,title:`Bollinger Bands Upper (20, 1)`,desc:`Bandwidth compression & breakouts`,indicator:`bollinger_upper_20_1`,route:`/`,queryParams:{addFilter:`bollinger_upper_20_1`,title:`Bollinger Bands Upper (20, 1)`}},{id:`supertrend`,title:`Supertrend Direction (10, 3)`,desc:`Trend-following trailing stop conditions`,indicator:`supertrend_direction_10`,route:`/`,queryParams:{addFilter:`supertrend_direction_10`,title:`Supertrend Direction (10, 3)`}},{id:`vwap`,title:`Volume Weighted Avg Price (VWAP)`,desc:`Institutional benchmark price filters`,indicator:`vwap`,route:`/`,queryParams:{addFilter:`vwap`,title:`Volume Weighted Avg Price (VWAP)`}},{id:`atr`,title:`Average True Range (ATR 14)`,desc:`Volatility thresholds & range expansion`,indicator:`atr_14`,route:`/`,queryParams:{addFilter:`atr_14`,title:`Average True Range (ATR 14)`}}]},{id:`candlestick_patterns`,label:`Candle Patterns`,route:`/`,icon:p.Sparkles,description:`Algorithmic visual price action formations & reversal structures`,items:[{id:`candle_pattern`,title:`Candle Pattern Detector`,desc:`Algorithmic single and multi-candle patterns`,indicator:`candle_pattern`,route:`/`,queryParams:{addFilter:`candle_pattern`,title:`Candle Pattern Detector`}},{id:`hammer`,title:`Hammer & Inverted Hammer`,desc:`Bullish exhaustion & rejection pins`,indicator:`candle_pattern`,route:`/`,queryParams:{addFilter:`candle_pattern`,pattern:`hammer`,title:`Hammer & Inverted Hammer`}},{id:`engulfing`,title:`Bullish & Bearish Engulfing`,desc:`Complete trend takeover candles`,indicator:`candle_pattern`,route:`/`,queryParams:{addFilter:`candle_pattern`,pattern:`engulfing`,title:`Bullish & Bearish Engulfing`}},{id:`harami`,title:`Bullish & Bearish Harami`,desc:`Inside bar gestation reversals`,indicator:`candle_pattern`,route:`/`,queryParams:{addFilter:`candle_pattern`,pattern:`harami`,title:`Bullish & Bearish Harami`}},{id:`marubozu`,title:`Marubozu Momentum Bars`,desc:`Full-bodied directional conviction`,indicator:`candle_pattern`,route:`/`,queryParams:{addFilter:`candle_pattern`,pattern:`marubozu`,title:`Marubozu Momentum Bars`}},{id:`doji`,title:`Doji & Star Formations`,desc:`Market equilibrium and pending breakouts`,indicator:`candle_pattern`,route:`/`,queryParams:{addFilter:`candle_pattern`,pattern:`doji`,title:`Doji & Star Formations`}}]},{id:`workspaces`,label:`Workspaces & Radar`,route:`/radar`,icon:p.Radio,description:`Saved custom screening presets, live scans, and background monitors`,items:[{id:`radar`,title:`Market Radar Live Feed`,desc:`Auto-refreshing real-time scanner signals`,route:`/radar`},{id:`saved_filters`,title:`Saved Filter Presets`,desc:`Manage and run your saved scanner queries`,route:`/saved-filters`},{id:`custom_screener`,title:`Build New Screener`,desc:`Design custom multi-group scanner rules`,route:`/`}]}],Ve=[{id:`economy`,label:`Economy`,value:`Economy`,dbName:`Economy`,dbId:`7f938e09-cdfa-45b3-a9ce-39f705eb7414`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,icon:p.Globe,description:`Key economic indicators, GDP, inflation, central bank rates & fiscal deficit`,items:[{id:`gdp_growth`,title:`GDP Growth Rate`,desc:`Quarterly economic expansion & GDP trajectories`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,queryParams:{indicator:`gdp_growth`}},{id:`inflation`,title:`Inflation Rate`,desc:`Consumer and wholesale price indices`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,queryParams:{indicator:`inflation`}},{id:`repo_rate`,title:`Repo Rate`,desc:`Monetary policy benchmark lending rates`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,queryParams:{indicator:`repo_rate`}},{id:`gst_collection`,title:`GST Collection`,desc:`Monthly gross indirect and direct tax revenue`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,queryParams:{indicator:`gst_collection`}},{id:`forex_reserves`,title:`Forex Reserves`,desc:`Central bank foreign currency & gold reserves`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,queryParams:{indicator:`forex_reserves`}},{id:`exports`,title:`Exports`,desc:`Monthly merchandise and services exports`,route:`/user/category/Economy/7f938e09-cdfa-45b3-a9ce-39f705eb7414`,queryParams:{indicator:`exports`}}]},{id:`indices`,label:`Indices`,value:`Indices`,dbName:`Indices`,dbId:`d86c85c8-cb56-4b51-be64-f179f32588fd`,route:`/user/category/Indices/d86c85c8-cb56-4b51-be64-f179f32588fd`,icon:p.TrendingUp,description:`Domestic sectoral benchmarks and global equity market indices`,items:[{id:`nifty_50`,title:`NIFTY 50 & SENSEX`,desc:`Benchmark headline market performance`,route:`/user/category/Indices/d86c85c8-cb56-4b51-be64-f179f32588fd`,queryParams:{indicator:`nifty_50`}},{id:`nifty_bank`,title:`NIFTY Bank & Fin Services`,desc:`Banking sector credit and liquidity index`,route:`/user/category/Indices/d86c85c8-cb56-4b51-be64-f179f32588fd`,queryParams:{indicator:`nifty_bank`}},{id:`nifty_it`,title:`NIFTY IT & Tech`,desc:`Technology export sector performance`,route:`/user/category/Indices/d86c85c8-cb56-4b51-be64-f179f32588fd`,queryParams:{indicator:`nifty_it`}},{id:`us_markets`,title:`US Markets (S&P, Nasdaq, DOW)`,desc:`Wall Street tech and broader market leads`,route:`/user/category/Indices/d86c85c8-cb56-4b51-be64-f179f32588fd`,queryParams:{indicator:`us_markets`}},{id:`asian_markets`,title:`Asian Markets (Nikkei, Hang Seng)`,desc:`Far East market sentiment indicators`,route:`/user/category/Indices/d86c85c8-cb56-4b51-be64-f179f32588fd`,queryParams:{indicator:`asian_markets`}}]},{id:`commodity`,label:`Commodities`,value:`Commodity`,dbName:`Commodity`,dbId:`f816b25a-a54f-488b-b46c-adc7af328c9d`,route:`/user/category/Commodity/f816b25a-a54f-488b-b46c-adc7af328c9d`,icon:p.Compass,description:`Energy, precious metals, industrial metals & agri commodity markets`,items:[{id:`brent_crude`,title:`Brent Crude Oil`,desc:`Global energy benchmark price & trends`,route:`/user/category/Commodity/f816b25a-a54f-488b-b46c-adc7af328c9d`,queryParams:{indicator:`brent_crude`}},{id:`gold_silver`,title:`Gold & Silver Futures`,desc:`Safe-haven precious metals performance`,route:`/user/category/Commodity/f816b25a-a54f-488b-b46c-adc7af328c9d`,queryParams:{indicator:`gold_silver`}},{id:`natural_gas`,title:`Natural Gas`,desc:`Henry Hub energy & heating futures`,route:`/user/category/Commodity/f816b25a-a54f-488b-b46c-adc7af328c9d`,queryParams:{indicator:`natural_gas`}},{id:`copper_steel`,title:`Copper & Steel Futures`,desc:`Industrial metals infrastructure demand`,route:`/user/category/Commodity/f816b25a-a54f-488b-b46c-adc7af328c9d`,queryParams:{indicator:`copper_steel`}},{id:`sugar_agri`,title:`Sugar & Soft Commodities`,desc:`Agricultural supply and food price trends`,route:`/user/category/Commodity/f816b25a-a54f-488b-b46c-adc7af328c9d`,queryParams:{indicator:`sugar_agri`}}]},{id:`currency`,label:`Currencies & FX`,value:`Currency`,dbName:`Currency`,dbId:`87853571-5ed2-4b87-b8da-8ac5d35be8be`,route:`/user/category/Currency/87853571-5ed2-4b87-b8da-8ac5d35be8be`,icon:p.Percent,description:`Dollar index, cross-currency pairs & crypto digital assets`,items:[{id:`dxy`,title:`Dollar Index (DXY)`,desc:`Greenback relative strength against basket`,route:`/user/category/Currency/87853571-5ed2-4b87-b8da-8ac5d35be8be`,queryParams:{indicator:`dxy`}},{id:`usdinr`,title:`USD / INR`,desc:`Rupee exchange rate vs US Dollar`,route:`/user/category/Currency/87853571-5ed2-4b87-b8da-8ac5d35be8be`,queryParams:{indicator:`usdinr`}},{id:`usdjpy`,title:`USD / JPY`,desc:`Yen carry trade and Asian FX barometer`,route:`/user/category/Currency/87853571-5ed2-4b87-b8da-8ac5d35be8be`,queryParams:{indicator:`usdjpy`}},{id:`eurinr`,title:`EUR / INR`,desc:`Eurozone cross-rate stability benchmark`,route:`/user/category/Currency/87853571-5ed2-4b87-b8da-8ac5d35be8be`,queryParams:{indicator:`eurinr`}},{id:`crypto_btc`,title:`Bitcoin / Crypto`,desc:`Digital asset liquidity and risk appetite`,route:`/user/category/Currency/87853571-5ed2-4b87-b8da-8ac5d35be8be`,queryParams:{indicator:`crypto_btc`}}]},{id:`bond_market`,label:`Bond Market`,value:`Bond market`,dbName:`Bond market`,dbId:`da0fd588-7c5f-44cd-84ec-90981aa56b10`,route:`/user/category/Bond%20market/da0fd588-7c5f-44cd-84ec-90981aa56b10`,icon:p.Activity,description:`Sovereign bond yields, treasury bills & yield curves`,items:[{id:`india_10y`,title:`10 Yr IND Bond Yield`,desc:`Domestic benchmark sovereign debt rate`,route:`/user/category/Bond%20market/da0fd588-7c5f-44cd-84ec-90981aa56b10`,queryParams:{indicator:`india_10y`}},{id:`us_10y`,title:`10 Yr US Bond Yield`,desc:`Global risk-free benchmark hurdle rate`,route:`/user/category/Bond%20market/da0fd588-7c5f-44cd-84ec-90981aa56b10`,queryParams:{indicator:`us_10y`}},{id:`us_2y`,title:`2 Yr US Bond Yield`,desc:`Short-term policy-sensitive treasury yield`,route:`/user/category/Bond%20market/da0fd588-7c5f-44cd-84ec-90981aa56b10`,queryParams:{indicator:`us_2y`}},{id:`tbills`,title:`91D Treasury Bills Yield`,desc:`Short-term liquidity risk barometer`,route:`/user/category/Bond%20market/da0fd588-7c5f-44cd-84ec-90981aa56b10`,queryParams:{indicator:`tbills`}}]},{id:`funds`,label:`Funds & Flows`,value:`Funds`,dbName:`Funds`,dbId:`acddb03c-9023-4096-9248-e8fe1da70022`,route:`/user/category/Funds/acddb03c-9023-4096-9248-e8fe1da70022`,icon:p.Layers,description:`FPI flows, FDI trends, monthly SIP investments & mutual fund AUM`,items:[{id:`monthly_sip`,title:`Monthly SIP Collection`,desc:`Domestic retail monthly investment inflow`,route:`/user/category/Funds/acddb03c-9023-4096-9248-e8fe1da70022`,queryParams:{indicator:`monthly_sip`}},{id:`fpi_cash`,title:`FPI Cash Equity & Debt`,desc:`Foreign portfolio investment net flows`,route:`/user/category/Funds/acddb03c-9023-4096-9248-e8fe1da70022`,queryParams:{indicator:`fpi_cash`}},{id:`fdi`,title:`State-wise FDI Inflows`,desc:`Long-term direct foreign investment`,route:`/user/category/Funds/acddb03c-9023-4096-9248-e8fe1da70022`,queryParams:{indicator:`fdi`}},{id:`avg_aum`,title:`Avg Agg. AUM with MFs`,desc:`Mutual fund industry total assets`,route:`/user/category/Funds/acddb03c-9023-4096-9248-e8fe1da70022`,queryParams:{indicator:`avg_aum`}}]},{id:`volatility`,label:`Volatility & Breadth`,value:`Volatility`,dbName:`Volatility`,dbId:`2698a695-0b12-46ab-a6e0-87a954b40f66`,route:`/user/category/Volatility/2698a695-0b12-46ab-a6e0-87a954b40f66`,icon:p.Zap,description:`India VIX, CBOE VIX, advance/decline market breadth & put-call ratios`,items:[{id:`india_vix`,title:`INDIA VIX`,desc:`Domestic equity market implied volatility`,route:`/user/category/Volatility/2698a695-0b12-46ab-a6e0-87a954b40f66`,queryParams:{indicator:`india_vix`}},{id:`cboe_vix`,title:`CBOE VIX Volatility`,desc:`Wall Street fear index benchmark`,route:`/user/category/Volatility/2698a695-0b12-46ab-a6e0-87a954b40f66`,queryParams:{indicator:`cboe_vix`}},{id:`pcr_nifty`,title:`PCR - NIFTY 50`,desc:`Put-call ratio sentiment gauge`,route:`/user/category/Volatility/2698a695-0b12-46ab-a6e0-87a954b40f66`,queryParams:{indicator:`pcr_nifty`}},{id:`adv_dec`,title:`Advance/Decline Ratio - NSE`,desc:`Broad market participation & breadth`,route:`/user/category/Volatility/2698a695-0b12-46ab-a6e0-87a954b40f66`,queryParams:{indicator:`adv_dec`}}]},{id:`macro`,label:`Valuation (PE/PB)`,value:`Macro`,dbName:`Macro`,dbId:`77df568a-92b7-41d9-a5f4-6e4f30349fb9`,route:`/user/category/Macro/77df568a-92b7-41d9-a5f4-6e4f30349fb9`,icon:p.BarChart2,description:`Price-to-Earnings (PE) & Price-to-Book (PB) sectoral valuations`,items:[{id:`pe_nifty`,title:`PE - NIFTY 50`,desc:`Trailing price-to-earnings valuation ratio`,route:`/user/category/Macro/77df568a-92b7-41d9-a5f4-6e4f30349fb9`,queryParams:{indicator:`pe_nifty`}},{id:`pb_nifty`,title:`PB - NIFTY 50`,desc:`Price-to-book valuation multiple`,route:`/user/category/Macro/77df568a-92b7-41d9-a5f4-6e4f30349fb9`,queryParams:{indicator:`pb_nifty`}},{id:`pe_bank`,title:`PE - NIFTY Bank`,desc:`Banking sector PE valuation tracker`,route:`/user/category/Macro/77df568a-92b7-41d9-a5f4-6e4f30349fb9`,queryParams:{indicator:`pe_bank`}},{id:`pe_nasdaq`,title:`PE - NASDAQ & DOW`,desc:`US tech and blue-chip PE comparisons`,route:`/user/category/Macro/77df568a-92b7-41d9-a5f4-6e4f30349fb9`,queryParams:{indicator:`pe_nasdaq`}}]}],He=[{id:`option_chains`,label:`Option Chains`,value:`option_chains`,route:`/option-chain`,icon:p.GitFork,description:`Live strike-wise option chain analytics, open interest, IV & Greeks`,items:[{id:`option-chain`,title:`Option Chain`,desc:`Live strike-wise CE/PE open interest, IV & Greeks`,route:`/option-chain`,queryParams:{tab:`chain`}}]},{id:`positions`,label:`Positions`,value:`positions`,route:`/positions`,icon:p.BarChart2,description:`Real-time portfolio positions, MTM monitoring and derivative ledger`,items:[{id:`positions`,title:`Positions`,desc:`Active open positions, MTM and derivative P&L`,route:`/positions`,queryParams:{tab:`active`}}]},{id:`orders`,label:`Orders`,value:`orders`,route:`/orders`,icon:p.ClipboardList,description:`Live order books, multi-leg execution statuses & trade transaction history`,items:[{id:`orders`,title:`Orders`,desc:`Live order book and transaction statuses`,route:`/orders`},{id:`orders-new`,title:`Orders New`,desc:`Advanced multi-leg order entry & execution`,route:`/orders-new`}]},{id:`baskets`,label:`Baskets`,value:`baskets`,route:`/v1/baskets`,icon:p.ShoppingBasket,description:`Multi-asset basket order execution and portfolio basket management`,items:[{id:`v1-baskets`,title:`Baskets`,desc:`Create and execute multi-leg basket orders`,route:`/v1/baskets`}]},{id:`strategy`,label:`Strategy`,value:`strategy`,route:`/strategy-chart`,icon:p.Shuffle,description:`Interactive payoff diagrams and multi-leg risk curves`,items:[{id:`strategy-chart`,title:`Strategy Chart`,desc:`Interactive payoff diagrams and multi-leg risk curves`,route:`/strategy-chart`}]},{id:`settings`,label:`Settings`,value:`settings`,route:`/settings/freeze-quantity`,icon:p.Settings,description:`Freeze quantity thresholds & broker user permissions`,items:[{id:`freeze-quantity`,title:`Freeze Quantity`,desc:`Max freeze quantity limit per underlying`,route:`/settings/freeze-quantity`},{id:`users`,title:`Users`,desc:`Broker account linking and permissions`,route:`/settings/users`}]}],Y={authApiUrl:`https://sso-api.datatokenapi.com/api`,authRedirectUrl:`https://sso.datatokenapi.com`,profileGetter:null,uiTheme:`system`,currentApp:`derivatives`,themeParamName:`theme`,appendThemeParam:!0,urls:{landing:`https://fastr.pro`,sso:`https://sso.datatokenapi.com`,purchase:`https://sso.datatokenapi.com/purchase`,profile:`https://sso.datatokenapi.com/profile`,xray:`https://xray-pro.datatokenapi.com`,scanner:`https://scanner-pro.datatokenapi.com`,charting:`https://chart-pro.datatokenapi.com`,macro:`https://macropulse-pro.datatokenapi.com`,derivatives:`https://derivatives-pro.datatokenapi.com`},apps:{xray:{id:`xray`,name:`Stock X-Ray`,label:`Stock X-Ray`,url:`http://localhost:5173`,icon:p.Activity,bannerImage:`/images/bull_market.png`,badge:`Stock X-Ray`,badgeColor:`text-yellow-400`,footerNote:`Click any section to inspect diagnostic`,menuHeader:`Matrices`,description:`Comprehensive multi-dimensional stock diagnostics & matrix insights for precision trading.`,hasMegaMenu:!0,pages:Re},scanner:{id:`scanner`,name:`Scanner`,label:`Scanner`,url:`http://localhost:3001`,icon:p.Scan,bannerImage:`/images/bull_market.png`,badge:`FASTR SCANNER`,badgeColor:`text-emerald-400`,footerNote:`Click any filter to open in Scanner`,menuHeader:`Filter Groups`,description:`Algorithmic multi-factor stock screening engine with 17+ matrix groups, real-time indicators, and automated radar tracking.`,hasMegaMenu:!0,quickActions:[{id:`saved_filters`,title:`Saved Filters`,icon:p.BookmarkCheck,route:`/saved-filters`,badgeColor:`text-blue-500`},{id:`radar`,title:`Live Radar`,icon:p.Radio,route:`/radar`,badgeColor:`text-emerald-500`}],pages:Be},charting:{id:`charting`,name:`Charting`,label:`Charting`,url:`http://localhost:3002`,icon:p.TrendingUp,bannerImage:`/images/bull_market.png`,badge:`FASTR CHARTING`,badgeColor:`text-blue-400`,footerNote:`Click any item to open in Charting`,menuHeader:`Charting Tools`,description:`Professional multi-timeframe charting with 25+ technical indicators, automated candlestick patterns & conditions.`,hasMegaMenu:!0,pages:ze},derivatives:{id:`derivatives`,name:`Derivatives`,label:`Derivatives`,url:`https://derivatives-test.datatokenapi.com`,icon:p.Layers,bannerImage:`/images/bull_market.png`,badge:`FASTR DERIVATIVES`,badgeColor:`text-amber-500`,footerNote:`Click any item to open module`,menuHeader:`Modules`,description:`Professional options analytics, live chain matrix, systematic strategies & automated execution.`,hasMegaMenu:!0,quickActions:[{id:`positions`,title:`Live Positions`,icon:p.BarChart2,route:`/positions`,badgeColor:`text-blue-500`}],pages:He},macro:{id:`macro`,name:`Macro Pulse`,label:`Macro Pulse`,url:`http://localhost:3000`,icon:p.Globe,bannerImage:`/images/bull_market.png`,badge:`FASTR MACRO PULSE`,badgeColor:`text-purple-400`,footerNote:`Click any item to open in Macro Pulse`,menuHeader:`Macro Sectors`,description:`Macroeconomic indicators, global market trends, commodity prices, institutional flows & policy trackers.`,hasMegaMenu:!0,pages:Ve}}};function Ue(e={}){if(!e)return{...Y};let t={...Y.urls,...e.urls||{}},n={};if(Array.isArray(e.apps))n=e.apps.reduce((e,t)=>{let n=Y.apps[t.id]||{};return e[t.id]={...n,...t,pages:t.pages||t.categories||n.pages||[]},e},{});else if(e.apps&&typeof e.apps==`object`){let t=Array.from(new Set([...Object.keys(Y.apps),...Object.keys(e.apps)]));for(let r of t){let t=Y.apps[r]||{},i=e.apps[r];i?n[r]={...t,...i,id:i.id||r,pages:i.pages||i.categories||t.pages||[]}:n[r]={...t}}}else n={...Y.apps};return{...Y,...e,urls:t,apps:n}}function X(e,t={}){return e?c.default.isValidElement(e)?c.default.cloneElement(e,{...t,className:`${e.props.className||``} ${t.className||``}`.trim()}):typeof e==`function`||typeof e==`object`&&e.$$typeof?(0,l.jsx)(e,{...t}):typeof e==`string`?(0,l.jsx)(`span`,{className:t.className,children:e}):null:null}function Z({baseUrl:e=``,route:t=``,href:n=``,queryParams:r={},params:i={},hash:a=``,currentTheme:o=``,appendTheme:s=!0,themeParamName:c=`theme`,isCurrentApp:l=!1}){let u=n||t||`/`;!l&&e&&!u.startsWith(`http://`)&&!u.startsWith(`https://`)&&(u=`${e.replace(/\/+$/,``)}${u.startsWith(`/`)?u:`/${u}`}`);try{let e=typeof window<`u`&&window.location?.origin?window.location.origin:`http://localhost`,t=u.startsWith(`http://`)||u.startsWith(`https://`),n=new URL(u,e),l={...r||{},...i||{}};return Object.entries(l).forEach(([e,t])=>{t!=null&&t!==``&&n.searchParams.set(e,String(t))}),s&&o&&n.searchParams.set(c,o),a&&(n.hash=a.startsWith(`#`)?a:`#${a}`),t?n.toString():n.pathname+n.search+n.hash}catch{return u}}function We(e,t,n=`theme`){if(!e||e.startsWith(`#`)||e.startsWith(`javascript:`))return e;try{let r=typeof window<`u`&&window.location?.origin?window.location.origin:`http://localhost`,i=e.startsWith(`/`),a=new URL(e,r);return t&&a.searchParams.set(n,t),(i?a.pathname+a.search+a.hash:a.toString()).replace(/([^:]\/)\/+/g,`$1`)}catch{return e}}function Ge({app:e,type:t=`macro`,config:n,currentApp:r=`derivatives`,isDarkMode:i=!1,isSubscribed:a=!0,purchaseUrl:o=``,categoryData:s=[],onClose:u,onNavigate:d,urls:f={},theme:m=``,onSelectCandleType:h,onSelectIndicator:g,onSelectPattern:_,onSelectCondition:v,onSelectInterval:y}){let b=e||(n?.apps?n.apps[t]:null)||{id:t},x=b.id||t,S=b.name||b.label||x,C=b.url||f[x]||``,w=r===x,ee=b.bannerImage||`/images/bull_market.png`,T=b.badge||S,E=b.badgeColor||`text-primary`,D=b.description||``,O=b.menuHeader||b.categoriesHeader||`Navigation`,k=b.footerNote||``,te=b.quickActions||[],A=b.pages||b.categories||[],[j,M]=(0,c.useState)(()=>A.length>0?A[0]:null);(0,c.useEffect)(()=>{A.length>0?M(A[0]):M(null)},[x,A]);let N=(e,t=`/`)=>Z({baseUrl:C,route:e.route||t,href:e.href,queryParams:e.queryParams,params:e.params,hash:e.hash,currentTheme:m,appendTheme:n?.appendThemeParam!==!1,themeParamName:n?.themeParamName||`theme`,isCurrentApp:w}),P=(0,c.useMemo)(()=>Z({baseUrl:C,route:b.route||`/`,href:b.href,queryParams:b.queryParams,params:b.params,currentTheme:m,appendTheme:n?.appendThemeParam!==!1,themeParamName:n?.themeParamName||`theme`,isCurrentApp:w}),[C,b,m,n,w]),F=(e,t,n,r)=>{if(!(e.metaKey||e.ctrlKey||e.shiftKey||e.button===1)){if(a===!1){e.preventDefault(),u&&u();let t=o||`${f.sso||`http://localhost:3123`}/purchase?app=${x}`;window.location.assign(t);return}if(n){e.preventDefault(),u&&u(),n(r,j,b);return}if(w&&x===`charting`&&r){if(j?.type===`candleType`&&h){e.preventDefault(),h(r.id),u&&u();return}if(j?.type===`indicator`&&g){e.preventDefault(),g(r.id),u&&u();return}if(j?.type===`pattern`&&_){e.preventDefault(),_(r.id),u&&u();return}if(j?.type===`condition`&&v){e.preventDefault(),v(r.id),u&&u();return}if(j?.type===`timeframe`&&y){e.preventDefault(),y(r.id),u&&u();return}}if(w&&x===`xray`&&r?.hash){let e=r.hash||r.id;window.dispatchEvent(new CustomEvent(`xray:scroll-to-section`,{detail:{sectionId:e}}));let t=0,n=(r=0)=>{let i=document.getElementById(e);if(i){let e=i.getBoundingClientRect().top+window.pageYOffset-75;window.scrollTo({top:Math.max(0,e),behavior:`smooth`}),r<3&&setTimeout(()=>n(r+1),400)}else t<30&&(t++,setTimeout(()=>n(r),100))};setTimeout(()=>n(0),60)}w&&x===`scanner`&&r?.indicator&&window.dispatchEvent(new CustomEvent(`scanner:add-filter`,{detail:{indicator:r.indicator,id:r.id,title:r.title}})),w&&d?(e.preventDefault(),u&&u(),d(t,b,r)):u&&u()}},I=j&&(j.sections||j.items)||[];return(0,l.jsx)(`div`,{className:`bg-popover text-popover-foreground border-border w-285 max-w-[96vw] rounded-xl border p-4 shadow-2xl transition-all`,onMouseDown:e=>e.stopPropagation(),children:(0,l.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-[1fr_1fr_3fr]`,children:[(0,l.jsxs)(`div`,{className:`border-border flex flex-col justify-between border-b pr-0 pb-4 lg:border-r lg:border-b-0 lg:pr-4 lg:pb-0`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(`a`,{href:P,onClick:e=>F(e,P,b.onClick,b),className:`group border-border bg-muted relative block aspect-16/10 overflow-hidden rounded-lg border shadow-xs`,children:[ee&&(0,l.jsx)(`img`,{src:ee,alt:T,className:`h-full w-full object-cover transition-transform duration-500 group-hover:scale-105`,onError:e=>{e.target.style.display=`none`}}),(0,l.jsx)(`div`,{className:`absolute inset-0 flex items-end bg-linear-to-t from-black/75 via-black/20 to-transparent p-2.5`,children:(0,l.jsxs)(`span`,{className:`border-border/40 bg-background/80 text-foreground inline-flex items-center gap-1.5 rounded-md border px-2 py-0.5 text-[10px] font-bold tracking-wider uppercase backdrop-blur-xs`,children:[X(b.icon,{className:`size-3.5 ${E}`}),(0,l.jsx)(`span`,{children:T})]})})]}),D&&(0,l.jsx)(`p`,{className:`text-muted-foreground mt-3 text-xs leading-relaxed`,children:D})]}),te.length>0?(0,l.jsx)(`div`,{className:`flex flex-col gap-1.5 pt-3`,children:te.map(e=>{let t=N(e,e.route||`/`);return(0,l.jsxs)(`a`,{href:t,onClick:n=>F(n,t,e.onClick,e),className:`border-border/60 bg-muted/50 hover:bg-accent hover:text-accent-foreground text-foreground group flex w-full cursor-pointer items-center justify-between rounded-lg border px-2.5 py-1.5 text-xs font-semibold transition-colors`,children:[(0,l.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[X(e.icon,{className:`size-3.5 ${e.badgeColor||`text-primary`}`}),(0,l.jsx)(`span`,{children:e.title||e.label})]}),(0,l.jsx)(p.ArrowRight,{className:`text-muted-foreground group-hover:text-foreground size-3 transition-transform group-hover:translate-x-0.5`})]},e.id)})}):k?(0,l.jsx)(`div`,{className:`text-muted-foreground text-[11px] font-medium`,children:k}):null]}),(0,l.jsx)(`div`,{className:`border-border flex flex-col justify-between border-b pr-0 pb-3 lg:border-r lg:border-b-0 lg:pr-4 lg:pb-0`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`border-border mb-3 border-b pb-3`,children:(0,l.jsx)(`span`,{className:`text-muted-foreground text-xs font-bold`,children:O})}),(0,l.jsx)(`div`,{className:`flex flex-col gap-1`,children:A.map(e=>{let t=j&&j.id===e.id,n=N(e,e.route||`/${e.value||e.id}`);return(0,l.jsxs)(`a`,{href:n,onClick:t=>F(t,n,e.onClick,e),onMouseEnter:()=>M(e),className:q(`flex w-full cursor-pointer items-center justify-between rounded-lg px-3 py-2 text-left text-xs font-medium transition-all select-none sm:text-sm`,t?`bg-primary text-primary-foreground font-semibold shadow-xs`:`text-muted-foreground hover:bg-accent hover:text-accent-foreground`),children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[X(e.icon,{className:q(`size-4 shrink-0`,t?`text-primary-foreground`:`text-muted-foreground group-hover:text-foreground`)}),(0,l.jsx)(`span`,{children:e.label||e.title||e.name})]}),(0,l.jsx)(p.ChevronRight,{className:q(`size-3.5 transition-transform`,t?`opacity-100`:`opacity-0`)})]},e.id)})})]})}),(0,l.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[j&&(0,l.jsx)(`div`,{className:`border-border mb-3 flex items-center justify-between border-b pb-3`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(`h3`,{className:`text-foreground text-sm font-bold sm:text-base`,children:j.label||j.title}),(0,l.jsxs)(`span`,{className:`border-border bg-muted text-muted-foreground rounded-full border px-2 py-0.5 text-[11px] font-medium`,children:[I.length,` Options`]})]}),j.description&&(0,l.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:j.description})]})}),(0,l.jsx)(`div`,{className:`flex-1`,children:(0,l.jsx)(`div`,{className:`no-scrollbar grid max-h-85 grid-cols-1 gap-2.5 overflow-y-auto pr-1 sm:grid-cols-2 lg:grid-cols-3`,children:I.map(e=>{let t=N(e,j?.route||`/`);return(0,l.jsxs)(`a`,{href:t,onClick:n=>F(n,t,e.onClick,e),className:`group border-border bg-card hover:bg-accent/60 hover:border-primary/40 flex min-h-18 cursor-pointer flex-col justify-between rounded-lg border p-3 text-left shadow-xs transition-all`,children:[(0,l.jsxs)(`div`,{className:`mb-1.5 flex items-start justify-between gap-1.5`,children:[(0,l.jsx)(`span`,{className:`text-card-foreground group-hover:text-accent-foreground line-clamp-2 text-xs leading-snug font-semibold`,children:e.title||e.name||e.label}),(0,l.jsx)(p.ArrowRight,{className:`text-muted-foreground group-hover:text-primary mt-0.5 size-3 shrink-0 transition-all group-hover:translate-x-0.5`})]}),(0,l.jsx)(`span`,{className:`text-muted-foreground line-clamp-1 text-[10px] font-medium`,children:e.desc||e.description||`Inspect →`})]},e.id)})})})]})]})})}function Ke(e){if(!e)return``;try{let t=new Date(e);return isNaN(t.getTime())?e:t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}catch{return e}}function qe({config:e,authApiUrl:t,authRedirectUrl:n,profileGetter:r,uiTheme:i,apps:a,user:o,logout:s,theme:u,setTheme:f,currentApp:m,navigate:g,onNavigate:_,urls:v={},logo:y,onLogoClick:b,categoryData:x=[],chartingCallbacks:S={},products:C,extraRightContent:w,className:ee}){let T=(0,c.useMemo)(()=>{let o={...t?{authApiUrl:t}:{},...n?{authRedirectUrl:n}:{},...r?{profileGetter:r}:{},...i?{uiTheme:i}:{},...a?{apps:a}:{},...m?{currentApp:m}:{},...v&&Object.keys(v).length>0?{urls:v}:{}};return Ue({...e||{},...o})},[e,t,n,r,i,a,m,v]),E=m||T.currentApp||`derivatives`,D=(T.authApiUrl||`https://sso-api.datatokenapi.com/api`).replace(/\/+$/,``),O=(T.authRedirectUrl||T.urls?.sso||`https://sso.datatokenapi.com`).replace(/\/+$/,``),k=r||T.profileGetter,[te,A]=(0,c.useState)(null),[j,M]=(0,c.useState)(!1);(0,c.useEffect)(()=>{if(o===void 0&&T.user===void 0){if(typeof k==`function`)M(!0),Promise.resolve(k()).then(e=>{A(e?.data||e?.user||e)}).catch(e=>{console.warn(`[GlobalHeader] profileGetter error:`,e)}).finally(()=>{M(!1)});else if(D&&typeof window<`u`){M(!0);let e=D.endsWith(`/api`)?`${D}/auth/me`:`${D}/api/auth/me`,t=D.endsWith(`/api`)?`${D}/auth/profile`:`${D}/api/auth/profile`;fetch(e,{credentials:`include`}).then(e=>e.ok?e.json():fetch(t,{credentials:`include`}).then(e=>e.ok?e.json():null)).then(e=>{e&&A(e?.data||e?.user||e)}).catch(()=>{}).finally(()=>M(!1))}}},[o,T.user,k,D]);let N=o===void 0?T.user===void 0?te:T.user:o,P=e=>{let t=N?.apps||N?.all_apps||[],n=(e||``).toLowerCase().replace(/[^a-z0-9]/g,``);return t.find(e=>{let t=(e.code||``).toLowerCase().replace(/[^a-z0-9]/g,``),r=(e.name||``).toLowerCase().replace(/[^a-z0-9]/g,``);return n.includes(`scanner`)&&(t.includes(`scanner`)||r.includes(`scanner`))||n.includes(`chart`)&&(t.includes(`chart`)||r.includes(`chart`))||n.includes(`deriv`)&&(t.includes(`deriv`)||r.includes(`deriv`))||n.includes(`macro`)&&(t.includes(`macro`)||r.includes(`macro`))||n.includes(`xray`)&&(t.includes(`xray`)||r.includes(`xray`)||r.includes(`stockxray`)||r.includes(`stock-x-ray`))||r===n||t===n})},[F,I]=(0,c.useState)(()=>typeof window<`u`?localStorage.getItem(`theme`)||T.uiTheme||`system`:T.uiTheme||`system`),L=u===void 0?F:u,ne=e=>{f?f(e):(I(e),typeof window<`u`&&(localStorage.setItem(`theme`,e),e===`dark`?document.documentElement.classList.add(`dark`):e===`light`?document.documentElement.classList.remove(`dark`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?document.documentElement.classList.add(`dark`):document.documentElement.classList.remove(`dark`)))},[re,ie]=(0,c.useState)(()=>typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches);(0,c.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=e=>ie(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let ae=L===`dark`||L===`system`&&re,[R,z]=(0,c.useState)(!1),[oe,B]=(0,c.useState)(``),[se,V]=(0,c.useState)(null),H=(0,c.useRef)(null),ce=T.urls?.profile||`${O}/profile`,U=T.urls?.purchase||`${O}/purchase`,W=T.urls?.landing||`http://localhost:3005`,G=e=>{let t=P(e);return t&&t.id?`${U}?app_id=${t.id}`:`${U}?app=${e}`},le=e=>{if(!N||N?.role===`superadmin`||N?.is_superadmin)return!0;let t=(e||``).toLowerCase().replace(/[^a-z0-9]/g,``),n=N?.subscriptions;if(n&&!Array.isArray(n)&&typeof n==`object`)for(let[e,r]of Object.entries(n)){let n=e.toLowerCase().replace(/[^a-z0-9]/g,``);if(t.includes(`scanner`)&&n.includes(`scanner`)||t.includes(`chart`)&&n.includes(`chart`)||t.includes(`deriv`)&&n.includes(`deriv`)||t.includes(`macro`)&&n.includes(`macro`)||t.includes(`xray`)&&(n.includes(`xray`)||n.includes(`stockxray`))||n===t){let e=typeof r==`object`?r?.status:r;if(e===`active`||e===`expiring_soon`)return!0}}else if(Array.isArray(n)&&n.length>0)for(let e of n){let n=(e?.app_name||e?.name||``).toLowerCase().replace(/[^a-z0-9]/g,``),r=(e?.app_code||e?.code||``).toLowerCase().replace(/[^a-z0-9]/g,``);if(t.includes(`scanner`)&&(n.includes(`scanner`)||r.includes(`scanner`))||t.includes(`chart`)&&(n.includes(`chart`)||r.includes(`chart`))||t.includes(`deriv`)&&(n.includes(`deriv`)||r.includes(`deriv`))||t.includes(`macro`)&&(n.includes(`macro`)||r.includes(`macro`))||t.includes(`xray`)&&(n.includes(`xray`)||n.includes(`stockxray`)||r.includes(`xray`))||n===t||r===t){let t=e?.status||e?.subscription_status;if(t===`active`||t===`expiring_soon`)return!0}}let r=P(e);return r?[`superadmin`,`admin`,`staff`].includes(r.role)?!0:r.subscription_status===`active`||r.subscription_status===`expiring_soon`||r.is_subscribed===!0:N?.subscription?.status===`active`||N?.subscription?.status===`expiring_soon`},ue=()=>{let e=N?.fullName||N?.full_name||N?.name;if(e&&typeof e==`string`&&e.trim()&&!e.includes(`@`))return e.trim();if(N?.email&&typeof N.email==`string`){let e=N.email.split(`@`)[0].replace(/[._0-9+-]+/g,` `).trim();if(e)return e.split(/\s+/).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}return e||`User`},K=(e,t,n)=>{_?_(e,t,n):g?g(e):window.location.assign(e)},de=()=>{let e=s||T.logout;e?e():window.location.assign(`${O}/logout`)},fe=(0,c.useMemo)(()=>{if(C)return C;let e=T.apps||{};return(Array.isArray(e)?e:Object.entries(e).map(([e,t])=>({id:e,...t}))).map(e=>{let t=e.id,n=e.name||e.label||t,r=e.hasMegaMenu!==!1&&!!(e.pages?.length||e.categories?.length),i=P(t),a=e.url||T.urls?.[t]||i?.app_url||``,o=Z({baseUrl:a,route:e.route||`/`,href:e.href,queryParams:e.queryParams,params:e.params,currentTheme:L,appendTheme:T.appendThemeParam!==!1,themeParamName:T.themeParamName||`theme`,isCurrentApp:t===E});return{id:t,name:n,icon:e.icon,isActive:t===E,hasMegaMenu:r,href:o,rawApp:{...e,url:a}}})},[C,T.apps,T.urls,T.appendThemeParam,T.themeParamName,E,L,N]),pe=(e,t)=>{let n=t.rawApp||{};if(n.onClick){e.preventDefault(),n.onClick(n);return}if(t.id!==E&&!le(t.id)){e.preventDefault(),B(``),window.location.assign(G(t.id));return}t.id===`derivatives`?(e.preventDefault(),B(e=>e===`derivatives`?``:`derivatives`),K(`/positions`,n,t)):t.id===E&&(_||g)&&(e.preventDefault(),B(``),K(t.href,n,t))};return(0,l.jsxs)(`header`,{className:q(`bg-background sticky top-0 z-50 w-full border-b`,ee),children:[(0,l.jsxs)(`div`,{className:`relative flex h-10 w-full items-center justify-between gap-4 px-3 sm:h-12 sm:px-4`,children:[(0,l.jsxs)(`div`,{className:`no-scrollbar flex items-center gap-4 overflow-x-auto py-1 lg:gap-6`,children:[(0,l.jsx)(`a`,{href:W,className:`mr-1 flex shrink-0 cursor-pointer items-center gap-1.5 select-none`,onClick:e=>{e.metaKey||e.ctrlKey||e.shiftKey||e.button===1||b&&(e.preventDefault(),b())},children:y||(0,l.jsx)(h,{className:`h-9 w-auto sm:h-10`,isDarkMode:ae})}),(0,l.jsxs)(d.NavigationMenu.Root,{value:oe,onValueChange:B,"data-slot":`navigation-menu`,className:`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,children:[(0,l.jsx)(Te,{className:`gap-0`,children:fe.map((e,t)=>{let n=e.rawApp||e;return e.hasMegaMenu?(0,l.jsxs)(Ee,{value:e.id,children:[(0,l.jsxs)(Oe,{ref:t===0?H:void 0,className:q(`gap-1.5`,e.isActive&&`bg-primary hover:bg-primary! hover:text-primary-foreground! text-primary-foreground font-semibold`),children:[X(e.icon,{className:`size-4`}),(0,l.jsx)(`span`,{children:e.name})]}),(0,l.jsx)(ke,{className:`p-0 rounded-xl overflow-hidden`,children:(0,l.jsx)(Ge,{app:n,type:e.id,config:T,currentApp:E,isDarkMode:ae,isSubscribed:le(e.id),purchaseUrl:G(e.id),categoryData:x,theme:L,onClose:()=>B(``),onNavigate:K,urls:T.urls,...S})})]},e.id):(0,l.jsx)(Ee,{value:e.id,children:(0,l.jsx)(je,{asChild:!0,children:(0,l.jsxs)(`a`,{ref:t===0?H:void 0,href:e.href||`/`,onClick:t=>{t.metaKey||t.ctrlKey||t.shiftKey||t.button===1||pe(t,e)},className:q(De(),`cursor-pointer gap-1.5`,e.isActive&&`bg-accent text-accent-foreground font-semibold`),children:[X(e.icon,{className:`size-4`}),(0,l.jsx)(`span`,{children:e.name})]})})},e.id)})}),(0,l.jsx)(Ae,{align:`start`,anchor:H})]})]}),(0,l.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[w,(0,l.jsxs)(ge,{children:[(0,l.jsx)(ve,{className:`hover:bg-accent hover:text-accent-foreground text-muted-foreground flex size-8 cursor-pointer items-center justify-center rounded-lg transition-colors sm:size-8.5`,title:`Theme: ${L===`system`?`System Default`:L===`dark`?`Dark`:`Light`}`,children:L===`system`?(0,l.jsx)(p.Monitor,{className:`size-4.5`}):ae?(0,l.jsx)(p.Sun,{className:`size-4.5`}):(0,l.jsx)(p.Moon,{className:`size-4.5`})}),(0,l.jsx)(ye,{align:`end`,className:`w-44`,children:[{id:`light`,label:`Light`,icon:p.Sun},{id:`dark`,label:`Dark`,icon:p.Moon},{id:`system`,label:`System Default`,icon:p.Monitor}].map(e=>{let t=e.icon,n=L===e.id;return(0,l.jsxs)(Se,{onClick:()=>ne(e.id),className:`cursor-pointer justify-between`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(t,{className:`size-4`}),(0,l.jsx)(`span`,{children:e.label})]}),n&&(0,l.jsx)(p.Check,{className:`size-3.5`})]},e.id)})})]}),(0,l.jsxs)(Ne,{open:R,onOpenChange:z,children:[(0,l.jsx)(Pe,{className:`hover:bg-accent hover:text-accent-foreground text-foreground flex cursor-pointer justify-center items-center size-10! gap-2 rounded-full p-0 transition-colors select-none`,children:(0,l.jsxs)(`div`,{className:`relative`,children:[(0,l.jsx)(`div`,{className:`border-border/60 bg-muted flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-full border`,children:N?.profile_image_url?(0,l.jsx)(`img`,{src:N.profile_image_url,alt:ue(),className:`size-full object-cover`,referrerPolicy:`no-referrer`,onError:e=>{e.currentTarget.style.display=`none`}}):(0,l.jsx)(p.User,{className:`text-muted-foreground size-3.5 sm:size-4`})}),N&&(0,l.jsx)(`span`,{className:`border-background absolute bottom-0 right-0 size-2.5 rounded-full border-2 bg-emerald-500`})]})}),(0,l.jsxs)(Fe,{className:`border-border bg-popover text-popover-foreground w-84 gap-0! rounded-xl p-0 shadow-2xl`,align:`end`,children:[(0,l.jsxs)(`div`,{className:`border-border/60 bg-muted/20 border-b p-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,l.jsxs)(`div`,{className:`relative shrink-0`,children:[(0,l.jsx)(`div`,{className:`border-border bg-muted flex size-14 items-center justify-center overflow-hidden rounded-full border shadow-xs`,children:N?.profile_image_url?(0,l.jsx)(`img`,{src:N.profile_image_url,alt:ue(),className:`size-full object-cover`,referrerPolicy:`no-referrer`}):(0,l.jsx)(p.User,{className:`text-muted-foreground size-6`})}),(0,l.jsx)(`span`,{className:`border-popover absolute bottom-0 right-0 size-3 rounded-full border-2 bg-emerald-500`})]}),(0,l.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-1.5`,children:[(0,l.jsx)(`p`,{className:`text-foreground truncate text-sm font-bold tracking-tight`,children:ue()}),(0,l.jsx)(`span`,{className:`border-border bg-muted text-muted-foreground shrink-0 rounded-md border px-1.5 py-0.5 text-[10px] font-semibold capitalize`,children:N?.is_superadmin?`Superadmin`:N?.role||`User`})]}),(0,l.jsx)(`p`,{className:`text-muted-foreground truncate text-xs font-medium`,children:N?.email||``})]})]}),(0,l.jsxs)(`div`,{className:` bg-primary/5 mt-3 rounded-lg p-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,l.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,l.jsx)(`span`,{className:`text-foreground text-xs font-bold`,children:N?.subscription?.plan_name?`${N.subscription.plan_name} Plan`:`Fastr Pro Member`})}),(0,l.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] text-emerald-600 dark:text-emerald-400`,children:[(0,l.jsx)(p.Check,{className:`size-3 text-emerald-500`}),N?.subscription?.status?N.subscription.status.toUpperCase():`ACTIVE`]})]}),N?.subscription?.expiry_date&&(0,l.jsxs)(`div`,{className:`text-muted-foreground mt-2 flex items-center justify-between text-[11px]`,children:[(0,l.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,l.jsx)(p.Calendar,{className:`text-muted-foreground/70 size-3`}),`Renews: `,Ke(N.subscription.expiry_date)]}),(0,l.jsx)(`a`,{href:U,className:`text-primary hover:text-primary/80 font-semibold transition-colors hover:underline`,children:`Manage →`})]})]})]}),(0,l.jsxs)(`div`,{className:`border-border/60 border-b p-3`,children:[(0,l.jsxs)(`div`,{className:`mb-2 flex items-center justify-between px-1`,children:[(0,l.jsx)(`span`,{className:`text-muted-foreground text-[11px] font-bold`,children:`My Applications`}),(0,l.jsxs)(`span`,{className:`text-muted-foreground text-[10px]`,children:[fe.filter(e=>le(e.id)).length,`/`,fe.length,` Active`]})]}),(0,l.jsx)(`div`,{className:`grid grid-cols-2 gap-1.5`,children:fe.map(e=>{let t=le(e.id);return(0,l.jsxs)(`a`,{href:e.href,onClick:n=>{if(!(n.metaKey||n.ctrlKey||n.shiftKey||n.button===1)){if(e.id===E){n.preventDefault(),z(!1);return}t||(n.preventDefault(),z(!1),window.location.assign(G(e.id)))}},className:q(`flex items-center justify-between rounded-lg border p-2 text-xs transition-all`,e.isActive?`border-primary/10 bg-primary/10 text-primary shadow-2xs font-bold`:t?`border-border/50 bg-card text-foreground hover:bg-accent hover:border-border`:`border-border/60 bg-muted/30 text-muted-foreground hover:bg-muted/60 border-dashed`),children:[(0,l.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[X(e.icon,{className:q(`size-3.5 shrink-0`,e.isActive?`text-primary`:t?`text-foreground`:`text-muted-foreground`)}),(0,l.jsx)(`span`,{className:`truncate`,children:e.name})]}),e.isActive?(0,l.jsx)(`span`,{className:`bg-primary size-1.5 rounded-full`}):t?(0,l.jsx)(p.ExternalLink,{className:`text-muted-foreground size-2.5 opacity-60`}):(0,l.jsx)(`span`,{className:`text-[9px] font-bold text-amber-500 uppercase`,children:`Buy`})]},e.id)})})]}),(0,l.jsxs)(`div`,{className:`space-y-1 p-2`,children:[(0,l.jsxs)(`a`,{href:ce,className:`hover:bg-accent hover:text-accent-foreground text-foreground group flex w-full items-center justify-between rounded-lg px-2.5 py-2 text-xs font-semibold transition-colors`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(p.User,{className:`text-muted-foreground group-hover:text-foreground size-4 transition-colors`}),(0,l.jsx)(`span`,{children:`Profile & Account Settings`})]}),(0,l.jsx)(p.ChevronRight,{className:`text-muted-foreground/60 group-hover:text-foreground size-3.5 transition-transform group-hover:translate-x-0.5`})]}),(0,l.jsxs)(`a`,{href:U,className:`hover:bg-accent hover:text-accent-foreground text-foreground group flex w-full items-center justify-between rounded-lg px-2.5 py-2 text-xs font-semibold transition-colors`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(p.CreditCard,{className:`text-muted-foreground group-hover:text-foreground size-4 transition-colors`}),(0,l.jsx)(`span`,{children:`Billing & Subscriptions`})]}),(0,l.jsx)(p.ChevronRight,{className:`text-muted-foreground/60 group-hover:text-foreground size-3.5 transition-transform group-hover:translate-x-0.5`})]})]}),(0,l.jsx)(`div`,{className:`border-border/60 my-1 border-t p-2`,children:(0,l.jsx)(`button`,{onClick:de,className:`text-destructive hover:bg-destructive/10 flex w-full cursor-pointer items-center justify-between rounded-lg px-2.5 py-2 text-xs font-semibold transition-colors`,children:(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(p.LogOut,{className:`size-4`}),(0,l.jsx)(`span`,{children:`Sign Out`})]})})})]})]})]})]}),se&&(0,l.jsx)(`div`,{className:`animate-in fade-in fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4 backdrop-blur-xs duration-200`,onClick:()=>V(null),children:(0,l.jsxs)(`div`,{className:`animate-in zoom-in-95 bg-card text-card-foreground border-border flex w-full max-w-md transform flex-col items-center rounded-xl border p-8 text-center shadow-2xl transition-all duration-200 sm:max-w-lg sm:p-10`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(`div`,{className:`bg-destructive/10 text-destructive mb-6 flex h-16 w-16 items-center justify-center rounded-xl`,children:(0,l.jsxs)(`svg`,{width:`28`,height:`28`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,l.jsx)(`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}),(0,l.jsx)(`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`})]})}),(0,l.jsxs)(`h2`,{className:`text-foreground mb-2 text-xl font-bold tracking-tight sm:text-2xl`,children:[se.name,` isn't included in your current subscription.`]}),(0,l.jsxs)(`p`,{className:`text-muted-foreground mb-8 max-w-sm text-sm sm:text-base`,children:[`Add `,se.name,` to your subscription to unlock full access.`]}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>{let e=N?.apps?.find(e=>(e.code||``).toLowerCase().includes(se.id.toLowerCase())||(e.name||``).toLowerCase().includes(se.name.toLowerCase())),t=e?.id?`${U}?app_id=${e.id}`:`${U}?app=${se.id}`;window.location.assign(t)},className:`bg-primary text-primary-foreground hover:bg-primary/90 w-full max-w-xs cursor-pointer rounded-xl px-6 py-3 text-sm font-medium shadow-sm transition-all sm:text-base`,children:`View Plans`}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>V(null),className:`text-muted-foreground hover:text-foreground mt-5 cursor-pointer text-sm font-medium transition-colors`,children:`Maybe Later`})]})})]})}var Je=qe;exports.DropdownMenu=ge,exports.DropdownMenuContent=ye,exports.DropdownMenuGroup=be,exports.DropdownMenuItem=Se,exports.DropdownMenuLabel=xe,exports.DropdownMenuPortal=_e,exports.DropdownMenuSeparator=Ce,exports.DropdownMenuTrigger=ve,exports.FasterProLogo=h,exports.GlobalHeader=qe,exports.GlobalMegaMenu=Ge,exports.NavigationMenu=we,exports.NavigationMenuContent=ke,exports.NavigationMenuIndicator=Me,exports.NavigationMenuItem=Ee,exports.NavigationMenuLink=je,exports.NavigationMenuList=Te,exports.NavigationMenuPositioner=Ae,exports.NavigationMenuTrigger=Oe,exports.Popover=Ne,exports.PopoverContent=Fe,exports.PopoverDescription=Le,exports.PopoverHeader=Ie,exports.PopoverTitle=J,exports.PopoverTrigger=Pe,exports.buildItemUrl=Z,exports.chartingCategories=ze,exports.cn=q,exports.createHeaderConfig=Ue,exports.default=Je,exports.defaultHeaderConfig=Y,exports.derivativesCategories=He,exports.macroPulseCategories=Ve,exports.navigationMenuTriggerStyle=De,exports.renderIcon=X,exports.scannerCategories=Be,exports.stockXRayCategories=Re,exports.withThemeParam=We;
|
|
5
|
+
//# sourceMappingURL=index.cjs.map
|