@pg-boss/dashboard 1.1.3 → 1.2.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.
Files changed (71) hide show
  1. package/README.md +28 -0
  2. package/bin/cli.js +2 -2
  3. package/build/client/assets/MenuTrigger-CkqlwCsV.js +1 -0
  4. package/build/client/assets/_index-CNX0dPQi.js +1 -0
  5. package/build/client/assets/badge-DFReduIj.js +1 -0
  6. package/build/client/assets/button-CafwM-5D.js +1 -0
  7. package/build/client/assets/check-BePyOaOM.js +1 -0
  8. package/build/client/assets/chevron-down-C8oENez_.js +1 -0
  9. package/build/client/assets/chevron-right-B0sTJmdc.js +1 -0
  10. package/build/client/assets/createLucideIcon-oZ0wXCaF.js +1 -0
  11. package/build/client/assets/db-link-DISwKBYZ.js +1 -0
  12. package/build/client/assets/dialog-IBPuwpas.js +1 -0
  13. package/build/client/assets/entry.client-6KjasuHH.js +9 -0
  14. package/build/client/assets/error-card-2aexlkmv.js +1 -0
  15. package/build/client/assets/filter-select-Dln9CAM3.js +1 -0
  16. package/build/client/assets/jobs-BjoGjnb0.js +1 -0
  17. package/build/client/assets/jsx-runtime-DcdjQ3vN.js +26 -0
  18. package/build/client/assets/manifest-e6a94de0.js +1 -0
  19. package/build/client/assets/pagination-5gEldBFM.js +1 -0
  20. package/build/client/assets/queues._index-BM3eKnSr.js +1 -0
  21. package/build/client/assets/queues._name-DSOGXBen.js +1 -0
  22. package/build/client/assets/queues._name.jobs._jobId-DKGu8NkE.js +1 -0
  23. package/build/client/assets/queues.create-BVR72i85.js +1 -0
  24. package/build/client/assets/react-dom-DQHA9Ik4.js +1 -0
  25. package/build/client/assets/root-Cvarn0sH.js +40 -0
  26. package/build/client/assets/root-D24FtLBP.css +2 -0
  27. package/build/client/assets/schedules-CE-hWC9e.js +1 -0
  28. package/build/client/assets/schedules._name._key-DT8Kg4jU.js +1 -0
  29. package/build/client/assets/schedules.new-bKRusXXO.js +1 -0
  30. package/build/client/assets/send-BaWw8x7J.js +1 -0
  31. package/build/client/assets/stat-card-y2feeHt0.js +1 -0
  32. package/build/client/assets/table-B5BEGV9S.js +1 -0
  33. package/build/client/assets/useOpenInteractionType-BGObzouY.js +1 -0
  34. package/build/client/assets/warnings-lzi34PdC.js +1 -0
  35. package/build/client/assets/x-EA6eZ1AP.js +1 -0
  36. package/build/server/index.js +10402 -28
  37. package/build/server.js +127 -0
  38. package/package.json +26 -26
  39. package/build/client/assets/MenuTrigger-BUdpY9vj.js +0 -1
  40. package/build/client/assets/_index-DXfER9RD.js +0 -1
  41. package/build/client/assets/badge-to3cY6Nn.js +0 -1
  42. package/build/client/assets/button-CudTDtZF.js +0 -1
  43. package/build/client/assets/chevron-down-ClrMXFFn.js +0 -1
  44. package/build/client/assets/chunk-EVOBXE3Y-CmKRT32p.js +0 -26
  45. package/build/client/assets/createLucideIcon-C5Bm8BOS.js +0 -1
  46. package/build/client/assets/db-link-BzIwSws3.js +0 -1
  47. package/build/client/assets/dialog-BBFR7NS6.js +0 -1
  48. package/build/client/assets/entry.client-B-bLoJqf.js +0 -13
  49. package/build/client/assets/error-card--OB_TuOC.js +0 -1
  50. package/build/client/assets/filter-select-07am_j5T.js +0 -1
  51. package/build/client/assets/index-By5u-yQ6.js +0 -1
  52. package/build/client/assets/jobs-Gp0x24mG.js +0 -1
  53. package/build/client/assets/manifest-560249af.js +0 -1
  54. package/build/client/assets/pagination-DCEs769S.js +0 -1
  55. package/build/client/assets/queues._index-DxMtAiK3.js +0 -1
  56. package/build/client/assets/queues._name-DqI0ZH4S.js +0 -1
  57. package/build/client/assets/queues._name.jobs._jobId-BEwVDYH6.js +0 -1
  58. package/build/client/assets/queues.create-aEr8z6Lt.js +0 -1
  59. package/build/client/assets/root-Bpb4WtY4.css +0 -1
  60. package/build/client/assets/root-Cubm0m9Y.js +0 -35
  61. package/build/client/assets/schedules-BacoSVY9.js +0 -1
  62. package/build/client/assets/schedules._name._key-zuc0HZqU.js +0 -1
  63. package/build/client/assets/schedules.new-CrK1w4GF.js +0 -1
  64. package/build/client/assets/send-wPFbslqy.js +0 -1
  65. package/build/client/assets/table-CV0K56fY.js +0 -1
  66. package/build/client/assets/useOpenInteractionType-C7OfDyTB.js +0 -1
  67. package/build/client/assets/warnings-DLjttltF.js +0 -1
  68. package/build/server/assets/auth.server-DgTIakNo.js +0 -17
  69. package/build/server/assets/config.server-CARiqCUE.js +0 -54
  70. package/build/server/assets/node-DzjK5u9i.js +0 -176
  71. package/build/server/assets/server-build.js +0 -10026
@@ -0,0 +1,127 @@
1
+ // app/server.node.ts
2
+ import { serve } from "@hono/node-server";
3
+
4
+ // app/server.ts
5
+ import { Hono } from "hono";
6
+ import { serveStatic } from "@hono/node-server/serve-static";
7
+ import { createRequestHandler, RouterContextProvider } from "react-router";
8
+
9
+ // app/lib/auth.server.ts
10
+ import { basicAuth } from "hono/basic-auth";
11
+ function configureAuth(app2) {
12
+ const username = process.env.PGBOSS_DASHBOARD_AUTH_USERNAME;
13
+ const password = process.env.PGBOSS_DASHBOARD_AUTH_PASSWORD;
14
+ if (username && !password) {
15
+ throw new Error("PGBOSS_DASHBOARD_AUTH_PASSWORD is required when PGBOSS_DASHBOARD_AUTH_USERNAME is set");
16
+ }
17
+ if (!username && password) {
18
+ throw new Error("PGBOSS_DASHBOARD_AUTH_USERNAME is required when PGBOSS_DASHBOARD_AUTH_PASSWORD is set");
19
+ }
20
+ if (username && password) {
21
+ app2.use(basicAuth({ username, password }));
22
+ }
23
+ }
24
+
25
+ // app/lib/config.server.ts
26
+ var SEPARATOR = "|";
27
+ var DEFAULT_SCHEMA = "pgboss";
28
+ function parseDatabaseConfig() {
29
+ const dbUrlEnv = process.env.DATABASE_URL || "postgres://localhost/pgboss";
30
+ const schemaEnv = process.env.PGBOSS_SCHEMA || DEFAULT_SCHEMA;
31
+ const urlParts = dbUrlEnv.split(SEPARATOR).map((s) => s.trim()).filter(Boolean);
32
+ const schemaParts = schemaEnv.split(SEPARATOR).map((s) => s.trim()).filter(Boolean);
33
+ return urlParts.map((part, index) => {
34
+ const equalsIndex = part.indexOf("=");
35
+ let name;
36
+ let url;
37
+ const protocolIndex = part.indexOf("://");
38
+ if (equalsIndex > 0 && (protocolIndex === -1 || equalsIndex < protocolIndex)) {
39
+ name = part.substring(0, equalsIndex).trim();
40
+ url = part.substring(equalsIndex + 1).trim();
41
+ } else {
42
+ url = part;
43
+ name = extractDatabaseName(url) || `Database ${index + 1}`;
44
+ }
45
+ const schema = schemaParts[index] || DEFAULT_SCHEMA;
46
+ const id = generateId(name, index);
47
+ return { id, name, url, schema };
48
+ });
49
+ }
50
+ function extractDatabaseName(url) {
51
+ try {
52
+ const match = url.match(/\/([^/?]+)(?:\?|$)/);
53
+ if (match) {
54
+ return match[1];
55
+ }
56
+ return null;
57
+ } catch {
58
+ return null;
59
+ }
60
+ }
61
+ function generateId(name, index) {
62
+ const sanitized = name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
63
+ return sanitized || `db-${index}`;
64
+ }
65
+ function findDatabaseById(configs, id) {
66
+ if (!id) return configs[0] || null;
67
+ return configs.find((c) => c.id === id) || configs[0] || null;
68
+ }
69
+ var cachedConfig = null;
70
+ function getDatabaseConfigs() {
71
+ if (!cachedConfig) {
72
+ cachedConfig = parseDatabaseConfig();
73
+ }
74
+ return cachedConfig;
75
+ }
76
+
77
+ // app/lib/db-context.ts
78
+ import { createContext } from "react-router";
79
+ var TOKEN_KEY = /* @__PURE__ */ Symbol.for("pgboss.dashboard.dbContext");
80
+ var globalStore = globalThis;
81
+ var dbContext = globalStore[TOKEN_KEY] ??= createContext();
82
+
83
+ // app/server.ts
84
+ function getLoadContext(c) {
85
+ const databases = getDatabaseConfigs();
86
+ const url = new URL(c.req.url);
87
+ const dbId = url.searchParams.get("db") || c.req.header("cookie")?.match(/pgboss_db=([^;]+)/)?.[1] || null;
88
+ const currentDb = findDatabaseById(databases, dbId) || databases[0];
89
+ const context = new RouterContextProvider();
90
+ context.set(dbContext, {
91
+ databases,
92
+ currentDb,
93
+ // Backwards-compatible accessors
94
+ DB_URL: currentDb?.url || "postgres://localhost/pgboss",
95
+ SCHEMA: currentDb?.schema || "pgboss"
96
+ });
97
+ return context;
98
+ }
99
+ function createHonoApp({ build: build2, mode, serveStaticAssets = false }) {
100
+ const app2 = new Hono();
101
+ configureAuth(app2);
102
+ if (serveStaticAssets) {
103
+ const basename = typeof build2 !== "function" && build2.basename && build2.basename !== "/" ? build2.basename : "";
104
+ const rewriteRequestPath = basename ? (path) => path.slice(basename.length) : void 0;
105
+ app2.use(`${basename}/assets/*`, serveStatic({ root: "./build/client", rewriteRequestPath }));
106
+ app2.use("*", serveStatic({ root: "./build/client", rewriteRequestPath }));
107
+ }
108
+ app2.all("*", async (c) => {
109
+ const resolvedBuild = typeof build2 === "function" ? await build2() : build2;
110
+ const handler = createRequestHandler(resolvedBuild, mode);
111
+ return handler(c.req.raw, getLoadContext(c));
112
+ });
113
+ return app2;
114
+ }
115
+
116
+ // app/server.node.ts
117
+ var buildModulePath = "./server/index.js";
118
+ var build = await import(buildModulePath);
119
+ var port = Number(process.env.PORT) || 3e3;
120
+ var hostname = process.env.HOST || "0.0.0.0";
121
+ var app = createHonoApp({ build, mode: "production", serveStaticAssets: true });
122
+ serve({ fetch: app.fetch, port, hostname }, (info) => {
123
+ console.log(`pg-boss dashboard listening on http://${hostname}:${info.port}`);
124
+ if (build.basename && build.basename !== "/") {
125
+ console.log(`base path: ${build.basename}`);
126
+ }
127
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pg-boss/dashboard",
3
- "version": "1.1.3",
3
+ "version": "1.2.0",
4
4
  "description": "Web dashboard for monitoring and managing pg-boss job queues",
5
5
  "keywords": [
6
6
  "pg-boss",
@@ -23,12 +23,12 @@
23
23
  "bin"
24
24
  ],
25
25
  "scripts": {
26
- "dev": "cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss react-router dev",
27
- "dev:auth": "cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss PGBOSS_DASHBOARD_AUTH_USERNAME=admin PGBOSS_DASHBOARD_AUTH_PASSWORD=admin react-router dev",
26
+ "dev": "cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss node server.js",
27
+ "dev:auth": "cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss PGBOSS_DASHBOARD_AUTH_USERNAME=admin PGBOSS_DASHBOARD_AUTH_PASSWORD=admin node server.js",
28
28
  "dev:init-db": "cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss tsx scripts/init-dev-db.ts",
29
29
  "dev:worker": "cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss tsx scripts/worker.ts",
30
- "build": "react-router build",
31
- "start": "node ./build/server/index.js",
30
+ "build": "react-router build && esbuild app/server.node.ts --bundle --platform=node --format=esm --packages=external --outfile=build/server.js",
31
+ "start": "node ./build/server.js",
32
32
  "prepublishOnly": "npm run typecheck && npm run test && npm run build",
33
33
  "test": "vitest run --config vitest.config.frontend.ts && vitest run --config vitest.config.server.ts",
34
34
  "test:frontend": "vitest run --config vitest.config.frontend.ts",
@@ -41,42 +41,42 @@
41
41
  "ci": "npm run typecheck && npm run cover:frontend && cross-env DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pgboss npm run cover:server"
42
42
  },
43
43
  "dependencies": {
44
- "@base-ui/react": "^1.4.1",
45
- "@hono/node-server": "^1.19.12",
44
+ "@base-ui/react": "^1.5.0",
45
+ "@hono/node-server": "^2.0.4",
46
46
  "@react-router/node": "^7.13.0",
47
47
  "class-variance-authority": "^0.7.1",
48
48
  "clsx": "^2.1.1",
49
- "hono": "^4.12.14",
50
- "isbot": "^5.1.39",
51
- "lucide-react": "^0.575.0",
52
- "pg": "^8.20.0",
53
- "pg-boss": "^12.16.0",
54
- "react": "^19.2.5",
55
- "react-dom": "^19.2.5",
49
+ "hono": "^4.12.25",
50
+ "isbot": "^5.1.42",
51
+ "lucide-react": "^1.17.0",
52
+ "pg": "^8.21.0",
53
+ "pg-boss": "^12.18.3",
54
+ "react": "^19.2.7",
55
+ "react-dom": "^19.2.7",
56
56
  "react-router": "^7.13.0",
57
- "react-router-hono-server": "^2.25.3",
58
- "tailwind-merge": "^3.5.0"
57
+ "tailwind-merge": "^3.6.0"
59
58
  },
60
59
  "devDependencies": {
61
- "@react-router/dev": "^7.14.2",
62
- "@tailwindcss/vite": "^4.2.4",
60
+ "@react-router/dev": "^7.17.0",
61
+ "@tailwindcss/vite": "^4.3.0",
63
62
  "@testing-library/dom": "^10.4.1",
64
63
  "@testing-library/jest-dom": "^6.9.1",
65
64
  "@testing-library/react": "^16.3.2",
66
65
  "@testing-library/user-event": "^14.6.1",
67
- "@types/node": "^22.19.17",
66
+ "@types/node": "^22.19.21",
68
67
  "@types/pg": "^8.20.0",
69
- "@types/react": "^19.2.14",
68
+ "@types/react": "^19.2.17",
70
69
  "@types/react-dom": "^19.2.3",
71
- "@vitejs/plugin-react": "^5.2.0",
70
+ "@vitejs/plugin-react": "^6.0.2",
72
71
  "@vitest/coverage-v8": "^4.1.2",
73
72
  "cross-env": "^10.1.0",
74
- "jsdom": "^28.1.0",
73
+ "esbuild": "^0.28.0",
74
+ "jsdom": "^29.1.1",
75
75
  "tailwindcss": "^4.1.18",
76
- "tsx": "^4.21.0",
77
- "typescript": "^5.9.3",
78
- "vite": "^7.3.2",
79
- "vitest": "^4.0.18"
76
+ "tsx": "^4.22.4",
77
+ "typescript": "^6.0.3",
78
+ "vite": "^8.0.16",
79
+ "vitest": "^4.1.2"
80
80
  },
81
81
  "repository": {
82
82
  "type": "git",
@@ -1 +0,0 @@
1
- import{a as p,p as xe}from"./chunk-EVOBXE3Y-CmKRT32p.js";import{g as dt,m as tn,h as Fn,i as gt,E as et,j as at,k as nn}from"./db-link-BzIwSws3.js";import{i as Dn,a as Ln,u as Nn,b as oe,c as Hn,d as lt,t as an,e as Po,f as We,g as Io,h as ce,j as tt,k as Bn,l as $e,m as Pe,n as ke,o as Ao,p as ko,q as Fo,r as Do,s as nt,v as ut,w as Se,x as _n,y as Vn,z as At,A as Lo,B as Wn,C as on,D as $n,E as rn,F as ne,G as ze,H as He,I as Fe,J as hn,K as Ue,L as vt,M as De,N as kt,O as Un,P as ln,Q as Ze,R as ft,S as No,T as zn,U as Ho,V as un,W as fn,X as Vt,Y as Yn,Z as pt,_ as Bo,$ as Kn,a0 as mt,a1 as Ft,a2 as _o,a3 as Ae,a4 as Vo,a5 as it,a6 as we,a7 as fe,a8 as Dt,a9 as ct,aa as Wo,ab as Xn,ac as $o,ad as sn,ae as se,af as Uo,ag as Te,ah as Mt,ai as Ee,aj as zo,ak as Yo,al as Ko,am as xn,an as Gt,ao as Rn,ap as Ve,aq as St,ar as Xo,as as qt,at as jo,au as Go,av as Wt,aw as ht,ax as xt,ay as qo,az as bt,aA as Lt,aB as Qo,aC as Jo,aD as jn,aE as Zo,aF as er,aG as tr,aH as nr,aI as or,aJ as Gn,aK as rr,aL as sr,aM as ir,aN as cr,aO as ar,aP as lr,aQ as ur,aR as fr,aS as dr,aT as gr,aU as st,aV as pr,aW as mr,aX as qn,aY as hr,aZ as pe,a_ as xr,a$ as Rr,b0 as Qn,b1 as yr,b2 as vr,b3 as br,b4 as Er,b5 as wr,b6 as Cr,b7 as Tr,b8 as Or,b9 as Jn,ba as Mr,bb as Zn,bc as Sr,bd as Pr,be as Ir,bf as Ar,bg as kr,bh as Fr,bi as Dr,bj as yn,bk as vn,bl as Lr}from"./useOpenInteractionType-C7OfDyTB.js";import{a as Nt}from"./index-By5u-yQ6.js";const eo=p.createContext(void 0);function to(e){const n=p.useContext(eo);if(n===void 0&&!e)throw new Error(dt(33));return n}const no=p.createContext(void 0);function Ge(e){const n=p.useContext(no);if(n===void 0&&!e)throw new Error(dt(36));return n}const Nr=p.createContext(void 0);function $t(e=!0){const n=p.useContext(Nr);if(n===void 0&&!e)throw new Error(dt(25));return n}function Hr(e){const{closeOnClick:n,highlighted:t,id:o,nodeId:r,store:s,typingRef:l,itemRef:i,itemMetadata:u}=e,{events:y}=s.useState("floatingTreeRoot"),c=$t(!0),d=c!==void 0;return p.useMemo(()=>({id:o,role:"menuitem",tabIndex:t?0:-1,onKeyDown(g){g.key===" "&&l?.current&&g.preventDefault()},onMouseMove(g){r&&y.emit("itemhover",{nodeId:r,target:g.currentTarget})},onClick(g){n&&y.emit("close",{domEvent:g,reason:Ln})},onMouseUp(g){if(c){const h=c.initialCursorPointRef.current;if(c.initialCursorPointRef.current=null,d&&h&&Math.abs(g.clientX-h.x)<=1&&Math.abs(g.clientY-h.y)<=1||d&&!Dn&&g.button===2)return}i.current&&s.context.allowMouseUpTriggerRef.current&&(!d||g.button===2)&&(!u||u.type==="regular-item")&&i.current.click()}}),[n,t,o,y,r,s,l,i,c,d,u])}const Br={type:"regular-item"};function _r(e){const{closeOnClick:n,disabled:t=!1,highlighted:o,id:r,store:s,typingRef:l=s.context.typingRef,nativeButton:i,itemMetadata:u,nodeId:y}=e,c=p.useRef(null),{getButtonProps:d,buttonRef:g}=Nn({disabled:t,focusableWhenDisabled:!0,native:i,composite:!0}),h=Hr({closeOnClick:n,highlighted:o,id:r,nodeId:y,store:s,typingRef:l,itemRef:c,itemMetadata:u}),m=p.useCallback(R=>tn(h,{onMouseEnter(){u.type==="submenu-trigger"&&u.setActive()}},R,d),[h,d,u]),v=Fn(c,g);return p.useMemo(()=>({getItemProps:m,itemRef:v}),[m,v])}const oo=p.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}});function Vr(){return p.useContext(oo)}let Wr=(function(e){return e[e.None=0]="None",e[e.GuessFromOrder=1]="GuessFromOrder",e})({});function ro(e={}){const{label:n,metadata:t,textRef:o,indexGuessBehavior:r,index:s}=e,{register:l,unregister:i,subscribeMapChange:u,elementsRef:y,labelsRef:c,nextIndexRef:d}=Vr(),g=p.useRef(-1),[h,m]=p.useState(s??(r===Wr.GuessFromOrder?()=>{if(g.current===-1){const a=d.current;d.current+=1,g.current=a}return g.current}:-1)),v=p.useRef(null),R=p.useCallback(a=>{if(v.current=a,h!==-1&&a!==null&&(y.current[h]=a,c)){const E=n!==void 0;c.current[h]=E?n:o?.current?.textContent??a.textContent}},[h,y,c,n,o]);return oe(()=>{if(s!=null)return;const a=v.current;if(a)return l(a,t),()=>{i(a)}},[s,l,i,t]),oe(()=>{if(s==null)return u(a=>{const E=v.current?a.get(v.current)?.index:null;E!=null&&m(E)})},[s,u,m]),p.useMemo(()=>({ref:R,index:h}),[h,R])}const Ci=p.forwardRef(function(n,t){const{render:o,className:r,id:s,label:l,nativeButton:i=!1,disabled:u=!1,closeOnClick:y=!0,style:c,...d}=n,g=ro({label:l}),h=to(!0),m=Hn(s),{store:v}=Ge(),R=v.useState("isActive",g.index),a=v.useState("itemProps"),{getItemProps:E,itemRef:x}=_r({closeOnClick:y,disabled:u,highlighted:R,id:m,store:v,nativeButton:i,nodeId:h?.context.nodeId,itemMetadata:Br});return gt("div",n,{state:{disabled:u,highlighted:R},props:[a,d,E],ref:[x,t,g.ref]})});function $r(e,n){return n!=null&&!lt(n)?0:typeof e=="function"?e():e}function cn(e,n,t){const o=$r(e,t);return typeof o=="number"?o:o?.[n]}function bn(e){return typeof e=="function"?e():e}function so(e,n){return n||e==="click"||e==="mousedown"}function Ur(e,n={}){const t="rootStore"in e?e.rootStore:e,o=t.context.dataRef,{enabled:r=!0,event:s="click",toggle:l=!0,ignoreMouse:i=!1,stickIfOpen:u=!0,touchOpenDelay:y=0,reason:c=an}=n,d=p.useRef(void 0),g=Po(),h=We(),m=p.useMemo(()=>({onPointerDown(v){d.current=v.pointerType},onMouseDown(v){const R=d.current,a=v.nativeEvent,E=t.select("open");if(v.button!==0||s==="click"||lt(R,!0)&&i)return;const x=o.current.openEvent,b=x?.type,C=t.select("domReferenceElement")!==v.currentTarget,f=E&&C||!(E&&l&&(!(x&&u)||b==="click"||b==="mousedown")),I=tt(a);if(Bn(I)){const D=ce(c,a,I);f&&R==="touch"&&y>0?h.start(y,()=>{t.setOpen(!0,D)}):t.setOpen(f,D);return}const T=v.currentTarget;g.request(()=>{const D=ce(c,a,T);f&&R==="touch"&&y>0?h.start(y,()=>{t.setOpen(!0,D)}):t.setOpen(f,D)})},onClick(v){if(s==="mousedown-only")return;const R=d.current;if(s==="mousedown"&&R){d.current=void 0;return}if(lt(R,!0)&&i)return;const a=t.select("open"),E=o.current.openEvent,x=t.select("domReferenceElement")!==v.currentTarget,b=a&&x||!(a&&l&&(!(E&&u)||Io(E))),C=ce(c,v.nativeEvent,v.currentTarget);b&&R==="touch"&&y>0?h.start(y,()=>{t.setOpen(!0,C)}):t.setOpen(b,C)},onKeyDown(){d.current=void 0}}),[o,s,i,t,u,l,g,h,y,c]);return p.useMemo(()=>r?{reference:m}:et,[r,m])}function En(e,n,t){let{reference:o,floating:r}=e;const s=ke(n),l=_n(n),i=Wn(l),u=Pe(n),y=s==="y",c=o.x+o.width/2-r.width/2,d=o.y+o.height/2-r.height/2,g=o[i]/2-r[i]/2;let h;switch(u){case"top":h={x:c,y:o.y-r.height};break;case"bottom":h={x:c,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:d};break;case"left":h={x:o.x-r.width,y:d};break;default:h={x:o.x,y:o.y}}switch(nt(n)){case"start":h[l]-=g*(t&&y?-1:1);break;case"end":h[l]+=g*(t&&y?-1:1);break}return h}async function zr(e,n){var t;n===void 0&&(n={});const{x:o,y:r,platform:s,rects:l,elements:i,strategy:u}=e,{boundary:y="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:g=!1,padding:h=0}=$e(n,e),m=Vn(h),R=i[g?d==="floating"?"reference":"floating":d],a=At(await s.getClippingRect({element:(t=await(s.isElement==null?void 0:s.isElement(R)))==null||t?R:R.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(i.floating)),boundary:y,rootBoundary:c,strategy:u})),E=d==="floating"?{x:o,y:r,width:l.floating.width,height:l.floating.height}:l.reference,x=await(s.getOffsetParent==null?void 0:s.getOffsetParent(i.floating)),b=await(s.isElement==null?void 0:s.isElement(x))?await(s.getScale==null?void 0:s.getScale(x))||{x:1,y:1}:{x:1,y:1},C=At(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:i,rect:E,offsetParent:x,strategy:u}):E);return{top:(a.top-C.top+m.top)/b.y,bottom:(C.bottom-a.bottom+m.bottom)/b.y,left:(a.left-C.left+m.left)/b.x,right:(C.right-a.right+m.right)/b.x}}const Yr=50,Kr=async(e,n,t)=>{const{placement:o="bottom",strategy:r="absolute",middleware:s=[],platform:l}=t,i=l.detectOverflow?l:{...l,detectOverflow:zr},u=await(l.isRTL==null?void 0:l.isRTL(n));let y=await l.getElementRects({reference:e,floating:n,strategy:r}),{x:c,y:d}=En(y,o,u),g=o,h=0;const m={};for(let v=0;v<s.length;v++){const R=s[v];if(!R)continue;const{name:a,fn:E}=R,{x,y:b,data:C,reset:f}=await E({x:c,y:d,initialPlacement:o,placement:g,strategy:r,middlewareData:m,rects:y,platform:i,elements:{reference:e,floating:n}});c=x??c,d=b??d,m[a]={...m[a],...C},f&&h<Yr&&(h++,typeof f=="object"&&(f.placement&&(g=f.placement),f.rects&&(y=f.rects===!0?await l.getElementRects({reference:e,floating:n,strategy:r}):f.rects),{x:c,y:d}=En(y,g,u)),v=-1)}return{x:c,y:d,placement:g,strategy:r,middlewareData:m}},Xr=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var t,o;const{placement:r,middlewareData:s,rects:l,initialPlacement:i,platform:u,elements:y}=n,{mainAxis:c=!0,crossAxis:d=!0,fallbackPlacements:g,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:v=!0,...R}=$e(e,n);if((t=s.arrow)!=null&&t.alignmentOffset)return{};const a=Pe(r),E=ke(i),x=Pe(i)===i,b=await(u.isRTL==null?void 0:u.isRTL(y.floating)),C=g||(x||!v?[Ao(i)]:ko(i)),f=m!=="none";!g&&f&&C.push(...Fo(i,v,m,b));const I=[i,...C],T=await u.detectOverflow(n,R),D=[];let L=((o=s.flip)==null?void 0:o.overflows)||[];if(c&&D.push(T[a]),d){const S=Do(r,l,b);D.push(T[S[0]],T[S[1]])}if(L=[...L,{placement:r,overflows:D}],!D.every(S=>S<=0)){var $,_;const S=((($=s.flip)==null?void 0:$.index)||0)+1,w=I[S];if(w&&(!(d==="alignment"?E!==ke(w):!1)||L.every(k=>ke(k.placement)===E?k.overflows[0]>0:!0)))return{data:{index:S,overflows:L},reset:{placement:w}};let M=(_=L.filter(O=>O.overflows[0]<=0).sort((O,k)=>O.overflows[1]-k.overflows[1])[0])==null?void 0:_.placement;if(!M)switch(h){case"bestFit":{var H;const O=(H=L.filter(k=>{if(f){const P=ke(k.placement);return P===E||P==="y"}return!0}).map(k=>[k.placement,k.overflows.filter(P=>P>0).reduce((P,F)=>P+F,0)]).sort((k,P)=>k[1]-P[1])[0])==null?void 0:H[0];O&&(M=O);break}case"initialPlacement":M=i;break}if(r!==M)return{reset:{placement:M}}}return{}}}};function wn(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function Cn(e){return Lo.some(n=>e[n]>=0)}const jr=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:t,platform:o}=n,{strategy:r="referenceHidden",...s}=$e(e,n);switch(r){case"referenceHidden":{const l=await o.detectOverflow(n,{...s,elementContext:"reference"}),i=wn(l,t.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:Cn(i)}}}case"escaped":{const l=await o.detectOverflow(n,{...s,altBoundary:!0}),i=wn(l,t.floating);return{data:{escapedOffsets:i,escaped:Cn(i)}}}default:return{}}}}},io=new Set(["left","top"]);async function Gr(e,n){const{placement:t,platform:o,elements:r}=e,s=await(o.isRTL==null?void 0:o.isRTL(r.floating)),l=Pe(t),i=nt(t),u=ke(t)==="y",y=io.has(l)?-1:1,c=s&&u?-1:1,d=$e(n,e);let{mainAxis:g,crossAxis:h,alignmentAxis:m}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return i&&typeof m=="number"&&(h=i==="end"?m*-1:m),u?{x:h*c,y:g*y}:{x:g*y,y:h*c}}const qr=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var t,o;const{x:r,y:s,placement:l,middlewareData:i}=n,u=await Gr(n,e);return l===((t=i.offset)==null?void 0:t.placement)&&(o=i.arrow)!=null&&o.alignmentOffset?{}:{x:r+u.x,y:s+u.y,data:{...u,placement:l}}}}},Qr=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:t,y:o,placement:r,platform:s}=n,{mainAxis:l=!0,crossAxis:i=!1,limiter:u={fn:a=>{let{x:E,y:x}=a;return{x:E,y:x}}},...y}=$e(e,n),c={x:t,y:o},d=await s.detectOverflow(n,y),g=ke(Pe(r)),h=$n(g);let m=c[h],v=c[g];if(l){const a=h==="y"?"top":"left",E=h==="y"?"bottom":"right",x=m+d[a],b=m-d[E];m=on(x,m,b)}if(i){const a=g==="y"?"top":"left",E=g==="y"?"bottom":"right",x=v+d[a],b=v-d[E];v=on(x,v,b)}const R=u.fn({...n,[h]:m,[g]:v});return{...R,data:{x:R.x-t,y:R.y-o,enabled:{[h]:l,[g]:i}}}}}},Jr=function(e){return e===void 0&&(e={}),{options:e,fn(n){const{x:t,y:o,placement:r,rects:s,middlewareData:l}=n,{offset:i=0,mainAxis:u=!0,crossAxis:y=!0}=$e(e,n),c={x:t,y:o},d=ke(r),g=$n(d);let h=c[g],m=c[d];const v=$e(i,n),R=typeof v=="number"?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(u){const x=g==="y"?"height":"width",b=s.reference[g]-s.floating[x]+R.mainAxis,C=s.reference[g]+s.reference[x]-R.mainAxis;h<b?h=b:h>C&&(h=C)}if(y){var a,E;const x=g==="y"?"width":"height",b=io.has(Pe(r)),C=s.reference[d]-s.floating[x]+(b&&((a=l.offset)==null?void 0:a[d])||0)+(b?0:R.crossAxis),f=s.reference[d]+s.reference[x]+(b?0:((E=l.offset)==null?void 0:E[d])||0)-(b?R.crossAxis:0);m<C?m=C:m>f&&(m=f)}return{[g]:h,[d]:m}}}},Zr=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){var t,o;const{placement:r,rects:s,platform:l,elements:i}=n,{apply:u=()=>{},...y}=$e(e,n),c=await l.detectOverflow(n,y),d=Pe(r),g=nt(r),h=ke(r)==="y",{width:m,height:v}=s.floating;let R,a;d==="top"||d==="bottom"?(R=d,a=g===(await(l.isRTL==null?void 0:l.isRTL(i.floating))?"start":"end")?"left":"right"):(a=d,R=g==="end"?"top":"bottom");const E=v-c.top-c.bottom,x=m-c.left-c.right,b=ut(v-c[R],E),C=ut(m-c[a],x),f=!n.middlewareData.shift;let I=b,T=C;if((t=n.middlewareData.shift)!=null&&t.enabled.x&&(T=x),(o=n.middlewareData.shift)!=null&&o.enabled.y&&(I=E),f&&!g){const L=Se(c.left,0),$=Se(c.right,0),_=Se(c.top,0),H=Se(c.bottom,0);h?T=m-2*(L!==0||$!==0?L+$:Se(c.left,c.right)):I=v-2*(_!==0||H!==0?_+H:Se(c.top,c.bottom))}await u({...n,availableWidth:T,availableHeight:I});const D=await l.getDimensions(i.floating);return m!==D.width||v!==D.height?{reset:{rects:!0}}:{}}}};function co(e){const n=Ue(e);let t=parseFloat(n.width)||0,o=parseFloat(n.height)||0;const r=De(e),s=r?e.offsetWidth:t,l=r?e.offsetHeight:o,i=kt(t)!==s||kt(o)!==l;return i&&(t=s,o=l),{width:t,height:o,$:i}}function dn(e){return ne(e)?e:e.contextElement}function Je(e){const n=dn(e);if(!De(n))return He(1);const t=n.getBoundingClientRect(),{width:o,height:r,$:s}=co(n);let l=(s?kt(t.width):t.width)/o,i=(s?kt(t.height):t.height)/r;return(!l||!Number.isFinite(l))&&(l=1),(!i||!Number.isFinite(i))&&(i=1),{x:l,y:i}}const es=He(0);function ao(e){const n=Fe(e);return!Un()||!n.visualViewport?es:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function ts(e,n,t){return n===void 0&&(n=!1),!t||n&&t!==Fe(e)?!1:n}function je(e,n,t,o){n===void 0&&(n=!1),t===void 0&&(t=!1);const r=e.getBoundingClientRect(),s=dn(e);let l=He(1);n&&(o?ne(o)&&(l=Je(o)):l=Je(e));const i=ts(s,t,o)?ao(s):He(0);let u=(r.left+i.x)/l.x,y=(r.top+i.y)/l.y,c=r.width/l.x,d=r.height/l.y;if(s){const g=Fe(s),h=o&&ne(o)?Fe(o):o;let m=g,v=hn(m);for(;v&&o&&h!==m;){const R=Je(v),a=v.getBoundingClientRect(),E=Ue(v),x=a.left+(v.clientLeft+parseFloat(E.paddingLeft))*R.x,b=a.top+(v.clientTop+parseFloat(E.paddingTop))*R.y;u*=R.x,y*=R.y,c*=R.x,d*=R.y,u+=x,y+=b,m=Fe(v),v=hn(m)}}return At({width:c,height:d,x:u,y})}function Ut(e,n){const t=Vt(e).scrollLeft;return n?n.left+t:je(ze(e)).left+t}function lo(e,n){const t=e.getBoundingClientRect(),o=t.left+n.scrollLeft-Ut(e,t),r=t.top+n.scrollTop;return{x:o,y:r}}function ns(e){let{elements:n,rect:t,offsetParent:o,strategy:r}=e;const s=r==="fixed",l=ze(o),i=n?ln(n.floating):!1;if(o===l||i&&s)return t;let u={scrollLeft:0,scrollTop:0},y=He(1);const c=He(0),d=De(o);if((d||!d&&!s)&&((un(o)!=="body"||fn(l))&&(u=Vt(o)),d)){const h=je(o);y=Je(o),c.x=h.x+o.clientLeft,c.y=h.y+o.clientTop}const g=l&&!d&&!s?lo(l,u):He(0);return{width:t.width*y.x,height:t.height*y.y,x:t.x*y.x-u.scrollLeft*y.x+c.x+g.x,y:t.y*y.y-u.scrollTop*y.y+c.y+g.y}}function os(e){return Array.from(e.getClientRects())}function rs(e){const n=ze(e),t=Vt(e),o=e.ownerDocument.body,r=Se(n.scrollWidth,n.clientWidth,o.scrollWidth,o.clientWidth),s=Se(n.scrollHeight,n.clientHeight,o.scrollHeight,o.clientHeight);let l=-t.scrollLeft+Ut(e);const i=-t.scrollTop;return Ue(o).direction==="rtl"&&(l+=Se(n.clientWidth,o.clientWidth)-r),{width:r,height:s,x:l,y:i}}const Tn=25;function ss(e,n){const t=Fe(e),o=ze(e),r=t.visualViewport;let s=o.clientWidth,l=o.clientHeight,i=0,u=0;if(r){s=r.width,l=r.height;const c=Un();(!c||c&&n==="fixed")&&(i=r.offsetLeft,u=r.offsetTop)}const y=Ut(o);if(y<=0){const c=o.ownerDocument,d=c.body,g=getComputedStyle(d),h=c.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,m=Math.abs(o.clientWidth-d.clientWidth-h);m<=Tn&&(s-=m)}else y<=Tn&&(s+=y);return{width:s,height:l,x:i,y:u}}function is(e,n){const t=je(e,!0,n==="fixed"),o=t.top+e.clientTop,r=t.left+e.clientLeft,s=De(e)?Je(e):He(1),l=e.clientWidth*s.x,i=e.clientHeight*s.y,u=r*s.x,y=o*s.y;return{width:l,height:i,x:u,y}}function On(e,n,t){let o;if(n==="viewport")o=ss(e,t);else if(n==="document")o=rs(ze(e));else if(ne(n))o=is(n,t);else{const r=ao(e);o={x:n.x-r.x,y:n.y-r.y,width:n.width,height:n.height}}return At(o)}function uo(e,n){const t=Ze(e);return t===n||!ne(t)||ft(t)?!1:Ue(t).position==="fixed"||uo(t,n)}function cs(e,n){const t=n.get(e);if(t)return t;let o=rn(e,[],!1).filter(i=>ne(i)&&un(i)!=="body"),r=null;const s=Ue(e).position==="fixed";let l=s?Ze(e):e;for(;ne(l)&&!ft(l);){const i=Ue(l),u=zn(l);!u&&i.position==="fixed"&&(r=null),(s?!u&&!r:!u&&i.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||fn(l)&&!u&&uo(e,l))?o=o.filter(c=>c!==l):r=i,l=Ze(l)}return n.set(e,o),o}function as(e){let{element:n,boundary:t,rootBoundary:o,strategy:r}=e;const l=[...t==="clippingAncestors"?ln(n)?[]:cs(n,this._c):[].concat(t),o],i=On(n,l[0],r);let u=i.top,y=i.right,c=i.bottom,d=i.left;for(let g=1;g<l.length;g++){const h=On(n,l[g],r);u=Se(h.top,u),y=ut(h.right,y),c=ut(h.bottom,c),d=Se(h.left,d)}return{width:y-d,height:c-u,x:d,y:u}}function ls(e){const{width:n,height:t}=co(e);return{width:n,height:t}}function us(e,n,t){const o=De(n),r=ze(n),s=t==="fixed",l=je(e,!0,s,n);let i={scrollLeft:0,scrollTop:0};const u=He(0);function y(){u.x=Ut(r)}if(o||!o&&!s)if((un(n)!=="body"||fn(r))&&(i=Vt(n)),o){const h=je(n,!0,s,n);u.x=h.x+n.clientLeft,u.y=h.y+n.clientTop}else r&&y();s&&!o&&r&&y();const c=r&&!o&&!s?lo(r,i):He(0),d=l.left+i.scrollLeft-u.x-c.x,g=l.top+i.scrollTop-u.y-c.y;return{x:d,y:g,width:l.width,height:l.height}}function Qt(e){return Ue(e).position==="static"}function Mn(e,n){if(!De(e)||Ue(e).position==="fixed")return null;if(n)return n(e);let t=e.offsetParent;return ze(e)===t&&(t=t.ownerDocument.body),t}function fo(e,n){const t=Fe(e);if(ln(e))return t;if(!De(e)){let r=Ze(e);for(;r&&!ft(r);){if(ne(r)&&!Qt(r))return r;r=Ze(r)}return t}let o=Mn(e,n);for(;o&&No(o)&&Qt(o);)o=Mn(o,n);return o&&ft(o)&&Qt(o)&&!zn(o)?t:o||Ho(e)||t}const fs=async function(e){const n=this.getOffsetParent||fo,t=this.getDimensions,o=await t(e.floating);return{reference:us(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function ds(e){return Ue(e).direction==="rtl"}const gs={convertOffsetParentRelativeRectToViewportRelativeRect:ns,getDocumentElement:ze,getClippingRect:as,getOffsetParent:fo,getElementRects:fs,getClientRects:os,getDimensions:ls,getScale:Je,isElement:ne,isRTL:ds};function go(e,n){return e.x===n.x&&e.y===n.y&&e.width===n.width&&e.height===n.height}function ps(e,n){let t=null,o;const r=ze(e);function s(){var i;clearTimeout(o),(i=t)==null||i.disconnect(),t=null}function l(i,u){i===void 0&&(i=!1),u===void 0&&(u=1),s();const y=e.getBoundingClientRect(),{left:c,top:d,width:g,height:h}=y;if(i||n(),!g||!h)return;const m=vt(d),v=vt(r.clientWidth-(c+g)),R=vt(r.clientHeight-(d+h)),a=vt(c),x={rootMargin:-m+"px "+-v+"px "+-R+"px "+-a+"px",threshold:Se(0,ut(1,u))||1};let b=!0;function C(f){const I=f[0].intersectionRatio;if(I!==u){if(!b)return l();I?l(!1,I):o=setTimeout(()=>{l(!1,1e-7)},1e3)}I===1&&!go(y,e.getBoundingClientRect())&&l(),b=!1}try{t=new IntersectionObserver(C,{...x,root:r.ownerDocument})}catch{t=new IntersectionObserver(C,x)}t.observe(e)}return l(!0),s}function Sn(e,n,t,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:s=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:i=typeof IntersectionObserver=="function",animationFrame:u=!1}=o,y=dn(e),c=r||s?[...y?rn(y):[],...n?rn(n):[]]:[];c.forEach(a=>{r&&a.addEventListener("scroll",t,{passive:!0}),s&&a.addEventListener("resize",t)});const d=y&&i?ps(y,t):null;let g=-1,h=null;l&&(h=new ResizeObserver(a=>{let[E]=a;E&&E.target===y&&h&&n&&(h.unobserve(n),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var x;(x=h)==null||x.observe(n)})),t()}),y&&!u&&h.observe(y),n&&h.observe(n));let m,v=u?je(e):null;u&&R();function R(){const a=je(e);v&&!go(v,a)&&t(),v=a,m=requestAnimationFrame(R)}return t(),()=>{var a;c.forEach(E=>{r&&E.removeEventListener("scroll",t),s&&E.removeEventListener("resize",t)}),d?.(),(a=h)==null||a.disconnect(),h=null,u&&cancelAnimationFrame(m)}}const ms=qr,hs=Qr,xs=Xr,Rs=Zr,ys=jr,vs=Jr,bs=(e,n,t)=>{const o=new Map,r={platform:gs,...t},s={...r.platform,_c:o};return Kr(e,n,{...r,platform:s})};var Es=typeof document<"u",ws=function(){},Pt=Es?p.useLayoutEffect:ws;function Ht(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let t,o,r;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(t=e.length,t!==n.length)return!1;for(o=t;o--!==0;)if(!Ht(e[o],n[o]))return!1;return!0}if(r=Object.keys(e),t=r.length,t!==Object.keys(n).length)return!1;for(o=t;o--!==0;)if(!{}.hasOwnProperty.call(n,r[o]))return!1;for(o=t;o--!==0;){const s=r[o];if(!(s==="_owner"&&e.$$typeof)&&!Ht(e[s],n[s]))return!1}return!0}return e!==e&&n!==n}function po(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Pn(e,n){const t=po(e);return Math.round(n*t)/t}function Jt(e){const n=p.useRef(e);return Pt(()=>{n.current=e}),n}function Cs(e){e===void 0&&(e={});const{placement:n="bottom",strategy:t="absolute",middleware:o=[],platform:r,elements:{reference:s,floating:l}={},transform:i=!0,whileElementsMounted:u,open:y}=e,[c,d]=p.useState({x:0,y:0,strategy:t,placement:n,middlewareData:{},isPositioned:!1}),[g,h]=p.useState(o);Ht(g,o)||h(o);const[m,v]=p.useState(null),[R,a]=p.useState(null),E=p.useCallback(k=>{k!==f.current&&(f.current=k,v(k))},[]),x=p.useCallback(k=>{k!==I.current&&(I.current=k,a(k))},[]),b=s||m,C=l||R,f=p.useRef(null),I=p.useRef(null),T=p.useRef(c),D=u!=null,L=Jt(u),$=Jt(r),_=Jt(y),H=p.useCallback(()=>{if(!f.current||!I.current)return;const k={placement:n,strategy:t,middleware:g};$.current&&(k.platform=$.current),bs(f.current,I.current,k).then(P=>{const F={...P,isPositioned:_.current!==!1};S.current&&!Ht(T.current,F)&&(T.current=F,Nt.flushSync(()=>{d(F)}))})},[g,n,t,$,_]);Pt(()=>{y===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(k=>({...k,isPositioned:!1})))},[y]);const S=p.useRef(!1);Pt(()=>(S.current=!0,()=>{S.current=!1}),[]),Pt(()=>{if(b&&(f.current=b),C&&(I.current=C),b&&C){if(L.current)return L.current(b,C,H);H()}},[b,C,H,L,D]);const w=p.useMemo(()=>({reference:f,floating:I,setReference:E,setFloating:x}),[E,x]),M=p.useMemo(()=>({reference:b,floating:C}),[b,C]),O=p.useMemo(()=>{const k={position:t,left:0,top:0};if(!M.floating)return k;const P=Pn(M.floating,c.x),F=Pn(M.floating,c.y);return i?{...k,transform:"translate("+P+"px, "+F+"px)",...po(M.floating)>=1.5&&{willChange:"transform"}}:{position:t,left:P,top:F}},[t,i,M.floating,c.x,c.y]);return p.useMemo(()=>({...c,update:H,refs:w,elements:M,floatingStyles:O}),[c,H,w,M,O])}const Ts=(e,n)=>{const t=ms(e);return{name:t.name,fn:t.fn,options:[e,n]}},Os=(e,n)=>{const t=hs(e);return{name:t.name,fn:t.fn,options:[e,n]}},Ms=(e,n)=>({fn:vs(e).fn,options:[e,n]}),Ss=(e,n)=>{const t=xs(e);return{name:t.name,fn:t.fn,options:[e,n]}},Ps=(e,n)=>{const t=Rs(e);return{name:t.name,fn:t.fn,options:[e,n]}},Is=(e,n)=>{const t=ys(e);return{name:t.name,fn:t.fn,options:[e,n]}};function As(e){const{open:n=!1,onOpenChange:t,elements:o={}}=e,r=Yn(),s=pt()!=null,l=at(()=>new Bo({open:n,transitionStatus:void 0,onOpenChange:t,referenceElement:o.reference??null,floatingElement:o.floating??null,triggerElements:new Kn,floatingId:r,syncOnly:!1,nested:s})).current;return oe(()=>{const i={open:n,floatingId:r};o.reference!==void 0&&(i.referenceElement=o.reference,i.domReferenceElement=ne(o.reference)?o.reference:null),o.floating!==void 0&&(i.floatingElement=o.floating),l.update(i)},[n,r,o.reference,o.floating,l]),l.context.onOpenChange=t,l.context.nested=s,l}function ks(e={}){const{nodeId:n,externalTree:t}=e,o=As(e),r=e.rootContext||o,s={reference:r.useState("referenceElement"),floating:r.useState("floatingElement"),domReference:r.useState("domReferenceElement")},[l,i]=p.useState(null),u=p.useRef(null),y=mt(t);oe(()=>{s.domReference&&(u.current=s.domReference)},[s.domReference]);const c=Cs({...e,elements:{...s,...l&&{reference:l}}}),d=p.useCallback(T=>{const D=ne(T)?{getBoundingClientRect:()=>T.getBoundingClientRect(),getClientRects:()=>T.getClientRects(),contextElement:T}:T;i(D),c.refs.setReference(D)},[c.refs]),[g,h]=p.useState(void 0),[m,v]=p.useState(null);r.useSyncedValue("referenceElement",g??null);const R=ne(g)?g:null;r.useSyncedValue("domReferenceElement",g===void 0?s.domReference:R),r.useSyncedValue("floatingElement",m);const a=p.useCallback(T=>{(ne(T)||T===null)&&(u.current=T,h(T)),(ne(c.refs.reference.current)||c.refs.reference.current===null||T!==null&&!ne(T))&&c.refs.setReference(T)},[c.refs,h]),E=p.useCallback(T=>{v(T),c.refs.setFloating(T)},[c.refs]),x=p.useMemo(()=>({...c.refs,setReference:a,setFloating:E,setPositionReference:d,domReference:u}),[c.refs,a,E,d]),b=p.useMemo(()=>({...c.elements,domReference:s.domReference}),[c.elements,s.domReference]),C=r.useState("open"),f=r.useState("floatingId"),I=p.useMemo(()=>({...c,dataRef:r.context.dataRef,open:C,onOpenChange:r.setOpen,events:r.context.events,floatingId:f,refs:x,elements:b,nodeId:n,rootStore:r}),[c,x,b,n,r,C,f]);return oe(()=>{r.context.dataRef.current.floatingContext=I;const T=y?.nodesRef.current.find(D=>D.id===n);T&&(T.context=I)}),p.useMemo(()=>({...c,context:I,refs:x,elements:b,rootStore:r}),[c,x,b,I,r])}const Zt=Dn&&_o;function Fs(e,n={}){const t="rootStore"in e?e.rootStore:e,{events:o,dataRef:r}=t.context,{enabled:s=!0,delay:l}=n,i=p.useRef(!1),u=p.useRef(null),y=We(),c=p.useRef(!0);p.useEffect(()=>{const g=t.select("domReferenceElement");if(!s)return;const h=Fe(g);function m(){const a=t.select("domReferenceElement");!t.select("open")&&De(a)&&a===it(we(a))&&(i.current=!0)}function v(){c.current=!0}function R(){c.current=!1}return Ft(Ae(h,"blur",m),Zt&&Ae(h,"keydown",v,!0),Zt&&Ae(h,"pointerdown",R,!0))},[t,s]),p.useEffect(()=>{if(!s)return;function g(h){if(h.reason===an||h.reason===Xn){const m=t.select("domReferenceElement");ne(m)&&(u.current=m,i.current=!0)}}return o.on("openchange",g),()=>{o.off("openchange",g)}},[o,s,t]);const d=p.useMemo(()=>({onMouseLeave(){i.current=!1,u.current=null},onFocus(g){const h=g.currentTarget;if(i.current){if(u.current===h)return;i.current=!1,u.current=null}const m=tt(g.nativeEvent);if(ne(m)){if(Zt&&!g.relatedTarget){if(!c.current&&!Bn(m))return}else if(!Wo(m))return}const v=Dt(g.relatedTarget,t.context.triggerElements),{nativeEvent:R,currentTarget:a}=g,E=typeof l=="function"?l():l;if(t.select("open")&&v||E===0||E===void 0){t.setOpen(!0,ce(ct,R,a));return}y.start(E,()=>{i.current||t.setOpen(!0,ce(ct,R,a))})},onBlur(g){i.current=!1,u.current=null;const h=g.relatedTarget,m=g.nativeEvent,v=ne(h)&&h.hasAttribute(Vo("focus-guard"))&&h.getAttribute("data-type")==="outside";y.start(0,()=>{const R=t.select("domReferenceElement"),a=it(we(R));!h&&a===R||fe(r.current.floatingContext?.refs.floating.current,a)||fe(R,a)||v||Dt(h??a,t.context.triggerElements)||t.setOpen(!1,ce(ct,m))})}}),[r,t,y,l]);return p.useMemo(()=>s?{reference:d,trigger:d}:{},[s,d])}class gn{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new sn,this.restTimeout=new sn,this.handleCloseOptions=void 0}static create(){return new gn}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose}const Bt=new WeakMap;function _t(e){if(!e.performedPointerEventsMutation)return;const n=e.pointerEventsScopeElement;n&&Bt.get(n)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),Bt.delete(n)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function mo(e,n){const{scopeElement:t,referenceElement:o,floatingElement:r}=n,s=Bt.get(t);s&&s!==e&&_t(s),_t(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=t,e.pointerEventsReferenceElement=o,e.pointerEventsFloatingElement=r,Bt.set(t,e),t.style.pointerEvents="none",o.style.pointerEvents="auto",r.style.pointerEvents="auto"}function ho(e){const n=at(gn.create).current,t=e.context.dataRef.current;return t.hoverInteractionState||(t.hoverInteractionState=n),$o(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function Ds(e,n={}){const t="rootStore"in e?e.rootStore:e,o=t.useState("open"),r=t.useState("floatingElement"),s=t.useState("domReferenceElement"),{dataRef:l}=t.context,{enabled:i=!0,closeDelay:u=0,nodeId:y}=n,c=ho(t),d=mt(),g=pt(),h=se(()=>so(l.current.openEvent?.type,c.interactedInside)),m=se(()=>{const b=l.current.openEvent?.type;return b?.includes("mouse")&&b!=="mousedown"}),v=se(b=>Dt(b,t.context.triggerElements)),R=p.useCallback(b=>{const C=cn(u,"close",c.pointerType),f=()=>{t.setOpen(!1,ce(Te,b)),d?.events.emit("floating.closed",b)};C?c.openChangeTimeout.start(C,f):(c.openChangeTimeout.clear(),f())},[u,t,c,d]),a=se(()=>{_t(c)}),E=se(b=>{const C=tt(b);if(!Uo(C)){c.interactedInside=!1;return}c.interactedInside=C?.closest("[aria-haspopup]")!=null});oe(()=>{o||(c.pointerType=void 0,c.restTimeoutPending=!1,c.interactedInside=!1,a())},[o,c,a]),p.useEffect(()=>a,[a]),oe(()=>{if(i&&o&&c.handleCloseOptions?.blockPointerEvents&&m()&&ne(s)&&r){const b=s,C=r,f=we(r),I=d?.nodesRef.current.find(D=>D.id===g)?.context?.elements.floating;I&&(I.style.pointerEvents="");const T=c.handleCloseOptions?.getScope?.()??c.pointerEventsScopeElement??I??b.closest("[data-rootownerid]")??f.body;return mo(c,{scopeElement:T,referenceElement:b,floatingElement:C}),()=>{a()}}},[i,o,s,r,c,m,d,g,a]);const x=We();p.useEffect(()=>{if(!i)return;function b(){c.openChangeTimeout.clear(),x.clear(),d?.events.off("floating.closed",f),a()}function C(T){if(d&&g&&Mt(d.nodesRef.current,g).length>0){d.events.on("floating.closed",f);return}if(v(T.relatedTarget))return;const D=l.current.floatingContext?.nodeId??y,L=T.relatedTarget;if(!(d&&D&&ne(L)&&Mt(d.nodesRef.current,D,!1).some(_=>fe(_.context?.elements.floating,L)))){if(c.handler){c.handler(T);return}a(),h()||R(T)}}function f(T){!d||!g||Mt(d.nodesRef.current,g).length>0||x.start(0,()=>{d.events.off("floating.closed",f),t.setOpen(!1,ce(Te,T)),d.events.emit("floating.closed",T)})}const I=r;return Ft(I&&Ae(I,"mouseenter",b),I&&Ae(I,"mouseleave",C),I&&Ae(I,"pointerdown",E,!0),()=>{d?.events.off("floating.closed",f)})},[i,r,t,l,y,h,v,R,a,E,c,d,g,x])}const Ls={current:null};function Ns(e,n={}){const t="rootStore"in e?e.rootStore:e,{dataRef:o,events:r}=t.context,{enabled:s=!0,delay:l=0,handleClose:i=null,mouseOnly:u=!1,restMs:y=0,move:c=!0,triggerElementRef:d=Ls,externalTree:g,isActiveTrigger:h=!0,getHandleCloseContext:m,isClosing:v}=n,R=mt(g),a=ho(t),E=p.useRef(!1),x=Ee(i),b=Ee(l),C=Ee(y),f=Ee(s),I=Ee(v);h&&(a.handleCloseOptions=x.current?.__options);const T=se(()=>so(o.current.openEvent?.type,a.interactedInside)),D=se(S=>Dt(S,t.context.triggerElements)),L=se((S,w,M)=>{const O=t.context.triggerElements;if(O.hasElement(w))return!S||!fe(S,w);if(!ne(M))return!1;const k=M;return O.hasMatchingElement(P=>fe(P,k))&&(!S||!fe(S,k))}),$=se((S,w=!0)=>{const M=cn(b.current,"close",a.pointerType);M?a.openChangeTimeout.start(M,()=>{t.setOpen(!1,ce(Te,S)),R?.events.emit("floating.closed",S)}):w&&(a.openChangeTimeout.clear(),t.setOpen(!1,ce(Te,S)),R?.events.emit("floating.closed",S))}),_=se(()=>{if(!a.handler)return;we(t.select("domReferenceElement")).removeEventListener("mousemove",a.handler),a.handler=void 0}),H=se(()=>{_t(a)});return p.useEffect(()=>_,[_]),p.useEffect(()=>{if(!s)return;function S(w){w.open?E.current=!1:(E.current=w.reason===Te,_(),a.openChangeTimeout.clear(),a.restTimeout.clear(),a.blockMouseMove=!0,a.restTimeoutPending=!1)}return r.on("openchange",S),()=>{r.off("openchange",S)}},[s,r,a,_]),p.useEffect(()=>{if(!s)return;const S=d.current??(h?t.select("domReferenceElement"):null);if(!ne(S))return;function w(O){if(a.openChangeTimeout.clear(),a.blockMouseMove=!1,u&&!lt(a.pointerType))return;const k=bn(C.current),P=cn(b.current,"open",a.pointerType),F=tt(O),X=O.currentTarget??null,Y=t.select("domReferenceElement");let U=X;if(ne(F)&&!t.context.triggerElements.hasElement(F)){for(const le of t.context.triggerElements.elements())if(fe(le,F)){U=le;break}}ne(X)&&ne(Y)&&!t.context.triggerElements.hasElement(X)&&fe(X,Y)&&(U=Y);const K=U==null?!1:L(Y,U,F),Q=t.select("open"),B=I.current?.()??t.select("transitionStatus")==="ending",j=!Q&&B&&E.current,J=!K&&ne(U)&&ne(Y)&&fe(Y,U)&&j,z=k>0&&!P,ae=K&&(Q||j)||J,Z=!Q||K;if(ae){t.setOpen(!0,ce(Te,O,U));return}z||(P?a.openChangeTimeout.start(P,()=>{Z&&t.setOpen(!0,ce(Te,O,U))}):Z&&t.setOpen(!0,ce(Te,O,U)))}function M(O){if(T()){H();return}_();const k=t.select("domReferenceElement"),P=we(k);a.restTimeout.clear(),a.restTimeoutPending=!1;const F=o.current.floatingContext??m?.();if(D(O.relatedTarget))return;if(x.current&&F){t.select("open")||a.openChangeTimeout.clear();const U=d.current;a.handler=x.current({...F,tree:R,x:O.clientX,y:O.clientY,onClose(){H(),_(),f.current&&!T()&&U===t.select("domReferenceElement")&&$(O,!0)}}),P.addEventListener("mousemove",a.handler),a.handler(O);return}(a.pointerType!=="touch"||!fe(t.select("floatingElement"),O.relatedTarget))&&$(O)}return c?Ft(Ae(S,"mousemove",w,{once:!0}),Ae(S,"mouseenter",w),Ae(S,"mouseleave",M)):Ft(Ae(S,"mouseenter",w),Ae(S,"mouseleave",M))},[_,H,o,b,$,t,s,x,a,h,L,T,D,u,c,C,d,R,f,m,I]),p.useMemo(()=>{if(!s)return;function S(w){a.pointerType=w.pointerType}return{onPointerDown:S,onPointerEnter:S,onMouseMove(w){const{nativeEvent:M}=w,O=w.currentTarget,k=t.select("domReferenceElement"),P=t.select("open"),F=L(k,O,w.target);if(u&&!lt(a.pointerType))return;if(P&&F&&a.handleCloseOptions?.blockPointerEvents){const U=t.select("floatingElement");if(U){const K=a.handleCloseOptions?.getScope?.()??O.ownerDocument.body;mo(a,{scopeElement:K,referenceElement:O,floatingElement:U})}}const X=bn(C.current);if(P&&!F||X===0||!F&&a.restTimeoutPending&&w.movementX**2+w.movementY**2<2)return;a.restTimeout.clear();function Y(){if(a.restTimeoutPending=!1,T())return;const U=t.select("open");!a.blockMouseMove&&(!U||F)&&t.setOpen(!0,ce(Te,M,O))}a.pointerType==="touch"?Nt.flushSync(()=>{Y()}):F&&P?Y():(a.restTimeoutPending=!0,a.restTimeout.start(X,Y))}}},[s,a,T,L,u,t,C])}const Hs="Escape";function zt(e,n,t){switch(e){case"vertical":return n;case"horizontal":return t;default:return n||t}}function Et(e,n){return zt(n,e===jn||e===Wt,e===ht||e===xt)}function en(e,n,t){return zt(n,e===Wt,t?e===ht:e===xt)||e==="Enter"||e===" "||e===""}function Bs(e,n,t){return zt(n,t?e===ht:e===xt,e===Wt)}function _s(e,n,t,o){const r=t?e===xt:e===ht,s=e===jn;return n==="both"||n==="horizontal"&&o&&o>1?e===Hs:zt(n,r,s)}function Vs(e,n){const t="rootStore"in e?e.rootStore:e,o=t.useState("open"),r=t.useState("floatingElement"),s=t.useState("domReferenceElement"),l=t.context.dataRef,{listRef:i,activeIndex:u,onNavigate:y=()=>{},enabled:c=!0,selectedIndex:d=null,allowEscape:g=!1,loopFocus:h=!1,nested:m=!1,rtl:v=!1,virtual:R=!1,focusItemOnOpen:a="auto",focusItemOnHover:E=!0,openOnArrowKeyDown:x=!0,disabledIndices:b=void 0,orientation:C="vertical",parentOrientation:f,cols:I=1,id:T,resetOnPointerLeave:D=!0,externalTree:L}=n,$=zo(r),_=Ee($),H=pt(),S=mt(L);oe(()=>{l.current.orientation=C},[l,C]);const w=Yo(s),M=p.useRef(a),O=p.useRef(d??-1),k=p.useRef(null),P=p.useRef(!0),F=se(A=>{y(O.current===-1?null:O.current,A)}),X=p.useRef(F),Y=p.useRef(!!r),U=p.useRef(o),K=p.useRef(!1),Q=p.useRef(!1),B=p.useRef(null),j=Ee(b),J=Ee(o),z=Ee(d),ae=Ee(D),Z=se(()=>{function A(G){R?S?.events.emit("virtualfocus",G):B.current=Ko(G,{sync:K.current,preventScroll:!0})}const N=i.current[O.current],V=Q.current;N&&A(N),(K.current?G=>G():requestAnimationFrame)(()=>{const G=i.current[O.current]||N;if(!G)return;N||A(G),Oe&&(V||!P.current)&&G.scrollIntoView?.({block:"nearest",inline:"nearest"})})});oe(()=>{c&&(o&&r?(O.current=d??-1,M.current&&d!=null&&(Q.current=!0,F())):Y.current&&(O.current=-1,X.current()))},[c,o,r,d,F]),oe(()=>{if(c){if(!o){K.current=!1;return}if(r)if(u==null){if(K.current=!1,z.current!=null)return;if(Y.current&&(O.current=-1,Z()),(!U.current||!Y.current)&&M.current&&(k.current!=null||M.current===!0&&k.current==null)){let A=0;const N=()=>{i.current[0]==null?(A<2&&(A?requestAnimationFrame:queueMicrotask)(N),A+=1):(O.current=k.current==null||en(k.current,C,v)||m?Gt(i):Rn(i),k.current=null,F())};N()}}else xn(i.current,u)||(O.current=u,Z(),Q.current=!1)}},[c,o,r,u,z,m,i,C,v,F,Z,j]),oe(()=>{if(!c||r||!S||R||!Y.current)return;const A=S.nodesRef.current,N=A.find(G=>G.id===H)?.context?.elements.floating,V=it(we(r)),ie=A.some(G=>G.context&&fe(G.context.elements.floating,V));N&&!ie&&P.current&&N.focus({preventScroll:!0})},[c,r,S,H,R]),oe(()=>{X.current=F,U.current=o,Y.current=!!r}),oe(()=>{o||(k.current=null,M.current=a)},[o,a]);const le=u!=null,de=se(A=>{if(!J.current)return;const N=i.current.indexOf(A.currentTarget);N!==-1&&(O.current!==N||u!==N)&&(O.current=N,F(A))}),Oe=p.useMemo(()=>({onFocus(N){K.current=!0,de(N)},onClick:({currentTarget:N})=>N.focus({preventScroll:!0}),onMouseMove(N){K.current=!0,Q.current=!1,E&&de(N)},onPointerLeave(N){if(!J.current||!P.current||N.pointerType==="touch")return;K.current=!0;const V=N.relatedTarget;if(!(!E||i.current.includes(V))&&ae.current&&(B.current?.(),B.current=null,O.current=-1,F(N),!R)){const ie=_.current,G=it(we(ie));ie&&fe(ie,G)&&ie.focus({preventScroll:!0})}}}),[de,J,_,E,i,F,ae,R]),Ce=p.useCallback(()=>f??S?.nodesRef.current.find(A=>A.id===H)?.context?.dataRef?.current.orientation,[H,S,f]),ve=se(A=>{if(P.current=!1,K.current=!0,A.which===229||!J.current&&A.currentTarget===_.current)return;if(m&&_s(A.key,C,v,I)){Et(A.key,Ce())||Ve(A),t.setOpen(!1,ce(St,A.nativeEvent)),De(s)&&(R?S?.events.emit("virtualfocus",s):s.focus());return}const N=O.current,V=Gt(i,b),ie=Rn(i,b);if(w||(A.key==="Home"&&(Ve(A),O.current=V,F(A)),A.key==="End"&&(Ve(A),O.current=ie,F(A))),I>1){const G=Array.from({length:i.current.length},()=>({width:1,height:1})),Re=Xo(G,I),Be=Re.findIndex(be=>be!=null&&!qt(i.current,be,b)),Ye=Re.reduce((be,W,q)=>W!=null&&!qt(i.current,W,b)?q:be,-1),Le=Re[jo(Re.map(be=>be!=null?i.current[be]:null),{event:A,orientation:C,loopFocus:h,rtl:v,cols:I,disabledIndices:qo([...(typeof b!="function"?b:null)||i.current.map((be,W)=>qt(i.current,W,b)?W:void 0),void 0],Re),minIndex:Be,maxIndex:Ye,prevIndex:Go(O.current>ie?V:O.current,G,Re,I,A.key===Wt?"bl":A.key===(v?ht:xt)?"tr":"tl"),stopEvent:!0})];if(Le!=null&&(O.current=Le,F(A)),C==="both")return}if(Et(A.key,C)){if(Ve(A),o&&!R&&it(A.currentTarget.ownerDocument)===A.currentTarget){O.current=en(A.key,C,v)?V:ie,F(A);return}en(A.key,C,v)?h?N>=ie?g&&N!==i.current.length?O.current=-1:(K.current=!1,O.current=V):O.current=bt(i.current,{startingIndex:N,disabledIndices:b}):O.current=Math.min(ie,bt(i.current,{startingIndex:N,disabledIndices:b})):h?N<=V?g&&N!==-1?O.current=i.current.length:(K.current=!1,O.current=ie):O.current=bt(i.current,{startingIndex:N,decrement:!0,disabledIndices:b}):O.current=Math.max(V,bt(i.current,{startingIndex:N,decrement:!0,disabledIndices:b})),xn(i.current,O.current)&&(O.current=-1),F(A)}}),me=p.useMemo(()=>R&&o&&le&&{"aria-activedescendant":`${T}-${u}`},[R,o,le,T,u]),ue=p.useMemo(()=>({"aria-orientation":C==="both"?void 0:C,...w?{}:me,onKeyDown(A){if(A.key==="Tab"&&A.shiftKey&&o&&!R){const N=tt(A.nativeEvent);if(N&&!fe(_.current,N))return;Ve(A),t.setOpen(!1,ce(Lt,A.nativeEvent)),De(s)&&s.focus();return}ve(A)},onPointerMove(){P.current=!0}}),[me,ve,_,C,w,t,o,R,s]),ge=p.useMemo(()=>{function A(V){a==="auto"&&Qo(V.nativeEvent)&&(M.current=!R)}function N(V){M.current=a,a==="auto"&&Jo(V.nativeEvent)&&(M.current=!0)}return{onKeyDown(V){const ie=t.select("open");P.current=!1;const G=V.key.startsWith("Arrow"),Re=Bs(V.key,Ce(),v),Be=Et(V.key,C),Ye=(m?Re:Be)||V.key==="Enter"||V.key.trim()==="";if(R&&ie)return ve(V);if(!(!ie&&!x&&G)){if(Ye){const Le=Et(V.key,Ce());k.current=m&&Le?null:V.key}if(m){Re&&(Ve(V),ie?(O.current=Gt(i,j.current),F(V)):t.setOpen(!0,ce(St,V.nativeEvent,V.currentTarget)));return}Be&&(z.current!=null&&(O.current=z.current),Ve(V),!ie&&x?t.setOpen(!0,ce(St,V.nativeEvent,V.currentTarget)):ve(V),ie&&F(V))}},onFocus(V){t.select("open")&&!R&&(O.current=-1,F(V))},onPointerDown:N,onPointerEnter:N,onMouseDown:A,onClick:A}},[ve,j,a,i,m,F,t,x,C,Ce,v,z,R]),ee=p.useMemo(()=>({...me,...ge}),[me,ge]);return p.useMemo(()=>c?{reference:ee,floating:ue,item:Oe,trigger:ge}:{},[c,ee,ue,ge,Oe])}function Ws(e,n){const t="rootStore"in e?e.rootStore:e,o=t.context.dataRef,r=t.useState("open"),{listRef:s,elementsRef:l,activeIndex:i,onMatch:u,onTypingChange:y,enabled:c=!0,resetMs:d=750,selectedIndex:g=null}=n,h=We(),m=p.useRef(""),v=p.useRef(g??i??-1),R=p.useRef(null);oe(()=>{!r&&g!==null||(h.clear(),R.current=null,m.current!==""&&(m.current=""))},[r,g,h]),oe(()=>{r&&m.current===""&&(v.current=g??i??-1)},[r,g,i]);const a=se(f=>{f?o.current.typing||(o.current.typing=f,y?.(f)):o.current.typing&&(o.current.typing=f,y?.(f))}),E=se(f=>{function I(w){const M=l?.current[w];return!M||Zo(M)}function T(w,M,O=0){if(w.length===0)return-1;const k=(O%w.length+w.length)%w.length,P=M.toLocaleLowerCase();for(let F=0;F<w.length;F+=1){const X=(k+F)%w.length;if(!(!w[X]?.toLocaleLowerCase().startsWith(P)||!I(X)))return X}return-1}const D=s.current;if(m.current.length>0&&f.key===" "&&(Ve(f),a(!0)),m.current.length>0&&m.current[0]!==" "&&T(D,m.current)===-1&&f.key!==" "&&a(!1),D==null||f.key.length!==1||f.ctrlKey||f.metaKey||f.altKey)return;r&&f.key!==" "&&(Ve(f),a(!0));const L=m.current==="";L&&(v.current=g??i??-1),D.every(w=>w?w[0]?.toLocaleLowerCase()!==w[1]?.toLocaleLowerCase():!0)&&m.current===f.key&&(m.current="",v.current=R.current),m.current+=f.key,h.start(d,()=>{m.current="",v.current=R.current,a(!1)});const H=((L?g??i??-1:v.current)??0)+1,S=T(D,m.current,H);S!==-1?(u?.(S),R.current=S):f.key!==" "&&(m.current="",a(!1))}),x=se(f=>{const I=f.relatedTarget,T=t.select("domReferenceElement"),D=t.select("floatingElement"),L=fe(T,I),$=fe(D,I);L||$||(h.clear(),m.current="",v.current=R.current,a(!1))}),b=p.useMemo(()=>({onKeyDown:E,onBlur:x}),[E,x]),C=p.useMemo(()=>({onKeyDown:E,onBlur:x}),[E,x]);return p.useMemo(()=>c?{reference:b,floating:C}:{},[c,b,C])}const In=.1,$s=In*In,te=.5;function wt(e,n,t,o,r,s){return o>=n!=s>=n&&e<=(r-t)*(n-o)/(s-o)+t}function Ct(e,n,t,o,r,s,l,i,u,y){let c=!1;return wt(e,n,t,o,r,s)&&(c=!c),wt(e,n,r,s,l,i)&&(c=!c),wt(e,n,l,i,u,y)&&(c=!c),wt(e,n,u,y,t,o)&&(c=!c),c}function Us(e,n,t){return e>=t.x&&e<=t.x+t.width&&n>=t.y&&n<=t.y+t.height}function Tt(e,n,t,o,r,s){const l=Math.min(t,r),i=Math.max(t,r),u=Math.min(o,s),y=Math.max(o,s);return e>=l&&e<=i&&n>=u&&n<=y}function zs(e={}){const{blockPointerEvents:n=!1}=e,t=new sn,o=({x:r,y:s,placement:l,elements:i,onClose:u,nodeId:y,tree:c})=>{const d=l?.split("-")[0];let g=!1,h=null,m=null,v=typeof performance<"u"?performance.now():0;function R(E,x){const b=performance.now(),C=b-v;if(h===null||m===null||C===0)return h=E,m=x,v=b,!1;const f=E-h,I=x-m,T=f*f+I*I,D=C*C*$s;return h=E,m=x,v=b,T<D}function a(){t.clear(),u()}return function(x){t.clear();const b=i.domReference,C=i.floating;if(!b||!C||d==null||r==null||s==null)return;const{clientX:f,clientY:I}=x,T=tt(x),D=x.type==="mouseleave",L=fe(C,T),$=fe(b,T);if(L&&(g=!0,!D))return;if($&&(g=!1,!D)){g=!0;return}if(D&&ne(x.relatedTarget)&&fe(C,x.relatedTarget))return;function _(){return!!(c&&Mt(c.nodesRef.current,y).length>0)}function H(){_()||a()}if(_())return;const S=b.getBoundingClientRect(),w=C.getBoundingClientRect(),M=r>w.right-w.width/2,O=s>w.bottom-w.height/2,k=w.width>S.width,P=w.height>S.height,F=(k?S:w).left,X=(k?S:w).right,Y=(P?S:w).top,U=(P?S:w).bottom;if(d==="top"&&s>=S.bottom-1||d==="bottom"&&s<=S.top+1||d==="left"&&r>=S.right-1||d==="right"&&r<=S.left+1){H();return}let K=!1;switch(d){case"top":K=Tt(f,I,F,S.top+1,X,w.bottom-1);break;case"bottom":K=Tt(f,I,F,w.top+1,X,S.bottom-1);break;case"left":K=Tt(f,I,w.right-1,U,S.left+1,Y);break;case"right":K=Tt(f,I,S.right-1,U,w.left+1,Y);break}if(K)return;if(g&&!Us(f,I,S)){H();return}if(!D&&R(f,I)){H();return}let Q=!1;switch(d){case"top":{const B=k?te/2:te*4,j=k||M?r+B:r-B,J=k?r-B:M?r+B:r-B,z=s+te+1,ae=M||k?w.bottom-te:w.top,Z=M?k?w.bottom-te:w.top:w.bottom-te;Q=Ct(f,I,j,z,J,z,w.left,ae,w.right,Z);break}case"bottom":{const B=k?te/2:te*4,j=k||M?r+B:r-B,J=k?r-B:M?r+B:r-B,z=s-te,ae=M||k?w.top+te:w.bottom,Z=M?k?w.top+te:w.bottom:w.top+te;Q=Ct(f,I,j,z,J,z,w.left,ae,w.right,Z);break}case"left":{const B=P?te/2:te*4,j=P||O?s+B:s-B,J=P?s-B:O?s+B:s-B,z=r+te+1,ae=O||P?w.right-te:w.left,Z=O?P?w.right-te:w.left:w.right-te;Q=Ct(f,I,ae,w.top,Z,w.bottom,z,j,z,J);break}case"right":{const B=P?te/2:te*4,j=P||O?s+B:s-B,J=P?s-B:O?s+B:s-B,z=r-te,ae=O||P?w.left+te:w.right,Z=O?P?w.left+te:w.right:w.left+te;Q=Ct(f,I,z,j,z,J,ae,w.top,Z,w.bottom);break}}Q?g||t.start(40,H):H()}};return o.__options={...e,blockPointerEvents:n},o}const Ys=p.createContext(void 0);function Ks(e){return p.useContext(Ys)}function xo(e){return e==="starting"?er:et}const Xs={...Gn,...rr},Ti=p.forwardRef(function(n,t){const{render:o,className:r,style:s,finalFocus:l,...i}=n,{store:u}=Ge(),{side:y,align:c}=to(),d=Ks()!=null,g=u.useState("open"),h=u.useState("transitionStatus"),m=u.useState("popupProps"),v=u.useState("mounted"),R=u.useState("instantType"),a=u.useState("activeTriggerElement"),E=u.useState("parent"),x=u.useState("lastOpenChangeReason"),b=u.useState("rootId"),C=u.useState("floatingRootContext"),f=u.useState("floatingTreeRoot"),I=u.useState("closeDelay"),T=u.useState("activeTriggerElement"),D=E.type==="context-menu";tr({open:g,ref:u.context.popupRef,onComplete(){g&&u.context.onOpenChangeComplete?.(!0)}}),p.useEffect(()=>{function M(O){u.setOpen(!1,ce(O.reason,O.domEvent))}return f.events.on("close",M),()=>{f.events.off("close",M)}},[f.events,u]);const L=u.useState("hoverEnabled"),$=u.useState("disabled");Ds(C,{enabled:L&&!$&&!D&&E.type!=="menubar",closeDelay:I});const _={transitionStatus:h,side:y,align:c,open:g,nested:E.type==="menu",instant:R},H=p.useCallback(M=>{u.set("popupElement",M)},[u]),S=gt("div",n,{state:_,ref:[t,u.context.popupRef,H],stateAttributesMapping:Xs,props:[m,{onKeyDown(M){d&&sr.has(M.key)&&M.stopPropagation()}},xo(h),i,{"data-rootownerid":b}]});let w=E.type===void 0||D;return(a||E.type==="menubar"&&x!==nr)&&(w=!0),xe.jsx(or,{context:C,modal:D,disabled:!v,returnFocus:l===void 0?w:l,initialFocus:E.type!=="menu",restoreFocus:!0,externalTree:E.type!=="menubar"?f:void 0,previousFocusableElement:T,nextFocusableElement:E.type===void 0?u.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:E.type===void 0?u.context.beforeContentFocusGuardRef:void 0,children:S})}),Ro=p.createContext(void 0);function js(){const e=p.useContext(Ro);if(e===void 0)throw new Error(dt(32));return e}const Oi=p.forwardRef(function(n,t){const{keepMounted:o=!1,...r}=n,{store:s}=Ge();return s.useState("mounted")||o?xe.jsx(Ro.Provider,{value:o,children:xe.jsx(ir,{ref:t,...r})}):null}),Gs=p.createContext(void 0);function yo(){return p.useContext(Gs)?.direction??"ltr"}const qs=e=>({name:"arrow",options:e,async fn(n){const{x:t,y:o,placement:r,rects:s,platform:l,elements:i,middlewareData:u}=n,{element:y,padding:c=0,offsetParent:d="real"}=$e(e,n)||{};if(y==null)return{};const g=Vn(c),h={x:t,y:o},m=_n(r),v=Wn(m),R=await l.getDimensions(y),a=m==="y",E=a?"top":"left",x=a?"bottom":"right",b=a?"clientHeight":"clientWidth",C=s.reference[v]+s.reference[m]-h[m]-s.floating[v],f=h[m]-s.reference[m],I=d==="real"?await l.getOffsetParent?.(y):i.floating;let T=i.floating[b]||s.floating[v];(!T||!await l.isElement?.(I))&&(T=i.floating[b]||s.floating[v]);const D=C/2-f/2,L=T/2-R[v]/2-1,$=Math.min(g[E],L),_=Math.min(g[x],L),H=$,S=T-R[v]-_,w=T/2-R[v]/2+D,M=on(H,w,S),O=!u.arrow&&nt(r)!=null&&w!==M&&s.reference[v]/2-(w<H?$:_)-R[v]/2<0,k=O?w<H?w-H:w-S:0;return{[m]:h[m]+k,data:{[m]:M,centerOffset:w-M-k,...O&&{alignmentOffset:k}},reset:O}}}),Qs=(e,n)=>({...qs(e),options:[e,n]}),Js={name:"hide",async fn(e){const{width:n,height:t,x:o,y:r}=e.rects.reference,s=n===0&&t===0&&o===0&&r===0;return{data:{referenceHidden:(await Is().fn(e)).data?.referenceHidden||s}}}},It={sideX:"left",sideY:"top"},Zs={name:"adaptiveOrigin",async fn(e){const{x:n,y:t,rects:{floating:o},elements:{floating:r},platform:s,strategy:l,placement:i}=e,u=Fe(r),y=u.getComputedStyle(r);if(!(y.transitionDuration!=="0s"&&y.transitionDuration!==""))return{x:n,y:t,data:It};const d=await s.getOffsetParent?.(r);let g={width:0,height:0};if(l==="fixed"&&u?.visualViewport)g={width:u.visualViewport.width,height:u.visualViewport.height};else if(d===u){const E=we(r);g={width:E.documentElement.clientWidth,height:E.documentElement.clientHeight}}else await s.isElement?.(d)&&(g=await s.getDimensions(d));const h=Pe(i);let m=n,v=t;h==="left"&&(m=g.width-(n+o.width)),h==="top"&&(v=g.height-(t+o.height));const R=h==="left"?"right":It.sideX,a=h==="top"?"bottom":It.sideY;return{x:m,y:v,data:{sideX:R,sideY:a}}}};function vo(e,n,t){const o=e==="inline-start"||e==="inline-end";return{top:"top",right:o?t?"inline-start":"inline-end":"right",bottom:"bottom",left:o?t?"inline-end":"inline-start":"left"}[n]}function An(e,n,t){const{rects:o,placement:r}=e;return{side:vo(n,Pe(r),t),align:nt(r)||"center",anchor:{width:o.reference.width,height:o.reference.height},positioner:{width:o.floating.width,height:o.floating.height}}}function ei(e){const{anchor:n,positionMethod:t="absolute",side:o="bottom",sideOffset:r=0,align:s="center",alignOffset:l=0,collisionBoundary:i,collisionPadding:u=5,sticky:y=!1,arrowPadding:c=5,disableAnchorTracking:d=!1,keepMounted:g=!1,floatingRootContext:h,mounted:m,collisionAvoidance:v,shiftCrossAxis:R=!1,nodeId:a,adaptiveOrigin:E,lazyFlip:x=!1,externalTree:b}=e,[C,f]=p.useState(null);!m&&C!==null&&f(null);const I=v.side||"flip",T=v.align||"flip",D=v.fallbackAxisSide||"end",L=typeof n=="function"?n:void 0,$=se(L),_=L?$:n,H=Ee(n),S=Ee(m),M=yo()==="rtl",O=C||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":M?"left":"right","inline-start":M?"right":"left"}[o],k=s==="center"?O:`${O}-${s}`;let P=u;const F=1,X=o==="bottom"?F:0,Y=o==="top"?F:0,U=o==="right"?F:0,K=o==="left"?F:0;typeof P=="number"?P={top:P+X,right:P+K,bottom:P+Y,left:P+U}:P&&(P={top:(P.top||0)+X,right:(P.right||0)+K,bottom:(P.bottom||0)+Y,left:(P.left||0)+U});const Q={boundary:i==="clipping-ancestors"?"clippingAncestors":i,padding:P},B=p.useRef(null),j=Ee(r),J=Ee(l),Z=[Ts(re=>{const ye=An(re,o,M),Ne=typeof j.current=="function"?j.current(ye):j.current,Me=typeof J.current=="function"?J.current(ye):J.current;return{mainAxis:Ne,crossAxis:Me,alignmentAxis:Me}},[typeof r!="function"?r:0,typeof l!="function"?l:0,M,o])],le=T==="none"&&I!=="shift",de=!le&&(y||R||I==="shift"),Oe=I==="none"?null:Ss({...Q,padding:{top:P.top+F,right:P.right+F,bottom:P.bottom+F,left:P.left+F},mainAxis:!R&&I==="flip",crossAxis:T==="flip"?"alignment":!1,fallbackAxisSideDirection:D}),Ce=le?null:Os(re=>{const ye=we(re.elements.floating).documentElement;return{...Q,rootBoundary:R?{x:0,y:0,width:ye.clientWidth,height:ye.clientHeight}:void 0,mainAxis:T!=="none",crossAxis:de,limiter:y||R?void 0:Ms(Ne=>{if(!B.current)return{};const{width:Me,height:_e}=B.current.getBoundingClientRect(),Ie=ke(Pe(Ne.placement)),Xe=Ie==="y"?Me:_e,Qe=Ie==="y"?P.left+P.right:P.top+P.bottom;return{offset:Xe/2+Qe/2}})}},[Q,y,R,P,T]);I==="shift"||T==="shift"||s==="center"?Z.push(Ce,Oe):Z.push(Oe,Ce),Z.push(Ps({...Q,apply({elements:{floating:re},availableWidth:ye,availableHeight:Ne,rects:Me}){if(!S.current)return;const _e=re.style;_e.setProperty("--available-width",`${ye}px`),_e.setProperty("--available-height",`${Ne}px`);const Ie=Fe(re).devicePixelRatio||1,{x:Xe,y:Qe,width:yt,height:Yt}=Me.reference,Kt=(Math.round((Xe+yt)*Ie)-Math.round(Xe*Ie))/Ie,Xt=(Math.round((Qe+Yt)*Ie)-Math.round(Qe*Ie))/Ie;_e.setProperty("--anchor-width",`${Kt}px`),_e.setProperty("--anchor-height",`${Xt}px`)}}),Qs(()=>({element:B.current||we(B.current).createElement("div"),padding:c,offsetParent:"floating"}),[c]),{name:"transformOrigin",fn(re){const{elements:ye,middlewareData:Ne,placement:Me,rects:_e,y:Ie}=re,Xe=Pe(Me),Qe=ke(Xe),yt=B.current,Yt=Ne.arrow?.x||0,Kt=Ne.arrow?.y||0,Xt=yt?.clientWidth||0,wo=yt?.clientHeight||0,jt=Yt+Xt/2,mn=Kt+wo/2,Co=Math.abs(Ne.shift?.y||0),To=_e.reference.height/2,rt=typeof r=="function"?r(An(re,o,M)):r,Oo=Co>rt,Mo={top:`${jt}px calc(100% + ${rt}px)`,bottom:`${jt}px ${-rt}px`,left:`calc(100% + ${rt}px) ${mn}px`,right:`${-rt}px ${mn}px`}[Xe],So=`${jt}px ${_e.reference.y+To-Ie}px`;return ye.floating.style.setProperty("--transform-origin",de&&Qe==="y"&&Oo?So:Mo),{}}},Js,E),oe(()=>{!m&&h&&h.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[m,h]);const ve=p.useMemo(()=>({elementResize:!d&&typeof ResizeObserver<"u",layoutShift:!d&&typeof IntersectionObserver<"u"}),[d]),{refs:me,elements:ue,x:ge,y:ee,middlewareData:A,update:N,placement:V,context:ie,isPositioned:G,floatingStyles:Re}=ks({rootContext:h,open:g?m:void 0,placement:k,middleware:Z,strategy:t,whileElementsMounted:g?void 0:(...re)=>Sn(...re,ve),nodeId:a,externalTree:b}),{sideX:Be,sideY:Ye}=A.adaptiveOrigin||It,Le=G?t:"fixed",be=p.useMemo(()=>{const re=E?{position:Le,[Be]:ge,[Ye]:ee}:{position:Le,...Re};return G||(re.opacity=0),re},[E,Le,Be,ge,Ye,ee,Re,G]),W=p.useRef(null);oe(()=>{if(!m)return;const re=H.current,ye=typeof re=="function"?re():re,Me=(kn(ye)?ye.current:ye)||null||null;Me!==W.current&&(me.setPositionReference(Me),W.current=Me)},[m,me,_,H]),p.useEffect(()=>{if(!m)return;const re=H.current;typeof re!="function"&&kn(re)&&re.current!==W.current&&(me.setPositionReference(re.current),W.current=re.current)},[m,me,_,H]),p.useEffect(()=>{if(g&&m&&ue.domReference&&ue.floating)return Sn(ue.domReference,ue.floating,N,ve)},[g,m,ue,N,ve]);const q=Pe(V),he=vo(o,q,M),Ke=nt(V)||"center",ot=!!A.hide?.referenceHidden;oe(()=>{x&&m&&G&&f(q)},[x,m,G,q]);const Rt=p.useMemo(()=>({position:"absolute",top:A.arrow?.y,left:A.arrow?.x}),[A.arrow]),qe=A.arrow?.centerOffset!==0;return p.useMemo(()=>({positionerStyles:be,arrowStyles:Rt,arrowRef:B,arrowUncentered:qe,side:he,align:Ke,physicalSide:q,anchorHidden:ot,refs:me,context:ie,isPositioned:G,update:N}),[be,Rt,B,qe,he,Ke,q,ot,me,ie,G,N])}function kn(e){return e!=null&&"current"in e}function ti(e){const{children:n,elementsRef:t,labelsRef:o,onMapChange:r}=e,s=se(r),l=p.useRef(0),i=at(oi).current,u=at(ni).current,[y,c]=p.useState(0),d=p.useRef(y),g=se((a,E)=>{u.set(a,E??null),d.current+=1,c(d.current)}),h=se(a=>{u.delete(a),d.current+=1,c(d.current)}),m=p.useMemo(()=>{const a=new Map;return Array.from(u.keys()).filter(x=>x.isConnected).sort(ri).forEach((x,b)=>{const C=u.get(x)??{};a.set(x,{...C,index:b})}),a},[u,y]);oe(()=>{if(typeof MutationObserver!="function"||m.size===0)return;const a=new MutationObserver(E=>{const x=new Set,b=C=>x.has(C)?x.delete(C):x.add(C);E.forEach(C=>{C.removedNodes.forEach(b),C.addedNodes.forEach(b)}),x.size===0&&(d.current+=1,c(d.current))});return m.forEach((E,x)=>{x.parentElement&&a.observe(x.parentElement,{childList:!0})}),()=>{a.disconnect()}},[m]),oe(()=>{d.current===y&&(t.current.length!==m.size&&(t.current.length=m.size),o&&o.current.length!==m.size&&(o.current.length=m.size),l.current=m.size),s(m)},[s,m,t,o,y]),oe(()=>()=>{t.current=[]},[t]),oe(()=>()=>{o&&(o.current=[])},[o]);const v=se(a=>(i.add(a),()=>{i.delete(a)}));oe(()=>{i.forEach(a=>a(m))},[i,m]);const R=p.useMemo(()=>({register:g,unregister:h,subscribeMapChange:v,elementsRef:t,labelsRef:o,nextIndexRef:l}),[g,h,v,t,o,l]);return xe.jsx(oo.Provider,{value:R,children:n})}function ni(){return new Map}function oi(){return new Set}function ri(e,n){const t=e.compareDocumentPosition(n);return t&Node.DOCUMENT_POSITION_FOLLOWING||t&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:t&Node.DOCUMENT_POSITION_PRECEDING||t&Node.DOCUMENT_POSITION_CONTAINS?1:0}function si(e,n,{styles:t,transitionStatus:o,props:r,refs:s,hidden:l,inert:i=!1}){const u={...t};return i&&(u.pointerEvents="none"),gt("div",e,{state:n,ref:s,props:[{role:"presentation",hidden:l,style:u},xo(o),r],stateAttributesMapping:Gn})}const ii=20;function ci(e,n,t,o){const[r,s]=p.useState(!1);oe(()=>{if(!e||!n||t==null){s(!1);return}const l=we(t).documentElement.clientWidth,i=t.offsetWidth;s(l>0&&i>0&&i>=l-ii)},[e,n,t]),cr(e&&(!n||r),o)}const Mi=p.forwardRef(function(n,t){const{anchor:o,positionMethod:r="absolute",className:s,render:l,side:i,align:u,sideOffset:y=0,alignOffset:c=0,collisionBoundary:d="clipping-ancestors",collisionPadding:g=5,arrowPadding:h=5,sticky:m=!1,disableAnchorTracking:v=!1,collisionAvoidance:R=ar,style:a,...E}=n,{store:x}=Ge(),b=js(),C=$t(!0),f=x.useState("parent"),I=x.useState("floatingRootContext"),T=x.useState("floatingTreeRoot"),D=x.useState("mounted"),L=x.useState("open"),$=x.useState("modal"),_=x.useState("openMethod"),H=x.useState("activeTriggerElement"),S=x.useState("transitionStatus"),w=x.useState("positionerElement"),M=x.useState("instantType"),O=x.useState("hasViewport"),k=x.useState("lastOpenChangeReason"),P=x.useState("floatingNodeId"),F=x.useState("floatingParentNodeId"),X=I.useState("domReferenceElement"),Y=p.useRef(null),U=lr(w,!1,!1);let K=o,Q=y,B=c,j=u,J=R;f.type==="context-menu"&&(K=o??f.context?.anchor,j=j??"start",!i&&j!=="center"&&(B=n.alignOffset??2,Q=n.sideOffset??-5));let z=i,ae=j;f.type==="menu"?(z=z??"inline-end",ae=ae??"start",J=n.collisionAvoidance??ur):f.type==="menubar"&&(z=z??"bottom",ae=ae??"start");const Z=f.type==="context-menu",le=ei({anchor:K,floatingRootContext:I,positionMethod:C?"fixed":r,mounted:D,side:z,sideOffset:Q,align:ae,alignOffset:B,arrowPadding:Z?0:h,collisionBoundary:d,collisionPadding:g,sticky:m,nodeId:P,keepMounted:b,disableAnchorTracking:v,collisionAvoidance:J,shiftCrossAxis:Z&&!("side"in J&&J.side==="flip"),externalTree:T,adaptiveOrigin:O?Zs:void 0});p.useEffect(()=>{function ee(A){A.open&&(A.parentNodeId===P&&x.set("hoverEnabled",!1),A.nodeId!==P&&A.parentNodeId===x.select("floatingParentNodeId")&&x.setOpen(!1,ce(st)))}return T.events.on("menuopenchange",ee),()=>{T.events.off("menuopenchange",ee)}},[x,T.events,P]),p.useEffect(()=>{if(x.select("floatingParentNodeId")==null)return;function ee(A){if(A.open||A.nodeId!==x.select("floatingParentNodeId"))return;const N=A.reason??st;x.setOpen(!1,ce(N))}return T.events.on("menuopenchange",ee),()=>{T.events.off("menuopenchange",ee)}},[T.events,x]);const de=We();p.useEffect(()=>{L||de.clear()},[L,de]),p.useEffect(()=>{function ee(A){if(!(!L||A.nodeId!==x.select("floatingParentNodeId")))if(A.target&&H&&H!==A.target){const N=x.select("closeDelay");N>0?de.isStarted()||de.start(N,()=>{x.setOpen(!1,ce(st))}):x.setOpen(!1,ce(st))}else de.clear()}return T.events.on("itemhover",ee),()=>{T.events.off("itemhover",ee)}},[T.events,L,H,x,de]),p.useEffect(()=>{const ee={open:L,nodeId:P,parentNodeId:F,reason:x.select("lastOpenChangeReason")};T.events.emit("menuopenchange",ee)},[T.events,L,x,P,F]),oe(()=>{const ee=X,A=Y.current;if(ee&&(Y.current=ee),A&&ee&&ee!==A){x.set("instantType",void 0);const N=new AbortController;return U(()=>{x.set("instantType","trigger-change")},N.signal),()=>{N.abort()}}},[X,U,x]);const Oe={open:L,side:le.side,align:le.align,anchorHidden:le.anchorHidden,nested:f.type==="menu",instant:M},Ce=f.type==="menubar"&&f.context.modal;ci(L&&(Ce||$&&k!==Te),_==="touch",w,H);const me=si(n,Oe,{styles:le.positionerStyles,transitionStatus:S,props:E,refs:[t,x.useStateSetter("positionerElement")],hidden:!D,inert:!L}),ue=D&&f.type!=="menu"&&(f.type!=="menubar"&&$&&k!==Te||f.type==="menubar"&&f.context.modal);let ge=null;return f.type==="menubar"?ge=f.context.contentElement:f.type===void 0&&(ge=H),xe.jsxs(eo.Provider,{value:le,children:[ue&&xe.jsx(fr,{ref:f.type==="context-menu"||f.type==="nested-context-menu"?f.context.internalBackdropRef:null,inert:dr(!L),cutout:ge}),xe.jsx(gr,{id:P,children:xe.jsx(ti,{elementsRef:x.context.itemDomElements,labelsRef:x.context.itemLabels,children:me})})]})}),ai=p.createContext(null);function bo(e){return p.useContext(ai)}const li={...mr,disabled:pe(e=>e.parent.type==="menubar"&&e.parent.context.disabled||e.disabled),modal:pe(e=>(e.parent.type===void 0||e.parent.type==="context-menu")&&(e.modal??!0)),openMethod:pe(e=>e.openMethod),allowMouseEnter:pe(e=>e.allowMouseEnter),stickIfOpen:pe(e=>e.stickIfOpen),parent:pe(e=>e.parent),rootId:pe(e=>e.parent.type==="menu"?e.parent.store.select("rootId"):e.parent.type!==void 0?e.parent.context.rootId:e.rootId),activeIndex:pe(e=>e.activeIndex),isActive:pe((e,n)=>e.activeIndex===n),hoverEnabled:pe(e=>e.hoverEnabled),instantType:pe(e=>e.instantType),lastOpenChangeReason:pe(e=>e.openChangeReason),floatingTreeRoot:pe(e=>e.parent.type==="menu"?e.parent.store.select("floatingTreeRoot"):e.floatingTreeRoot),floatingNodeId:pe(e=>e.floatingNodeId),floatingParentNodeId:pe(e=>e.floatingParentNodeId),itemProps:pe(e=>e.itemProps),closeDelay:pe(e=>e.closeDelay),hasViewport:pe(e=>e.hasViewport),keyboardEventRelay:pe(e=>{if(e.keyboardEventRelay)return e.keyboardEventRelay;if(e.parent.type==="menu")return e.parent.store.select("keyboardEventRelay")})};class pn extends pr{constructor(n){super({...ui(),...n},{positionerRef:p.createRef(),popupRef:p.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:p.createRef(),beforeContentFocusGuardRef:p.createRef(),onOpenChangeComplete:void 0,triggerElements:new Kn},li),this.unsubscribeParentListener=this.observe("parent",t=>{if(this.unsubscribeParentListener?.(),t.type==="menu"){let o=t.store.select("rootId"),r=t.store.select("floatingTreeRoot"),s=t.store.select("keyboardEventRelay");this.unsubscribeParentListener=t.store.subscribe(()=>{const l=t.store.select("rootId"),i=t.store.select("floatingTreeRoot"),u=t.store.select("keyboardEventRelay");o===l&&r===i&&s===u||(o=l,r=i,s=u,this.notifyAll())}),this.context.allowMouseUpTriggerRef=t.store.context.allowMouseUpTriggerRef;return}t.type!==void 0&&(this.context.allowMouseUpTriggerRef=t.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(n,t){this.state.floatingRootContext.context.events.emit("setOpen",{open:n,eventDetails:t})}static useStore(n,t){const o=at(()=>new pn(t)).current;return n??o}unsubscribeParentListener=null}function ui(){return{...hr(),disabled:!1,modal:!0,openMethod:null,allowMouseEnter:!1,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new qn,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:et,keyboardEventRelay:void 0,closeDelay:0,hasViewport:!1}}const fi=p.createContext(void 0);function di(){return p.useContext(fi)}const Si=xr(function(n){const{children:t,open:o,onOpenChange:r,onOpenChangeComplete:s,defaultOpen:l=!1,disabled:i=!1,modal:u,loopFocus:y=!0,orientation:c="vertical",actionsRef:d,closeParentOnEsc:g=!1,handle:h,triggerId:m,defaultTriggerId:v=null,highlightItemOnHover:R=!0}=n,a=$t(!0),E=Ge(!0),x=bo(!0),b=di(),C=p.useMemo(()=>b&&E?{type:"menu",store:E.store}:x?{type:"menubar",context:x}:a&&!E?{type:"context-menu",context:a}:{type:void 0},[a,E,x,b]),f=pn.useStore(h?.store,{open:l,openProp:o,activeTriggerId:v,triggerIdProp:m,parent:C});Rr(()=>{o===void 0&&f.state.open===!1&&l===!0&&f.update({open:!0,activeTriggerId:v})}),f.useControlledProp("openProp",o),f.useControlledProp("triggerIdProp",m),f.useContextCallback("onOpenChangeComplete",s);const I=f.useState("floatingTreeRoot"),T=Qn(I),D=pt();oe(()=>{a&&!E?f.update({parent:{type:"context-menu",context:a},floatingNodeId:T,floatingParentNodeId:D}):E&&f.update({floatingNodeId:T,floatingParentNodeId:D})},[a,E,T,D,f]);const L=f.useState("open"),$=f.useState("activeTriggerElement"),_=f.useState("positionerElement"),H=f.useState("hoverEnabled"),S=f.useState("disabled"),w=f.useState("lastOpenChangeReason"),M=f.useState("parent"),O=f.useState("activeIndex"),k=f.useState("payload"),P=f.useState("floatingParentNodeId"),F=p.useRef(null),X=P!=null,{openMethod:Y,triggerProps:U}=yr(L);f.useSyncedValues({disabled:i,modal:M.type===void 0?u:void 0,openMethod:Y,rootId:Yn()}),vr(f);const{forceUnmount:K}=br(L,f,()=>{f.update({allowMouseEnter:!1,stickIfOpen:!0})}),Q=p.useRef(M.type!=="context-menu"),B=We();p.useEffect(()=>{if(L||(F.current=null),M.type==="context-menu"){if(!L){B.clear(),Q.current=!1;return}B.start(500,()=>{Q.current=!0})}},[B,L,M.type]),oe(()=>{!L&&!H&&f.set("hoverEnabled",!0)},[L,H,f]);const j=p.useRef(!0),J=We(),z=se((W,q)=>{const he=q.reason;if(L===W&&q.trigger===$&&w===he||(q.preventUnmountOnClose=()=>{f.set("preventUnmountingOnClose",!0)},!W&&q.trigger==null&&(q.trigger=$??void 0),r?.(W,q),q.isCanceled))return;f.state.floatingRootContext.dispatchOpenChange(W,q);const Ke=q.event;if(W===!1&&Ke?.type==="click"&&Ke.pointerType==="touch"&&!j.current)return;if(!W&&O!==null){const ye=f.context.itemDomElements.current[O];queueMicrotask(()=>{ye?.setAttribute("tabindex","-1")})}W&&he===ct?(j.current=!1,J.start(300,()=>{j.current=!0})):(j.current=!0,J.clear());const ot=(he===an||he===Ln)&&Ke.detail===0&&Ke?.isTrusted,Rt=!W&&(he===Xn||he==null),qe={open:W,openChangeReason:he};F.current=q.event??null;const re=q.trigger?.id??null;(re||W)&&(qe.activeTriggerId=re,qe.activeTriggerElement=q.trigger??null),f.update(qe),M.type==="menubar"&&(he===ct||he===Lt||he===Te||he===St||he===st)?f.set("instantType","group"):ot||Rt?f.set("instantType",ot?"click":"dismiss"):f.set("instantType",void 0)}),ae=p.useCallback(()=>{f.setOpen(!1,ce(Er))},[f]);p.useImperativeHandle(d,()=>({unmount:K,close:ae}),[K,ae]);let Z;M.type==="context-menu"&&(Z=M.context),p.useImperativeHandle(Z?.positionerRef,()=>_,[_]),p.useImperativeHandle(Z?.actionsRef,()=>({setOpen:z}),[z]);const le=wr({popupStore:f,onOpenChange:z}),de=le.context.events;p.useEffect(()=>{const W=({open:q,eventDetails:he})=>z(q,he);return de.on("setOpen",W),()=>{de?.off("setOpen",W)}},[de,z]);const Oe=Cr(le,{enabled:!S,bubbles:{escapeKey:g&&M.type==="menu"},outsidePress(){return M.type!=="context-menu"||F.current?.type==="contextmenu"?!0:Q.current},externalTree:X?I:void 0}),Ce=Tr(le,{role:"menu"}),ve=yo(),me=p.useCallback(W=>{f.select("activeIndex")!==W&&f.set("activeIndex",W)},[f]),ue=Vs(le,{enabled:!S,listRef:f.context.itemDomElements,activeIndex:O,nested:M.type!==void 0,loopFocus:y,orientation:c,parentOrientation:M.type==="menubar"?M.context.orientation:void 0,rtl:ve==="rtl",disabledIndices:nn,onNavigate:me,openOnArrowKeyDown:M.type!=="context-menu",externalTree:X?I:void 0,focusItemOnHover:R}),ge=p.useCallback(W=>{f.context.typingRef.current=W},[f]),ee=Ws(le,{listRef:f.context.itemLabels,elementsRef:f.context.itemDomElements,activeIndex:O,resetMs:Or,onMatch:W=>{L&&W!==O&&f.set("activeIndex",W)},onTypingChange:ge}),{getReferenceProps:A,getFloatingProps:N,getItemProps:V,getTriggerProps:ie}=Jn([Oe,Ce,ue,ee]),G=p.useMemo(()=>{const W=tn(A(),{onMouseMove(){f.set("allowMouseEnter",!0)}},U);return delete W.role,W},[A,f,U]),Re=p.useMemo(()=>{const W=ie();if(!W)return W;const q=tn(W,U);return delete q.role,delete q["aria-controls"],q},[ie,U]),Be=p.useMemo(()=>N({onMouseMove(){f.set("allowMouseEnter",!0),M.type==="menu"&&f.set("hoverEnabled",!1)},onClick(){f.select("hoverEnabled")&&f.set("hoverEnabled",!1)},onKeyDown(W){const q=f.select("keyboardEventRelay");q&&!W.isPropagationStopped()&&q(W)}}),[N,M.type,f]),Ye=p.useMemo(()=>V(),[V]);f.useSyncedValues({floatingRootContext:le,activeTriggerProps:G,inactiveTriggerProps:Re,popupProps:Be,itemProps:Ye});const Le=p.useMemo(()=>({store:f,parent:C}),[f,C]),be=xe.jsx(no.Provider,{value:Le,children:typeof t=="function"?t({payload:k}):t});return M.type===void 0||M.type==="context-menu"?xe.jsx(Mr,{externalTree:I,children:be}):be});function gi(e){const n=e.getBoundingClientRect(),t=Fe(e),o=t.getComputedStyle(e,"::before"),r=t.getComputedStyle(e,"::after");if(!(o.content!=="none"||r.content!=="none"))return n;const l=parseFloat(o.width)||0,i=parseFloat(o.height)||0,u=parseFloat(r.width)||0,y=parseFloat(r.height)||0,c=Math.max(n.width,l,u),d=Math.max(n.height,i,y),g=c-n.width,h=d-n.height;return{left:n.left-g/2,right:n.right+g/2,top:n.top-h/2,bottom:n.bottom+h/2}}function pi(e={}){const{highlightItemOnHover:n,highlightedIndex:t,onHighlightedIndexChange:o}=Zn(),{ref:r,index:s}=ro(e),l=t===s,i=p.useRef(null),u=Fn(r,i);return{compositeProps:p.useMemo(()=>({tabIndex:l?0:-1,onFocus(){o(s)},onMouseMove(){const c=i.current;if(!n||!c)return;const d=c.hasAttribute("disabled")||c.ariaDisabled==="true";!l&&!d&&c.focus()}}),[l,o,s,n]),compositeRef:u,index:s}}function mi(e){const{render:n,className:t,style:o,state:r=et,props:s=nn,refs:l=nn,metadata:i,stateAttributesMapping:u,tag:y="div",...c}=e,{compositeProps:d,compositeRef:g}=pi({metadata:i});return gt(y,e,{state:r,ref:[...l,g],props:[d,...s,c],stateAttributesMapping:u})}function Eo(e){if(De(e)&&e.hasAttribute("data-rootownerid"))return e.getAttribute("data-rootownerid")??void 0;if(!ft(e))return Eo(Ze(e))}function hi(e,n){const t=p.useRef(null),o=se(s=>{Nt.flushSync(()=>{e.setOpen(!1,ce(Lt,s.nativeEvent,s.currentTarget))}),Sr(t.current)?.focus()}),r=se(s=>{const l=e.select("positionerElement");if(l&&Pr(s,l))e.context.beforeContentFocusGuardRef.current?.focus();else{Nt.flushSync(()=>{e.setOpen(!1,ce(Lt,s.nativeEvent,s.currentTarget))});let i=Ir(e.context.triggerFocusTargetRef.current||n.current);for(;i!==null&&fe(l,i);){const u=i;if(i=Ar(i),i===u)break}i?.focus()}});return{preFocusGuardRef:t,handlePreFocusGuardFocus:o,handleFocusTargetFocus:r}}function xi(e){const{enabled:n=!0,mouseDownAction:t,open:o}=e,r=p.useRef(!1);return p.useMemo(()=>n?{onMouseDown:s=>{(t==="open"&&!o||t==="close"&&o)&&(r.current=!0,we(s.currentTarget).addEventListener("click",()=>{r.current=!1},{once:!0}))},onClick:s=>{r.current&&(r.current=!1,s.preventBaseUIHandler())}}:et,[n,t,o])}const Ot=2,Pi=kr(function(n,t){const{render:o,className:r,disabled:s=!1,nativeButton:l=!0,id:i,openOnHover:u,delay:y=100,closeDelay:c=0,handle:d,payload:g,style:h,...m}=n,v=Ge(!0),R=d?.store??v?.store;if(!R)throw new Error(dt(85));const a=Hn(i),E=R.useState("isTriggerActive",a),x=R.useState("floatingRootContext"),b=R.useState("isOpenedByTrigger",a),C=p.useRef(null),f=yi(),I=Zn(!0),T=mt(),D=p.useMemo(()=>T??new qn,[T]),L=Qn(D),$=pt(),{registerTrigger:_,isMountedByThisTrigger:H}=Fr(a,C,R,{payload:g,closeDelay:c,parent:f,floatingTreeRoot:D,floatingNodeId:L,floatingParentNodeId:$,keyboardEventRelay:I?.relayKeyboardEvent}),S=f.type==="menubar",w=R.useState("disabled"),M=s||w||S&&f.context.disabled,{getButtonProps:O,buttonRef:k}=Nn({disabled:M,native:l});p.useEffect(()=>{!b&&f.type===void 0&&(R.context.allowMouseUpTriggerRef.current=!1)},[R,b,f.type]);const P=p.useRef(null),F=We(),X=se(ue=>{if(!P.current)return;F.clear(),R.context.allowMouseUpTriggerRef.current=!1;const ge=ue.target;if(fe(P.current,ge)||fe(R.select("positionerElement"),ge)||ge===P.current||ge!=null&&Eo(ge)===R.select("rootId"))return;const ee=gi(P.current);ue.clientX>=ee.left-Ot&&ue.clientX<=ee.right+Ot&&ue.clientY>=ee.top-Ot&&ue.clientY<=ee.bottom+Ot||D.events.emit("close",{domEvent:ue,reason:Dr})});p.useEffect(()=>{b&&R.select("lastOpenChangeReason")===Te&&we(P.current).addEventListener("mouseup",X,{once:!0})},[b,X,R]);const Y=S&&f.context.hasSubmenuOpen,K=Ns(x,{enabled:(u??Y)&&!M&&f.type!=="context-menu"&&(!S||Y&&!H),handleClose:zs({blockPointerEvents:!S}),mouseOnly:!0,move:!1,restMs:f.type===void 0?y:void 0,delay:{close:c},triggerElementRef:C,externalTree:D,isActiveTrigger:E,isClosing:()=>R.select("transitionStatus")==="ending"}),Q=Ri(b,R.select("lastOpenChangeReason")),B=Ur(x,{enabled:!M&&f.type!=="context-menu",event:b&&S?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:f.type===void 0?Q:!1}),j=Fs(x,{enabled:!M&&Y}),J=xi({open:b,enabled:S,mouseDownAction:"open"}),z=Jn([B,j]),ae={disabled:M,open:b},Z=R.useState("triggerProps",H),le=[P,t,k,_,C],de=[z.getReferenceProps(),K??et,Z,{"aria-haspopup":"menu",id:a,onMouseDown:ue=>{if(R.select("open"))return;F.start(200,()=>{R.context.allowMouseUpTriggerRef.current=!0}),we(ue.currentTarget).addEventListener("mouseup",X,{once:!0})}},S?{role:"menuitem"}:{},J,m,O],{preFocusGuardRef:Oe,handlePreFocusGuardFocus:Ce,handleFocusTargetFocus:ve}=hi(R,C),me=gt("button",n,{enabled:!S,stateAttributesMapping:yn,state:ae,ref:le,props:de});return S?xe.jsx(mi,{tag:"button",render:o,className:r,style:h,state:ae,refs:le,props:de,stateAttributesMapping:yn}):b?xe.jsxs(p.Fragment,{children:[xe.jsx(vn,{ref:Oe,onFocus:Ce},`${a}-pre-focus-guard`),xe.jsx(p.Fragment,{children:me},a),xe.jsx(vn,{ref:R.context.triggerFocusTargetRef,onFocus:ve},`${a}-post-focus-guard`)]}):xe.jsx(p.Fragment,{children:me},a)});function Ri(e,n){const t=We(),[o,r]=p.useState(!1);return oe(()=>{e&&n==="trigger-hover"?(r(!0),t.start(Lr,()=>{r(!1)})):e||(t.clear(),r(!1))},[e,n,t]),o}function yi(){const e=$t(!0),n=Ge(!0),t=bo();return p.useMemo(()=>t?{type:"menubar",context:t}:e&&!n?{type:"context-menu",context:e}:{type:void 0},[e,n,t])}export{Si as M,Pi as a,Oi as b,Mi as c,Ti as d,Ci as e};
@@ -1 +0,0 @@
1
- import{p as e,A as u,B as b}from"./chunk-EVOBXE3Y-CmKRT32p.js";import{c as t,D as i,W as p,b as k,f as N}from"./db-link-BzIwSws3.js";import{B as v,C as x,a as m,b as h,c as g}from"./button-CudTDtZF.js";import{B as f}from"./badge-to3cY6Nn.js";import{T as C,a as w,b as j,c as d,d as L,e as l}from"./table-CV0K56fY.js";import{E as T}from"./error-card--OB_TuOC.js";const B=[{name:"Queued Jobs",key:"totalQueued",description:"Jobs waiting to be processed",color:"text-gray-600 dark:text-gray-400",bgColor:"bg-gray-50 dark:bg-gray-800"},{name:"Active Jobs",key:"totalActive",description:"Jobs currently processing",color:"text-gray-600 dark:text-gray-400",bgColor:"bg-gray-50 dark:bg-gray-800"},{name:"Deferred Jobs",key:"totalDeferred",description:"Jobs scheduled for later",color:"text-gray-600 dark:text-gray-400",bgColor:"bg-gray-50 dark:bg-gray-800"},{name:"Total Jobs",key:"totalJobs",description:"All jobs across queues",color:"text-gray-600 dark:text-gray-400",bgColor:"bg-gray-50 dark:bg-gray-800"}];function A({stats:r}){return e.jsx(e.Fragment,{children:B.map(a=>e.jsx("div",{className:t("overflow-hidden rounded-xl border shadow-sm","bg-white border-gray-200","dark:bg-gray-900 dark:border-gray-800"),children:e.jsx("div",{className:"p-5",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:t("flex-shrink-0 rounded-lg p-3",a.bgColor),children:e.jsx(S,{className:t("h-6 w-6",a.color)})}),e.jsxs("div",{className:"ml-4 flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-gray-500 dark:text-gray-400 truncate",children:a.name}),e.jsx("p",{className:t("text-2xl font-semibold",a.color),children:r[a.key].toLocaleString()})]})]})})},a.key))})}function S({className:r}){return e.jsx("svg",{className:r,fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})})}function M({totalQueues:r,problemQueues:a}){return e.jsx(i,{to:"/queues",className:t("block overflow-hidden rounded-xl border shadow-sm transition-all","bg-white border-gray-200 hover:shadow-md hover:border-gray-300","dark:bg-gray-900 dark:border-gray-800 dark:hover:border-gray-700"),children:e.jsx("div",{className:"p-5",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg p-3 bg-gray-50 dark:bg-gray-800",children:e.jsx(Q,{className:"h-6 w-6 text-gray-600 dark:text-gray-400"})}),e.jsxs("div",{className:"ml-4",children:[e.jsx("p",{className:"text-sm font-medium text-gray-500 dark:text-gray-400",children:"Queues"}),e.jsx("p",{className:"text-2xl font-semibold text-gray-600 dark:text-gray-400",children:r.toLocaleString()})]})]}),a>0&&e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg p-3 bg-gray-50 dark:bg-gray-800",children:e.jsx(W,{className:"h-6 w-6 text-amber-600 dark:text-amber-400"})}),e.jsxs("div",{className:"ml-4 text-right",children:[e.jsx("p",{className:"text-sm font-medium text-gray-500 dark:text-gray-400",children:"Needing Attention"}),e.jsx("p",{className:"text-2xl font-semibold text-amber-600 dark:text-amber-400",children:a.toLocaleString()})]})]})]})})})}function Q({className:r}){return e.jsx("svg",{className:r,fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z"})})}function W({className:r}){return e.jsx("svg",{className:r,fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})})}const _=b(function(){return e.jsx(T,{title:"Failed to load dashboard"})}),P=u(function({loaderData:a}){const{stats:y,warnings:n,topQueues:o,queueStats:c}=a;return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-gray-100",children:"Dashboard"}),e.jsx("p",{className:"mt-1 text-sm text-gray-500 dark:text-gray-400",children:"Monitor your pg-boss job queues"})]}),e.jsx(i,{to:"/send",children:e.jsx(v,{variant:"primary",size:"md",children:"Send Job"})})]}),e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4",children:"Overview"}),e.jsxs("div",{className:"space-y-5",children:[e.jsx("div",{className:"grid grid-cols-1 gap-5 sm:grid-cols-2",children:e.jsx(M,{totalQueues:c.totalQueues,problemQueues:c.problemQueues})}),e.jsx("div",{className:"grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-4",children:e.jsx(A,{stats:y})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(x,{children:[e.jsx(m,{children:e.jsx(h,{children:"Top Queues"})}),e.jsx(g,{className:"p-0",children:o.length===0?e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 p-6",children:"No queues found"}):e.jsxs(C,{children:[e.jsx(w,{children:e.jsxs(j,{children:[e.jsx(d,{children:"Name"}),e.jsx(d,{className:"text-right hidden md:table-cell",children:"Queued"}),e.jsx(d,{className:"text-right hidden md:table-cell",children:"Active"}),e.jsx(d,{className:"text-right",children:"Total"})]})}),e.jsx(L,{children:o.map(s=>e.jsxs(j,{children:[e.jsx(l,{children:e.jsx(i,{to:`/queues/${encodeURIComponent(s.name)}`,className:"font-medium text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300",children:s.name})}),e.jsx(l,{className:"text-right text-gray-700 dark:text-gray-300 hidden md:table-cell",children:s.queuedCount.toLocaleString()}),e.jsx(l,{className:"text-right text-gray-700 dark:text-gray-300 hidden md:table-cell",children:s.activeCount.toLocaleString()}),e.jsx(l,{className:"text-right text-gray-700 dark:text-gray-300",children:s.totalCount.toLocaleString()})]},s.name))})]})})]}),e.jsxs(x,{children:[e.jsxs(m,{className:"flex flex-row items-center justify-between",children:[e.jsx(h,{children:"Recent Warnings"}),e.jsx(i,{to:"/warnings",className:"text-sm font-medium text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300",children:"View all"})]}),e.jsx(g,{children:n.length===0?e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:"No warnings recorded"}):e.jsx("ul",{className:"space-y-3",children:n.map(s=>e.jsxs("li",{className:t("flex items-start gap-3 p-3 rounded-lg","bg-gray-50 dark:bg-gray-800"),children:[e.jsx(E,{className:"w-5 h-5 text-amber-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(f,{variant:k[s.type],size:"sm",children:p[s.type]}),e.jsx("span",{className:"text-xs text-gray-400",children:N(new Date(s.createdOn))})]}),e.jsx("p",{className:"text-sm text-gray-700 dark:text-gray-300 truncate",children:s.message})]})]},s.id))})})]})]})]})});function E({className:r}){return e.jsx("svg",{className:r,fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})})}export{_ as ErrorBoundary,P as default};
@@ -1 +0,0 @@
1
- import{p as a}from"./chunk-EVOBXE3Y-CmKRT32p.js";import{c as e,a as s}from"./db-link-BzIwSws3.js";const d=s("inline-flex items-center gap-1.5 rounded-full font-medium ring-1 ring-inset",{variants:{variant:{gray:"bg-gray-100 text-gray-700 ring-gray-500/10 dark:bg-gray-800 dark:text-gray-300 dark:ring-gray-500/20",primary:"bg-primary-50 text-primary-700 ring-primary-600/10 dark:bg-primary-950 dark:text-primary-300 dark:ring-primary-400/20",success:"bg-green-50 text-green-700 ring-green-600/10 dark:bg-green-950 dark:text-green-300 dark:ring-green-400/20",warning:"bg-warning-50 text-amber-700 ring-warning-600/10 dark:bg-warning-950 dark:text-amber-300 dark:ring-warning-400/20",error:"bg-red-50 text-red-700 ring-red-600/10 dark:bg-red-950 dark:text-red-300 dark:ring-red-400/20"},size:{sm:"px-2 py-0.5 text-xs",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1 text-sm"}},defaultVariants:{variant:"gray",size:"md"}}),m={gray:"bg-gray-500",primary:"bg-primary-500 dark:bg-primary-400",success:"bg-green-500",warning:"bg-warning-500",error:"bg-red-500"};function x({children:g,variant:r="gray",size:n,dot:i=!1,className:t}){return a.jsxs("span",{className:e(d({variant:r,size:n,className:t})),children:[i&&a.jsx("span",{className:e("h-1.5 w-1.5 rounded-full",m[r??"gray"])}),g]})}export{x as B};
@@ -1 +0,0 @@
1
- import{p as o,a as n}from"./chunk-EVOBXE3Y-CmKRT32p.js";import{c as t,u as g,m as y,a as m}from"./db-link-BzIwSws3.js";function x({children:r,className:a,...e}){return o.jsx("div",{className:t("bg-white rounded-xl border border-gray-200 shadow-sm overflow-hidden","dark:bg-gray-900 dark:border-gray-800",a),...e,children:r})}function f({children:r,className:a,...e}){return o.jsx("div",{className:t("px-6 py-5 border-b border-gray-200 dark:border-gray-800",a),...e,children:r})}function l({children:r,className:a,...e}){return o.jsx("h3",{className:t("text-lg font-semibold text-gray-900 dark:text-gray-100",a),...e,children:r})}function h({children:r,className:a,...e}){return o.jsx("div",{className:t("px-6 py-5",a),...e,children:r})}const p=m("inline-flex items-center justify-center font-semibold rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed dark:focus:ring-offset-gray-900",{variants:{variant:{primary:"bg-primary-600 text-white hover:bg-primary-700 focus:ring-primary-600 shadow-sm",secondary:"bg-primary-50 text-primary-700 hover:bg-primary-100 focus:ring-primary-600 dark:bg-primary-950 dark:text-primary-300 dark:hover:bg-primary-900",outline:"bg-white text-gray-700 border border-gray-300 hover:bg-gray-50 focus:ring-primary-600 shadow-sm dark:bg-gray-900 dark:text-gray-300 dark:border-gray-700 dark:hover:bg-gray-800",ghost:"text-gray-700 hover:bg-gray-100 focus:ring-primary-600 dark:text-gray-300 dark:hover:bg-gray-800",danger:"bg-red-600 text-white hover:bg-red-700 focus:ring-red-600 shadow-sm"},size:{sm:"px-3 py-1.5 text-sm",md:"px-4 py-2 text-sm",lg:"px-5 py-2.5 text-base"}},defaultVariants:{variant:"primary",size:"md"}}),b=n.forwardRef(({className:r,variant:a,size:e,render:s,...d},i)=>g({defaultTagName:"button",render:s,props:y({className:t(p({variant:a,size:e,className:r}))},d),ref:i}));b.displayName="Button";export{b as B,x as C,f as a,l as b,h as c};
@@ -1 +0,0 @@
1
- import{c as o}from"./createLucideIcon-C5Bm8BOS.js";const n=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],e=o("chevron-down",n);export{e as C};