[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/js/dist/ -> media-utils.js (source)

   1  (function() {
   2  "use strict";
   3  var wp;
   4  (wp ||= {}).mediaUtils = (() => {
   5    var __create = Object.create;
   6    var __defProp = Object.defineProperty;
   7    var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
   8    var __getOwnPropNames = Object.getOwnPropertyNames;
   9    var __getProtoOf = Object.getPrototypeOf;
  10    var __hasOwnProp = Object.prototype.hasOwnProperty;
  11    var __commonJS = (cb, mod) => function __require() {
  12      return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  13    };
  14    var __export = (target, all) => {
  15      for (var name in all)
  16        __defProp(target, name, { get: all[name], enumerable: true });
  17    };
  18    var __copyProps = (to, from, except, desc) => {
  19      if (from && typeof from === "object" || typeof from === "function") {
  20        for (let key of __getOwnPropNames(from))
  21          if (!__hasOwnProp.call(to, key) && key !== except)
  22            __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  23      }
  24      return to;
  25    };
  26    var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  27      // If the importer is in node compatibility mode or this is not an ESM
  28      // file that has been converted to a CommonJS file using a Babel-
  29      // compatible transform (i.e. "__esModule" has not been set), then set
  30      // "default" to the CommonJS "module.exports" for node compatibility.
  31      isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  32      mod
  33    ));
  34    var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  35  
  36    // package-external:@wordpress/element
  37    var require_element = __commonJS({
  38      "package-external:@wordpress/element"(exports, module) {
  39        module.exports = window.wp.element;
  40      }
  41    });
  42  
  43    // package-external:@wordpress/i18n
  44    var require_i18n = __commonJS({
  45      "package-external:@wordpress/i18n"(exports, module) {
  46        module.exports = window.wp.i18n;
  47      }
  48    });
  49  
  50    // package-external:@wordpress/data
  51    var require_data = __commonJS({
  52      "package-external:@wordpress/data"(exports, module) {
  53        module.exports = window.wp.data;
  54      }
  55    });
  56  
  57    // package-external:@wordpress/core-data
  58    var require_core_data = __commonJS({
  59      "package-external:@wordpress/core-data"(exports, module) {
  60        module.exports = window.wp.coreData;
  61      }
  62    });
  63  
  64    // package-external:@wordpress/blob
  65    var require_blob = __commonJS({
  66      "package-external:@wordpress/blob"(exports, module) {
  67        module.exports = window.wp.blob;
  68      }
  69    });
  70  
  71    // package-external:@wordpress/api-fetch
  72    var require_api_fetch = __commonJS({
  73      "package-external:@wordpress/api-fetch"(exports, module) {
  74        module.exports = window.wp.apiFetch;
  75      }
  76    });
  77  
  78    // package-external:@wordpress/components
  79    var require_components = __commonJS({
  80      "package-external:@wordpress/components"(exports, module) {
  81        module.exports = window.wp.components;
  82      }
  83    });
  84  
  85    // package-external:@wordpress/primitives
  86    var require_primitives = __commonJS({
  87      "package-external:@wordpress/primitives"(exports, module) {
  88        module.exports = window.wp.primitives;
  89      }
  90    });
  91  
  92    // vendor-external:react/jsx-runtime
  93    var require_jsx_runtime = __commonJS({
  94      "vendor-external:react/jsx-runtime"(exports, module) {
  95        module.exports = window.ReactJSXRuntime;
  96      }
  97    });
  98  
  99    // package-external:@wordpress/compose
 100    var require_compose = __commonJS({
 101      "package-external:@wordpress/compose"(exports, module) {
 102        module.exports = window.wp.compose;
 103      }
 104    });
 105  
 106    // vendor-external:react
 107    var require_react = __commonJS({
 108      "vendor-external:react"(exports, module) {
 109        module.exports = window.React;
 110      }
 111    });
 112  
 113    // vendor-external:react-dom
 114    var require_react_dom = __commonJS({
 115      "vendor-external:react-dom"(exports, module) {
 116        module.exports = window.ReactDOM;
 117      }
 118    });
 119  
 120    // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js
 121    var require_use_sync_external_store_shim_development = __commonJS({
 122      "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) {
 123        "use strict";
 124        (function() {
 125          function is(x2, y2) {
 126            return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2;
 127          }
 128          function useSyncExternalStore$2(subscribe2, getSnapshot) {
 129            didWarnOld18Alpha || void 0 === React147.startTransition || (didWarnOld18Alpha = true, console.error(
 130              "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
 131            ));
 132            var value = getSnapshot();
 133            if (!didWarnUncachedGetSnapshot) {
 134              var cachedValue = getSnapshot();
 135              objectIs(value, cachedValue) || (console.error(
 136                "The result of getSnapshot should be cached to avoid an infinite loop"
 137              ), didWarnUncachedGetSnapshot = true);
 138            }
 139            cachedValue = useState58({
 140              inst: { value, getSnapshot }
 141            });
 142            var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
 143            useLayoutEffect7(
 144              function() {
 145                inst.value = value;
 146                inst.getSnapshot = getSnapshot;
 147                checkIfSnapshotChanged(inst) && forceUpdate({ inst });
 148              },
 149              [subscribe2, value, getSnapshot]
 150            );
 151            useEffect53(
 152              function() {
 153                checkIfSnapshotChanged(inst) && forceUpdate({ inst });
 154                return subscribe2(function() {
 155                  checkIfSnapshotChanged(inst) && forceUpdate({ inst });
 156                });
 157              },
 158              [subscribe2]
 159            );
 160            useDebugValue2(value);
 161            return value;
 162          }
 163          function checkIfSnapshotChanged(inst) {
 164            var latestGetSnapshot = inst.getSnapshot;
 165            inst = inst.value;
 166            try {
 167              var nextValue = latestGetSnapshot();
 168              return !objectIs(inst, nextValue);
 169            } catch (error2) {
 170              return true;
 171            }
 172          }
 173          function useSyncExternalStore$1(subscribe2, getSnapshot) {
 174            return getSnapshot();
 175          }
 176          "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
 177          var React147 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState58 = React147.useState, useEffect53 = React147.useEffect, useLayoutEffect7 = React147.useLayoutEffect, useDebugValue2 = React147.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
 178          exports.useSyncExternalStore = void 0 !== React147.useSyncExternalStore ? React147.useSyncExternalStore : shim;
 179          "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
 180        })();
 181      }
 182    });
 183  
 184    // node_modules/use-sync-external-store/shim/index.js
 185    var require_shim = __commonJS({
 186      "node_modules/use-sync-external-store/shim/index.js"(exports, module) {
 187        "use strict";
 188        if (false) {
 189          module.exports = null;
 190        } else {
 191          module.exports = require_use_sync_external_store_shim_development();
 192        }
 193      }
 194    });
 195  
 196    // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js
 197    var require_with_selector_development = __commonJS({
 198      "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) {
 199        "use strict";
 200        (function() {
 201          function is(x2, y2) {
 202            return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2;
 203          }
 204          "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
 205          var React147 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore4 = shim.useSyncExternalStore, useRef93 = React147.useRef, useEffect53 = React147.useEffect, useMemo70 = React147.useMemo, useDebugValue2 = React147.useDebugValue;
 206          exports.useSyncExternalStoreWithSelector = function(subscribe2, getSnapshot, getServerSnapshot, selector2, isEqual) {
 207            var instRef = useRef93(null);
 208            if (null === instRef.current) {
 209              var inst = { hasValue: false, value: null };
 210              instRef.current = inst;
 211            } else inst = instRef.current;
 212            instRef = useMemo70(
 213              function() {
 214                function memoizedSelector(nextSnapshot) {
 215                  if (!hasMemo) {
 216                    hasMemo = true;
 217                    memoizedSnapshot = nextSnapshot;
 218                    nextSnapshot = selector2(nextSnapshot);
 219                    if (void 0 !== isEqual && inst.hasValue) {
 220                      var currentSelection = inst.value;
 221                      if (isEqual(currentSelection, nextSnapshot))
 222                        return memoizedSelection = currentSelection;
 223                    }
 224                    return memoizedSelection = nextSnapshot;
 225                  }
 226                  currentSelection = memoizedSelection;
 227                  if (objectIs(memoizedSnapshot, nextSnapshot))
 228                    return currentSelection;
 229                  var nextSelection = selector2(nextSnapshot);
 230                  if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
 231                    return memoizedSnapshot = nextSnapshot, currentSelection;
 232                  memoizedSnapshot = nextSnapshot;
 233                  return memoizedSelection = nextSelection;
 234                }
 235                var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot;
 236                return [
 237                  function() {
 238                    return memoizedSelector(getSnapshot());
 239                  },
 240                  null === maybeGetServerSnapshot ? void 0 : function() {
 241                    return memoizedSelector(maybeGetServerSnapshot());
 242                  }
 243                ];
 244              },
 245              [getSnapshot, getServerSnapshot, selector2, isEqual]
 246            );
 247            var value = useSyncExternalStore4(subscribe2, instRef[0], instRef[1]);
 248            useEffect53(
 249              function() {
 250                inst.hasValue = true;
 251                inst.value = value;
 252              },
 253              [value]
 254            );
 255            useDebugValue2(value);
 256            return value;
 257          };
 258          "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
 259        })();
 260      }
 261    });
 262  
 263    // node_modules/use-sync-external-store/shim/with-selector.js
 264    var require_with_selector = __commonJS({
 265      "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) {
 266        "use strict";
 267        if (false) {
 268          module.exports = null;
 269        } else {
 270          module.exports = require_with_selector_development();
 271        }
 272      }
 273    });
 274  
 275    // package-external:@wordpress/theme
 276    var require_theme = __commonJS({
 277      "package-external:@wordpress/theme"(exports, module) {
 278        module.exports = window.wp.theme;
 279      }
 280    });
 281  
 282    // package-external:@wordpress/private-apis
 283    var require_private_apis = __commonJS({
 284      "package-external:@wordpress/private-apis"(exports, module) {
 285        module.exports = window.wp.privateApis;
 286      }
 287    });
 288  
 289    // package-external:@wordpress/a11y
 290    var require_a11y = __commonJS({
 291      "package-external:@wordpress/a11y"(exports, module) {
 292        module.exports = window.wp.a11y;
 293      }
 294    });
 295  
 296    // package-external:@wordpress/warning
 297    var require_warning = __commonJS({
 298      "package-external:@wordpress/warning"(exports, module) {
 299        module.exports = window.wp.warning;
 300      }
 301    });
 302  
 303    // package-external:@wordpress/keycodes
 304    var require_keycodes = __commonJS({
 305      "package-external:@wordpress/keycodes"(exports, module) {
 306        module.exports = window.wp.keycodes;
 307      }
 308    });
 309  
 310    // node_modules/remove-accents/index.js
 311    var require_remove_accents = __commonJS({
 312      "node_modules/remove-accents/index.js"(exports, module) {
 313        var characterMap = {
 314          "\xC0": "A",
 315          "\xC1": "A",
 316          "\xC2": "A",
 317          "\xC3": "A",
 318          "\xC4": "A",
 319          "\xC5": "A",
 320          "\u1EA4": "A",
 321          "\u1EAE": "A",
 322          "\u1EB2": "A",
 323          "\u1EB4": "A",
 324          "\u1EB6": "A",
 325          "\xC6": "AE",
 326          "\u1EA6": "A",
 327          "\u1EB0": "A",
 328          "\u0202": "A",
 329          "\u1EA2": "A",
 330          "\u1EA0": "A",
 331          "\u1EA8": "A",
 332          "\u1EAA": "A",
 333          "\u1EAC": "A",
 334          "\xC7": "C",
 335          "\u1E08": "C",
 336          "\xC8": "E",
 337          "\xC9": "E",
 338          "\xCA": "E",
 339          "\xCB": "E",
 340          "\u1EBE": "E",
 341          "\u1E16": "E",
 342          "\u1EC0": "E",
 343          "\u1E14": "E",
 344          "\u1E1C": "E",
 345          "\u0206": "E",
 346          "\u1EBA": "E",
 347          "\u1EBC": "E",
 348          "\u1EB8": "E",
 349          "\u1EC2": "E",
 350          "\u1EC4": "E",
 351          "\u1EC6": "E",
 352          "\xCC": "I",
 353          "\xCD": "I",
 354          "\xCE": "I",
 355          "\xCF": "I",
 356          "\u1E2E": "I",
 357          "\u020A": "I",
 358          "\u1EC8": "I",
 359          "\u1ECA": "I",
 360          "\xD0": "D",
 361          "\xD1": "N",
 362          "\xD2": "O",
 363          "\xD3": "O",
 364          "\xD4": "O",
 365          "\xD5": "O",
 366          "\xD6": "O",
 367          "\xD8": "O",
 368          "\u1ED0": "O",
 369          "\u1E4C": "O",
 370          "\u1E52": "O",
 371          "\u020E": "O",
 372          "\u1ECE": "O",
 373          "\u1ECC": "O",
 374          "\u1ED4": "O",
 375          "\u1ED6": "O",
 376          "\u1ED8": "O",
 377          "\u1EDC": "O",
 378          "\u1EDE": "O",
 379          "\u1EE0": "O",
 380          "\u1EDA": "O",
 381          "\u1EE2": "O",
 382          "\xD9": "U",
 383          "\xDA": "U",
 384          "\xDB": "U",
 385          "\xDC": "U",
 386          "\u1EE6": "U",
 387          "\u1EE4": "U",
 388          "\u1EEC": "U",
 389          "\u1EEE": "U",
 390          "\u1EF0": "U",
 391          "\xDD": "Y",
 392          "\xE0": "a",
 393          "\xE1": "a",
 394          "\xE2": "a",
 395          "\xE3": "a",
 396          "\xE4": "a",
 397          "\xE5": "a",
 398          "\u1EA5": "a",
 399          "\u1EAF": "a",
 400          "\u1EB3": "a",
 401          "\u1EB5": "a",
 402          "\u1EB7": "a",
 403          "\xE6": "ae",
 404          "\u1EA7": "a",
 405          "\u1EB1": "a",
 406          "\u0203": "a",
 407          "\u1EA3": "a",
 408          "\u1EA1": "a",
 409          "\u1EA9": "a",
 410          "\u1EAB": "a",
 411          "\u1EAD": "a",
 412          "\xE7": "c",
 413          "\u1E09": "c",
 414          "\xE8": "e",
 415          "\xE9": "e",
 416          "\xEA": "e",
 417          "\xEB": "e",
 418          "\u1EBF": "e",
 419          "\u1E17": "e",
 420          "\u1EC1": "e",
 421          "\u1E15": "e",
 422          "\u1E1D": "e",
 423          "\u0207": "e",
 424          "\u1EBB": "e",
 425          "\u1EBD": "e",
 426          "\u1EB9": "e",
 427          "\u1EC3": "e",
 428          "\u1EC5": "e",
 429          "\u1EC7": "e",
 430          "\xEC": "i",
 431          "\xED": "i",
 432          "\xEE": "i",
 433          "\xEF": "i",
 434          "\u1E2F": "i",
 435          "\u020B": "i",
 436          "\u1EC9": "i",
 437          "\u1ECB": "i",
 438          "\xF0": "d",
 439          "\xF1": "n",
 440          "\xF2": "o",
 441          "\xF3": "o",
 442          "\xF4": "o",
 443          "\xF5": "o",
 444          "\xF6": "o",
 445          "\xF8": "o",
 446          "\u1ED1": "o",
 447          "\u1E4D": "o",
 448          "\u1E53": "o",
 449          "\u020F": "o",
 450          "\u1ECF": "o",
 451          "\u1ECD": "o",
 452          "\u1ED5": "o",
 453          "\u1ED7": "o",
 454          "\u1ED9": "o",
 455          "\u1EDD": "o",
 456          "\u1EDF": "o",
 457          "\u1EE1": "o",
 458          "\u1EDB": "o",
 459          "\u1EE3": "o",
 460          "\xF9": "u",
 461          "\xFA": "u",
 462          "\xFB": "u",
 463          "\xFC": "u",
 464          "\u1EE7": "u",
 465          "\u1EE5": "u",
 466          "\u1EED": "u",
 467          "\u1EEF": "u",
 468          "\u1EF1": "u",
 469          "\xFD": "y",
 470          "\xFF": "y",
 471          "\u0100": "A",
 472          "\u0101": "a",
 473          "\u0102": "A",
 474          "\u0103": "a",
 475          "\u0104": "A",
 476          "\u0105": "a",
 477          "\u0106": "C",
 478          "\u0107": "c",
 479          "\u0108": "C",
 480          "\u0109": "c",
 481          "\u010A": "C",
 482          "\u010B": "c",
 483          "\u010C": "C",
 484          "\u010D": "c",
 485          "C\u0306": "C",
 486          "c\u0306": "c",
 487          "\u010E": "D",
 488          "\u010F": "d",
 489          "\u0110": "D",
 490          "\u0111": "d",
 491          "\u0112": "E",
 492          "\u0113": "e",
 493          "\u0114": "E",
 494          "\u0115": "e",
 495          "\u0116": "E",
 496          "\u0117": "e",
 497          "\u0118": "E",
 498          "\u0119": "e",
 499          "\u011A": "E",
 500          "\u011B": "e",
 501          "\u011C": "G",
 502          "\u01F4": "G",
 503          "\u011D": "g",
 504          "\u01F5": "g",
 505          "\u011E": "G",
 506          "\u011F": "g",
 507          "\u0120": "G",
 508          "\u0121": "g",
 509          "\u0122": "G",
 510          "\u0123": "g",
 511          "\u0124": "H",
 512          "\u0125": "h",
 513          "\u0126": "H",
 514          "\u0127": "h",
 515          "\u1E2A": "H",
 516          "\u1E2B": "h",
 517          "\u0128": "I",
 518          "\u0129": "i",
 519          "\u012A": "I",
 520          "\u012B": "i",
 521          "\u012C": "I",
 522          "\u012D": "i",
 523          "\u012E": "I",
 524          "\u012F": "i",
 525          "\u0130": "I",
 526          "\u0131": "i",
 527          "\u0132": "IJ",
 528          "\u0133": "ij",
 529          "\u0134": "J",
 530          "\u0135": "j",
 531          "\u0136": "K",
 532          "\u0137": "k",
 533          "\u1E30": "K",
 534          "\u1E31": "k",
 535          "K\u0306": "K",
 536          "k\u0306": "k",
 537          "\u0139": "L",
 538          "\u013A": "l",
 539          "\u013B": "L",
 540          "\u013C": "l",
 541          "\u013D": "L",
 542          "\u013E": "l",
 543          "\u013F": "L",
 544          "\u0140": "l",
 545          "\u0141": "l",
 546          "\u0142": "l",
 547          "\u1E3E": "M",
 548          "\u1E3F": "m",
 549          "M\u0306": "M",
 550          "m\u0306": "m",
 551          "\u0143": "N",
 552          "\u0144": "n",
 553          "\u0145": "N",
 554          "\u0146": "n",
 555          "\u0147": "N",
 556          "\u0148": "n",
 557          "\u0149": "n",
 558          "N\u0306": "N",
 559          "n\u0306": "n",
 560          "\u014C": "O",
 561          "\u014D": "o",
 562          "\u014E": "O",
 563          "\u014F": "o",
 564          "\u0150": "O",
 565          "\u0151": "o",
 566          "\u0152": "OE",
 567          "\u0153": "oe",
 568          "P\u0306": "P",
 569          "p\u0306": "p",
 570          "\u0154": "R",
 571          "\u0155": "r",
 572          "\u0156": "R",
 573          "\u0157": "r",
 574          "\u0158": "R",
 575          "\u0159": "r",
 576          "R\u0306": "R",
 577          "r\u0306": "r",
 578          "\u0212": "R",
 579          "\u0213": "r",
 580          "\u015A": "S",
 581          "\u015B": "s",
 582          "\u015C": "S",
 583          "\u015D": "s",
 584          "\u015E": "S",
 585          "\u0218": "S",
 586          "\u0219": "s",
 587          "\u015F": "s",
 588          "\u0160": "S",
 589          "\u0161": "s",
 590          "\u0162": "T",
 591          "\u0163": "t",
 592          "\u021B": "t",
 593          "\u021A": "T",
 594          "\u0164": "T",
 595          "\u0165": "t",
 596          "\u0166": "T",
 597          "\u0167": "t",
 598          "T\u0306": "T",
 599          "t\u0306": "t",
 600          "\u0168": "U",
 601          "\u0169": "u",
 602          "\u016A": "U",
 603          "\u016B": "u",
 604          "\u016C": "U",
 605          "\u016D": "u",
 606          "\u016E": "U",
 607          "\u016F": "u",
 608          "\u0170": "U",
 609          "\u0171": "u",
 610          "\u0172": "U",
 611          "\u0173": "u",
 612          "\u0216": "U",
 613          "\u0217": "u",
 614          "V\u0306": "V",
 615          "v\u0306": "v",
 616          "\u0174": "W",
 617          "\u0175": "w",
 618          "\u1E82": "W",
 619          "\u1E83": "w",
 620          "X\u0306": "X",
 621          "x\u0306": "x",
 622          "\u0176": "Y",
 623          "\u0177": "y",
 624          "\u0178": "Y",
 625          "Y\u0306": "Y",
 626          "y\u0306": "y",
 627          "\u0179": "Z",
 628          "\u017A": "z",
 629          "\u017B": "Z",
 630          "\u017C": "z",
 631          "\u017D": "Z",
 632          "\u017E": "z",
 633          "\u017F": "s",
 634          "\u0192": "f",
 635          "\u01A0": "O",
 636          "\u01A1": "o",
 637          "\u01AF": "U",
 638          "\u01B0": "u",
 639          "\u01CD": "A",
 640          "\u01CE": "a",
 641          "\u01CF": "I",
 642          "\u01D0": "i",
 643          "\u01D1": "O",
 644          "\u01D2": "o",
 645          "\u01D3": "U",
 646          "\u01D4": "u",
 647          "\u01D5": "U",
 648          "\u01D6": "u",
 649          "\u01D7": "U",
 650          "\u01D8": "u",
 651          "\u01D9": "U",
 652          "\u01DA": "u",
 653          "\u01DB": "U",
 654          "\u01DC": "u",
 655          "\u1EE8": "U",
 656          "\u1EE9": "u",
 657          "\u1E78": "U",
 658          "\u1E79": "u",
 659          "\u01FA": "A",
 660          "\u01FB": "a",
 661          "\u01FC": "AE",
 662          "\u01FD": "ae",
 663          "\u01FE": "O",
 664          "\u01FF": "o",
 665          "\xDE": "TH",
 666          "\xFE": "th",
 667          "\u1E54": "P",
 668          "\u1E55": "p",
 669          "\u1E64": "S",
 670          "\u1E65": "s",
 671          "X\u0301": "X",
 672          "x\u0301": "x",
 673          "\u0403": "\u0413",
 674          "\u0453": "\u0433",
 675          "\u040C": "\u041A",
 676          "\u045C": "\u043A",
 677          "A\u030B": "A",
 678          "a\u030B": "a",
 679          "E\u030B": "E",
 680          "e\u030B": "e",
 681          "I\u030B": "I",
 682          "i\u030B": "i",
 683          "\u01F8": "N",
 684          "\u01F9": "n",
 685          "\u1ED2": "O",
 686          "\u1ED3": "o",
 687          "\u1E50": "O",
 688          "\u1E51": "o",
 689          "\u1EEA": "U",
 690          "\u1EEB": "u",
 691          "\u1E80": "W",
 692          "\u1E81": "w",
 693          "\u1EF2": "Y",
 694          "\u1EF3": "y",
 695          "\u0200": "A",
 696          "\u0201": "a",
 697          "\u0204": "E",
 698          "\u0205": "e",
 699          "\u0208": "I",
 700          "\u0209": "i",
 701          "\u020C": "O",
 702          "\u020D": "o",
 703          "\u0210": "R",
 704          "\u0211": "r",
 705          "\u0214": "U",
 706          "\u0215": "u",
 707          "B\u030C": "B",
 708          "b\u030C": "b",
 709          "\u010C\u0323": "C",
 710          "\u010D\u0323": "c",
 711          "\xCA\u030C": "E",
 712          "\xEA\u030C": "e",
 713          "F\u030C": "F",
 714          "f\u030C": "f",
 715          "\u01E6": "G",
 716          "\u01E7": "g",
 717          "\u021E": "H",
 718          "\u021F": "h",
 719          "J\u030C": "J",
 720          "\u01F0": "j",
 721          "\u01E8": "K",
 722          "\u01E9": "k",
 723          "M\u030C": "M",
 724          "m\u030C": "m",
 725          "P\u030C": "P",
 726          "p\u030C": "p",
 727          "Q\u030C": "Q",
 728          "q\u030C": "q",
 729          "\u0158\u0329": "R",
 730          "\u0159\u0329": "r",
 731          "\u1E66": "S",
 732          "\u1E67": "s",
 733          "V\u030C": "V",
 734          "v\u030C": "v",
 735          "W\u030C": "W",
 736          "w\u030C": "w",
 737          "X\u030C": "X",
 738          "x\u030C": "x",
 739          "Y\u030C": "Y",
 740          "y\u030C": "y",
 741          "A\u0327": "A",
 742          "a\u0327": "a",
 743          "B\u0327": "B",
 744          "b\u0327": "b",
 745          "\u1E10": "D",
 746          "\u1E11": "d",
 747          "\u0228": "E",
 748          "\u0229": "e",
 749          "\u0190\u0327": "E",
 750          "\u025B\u0327": "e",
 751          "\u1E28": "H",
 752          "\u1E29": "h",
 753          "I\u0327": "I",
 754          "i\u0327": "i",
 755          "\u0197\u0327": "I",
 756          "\u0268\u0327": "i",
 757          "M\u0327": "M",
 758          "m\u0327": "m",
 759          "O\u0327": "O",
 760          "o\u0327": "o",
 761          "Q\u0327": "Q",
 762          "q\u0327": "q",
 763          "U\u0327": "U",
 764          "u\u0327": "u",
 765          "X\u0327": "X",
 766          "x\u0327": "x",
 767          "Z\u0327": "Z",
 768          "z\u0327": "z",
 769          "\u0439": "\u0438",
 770          "\u0419": "\u0418",
 771          "\u0451": "\u0435",
 772          "\u0401": "\u0415"
 773        };
 774        var chars = Object.keys(characterMap).join("|");
 775        var allAccents = new RegExp(chars, "g");
 776        var firstAccent = new RegExp(chars, "");
 777        function matcher(match2) {
 778          return characterMap[match2];
 779        }
 780        var removeAccents2 = function(string) {
 781          return string.replace(allAccents, matcher);
 782        };
 783        var hasAccents = function(string) {
 784          return !!string.match(firstAccent);
 785        };
 786        module.exports = removeAccents2;
 787        module.exports.has = hasAccents;
 788        module.exports.remove = removeAccents2;
 789      }
 790    });
 791  
 792    // node_modules/fast-deep-equal/es6/index.js
 793    var require_es6 = __commonJS({
 794      "node_modules/fast-deep-equal/es6/index.js"(exports, module) {
 795        "use strict";
 796        module.exports = function equal(a2, b2) {
 797          if (a2 === b2) return true;
 798          if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") {
 799            if (a2.constructor !== b2.constructor) return false;
 800            var length, i2, keys;
 801            if (Array.isArray(a2)) {
 802              length = a2.length;
 803              if (length != b2.length) return false;
 804              for (i2 = length; i2-- !== 0; )
 805                if (!equal(a2[i2], b2[i2])) return false;
 806              return true;
 807            }
 808            if (a2 instanceof Map && b2 instanceof Map) {
 809              if (a2.size !== b2.size) return false;
 810              for (i2 of a2.entries())
 811                if (!b2.has(i2[0])) return false;
 812              for (i2 of a2.entries())
 813                if (!equal(i2[1], b2.get(i2[0]))) return false;
 814              return true;
 815            }
 816            if (a2 instanceof Set && b2 instanceof Set) {
 817              if (a2.size !== b2.size) return false;
 818              for (i2 of a2.entries())
 819                if (!b2.has(i2[0])) return false;
 820              return true;
 821            }
 822            if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) {
 823              length = a2.length;
 824              if (length != b2.length) return false;
 825              for (i2 = length; i2-- !== 0; )
 826                if (a2[i2] !== b2[i2]) return false;
 827              return true;
 828            }
 829            if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags;
 830            if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf();
 831            if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString();
 832            keys = Object.keys(a2);
 833            length = keys.length;
 834            if (length !== Object.keys(b2).length) return false;
 835            for (i2 = length; i2-- !== 0; )
 836              if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false;
 837            for (i2 = length; i2-- !== 0; ) {
 838              var key = keys[i2];
 839              if (!equal(a2[key], b2[key])) return false;
 840            }
 841            return true;
 842          }
 843          return a2 !== a2 && b2 !== b2;
 844        };
 845      }
 846    });
 847  
 848    // package-external:@wordpress/date
 849    var require_date = __commonJS({
 850      "package-external:@wordpress/date"(exports, module) {
 851        module.exports = window.wp.date;
 852      }
 853    });
 854  
 855    // package-external:@wordpress/preferences
 856    var require_preferences = __commonJS({
 857      "package-external:@wordpress/preferences"(exports, module) {
 858        module.exports = window.wp.preferences;
 859      }
 860    });
 861  
 862    // package-external:@wordpress/url
 863    var require_url = __commonJS({
 864      "package-external:@wordpress/url"(exports, module) {
 865        module.exports = window.wp.url;
 866      }
 867    });
 868  
 869    // package-external:@wordpress/notices
 870    var require_notices = __commonJS({
 871      "package-external:@wordpress/notices"(exports, module) {
 872        module.exports = window.wp.notices;
 873      }
 874    });
 875  
 876    // packages/media-utils/build-module/index.mjs
 877    var index_exports = {};
 878    __export(index_exports, {
 879      MediaUpload: () => media_upload_default,
 880      privateApis: () => privateApis,
 881      transformAttachment: () => transformAttachment,
 882      uploadMedia: () => uploadMedia,
 883      validateFileSize: () => validateFileSize,
 884      validateMimeType: () => validateMimeType,
 885      validateMimeTypeForUser: () => validateMimeTypeForUser
 886    });
 887  
 888    // packages/media-utils/build-module/components/media-upload/index.mjs
 889    var import_element = __toESM(require_element(), 1);
 890    var import_i18n = __toESM(require_i18n(), 1);
 891    var import_data = __toESM(require_data(), 1);
 892  
 893    // packages/media-utils/build-module/utils/invalidate-attachment-resolutions.mjs
 894    var import_core_data = __toESM(require_core_data(), 1);
 895    function invalidateAttachmentResolutions(registry) {
 896      const resolvers = registry.select(import_core_data.store).getCachedResolvers();
 897      const entityRecordResolutions = resolvers.getEntityRecords;
 898      entityRecordResolutions?.forEach((_value, args) => {
 899        if (args[0] === "postType" && args[1] === "attachment") {
 900          registry.dispatch(import_core_data.store).invalidateResolution("getEntityRecords", args);
 901        }
 902      });
 903    }
 904  
 905    // packages/media-utils/build-module/components/media-upload/index.mjs
 906    var DEFAULT_EMPTY_GALLERY = [];
 907    var getFeaturedImageMediaFrame = () => {
 908      const { wp } = window;
 909      return wp.media.view.MediaFrame.Select.extend({
 910        /**
 911         * Enables the Set Featured Image Button.
 912         *
 913         * @param {Object} toolbar toolbar for featured image state
 914         * @return {void}
 915         */
 916        featuredImageToolbar(toolbar) {
 917          this.createSelectToolbar(toolbar, {
 918            text: wp.media.view.l10n.setFeaturedImage,
 919            state: this.options.state
 920          });
 921        },
 922        /**
 923         * Handle the edit state requirements of selected media item.
 924         *
 925         * @return {void}
 926         */
 927        editState() {
 928          const selection = this.state("featured-image").get("selection");
 929          const view = new wp.media.view.EditImage({
 930            model: selection.single(),
 931            controller: this
 932          }).render();
 933          this.content.set(view);
 934          view.loadEditor();
 935        },
 936        /**
 937         * Create the default states.
 938         *
 939         * @return {void}
 940         */
 941        createStates: function createStates() {
 942          this.on(
 943            "toolbar:create:featured-image",
 944            this.featuredImageToolbar,
 945            this
 946          );
 947          this.on("content:render:edit-image", this.editState, this);
 948          this.states.add([
 949            new wp.media.controller.FeaturedImage(),
 950            new wp.media.controller.EditImage({
 951              model: this.options.editImage
 952            })
 953          ]);
 954        }
 955      });
 956    };
 957    var getSingleMediaFrame = () => {
 958      const { wp } = window;
 959      return wp.media.view.MediaFrame.Select.extend({
 960        /**
 961         * Create the default states on the frame.
 962         */
 963        createStates() {
 964          const options = this.options;
 965          if (this.options.states) {
 966            return;
 967          }
 968          this.states.add([
 969            // Main states.
 970            new wp.media.controller.Library({
 971              library: wp.media.query(options.library),
 972              multiple: options.multiple,
 973              title: options.title,
 974              priority: 20,
 975              filterable: "uploaded"
 976              // Allow filtering by uploaded images.
 977            }),
 978            new wp.media.controller.EditImage({
 979              model: options.editImage
 980            })
 981          ]);
 982        }
 983      });
 984    };
 985    var getGalleryDetailsMediaFrame = () => {
 986      const { wp } = window;
 987      return wp.media.view.MediaFrame.Post.extend({
 988        /**
 989         * Set up gallery toolbar.
 990         *
 991         * @return {void}
 992         */
 993        galleryToolbar() {
 994          const editing = this.state().get("editing");
 995          this.toolbar.set(
 996            new wp.media.view.Toolbar({
 997              controller: this,
 998              items: {
 999                insert: {
1000                  style: "primary",
1001                  text: editing ? wp.media.view.l10n.updateGallery : wp.media.view.l10n.insertGallery,
1002                  priority: 80,
1003                  requires: { library: true },
1004                  /**
1005                   * @fires wp.media.controller.State#update
1006                   */
1007                  click() {
1008                    const controller = this.controller, state = controller.state();
1009                    controller.close();
1010                    state.trigger(
1011                      "update",
1012                      state.get("library")
1013                    );
1014                    controller.setState(controller.options.state);
1015                    controller.reset();
1016                  }
1017                }
1018              }
1019            })
1020          );
1021        },
1022        /**
1023         * Handle the edit state requirements of selected media item.
1024         *
1025         * @return {void}
1026         */
1027        editState() {
1028          const selection = this.state("gallery").get("selection");
1029          const view = new wp.media.view.EditImage({
1030            model: selection.single(),
1031            controller: this
1032          }).render();
1033          this.content.set(view);
1034          view.loadEditor();
1035        },
1036        /**
1037         * Create the default states.
1038         *
1039         * @return {void}
1040         */
1041        createStates: function createStates() {
1042          this.on("toolbar:create:main-gallery", this.galleryToolbar, this);
1043          this.on("content:render:edit-image", this.editState, this);
1044          this.states.add([
1045            new wp.media.controller.Library({
1046              id: "gallery",
1047              title: wp.media.view.l10n.createGalleryTitle,
1048              priority: 40,
1049              toolbar: "main-gallery",
1050              filterable: "uploaded",
1051              multiple: "add",
1052              editable: false,
1053              library: wp.media.query({
1054                type: "image",
1055                ...this.options.library
1056              })
1057            }),
1058            new wp.media.controller.EditImage({
1059              model: this.options.editImage
1060            }),
1061            new wp.media.controller.GalleryEdit({
1062              library: this.options.selection,
1063              editing: this.options.editing,
1064              menu: "gallery",
1065              displaySettings: false,
1066              multiple: true
1067            }),
1068            new wp.media.controller.GalleryAdd()
1069          ]);
1070        }
1071      });
1072    };
1073    var slimImageObject = (img) => {
1074      const attrSet = [
1075        "sizes",
1076        "mime",
1077        "type",
1078        "subtype",
1079        "id",
1080        "url",
1081        "alt",
1082        "link",
1083        "caption"
1084      ];
1085      return attrSet.reduce((result, key) => {
1086        if (img?.hasOwnProperty(key)) {
1087          result[key] = img[key];
1088        }
1089        return result;
1090      }, {});
1091    };
1092    var getAttachmentsCollection = (ids) => {
1093      const { wp } = window;
1094      return wp.media.query({
1095        order: "ASC",
1096        orderby: "post__in",
1097        post__in: ids,
1098        posts_per_page: -1,
1099        query: true,
1100        type: "image"
1101      });
1102    };
1103    var MediaUpload = class extends import_element.Component {
1104      constructor() {
1105        super(...arguments);
1106        this.openModal = this.openModal.bind(this);
1107        this.onOpen = this.onOpen.bind(this);
1108        this.onSelect = this.onSelect.bind(this);
1109        this.onUpdate = this.onUpdate.bind(this);
1110        this.onClose = this.onClose.bind(this);
1111        this.stopUndoRedoPropagation = this.stopUndoRedoPropagation.bind(this);
1112      }
1113      stopUndoRedoPropagation(event) {
1114        if (!event.metaKey && !event.ctrlKey) {
1115          return;
1116        }
1117        const character = event.key?.toLowerCase();
1118        if (character !== "z" && character !== "y") {
1119          return;
1120        }
1121        event.stopPropagation();
1122      }
1123      initializeListeners() {
1124        this.frame.on("select", this.onSelect);
1125        this.frame.on("update", this.onUpdate);
1126        this.frame.on("open", this.onOpen);
1127        this.frame.on("close", this.onClose);
1128      }
1129      /**
1130       * Sets the Gallery frame and initializes listeners.
1131       *
1132       * @return {void}
1133       */
1134      buildAndSetGalleryFrame() {
1135        const {
1136          addToGallery = false,
1137          allowedTypes,
1138          multiple = false,
1139          value = DEFAULT_EMPTY_GALLERY
1140        } = this.props;
1141        if (value === this.lastGalleryValue) {
1142          return;
1143        }
1144        const { wp } = window;
1145        this.lastGalleryValue = value;
1146        if (this.frame) {
1147          this.frame.remove();
1148        }
1149        let currentState;
1150        if (addToGallery) {
1151          currentState = "gallery-library";
1152        } else {
1153          currentState = value && value.length ? "gallery-edit" : "gallery";
1154        }
1155        if (!this.GalleryDetailsMediaFrame) {
1156          this.GalleryDetailsMediaFrame = getGalleryDetailsMediaFrame();
1157        }
1158        const attachments = getAttachmentsCollection(value);
1159        const selection = new wp.media.model.Selection(attachments.models, {
1160          props: attachments.props.toJSON(),
1161          multiple
1162        });
1163        this.frame = new this.GalleryDetailsMediaFrame({
1164          mimeType: allowedTypes,
1165          state: currentState,
1166          multiple,
1167          selection,
1168          editing: !!value?.length
1169        });
1170        wp.media.frame = this.frame;
1171        this.initializeListeners();
1172      }
1173      /**
1174       * Initializes the Media Library requirements for the featured image flow.
1175       *
1176       * @return {void}
1177       */
1178      buildAndSetFeatureImageFrame() {
1179        const { wp } = window;
1180        const { value: featuredImageId, multiple, allowedTypes } = this.props;
1181        const featuredImageFrame = getFeaturedImageMediaFrame();
1182        const attachments = getAttachmentsCollection(featuredImageId);
1183        const selection = new wp.media.model.Selection(attachments.models, {
1184          props: attachments.props.toJSON()
1185        });
1186        this.frame = new featuredImageFrame({
1187          mimeType: allowedTypes,
1188          state: "featured-image",
1189          multiple,
1190          selection,
1191          editing: featuredImageId
1192        });
1193        wp.media.frame = this.frame;
1194        wp.media.view.settings.post = {
1195          ...wp.media.view.settings.post,
1196          featuredImageId: featuredImageId || -1
1197        };
1198      }
1199      /**
1200       * Initializes the Media Library requirements for the single image flow.
1201       *
1202       * @return {void}
1203       */
1204      buildAndSetSingleMediaFrame() {
1205        const { wp } = window;
1206        const {
1207          allowedTypes,
1208          multiple = false,
1209          title = (0, import_i18n.__)("Select or Upload Media"),
1210          value
1211        } = this.props;
1212        const frameConfig = {
1213          title,
1214          multiple
1215        };
1216        if (!!allowedTypes) {
1217          frameConfig.library = { type: allowedTypes };
1218        }
1219        if (this.frame) {
1220          this.frame.remove();
1221        }
1222        const singleImageFrame = getSingleMediaFrame();
1223        const attachments = getAttachmentsCollection(value);
1224        const selection = new wp.media.model.Selection(attachments.models, {
1225          props: attachments.props.toJSON()
1226        });
1227        this.frame = new singleImageFrame({
1228          mimeType: allowedTypes,
1229          multiple,
1230          selection,
1231          ...frameConfig
1232        });
1233        wp.media.frame = this.frame;
1234      }
1235      componentWillUnmount() {
1236        this.detachUndoRedoGuard();
1237        this.frame?.close();
1238        this.frame?.modal?.remove();
1239        this.frame?.remove();
1240      }
1241      detachUndoRedoGuard() {
1242        if (this.frame?.modal?.el) {
1243          this.frame.modal.el.removeEventListener(
1244            "keydown",
1245            this.stopUndoRedoPropagation,
1246            true
1247          );
1248        }
1249      }
1250      onUpdate(selections) {
1251        const { onSelect, multiple = false } = this.props;
1252        const state = this.frame.state();
1253        const selectedImages = selections || state.get("selection");
1254        if (!selectedImages || !selectedImages.models.length) {
1255          return;
1256        }
1257        if (multiple) {
1258          onSelect(
1259            selectedImages.models.map(
1260              (model) => slimImageObject(model.toJSON())
1261            )
1262          );
1263        } else {
1264          onSelect(slimImageObject(selectedImages.models[0].toJSON()));
1265        }
1266      }
1267      onSelect() {
1268        const { onSelect, multiple = false } = this.props;
1269        const attachment = this.frame.state().get("selection").toJSON();
1270        onSelect(multiple ? attachment : attachment[0]);
1271      }
1272      onOpen() {
1273        const { wp } = window;
1274        const { value } = this.props;
1275        this.updateCollection();
1276        if (this.frame?.modal?.el) {
1277          this.frame.modal.el.addEventListener(
1278            "keydown",
1279            this.stopUndoRedoPropagation,
1280            true
1281          );
1282        }
1283        if (this.props.mode) {
1284          this.frame.content.mode(this.props.mode);
1285        }
1286        const hasMedia = Array.isArray(value) ? !!value?.length : !!value;
1287        if (!hasMedia) {
1288          return;
1289        }
1290        const isGallery = this.props.gallery;
1291        const selection = this.frame.state().get("selection");
1292        const valueArray = Array.isArray(value) ? value : [value];
1293        if (!isGallery) {
1294          valueArray.forEach((id) => {
1295            selection.add(wp.media.attachment(id));
1296          });
1297        }
1298        const attachments = getAttachmentsCollection(valueArray);
1299        attachments.more().done(function() {
1300          if (isGallery && attachments?.models?.length) {
1301            selection.add(attachments.models);
1302          }
1303        });
1304      }
1305      onClose() {
1306        const { onClose } = this.props;
1307        this.detachUndoRedoGuard();
1308        if (onClose) {
1309          onClose();
1310        }
1311        invalidateAttachmentResolutions({ select: import_data.select, dispatch: import_data.dispatch });
1312        this.frame.detach();
1313      }
1314      updateCollection() {
1315        const frameContent = this.frame.content.get();
1316        if (frameContent && frameContent.collection) {
1317          const collection = frameContent.collection;
1318          collection.toArray().forEach((model) => model.trigger("destroy", model));
1319          collection.mirroring._hasMore = true;
1320          collection.more();
1321        }
1322      }
1323      openModal() {
1324        const {
1325          gallery = false,
1326          unstableFeaturedImageFlow = false,
1327          modalClass
1328        } = this.props;
1329        if (gallery) {
1330          this.buildAndSetGalleryFrame();
1331        } else {
1332          this.buildAndSetSingleMediaFrame();
1333        }
1334        if (modalClass) {
1335          this.frame.$el.addClass(modalClass);
1336        }
1337        if (unstableFeaturedImageFlow) {
1338          this.buildAndSetFeatureImageFrame();
1339        }
1340        this.initializeListeners();
1341        this.frame.open();
1342      }
1343      render() {
1344        return this.props.render({ open: this.openModal });
1345      }
1346    };
1347    var media_upload_default = MediaUpload;
1348  
1349    // packages/media-utils/build-module/utils/upload-media.mjs
1350    var import_i18n6 = __toESM(require_i18n(), 1);
1351    var import_blob = __toESM(require_blob(), 1);
1352  
1353    // packages/media-utils/build-module/utils/upload-to-server.mjs
1354    var import_api_fetch = __toESM(require_api_fetch(), 1);
1355  
1356    // packages/media-utils/build-module/utils/flatten-form-data.mjs
1357    function isPlainObject(data) {
1358      return data !== null && typeof data === "object" && Object.getPrototypeOf(data) === Object.prototype;
1359    }
1360    function flattenFormData(formData, key, data) {
1361      if (Array.isArray(data) || isPlainObject(data)) {
1362        for (const [name, value] of Object.entries(data)) {
1363          flattenFormData(formData, `$key}[$name}]`, value);
1364        }
1365      } else if (data !== void 0) {
1366        formData.append(key, String(data));
1367      }
1368    }
1369  
1370    // packages/media-utils/build-module/utils/transform-attachment.mjs
1371    function transformAttachment(attachment) {
1372      const { alt_text, source_url, ...savedMediaProps } = attachment;
1373      return {
1374        ...savedMediaProps,
1375        alt: attachment.alt_text,
1376        caption: attachment.caption?.raw ?? "",
1377        title: attachment.title.raw,
1378        url: attachment.source_url,
1379        poster: attachment._embedded?.["wp:featuredmedia"]?.[0]?.source_url || void 0
1380      };
1381    }
1382  
1383    // packages/media-utils/build-module/utils/upload-to-server.mjs
1384    async function uploadToServer(file, additionalData = {}, signal) {
1385      const data = new FormData();
1386      data.append("file", file, file.name || file.type.replace("/", "."));
1387      for (const [key, value] of Object.entries(additionalData)) {
1388        flattenFormData(data, key, value);
1389      }
1390      return transformAttachment(
1391        await (0, import_api_fetch.default)({
1392          // This allows the video block to directly get a video's poster image.
1393          path: "/wp/v2/media?_embed=wp:featuredmedia",
1394          body: data,
1395          method: "POST",
1396          signal
1397        })
1398      );
1399    }
1400  
1401    // packages/media-utils/build-module/utils/validate-mime-type.mjs
1402    var import_i18n2 = __toESM(require_i18n(), 1);
1403  
1404    // packages/media-utils/build-module/utils/upload-error.mjs
1405    var UploadError = class extends Error {
1406      code;
1407      file;
1408      constructor({ code, message: message2, file, cause }) {
1409        super(message2, { cause });
1410        Object.setPrototypeOf(this, new.target.prototype);
1411        this.code = code;
1412        this.file = file;
1413      }
1414    };
1415  
1416    // packages/media-utils/build-module/utils/validate-mime-type.mjs
1417    function validateMimeType(file, allowedTypes) {
1418      if (!allowedTypes || allowedTypes.includes("*")) {
1419        return;
1420      }
1421      const isAllowedType = allowedTypes.some((allowedType) => {
1422        if (allowedType.includes("/")) {
1423          return allowedType === file.type;
1424        }
1425        return file.type.startsWith(`$allowedType}/`);
1426      });
1427      if (file.type && !isAllowedType) {
1428        throw new UploadError({
1429          code: "MIME_TYPE_NOT_SUPPORTED",
1430          message: (0, import_i18n2.sprintf)(
1431            // translators: %s: file name.
1432            (0, import_i18n2.__)("%s: Sorry, this file type is not supported here."),
1433            file.name
1434          ),
1435          file
1436        });
1437      }
1438    }
1439  
1440    // packages/media-utils/build-module/utils/validate-mime-type-for-user.mjs
1441    var import_i18n3 = __toESM(require_i18n(), 1);
1442  
1443    // packages/media-utils/build-module/utils/get-mime-types-array.mjs
1444    function getMimeTypesArray(wpMimeTypesObject) {
1445      if (!wpMimeTypesObject) {
1446        return null;
1447      }
1448      return Object.entries(wpMimeTypesObject).flatMap(
1449        ([extensionsString, mime]) => {
1450          const [type] = mime.split("/");
1451          const extensions = extensionsString.split("|");
1452          return [
1453            mime,
1454            ...extensions.map(
1455              (extension) => `$type}/$extension}`
1456            )
1457          ];
1458        }
1459      );
1460    }
1461  
1462    // packages/media-utils/build-module/utils/validate-mime-type-for-user.mjs
1463    function validateMimeTypeForUser(file, wpAllowedMimeTypes) {
1464      const allowedMimeTypesForUser = getMimeTypesArray(wpAllowedMimeTypes);
1465      if (!allowedMimeTypesForUser) {
1466        return;
1467      }
1468      const isAllowedMimeTypeForUser = allowedMimeTypesForUser.includes(
1469        file.type
1470      );
1471      if (file.type && !isAllowedMimeTypeForUser) {
1472        throw new UploadError({
1473          code: "MIME_TYPE_NOT_ALLOWED_FOR_USER",
1474          message: (0, import_i18n3.sprintf)(
1475            // translators: %s: file name.
1476            (0, import_i18n3.__)(
1477              "%s: Sorry, you are not allowed to upload this file type."
1478            ),
1479            file.name
1480          ),
1481          file
1482        });
1483      }
1484    }
1485  
1486    // packages/media-utils/build-module/utils/validate-file-size.mjs
1487    var import_i18n4 = __toESM(require_i18n(), 1);
1488    function validateFileSize(file, maxUploadFileSize) {
1489      if (file.size <= 0) {
1490        throw new UploadError({
1491          code: "EMPTY_FILE",
1492          message: (0, import_i18n4.sprintf)(
1493            // translators: %s: file name.
1494            (0, import_i18n4.__)("%s: This file is empty."),
1495            file.name
1496          ),
1497          file
1498        });
1499      }
1500      if (maxUploadFileSize && file.size > maxUploadFileSize) {
1501        throw new UploadError({
1502          code: "SIZE_ABOVE_LIMIT",
1503          message: (0, import_i18n4.sprintf)(
1504            // translators: %s: file name.
1505            (0, import_i18n4.__)(
1506              "%s: This file exceeds the maximum upload size for this site."
1507            ),
1508            file.name
1509          ),
1510          file
1511        });
1512      }
1513    }
1514  
1515    // packages/media-utils/build-module/utils/get-upload-error-message.mjs
1516    var import_i18n5 = __toESM(require_i18n(), 1);
1517    var OPAQUE_ERROR_CODES = ["invalid_json", "unknown_error"];
1518    function getUploadErrorMessage(error2, fileName) {
1519      const serverError = (0, import_i18n5.sprintf)(
1520        /* translators: %s: file name */
1521        (0, import_i18n5.__)('Failed to upload "%s". Please try again.'),
1522        fileName
1523      );
1524      if (typeof error2 === "string") {
1525        return error2 || serverError;
1526      }
1527      const { code, message: message2 } = error2 ?? {};
1528      if (typeof code === "string" && OPAQUE_ERROR_CODES.includes(code)) {
1529        return serverError;
1530      }
1531      return typeof message2 === "string" && message2 ? message2 : serverError;
1532    }
1533  
1534    // packages/media-utils/build-module/utils/upload-media.mjs
1535    function uploadMedia({
1536      wpAllowedMimeTypes,
1537      allowedTypes,
1538      additionalData = {},
1539      filesList,
1540      maxUploadFileSize,
1541      onError,
1542      onFileChange,
1543      signal,
1544      multiple = true
1545    }) {
1546      if (!multiple && filesList.length > 1) {
1547        onError?.(new Error((0, import_i18n6.__)("Only one file can be used here.")));
1548        return;
1549      }
1550      const validFiles = [];
1551      const filesSet = [];
1552      const setAndUpdateFiles = (index2, value) => {
1553        if (!window.__clientSideMediaProcessing) {
1554          if (filesSet[index2]?.url) {
1555            (0, import_blob.revokeBlobURL)(filesSet[index2].url);
1556          }
1557        }
1558        filesSet[index2] = value;
1559        onFileChange?.(
1560          filesSet.filter((attachment) => attachment !== null)
1561        );
1562      };
1563      for (const mediaFile of filesList) {
1564        try {
1565          validateMimeTypeForUser(mediaFile, wpAllowedMimeTypes);
1566        } catch (error2) {
1567          onError?.(error2);
1568          continue;
1569        }
1570        try {
1571          validateMimeType(mediaFile, allowedTypes);
1572        } catch (error2) {
1573          onError?.(error2);
1574          continue;
1575        }
1576        try {
1577          validateFileSize(mediaFile, maxUploadFileSize);
1578        } catch (error2) {
1579          onError?.(error2);
1580          continue;
1581        }
1582        validFiles.push(mediaFile);
1583        if (!window.__clientSideMediaProcessing) {
1584          filesSet.push({ url: (0, import_blob.createBlobURL)(mediaFile) });
1585          onFileChange?.(filesSet);
1586        }
1587      }
1588      validFiles.map(async (file, index2) => {
1589        try {
1590          const attachment = await uploadToServer(
1591            file,
1592            additionalData,
1593            signal
1594          );
1595          setAndUpdateFiles(index2, attachment);
1596        } catch (error2) {
1597          setAndUpdateFiles(index2, null);
1598          onError?.(
1599            new UploadError({
1600              code: "GENERAL",
1601              message: getUploadErrorMessage(error2, file.name),
1602              file,
1603              cause: error2 instanceof Error ? error2 : void 0
1604            })
1605          );
1606        }
1607      });
1608    }
1609  
1610    // packages/media-utils/build-module/utils/sideload-to-server.mjs
1611    var import_api_fetch2 = __toESM(require_api_fetch(), 1);
1612    async function sideloadToServer(file, attachmentId, additionalData = {}, signal) {
1613      const data = new FormData();
1614      data.append("file", file, file.name || file.type.replace("/", "."));
1615      for (const [key, value] of Object.entries(additionalData)) {
1616        flattenFormData(data, key, value);
1617      }
1618      return (0, import_api_fetch2.default)({
1619        path: `/wp/v2/media/$attachmentId}/sideload`,
1620        body: data,
1621        method: "POST",
1622        signal
1623      });
1624    }
1625  
1626    // packages/media-utils/build-module/utils/sideload-media.mjs
1627    var noop = () => {
1628    };
1629    async function sideloadMedia({
1630      file,
1631      attachmentId,
1632      additionalData = {},
1633      signal,
1634      onSuccess,
1635      onError = noop
1636    }) {
1637      try {
1638        const subSizeData = await sideloadToServer(
1639          file,
1640          attachmentId,
1641          additionalData,
1642          signal
1643        );
1644        onSuccess?.(subSizeData);
1645      } catch (error2) {
1646        onError(
1647          new UploadError({
1648            code: "GENERAL",
1649            message: getUploadErrorMessage(error2, file.name),
1650            file,
1651            cause: error2 instanceof Error ? error2 : void 0
1652          })
1653        );
1654      }
1655    }
1656  
1657    // node_modules/clsx/dist/clsx.mjs
1658    function r(e2) {
1659      var t2, f2, n2 = "";
1660      if ("string" == typeof e2 || "number" == typeof e2) n2 += e2;
1661      else if ("object" == typeof e2) if (Array.isArray(e2)) {
1662        var o2 = e2.length;
1663        for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r(e2[t2])) && (n2 && (n2 += " "), n2 += f2);
1664      } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2);
1665      return n2;
1666    }
1667    function clsx() {
1668      for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r(e2)) && (n2 && (n2 += " "), n2 += t2);
1669      return n2;
1670    }
1671    var clsx_default = clsx;
1672  
1673    // packages/media-utils/build-module/components/media-upload-modal/index.mjs
1674    var import_element149 = __toESM(require_element(), 1);
1675    var import_i18n79 = __toESM(require_i18n(), 1);
1676    var import_core_data6 = __toESM(require_core_data(), 1);
1677    var import_data14 = __toESM(require_data(), 1);
1678    var import_components54 = __toESM(require_components(), 1);
1679  
1680    // packages/icons/build-module/library/arrow-down.mjs
1681    var import_primitives = __toESM(require_primitives(), 1);
1682    var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
1683    var arrow_down_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { d: "M12 4V19M7 14L12 19L17 14", vectorEffect: "non-scaling-stroke" }) });
1684  
1685    // packages/icons/build-module/library/arrow-left.mjs
1686    var import_primitives2 = __toESM(require_primitives(), 1);
1687    var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
1688    var arrow_left_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M20 12L5 12M10 7L5 12L10 17", vectorEffect: "non-scaling-stroke" }) });
1689  
1690    // packages/icons/build-module/library/arrow-right.mjs
1691    var import_primitives3 = __toESM(require_primitives(), 1);
1692    var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
1693    var arrow_right_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M4 12L19 12M14 17L19 12L14 7", vectorEffect: "non-scaling-stroke" }) });
1694  
1695    // packages/icons/build-module/library/arrow-up.mjs
1696    var import_primitives4 = __toESM(require_primitives(), 1);
1697    var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
1698    var arrow_up_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M12 20L12 5M17 10L12 5L7 10", vectorEffect: "non-scaling-stroke" }) });
1699  
1700    // packages/icons/build-module/library/audio.mjs
1701    var import_primitives5 = __toESM(require_primitives(), 1);
1702    var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
1703    var audio_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z" }) });
1704  
1705    // packages/icons/build-module/library/block-table.mjs
1706    var import_primitives6 = __toESM(require_primitives(), 1);
1707    var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
1708    var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) });
1709  
1710    // packages/icons/build-module/library/category.mjs
1711    var import_primitives7 = __toESM(require_primitives(), 1);
1712    var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
1713    var category_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
1714      /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M4.75 6C4.75 5.30964 5.30964 4.75 6 4.75H9C9.69036 4.75 10.25 5.30964 10.25 6V9C10.25 9.69036 9.69036 10.25 9 10.25H6C5.30964 10.25 4.75 9.69036 4.75 9V6Z", vectorEffect: "non-scaling-stroke" }),
1715      /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M4.75 15C4.75 14.3096 5.30964 13.75 6 13.75H9C9.69036 13.75 10.25 14.3096 10.25 15V18C10.25 18.6904 9.69036 19.25 9 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V15Z", vectorEffect: "non-scaling-stroke" }),
1716      /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M13.75 6C13.75 5.30964 14.3096 4.75 15 4.75H18C18.6904 4.75 19.25 5.30964 19.25 6V9C19.25 9.69036 18.6904 10.25 18 10.25H15C14.3096 10.25 13.75 9.69036 13.75 9V6Z", vectorEffect: "non-scaling-stroke" }),
1717      /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M13.75 15C13.75 14.3096 14.3096 13.75 15 13.75H18C18.6904 13.75 19.25 14.3096 19.25 15V18C19.25 18.6904 18.6904 19.25 18 19.25H15C14.3096 19.25 13.75 18.6904 13.75 18V15Z", vectorEffect: "non-scaling-stroke" })
1718    ] });
1719  
1720    // packages/icons/build-module/library/check.mjs
1721    var import_primitives8 = __toESM(require_primitives(), 1);
1722    var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
1723    var check_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M7 12L10 15L17 8", vectorEffect: "non-scaling-stroke" }) });
1724  
1725    // packages/icons/build-module/library/chevron-down.mjs
1726    var import_primitives9 = __toESM(require_primitives(), 1);
1727    var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
1728    var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "M7 11L12 15L17 11", vectorEffect: "non-scaling-stroke" }) });
1729  
1730    // packages/icons/build-module/library/chevron-left.mjs
1731    var import_primitives10 = __toESM(require_primitives(), 1);
1732    var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
1733    var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M14 6.5L9 12L14 17.5", vectorEffect: "non-scaling-stroke" }) });
1734  
1735    // packages/icons/build-module/library/chevron-right-small.mjs
1736    var import_primitives11 = __toESM(require_primitives(), 1);
1737    var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
1738    var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M10.5 8.5L13.5 12L10.5 15.5", vectorEffect: "non-scaling-stroke" }) });
1739  
1740    // packages/icons/build-module/library/chevron-right.mjs
1741    var import_primitives12 = __toESM(require_primitives(), 1);
1742    var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
1743    var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M10 6.5L15 12L10 17.5", vectorEffect: "non-scaling-stroke" }) });
1744  
1745    // packages/icons/build-module/library/close-small.mjs
1746    var import_primitives13 = __toESM(require_primitives(), 1);
1747    var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
1748    var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M7.75 16.25L16.25 7.75M16.25 16.25L7.75 7.75", vectorEffect: "non-scaling-stroke" }) });
1749  
1750    // packages/icons/build-module/library/cog.mjs
1751    var import_primitives14 = __toESM(require_primitives(), 1);
1752    var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
1753    var cog_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z" }) });
1754  
1755    // packages/icons/build-module/library/comment-author-avatar.mjs
1756    var import_primitives15 = __toESM(require_primitives(), 1);
1757    var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
1758    var comment_author_avatar_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
1759      /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M13.25 10C13.25 10.6904 12.6904 11.25 12 11.25C11.3096 11.25 10.75 10.6904 10.75 10C10.75 9.30964 11.3096 8.75 12 8.75C12.6904 8.75 13.25 9.30964 13.25 10Z", fill: "currentColor", stroke: "none" }),
1760      /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M8 18.0476V16C8 14.8954 8.89543 14 10 14H14C15.1046 14 16 14.8954 16 16V18.0476M13.25 10C13.25 10.6904 12.6904 11.25 12 11.25C11.3096 11.25 10.75 10.6904 10.75 10C10.75 9.30964 11.3096 8.75 12 8.75C12.6904 8.75 13.25 9.30964 13.25 10Z", vectorEffect: "non-scaling-stroke" }),
1761      /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M12 4.75C7.99594 4.75 4.75 7.99593 4.75 12C4.75 16.0041 7.99593 19.25 12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" })
1762    ] });
1763  
1764    // packages/icons/build-module/library/envelope.mjs
1765    var import_primitives16 = __toESM(require_primitives(), 1);
1766    var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
1767    var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" }) });
1768  
1769    // packages/icons/build-module/library/error.mjs
1770    var import_primitives17 = __toESM(require_primitives(), 1);
1771    var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
1772    var error_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z" }) });
1773  
1774    // packages/icons/build-module/library/file.mjs
1775    var import_primitives18 = __toESM(require_primitives(), 1);
1776    var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
1777    var file_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z" }) });
1778  
1779    // packages/icons/build-module/library/format-list-bullets-rtl.mjs
1780    var import_primitives19 = __toESM(require_primitives(), 1);
1781    var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
1782    var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) });
1783  
1784    // packages/icons/build-module/library/format-list-bullets.mjs
1785    var import_primitives20 = __toESM(require_primitives(), 1);
1786    var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
1787    var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) });
1788  
1789    // packages/icons/build-module/library/funnel.mjs
1790    var import_primitives21 = __toESM(require_primitives(), 1);
1791    var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
1792    var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) });
1793  
1794    // packages/icons/build-module/library/image.mjs
1795    var import_primitives22 = __toESM(require_primitives(), 1);
1796    var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
1797    var image_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.Path, { d: "M3.75 16.2031L8.6 12.7L12 15L16 11L20.25 15.2517M5 20.25H19C19.6904 20.25 20.25 19.6904 20.25 19V5C20.25 4.30964 19.6904 3.75 19 3.75H5C4.30964 3.75 3.75 4.30964 3.75 5V19C3.75 19.6904 4.30964 20.25 5 20.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) });
1798  
1799    // packages/icons/build-module/library/link.mjs
1800    var import_primitives23 = __toESM(require_primitives(), 1);
1801    var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
1802    var link_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "M9.5 12L14.5 12M10 7.75H8.25C5.90279 7.75 4 9.65279 4 12C4 14.3472 5.90279 16.25 8.25 16.25H10M14 16.25H15.75C18.0972 16.25 20 14.3472 20 12C20 9.65279 18.0972 7.75 15.75 7.75L14 7.75", vectorEffect: "non-scaling-stroke" }) });
1803  
1804    // packages/icons/build-module/library/mobile.mjs
1805    var import_primitives24 = __toESM(require_primitives(), 1);
1806    var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
1807    var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) });
1808  
1809    // packages/icons/build-module/library/more-vertical.mjs
1810    var import_primitives25 = __toESM(require_primitives(), 1);
1811    var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
1812    var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) });
1813  
1814    // packages/icons/build-module/library/next.mjs
1815    var import_primitives26 = __toESM(require_primitives(), 1);
1816    var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
1817    var next_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.Path, { d: "M7 17.5L12 12L7 6.5M13 17.5L18 12L13 6.5", vectorEffect: "non-scaling-stroke" }) });
1818  
1819    // packages/icons/build-module/library/previous.mjs
1820    var import_primitives27 = __toESM(require_primitives(), 1);
1821    var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
1822    var previous_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { d: "M17 6.5L12 12L17 17.5M11 6.5L6 12L11 17.5", vectorEffect: "non-scaling-stroke" }) });
1823  
1824    // packages/icons/build-module/library/published.mjs
1825    var import_primitives28 = __toESM(require_primitives(), 1);
1826    var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
1827    var published_default = /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_primitives28.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
1828      /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
1829      /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { d: "M9 12L11 14L15 10", vectorEffect: "non-scaling-stroke" })
1830    ] });
1831  
1832    // packages/icons/build-module/library/scheduled.mjs
1833    var import_primitives29 = __toESM(require_primitives(), 1);
1834    var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
1835    var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_primitives29.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [
1836      /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }),
1837      /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { d: "M9.5 12.25H12.25V8", vectorEffect: "non-scaling-stroke" })
1838    ] });
1839  
1840    // packages/icons/build-module/library/search.mjs
1841    var import_primitives30 = __toESM(require_primitives(), 1);
1842    var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
1843    var search_default = /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.Path, { d: "M5 19L9.28769 14.7123M18.25 11C18.25 13.8995 15.8995 16.25 13 16.25C10.1005 16.25 7.75 13.8995 7.75 11C7.75 8.10051 10.1005 5.75 13 5.75C15.8995 5.75 18.25 8.10051 18.25 11Z", vectorEffect: "non-scaling-stroke" }) });
1844  
1845    // packages/icons/build-module/library/seen.mjs
1846    var import_primitives31 = __toESM(require_primitives(), 1);
1847    var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
1848    var seen_default = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) });
1849  
1850    // packages/icons/build-module/library/unseen.mjs
1851    var import_primitives32 = __toESM(require_primitives(), 1);
1852    var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
1853    var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) });
1854  
1855    // packages/icons/build-module/library/upload.mjs
1856    var import_primitives33 = __toESM(require_primitives(), 1);
1857    var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
1858    var upload_default = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.Path, { d: "M4.75 15V19.25H12M12 19.25V4.5M12 19.25H19.25V15M17.5 10L12 4.5L6.5 10", vectorEffect: "non-scaling-stroke" }) });
1859  
1860    // packages/icons/build-module/library/video.mjs
1861    var import_primitives34 = __toESM(require_primitives(), 1);
1862    var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
1863    var video_default = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.Path, { d: "M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z" }) });
1864  
1865    // packages/ui/build-module/badge/badge.mjs
1866    var import_element16 = __toESM(require_element(), 1);
1867  
1868    // node_modules/@base-ui/utils/useControlled.mjs
1869    var React = __toESM(require_react(), 1);
1870  
1871    // node_modules/@base-ui/utils/error.mjs
1872    var set;
1873    if (true) {
1874      set = /* @__PURE__ */ new Set();
1875    }
1876    function error(...messages) {
1877      if (true) {
1878        const messageKey = messages.join(" ");
1879        if (!set.has(messageKey)) {
1880          set.add(messageKey);
1881          console.error(`Base UI: $messageKey}`);
1882        }
1883      }
1884    }
1885  
1886    // node_modules/@base-ui/utils/useControlled.mjs
1887    function useControlled({
1888      controlled,
1889      default: defaultProp,
1890      name,
1891      state = "value"
1892    }) {
1893      const {
1894        current: isControlled
1895      } = React.useRef(controlled !== void 0);
1896      const [valueState, setValue] = React.useState(defaultProp);
1897      const value = isControlled ? controlled : valueState;
1898      if (true) {
1899        React.useEffect(() => {
1900          if (isControlled !== (controlled !== void 0)) {
1901            error([`A component is changing the $isControlled ? "" : "un"}controlled $state} state of $name} to be $isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled $name} element for the lifetime of the component.`, "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", "More info: https://fb.me/react-controlled-components"].join("\n"));
1902          }
1903        }, [state, name, controlled]);
1904        const {
1905          current: defaultValue2
1906        } = React.useRef(defaultProp);
1907        React.useEffect(() => {
1908          if (!isControlled && serializeToDevModeString(defaultValue2) !== serializeToDevModeString(defaultProp)) {
1909            error([`A component is changing the default $state} state of an uncontrolled $name} after being initialized. To suppress this warning opt to use a controlled $name}.`].join("\n"));
1910          }
1911        }, [defaultProp]);
1912      }
1913      const setValueIfUncontrolled = React.useCallback((newValue) => {
1914        if (!isControlled) {
1915          setValue(newValue);
1916        }
1917      }, []);
1918      return [value, setValueIfUncontrolled];
1919    }
1920    function serializeToDevModeString(input) {
1921      let nextId = 0;
1922      const seen = /* @__PURE__ */ new WeakMap();
1923      try {
1924        const result = JSON.stringify(input, function replacer(key, value) {
1925          if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) {
1926            return void 0;
1927          }
1928          if (typeof value === "bigint") {
1929            return `__bigint__:$value}`;
1930          }
1931          if (value !== null && typeof value === "object") {
1932            const id = seen.get(value);
1933            if (id !== void 0) {
1934              return `__object__:$id}`;
1935            }
1936            seen.set(value, nextId);
1937            nextId += 1;
1938          }
1939          return value;
1940        });
1941        return result ?? `__top__:$typeof input}`;
1942      } catch {
1943        return "__unserializable__";
1944      }
1945    }
1946  
1947    // node_modules/@base-ui/utils/safeReact.mjs
1948    var React2 = __toESM(require_react(), 1);
1949    var SafeReact = {
1950      ...React2
1951    };
1952  
1953    // node_modules/@base-ui/utils/useRefWithInit.mjs
1954    var React3 = __toESM(require_react(), 1);
1955    var UNINITIALIZED = {};
1956    function useRefWithInit(init2, initArg) {
1957      const ref = React3.useRef(UNINITIALIZED);
1958      if (ref.current === UNINITIALIZED) {
1959        ref.current = init2(initArg);
1960      }
1961      return ref;
1962    }
1963  
1964    // node_modules/@base-ui/utils/useStableCallback.mjs
1965    var useInsertionEffect = SafeReact.useInsertionEffect;
1966    var useSafeInsertionEffect = (
1967      // React 17 doesn't have useInsertionEffect.
1968      useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late.
1969      useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn()
1970    );
1971    function useStableCallback(callback) {
1972      const stable = useRefWithInit(createStableCallback).current;
1973      stable.next = callback;
1974      useSafeInsertionEffect(stable.effect);
1975      return stable.trampoline;
1976    }
1977    function createStableCallback() {
1978      const stable = {
1979        next: void 0,
1980        callback: assertNotCalled,
1981        trampoline: (...args) => stable.callback?.(...args),
1982        effect: () => {
1983          stable.callback = stable.next;
1984        }
1985      };
1986      return stable;
1987    }
1988    function assertNotCalled() {
1989      if (true) {
1990        throw (
1991          /* minify-error-disabled */
1992          new Error("Base UI: Cannot call an event handler while rendering.")
1993        );
1994      }
1995    }
1996  
1997    // node_modules/@base-ui/utils/warn.mjs
1998    var set2;
1999    if (true) {
2000      set2 = /* @__PURE__ */ new Set();
2001    }
2002    function warn(...messages) {
2003      if (true) {
2004        const messageKey = messages.join(" ");
2005        if (!set2.has(messageKey)) {
2006          set2.add(messageKey);
2007          console.warn(`Base UI: $messageKey}`);
2008        }
2009      }
2010    }
2011  
2012    // node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
2013    var React6 = __toESM(require_react(), 1);
2014  
2015    // node_modules/@base-ui/utils/useIsoLayoutEffect.mjs
2016    var React4 = __toESM(require_react(), 1);
2017    var noop2 = () => {
2018    };
2019    var useIsoLayoutEffect = typeof document !== "undefined" ? React4.useLayoutEffect : noop2;
2020  
2021    // node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs
2022    var React5 = __toESM(require_react(), 1);
2023    var CompositeListContext = /* @__PURE__ */ React5.createContext({
2024      register: () => {
2025      },
2026      unregister: () => {
2027      },
2028      subscribeMapChange: () => () => {
2029      },
2030      nextIndexRef: {
2031        current: 0
2032      }
2033    });
2034    if (true) CompositeListContext.displayName = "CompositeListContext";
2035    function useCompositeListContext() {
2036      return React5.useContext(CompositeListContext);
2037    }
2038  
2039    // node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs
2040    var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
2041    function CompositeList(props) {
2042      const {
2043        children,
2044        elementsRef,
2045        labelsRef,
2046        onMapChange: onMapChangeProp
2047      } = props;
2048      const onMapChange = useStableCallback(onMapChangeProp);
2049      const [, setMapTick] = React6.useState(false);
2050      const listeners = useRefWithInit(createListeners).current;
2051      const map = useRefWithInit(createMap).current;
2052      const nextIndexRef = React6.useRef(0);
2053      const isDirtyRef = React6.useRef(true);
2054      const itemsRef = React6.useRef([]);
2055      const mutationObserverRef = React6.useRef(null);
2056      const scheduleMapUpdate = useStableCallback(() => {
2057        if (isDirtyRef.current) {
2058          return;
2059        }
2060        isDirtyRef.current = true;
2061        setMapTick((tick) => !tick);
2062      });
2063      const register2 = useStableCallback((node, registration) => {
2064        map.set(node, registration);
2065        scheduleMapUpdate();
2066      });
2067      const unregister = useStableCallback((node) => {
2068        map.delete(node);
2069        scheduleMapUpdate();
2070      });
2071      const syncRefs = useStableCallback((items) => {
2072        const nextMap = /* @__PURE__ */ new Map();
2073        elementsRef.current.length = 0;
2074        if (labelsRef) {
2075          labelsRef.current.length = 0;
2076        }
2077        items.forEach((item) => {
2078          nextMap.set(item.element, {
2079            ...item.registration.metadata ?? {},
2080            index: item.index
2081          });
2082          elementsRef.current[item.index] = item.element;
2083          if (labelsRef) {
2084            labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent;
2085          }
2086        });
2087        nextIndexRef.current = elementsRef.current.length;
2088        return nextMap;
2089      });
2090      function observe(sortedNodes) {
2091        mutationObserverRef.current?.disconnect();
2092        mutationObserverRef.current = null;
2093        if (typeof MutationObserver !== "function" || sortedNodes.length < 2) {
2094          return;
2095        }
2096        const mutationObserver = new MutationObserver((entries) => {
2097          if (!hasMovedNode(entries)) {
2098            return;
2099          }
2100          let previousConnectedNode = null;
2101          for (const node of sortedNodes) {
2102            if (!node.isConnected) {
2103              continue;
2104            }
2105            if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {
2106              mutationObserver.disconnect();
2107              scheduleMapUpdate();
2108              return;
2109            }
2110            previousConnectedNode = node;
2111          }
2112        });
2113        mutationObserverRef.current = mutationObserver;
2114        const roots = /* @__PURE__ */ new Set();
2115        for (let i2 = 1; i2 < sortedNodes.length; i2 += 1) {
2116          const root = getCommonAncestor(sortedNodes[i2 - 1], sortedNodes[i2]);
2117          if (root) {
2118            roots.add(root);
2119          }
2120        }
2121        roots.forEach((root) => mutationObserver.observe(root, {
2122          childList: true
2123        }));
2124      }
2125      const flush = useStableCallback(() => {
2126        const [items, automaticNodes] = getCompositeListSnapshot(map);
2127        const nextMap = syncRefs(items);
2128        observe(automaticNodes);
2129        itemsRef.current = items;
2130        isDirtyRef.current = false;
2131        listeners.forEach((listener) => listener(nextMap));
2132        onMapChange(nextMap);
2133      });
2134      useIsoLayoutEffect(() => {
2135        if (!isDirtyRef.current) {
2136          syncRefs(itemsRef.current);
2137        }
2138        return () => {
2139          elementsRef.current = [];
2140          if (labelsRef) {
2141            labelsRef.current = [];
2142          }
2143        };
2144      }, [elementsRef, labelsRef, syncRefs]);
2145      useIsoLayoutEffect(() => {
2146        if (isDirtyRef.current) {
2147          flush();
2148        }
2149      });
2150      useIsoLayoutEffect(() => {
2151        return () => {
2152          mutationObserverRef.current?.disconnect();
2153          isDirtyRef.current = true;
2154        };
2155      }, []);
2156      const subscribeMapChange = useStableCallback((fn) => {
2157        listeners.add(fn);
2158        return () => {
2159          listeners.delete(fn);
2160        };
2161      });
2162      const contextValue = React6.useMemo(() => ({
2163        register: register2,
2164        unregister,
2165        subscribeMapChange,
2166        nextIndexRef
2167      }), [register2, unregister, subscribeMapChange, nextIndexRef]);
2168      return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(CompositeListContext.Provider, {
2169        value: contextValue,
2170        children
2171      });
2172    }
2173    function createMap() {
2174      return /* @__PURE__ */ new Map();
2175    }
2176    function createListeners() {
2177      return /* @__PURE__ */ new Set();
2178    }
2179    function getCompositeListSnapshot(map) {
2180      const reservedIndices = /* @__PURE__ */ new Set();
2181      const items = [];
2182      const automaticItems = [];
2183      map.forEach((registration, node) => {
2184        if (!node.isConnected) {
2185          return;
2186        }
2187        const index2 = registration.index;
2188        const item = {
2189          index: index2 ?? -1,
2190          element: node,
2191          registration
2192        };
2193        if (index2 === null) {
2194          automaticItems.push(item);
2195        } else if (index2 >= 0) {
2196          reservedIndices.add(index2);
2197          items.push(item);
2198        }
2199      });
2200      let nextAutomaticIndex = 0;
2201      automaticItems.sort((a2, b2) => sortByDocumentPosition(a2.element, b2.element));
2202      automaticItems.forEach((item) => {
2203        while (reservedIndices.has(nextAutomaticIndex)) {
2204          nextAutomaticIndex += 1;
2205        }
2206        item.index = nextAutomaticIndex;
2207        items.push(item);
2208        nextAutomaticIndex += 1;
2209      });
2210      if (reservedIndices.size > 0) {
2211        items.sort((a2, b2) => a2.index - b2.index);
2212      }
2213      return [items, automaticItems.map((item) => item.element)];
2214    }
2215    function getCommonAncestor(firstNode, lastNode) {
2216      let ancestor = firstNode.parentElement;
2217      while (ancestor && !ancestor.contains(lastNode)) {
2218        ancestor = ancestor.parentElement;
2219      }
2220      return ancestor;
2221    }
2222    function hasMovedNode(entries) {
2223      for (const entry of entries) {
2224        for (let i2 = 0; i2 < entry.removedNodes.length; i2 += 1) {
2225          if (entry.removedNodes[i2].isConnected) {
2226            return true;
2227          }
2228        }
2229      }
2230      return false;
2231    }
2232    function sortByDocumentPosition(a2, b2) {
2233      return a2.compareDocumentPosition(b2) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
2234    }
2235  
2236    // node_modules/@base-ui/react/internals/useRenderElement.mjs
2237    var React9 = __toESM(require_react(), 1);
2238  
2239    // node_modules/@base-ui/utils/useMergedRefs.mjs
2240    function useMergedRefs(a2, b2, c2, d2) {
2241      const forkRef = useRefWithInit(createForkRef).current;
2242      if (didChange(forkRef, a2, b2, c2, d2)) {
2243        update(forkRef, [a2, b2, c2, d2]);
2244      }
2245      return forkRef.callback;
2246    }
2247    function useMergedRefsN(refs) {
2248      const forkRef = useRefWithInit(createForkRef).current;
2249      if (didChangeN(forkRef, refs)) {
2250        update(forkRef, refs);
2251      }
2252      return forkRef.callback;
2253    }
2254    function createForkRef() {
2255      return {
2256        callback: null,
2257        cleanup: null,
2258        refs: []
2259      };
2260    }
2261    function didChange(forkRef, a2, b2, c2, d2) {
2262      return forkRef.refs[0] !== a2 || forkRef.refs[1] !== b2 || forkRef.refs[2] !== c2 || forkRef.refs[3] !== d2;
2263    }
2264    function didChangeN(forkRef, newRefs) {
2265      return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]);
2266    }
2267    function update(forkRef, refs) {
2268      forkRef.refs = refs;
2269      if (refs.every((ref) => ref == null)) {
2270        forkRef.callback = null;
2271        return;
2272      }
2273      forkRef.callback = (instance) => {
2274        if (forkRef.cleanup) {
2275          forkRef.cleanup();
2276          forkRef.cleanup = null;
2277        }
2278        if (instance != null) {
2279          const cleanupCallbacks = Array(refs.length).fill(null);
2280          for (let i2 = 0; i2 < refs.length; i2 += 1) {
2281            const ref = refs[i2];
2282            if (ref == null) {
2283              continue;
2284            }
2285            switch (typeof ref) {
2286              case "function": {
2287                const refCleanup = ref(instance);
2288                if (typeof refCleanup === "function") {
2289                  cleanupCallbacks[i2] = refCleanup;
2290                }
2291                break;
2292              }
2293              case "object": {
2294                ref.current = instance;
2295                break;
2296              }
2297              default:
2298            }
2299          }
2300          forkRef.cleanup = () => {
2301            for (let i2 = 0; i2 < refs.length; i2 += 1) {
2302              const ref = refs[i2];
2303              if (ref == null) {
2304                continue;
2305              }
2306              switch (typeof ref) {
2307                case "function": {
2308                  const cleanupCallback = cleanupCallbacks[i2];
2309                  if (typeof cleanupCallback === "function") {
2310                    cleanupCallback();
2311                  } else {
2312                    void ref(null);
2313                  }
2314                  break;
2315                }
2316                case "object": {
2317                  ref.current = null;
2318                  break;
2319                }
2320                default:
2321              }
2322            }
2323          };
2324        }
2325      };
2326    }
2327  
2328    // node_modules/@base-ui/utils/getReactElementRef.mjs
2329    var React8 = __toESM(require_react(), 1);
2330  
2331    // node_modules/@base-ui/utils/reactVersion.mjs
2332    var React7 = __toESM(require_react(), 1);
2333    var majorVersion = parseInt(React7.version, 10);
2334    function isReactVersionAtLeast(reactVersionToCheck) {
2335      return majorVersion >= reactVersionToCheck;
2336    }
2337  
2338    // node_modules/@base-ui/utils/getReactElementRef.mjs
2339    function getReactElementRef(element) {
2340      if (!/* @__PURE__ */ React8.isValidElement(element)) {
2341        return null;
2342      }
2343      const reactElement = element;
2344      const propsWithRef = reactElement.props;
2345      return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
2346    }
2347  
2348    // node_modules/@base-ui/utils/mergeObjects.mjs
2349    function mergeObjects(a2, b2) {
2350      if (a2 && !b2) {
2351        return a2;
2352      }
2353      if (!a2 && b2) {
2354        return b2;
2355      }
2356      if (a2 || b2) {
2357        return {
2358          ...a2,
2359          ...b2
2360        };
2361      }
2362      return void 0;
2363    }
2364  
2365    // node_modules/@base-ui/utils/empty.mjs
2366    function NOOP() {
2367    }
2368    var EMPTY_ARRAY = Object.freeze([]);
2369    var EMPTY_OBJECT = Object.freeze({});
2370  
2371    // node_modules/@base-ui/react/internals/getStateAttributesProps.mjs
2372    function getStateAttributesProps(state, customMapping) {
2373      const props = {};
2374      for (const key in state) {
2375        const value = state[key];
2376        if (customMapping?.hasOwnProperty(key)) {
2377          const customProps = customMapping[key](value);
2378          if (customProps != null) {
2379            Object.assign(props, customProps);
2380          }
2381          continue;
2382        }
2383        if (value === true) {
2384          props[`data-$key.toLowerCase()}`] = "";
2385        } else if (value) {
2386          props[`data-$key.toLowerCase()}`] = value.toString();
2387        }
2388      }
2389      return props;
2390    }
2391  
2392    // node_modules/@base-ui/react/utils/resolveClassName.mjs
2393    function resolveClassName(className, state) {
2394      return typeof className === "function" ? className(state) : className;
2395    }
2396  
2397    // node_modules/@base-ui/react/utils/resolveStyle.mjs
2398    function resolveStyle(style, state) {
2399      return typeof style === "function" ? style(state) : style;
2400    }
2401  
2402    // node_modules/@base-ui/react/merge-props/mergeProps.mjs
2403    var EMPTY_PROPS = {};
2404    function mergeProps(a2, b2, c2, d2, e2) {
2405      if (!c2 && !d2 && !e2 && !a2) {
2406        return createInitialMergedProps(b2);
2407      }
2408      let merged = createInitialMergedProps(a2);
2409      if (b2) {
2410        merged = mergeInto(merged, b2);
2411      }
2412      if (c2) {
2413        merged = mergeInto(merged, c2);
2414      }
2415      if (d2) {
2416        merged = mergeInto(merged, d2);
2417      }
2418      if (e2) {
2419        merged = mergeInto(merged, e2);
2420      }
2421      return merged;
2422    }
2423    function mergePropsN(props) {
2424      if (props.length === 0) {
2425        return EMPTY_PROPS;
2426      }
2427      if (props.length === 1) {
2428        return createInitialMergedProps(props[0]);
2429      }
2430      let merged = createInitialMergedProps(props[0]);
2431      for (let i2 = 1; i2 < props.length; i2 += 1) {
2432        merged = mergeInto(merged, props[i2]);
2433      }
2434      return merged;
2435    }
2436    function createInitialMergedProps(inputProps) {
2437      if (isPropsGetter(inputProps)) {
2438        return {
2439          ...resolvePropsGetter(inputProps, EMPTY_PROPS)
2440        };
2441      }
2442      return copyInitialProps(inputProps);
2443    }
2444    function mergeInto(merged, inputProps) {
2445      if (isPropsGetter(inputProps)) {
2446        return resolvePropsGetter(inputProps, merged);
2447      }
2448      return mutablyMergeInto(merged, inputProps);
2449    }
2450    function copyInitialProps(inputProps) {
2451      const copiedProps = {
2452        ...inputProps
2453      };
2454      for (const propName in copiedProps) {
2455        const propValue = copiedProps[propName];
2456        if (isEventHandler(propName, propValue)) {
2457          copiedProps[propName] = wrapEventHandler(propValue);
2458        }
2459      }
2460      return copiedProps;
2461    }
2462    function mutablyMergeInto(mergedProps, externalProps) {
2463      if (!externalProps) {
2464        return mergedProps;
2465      }
2466      for (const propName in externalProps) {
2467        const externalPropValue = externalProps[propName];
2468        switch (propName) {
2469          case "style": {
2470            mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);
2471            break;
2472          }
2473          case "className": {
2474            mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);
2475            break;
2476          }
2477          default: {
2478            if (isEventHandler(propName, externalPropValue)) {
2479              mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);
2480            } else {
2481              mergedProps[propName] = externalPropValue;
2482            }
2483          }
2484        }
2485      }
2486      return mergedProps;
2487    }
2488    function isEventHandler(key, value) {
2489      const code0 = key.charCodeAt(0);
2490      const code1 = key.charCodeAt(1);
2491      const code2 = key.charCodeAt(2);
2492      return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined");
2493    }
2494    function isPropsGetter(inputProps) {
2495      return typeof inputProps === "function";
2496    }
2497    function resolvePropsGetter(inputProps, previousProps) {
2498      if (isPropsGetter(inputProps)) {
2499        return inputProps(previousProps);
2500      }
2501      return inputProps ?? EMPTY_PROPS;
2502    }
2503    function mergeEventHandlers(ourHandler, theirHandler) {
2504      if (!theirHandler) {
2505        return ourHandler;
2506      }
2507      if (!ourHandler) {
2508        return wrapEventHandler(theirHandler);
2509      }
2510      return (...args) => {
2511        const event = args[0];
2512        if (isSyntheticEvent(event)) {
2513          const baseUIEvent = event;
2514          makeEventPreventable(baseUIEvent);
2515          const result2 = theirHandler(...args);
2516          if (!baseUIEvent.baseUIHandlerPrevented) {
2517            ourHandler?.(...args);
2518          }
2519          return result2;
2520        }
2521        const result = theirHandler(...args);
2522        ourHandler?.(...args);
2523        return result;
2524      };
2525    }
2526    function wrapEventHandler(handler) {
2527      if (!handler) {
2528        return handler;
2529      }
2530      return (...args) => {
2531        const event = args[0];
2532        if (isSyntheticEvent(event)) {
2533          makeEventPreventable(event);
2534        }
2535        return handler(...args);
2536      };
2537    }
2538    function makeEventPreventable(event) {
2539      event.preventBaseUIHandler = () => {
2540        event.baseUIHandlerPrevented = true;
2541      };
2542      return event;
2543    }
2544    function mergeClassNames(ourClassName, theirClassName) {
2545      if (theirClassName) {
2546        if (ourClassName) {
2547          return theirClassName + " " + ourClassName;
2548        }
2549        return theirClassName;
2550      }
2551      return ourClassName;
2552    }
2553    function isSyntheticEvent(event) {
2554      return event != null && typeof event === "object" && "nativeEvent" in event;
2555    }
2556  
2557    // node_modules/@base-ui/react/internals/useRenderElement.mjs
2558    var import_react = __toESM(require_react(), 1);
2559    function useRenderElement(element, componentProps, params = {}) {
2560      const renderProp = componentProps.render;
2561      const outProps = useRenderElementProps(componentProps, params);
2562      if (params.enabled === false) {
2563        return null;
2564      }
2565      const state = params.state ?? EMPTY_OBJECT;
2566      return evaluateRenderProp(element, renderProp, outProps, state);
2567    }
2568    function useRenderElementProps(componentProps, params = {}) {
2569      const {
2570        className: classNameProp,
2571        style: styleProp,
2572        render: renderProp
2573      } = componentProps;
2574      const {
2575        state = EMPTY_OBJECT,
2576        ref,
2577        props,
2578        stateAttributesMapping: stateAttributesMapping2,
2579        enabled = true
2580      } = params;
2581      const className = enabled ? resolveClassName(classNameProp, state) : void 0;
2582      const style = enabled ? resolveStyle(styleProp, state) : void 0;
2583      const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping2) : EMPTY_OBJECT;
2584      const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0;
2585      const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT;
2586      if (typeof document !== "undefined") {
2587        if (!enabled) {
2588          void useMergedRefs(null, null);
2589        } else if (Array.isArray(ref)) {
2590          outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);
2591        } else {
2592          outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);
2593        }
2594      }
2595      if (!enabled) {
2596        return EMPTY_OBJECT;
2597      }
2598      if (className !== void 0) {
2599        outProps.className = mergeClassNames(outProps.className, className);
2600      }
2601      if (style !== void 0) {
2602        outProps.style = mergeObjects(outProps.style, style);
2603      }
2604      return outProps;
2605    }
2606    function resolveRenderFunctionProps(props) {
2607      if (Array.isArray(props)) {
2608        return mergePropsN(props);
2609      }
2610      return mergeProps(void 0, props);
2611    }
2612    var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy");
2613    var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/;
2614    var LOWERCASE_CHARACTER_PATTERN = /[a-z]/;
2615    function evaluateRenderProp(element, render4, props, state) {
2616      if (render4) {
2617        if (typeof render4 === "function") {
2618          if (true) {
2619            warnIfRenderPropLooksLikeComponent(render4);
2620          }
2621          return render4(props, state);
2622        }
2623        const mergedProps = mergeProps(props, render4.props);
2624        mergedProps.ref = props.ref;
2625        let newElement = render4;
2626        if (newElement?.$$typeof === REACT_LAZY_TYPE) {
2627          const children = React9.Children.toArray(render4);
2628          newElement = children[0];
2629        }
2630        if (true) {
2631          if (!/* @__PURE__ */ React9.isValidElement(newElement)) {
2632            throw new Error(["Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.", "A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.", "https://base-ui.com/r/invalid-render-prop"].join("\n"));
2633          }
2634        }
2635        return /* @__PURE__ */ React9.cloneElement(newElement, mergedProps);
2636      }
2637      if (element) {
2638        if (typeof element === "string") {
2639          return renderTag(element, props);
2640        }
2641      }
2642      throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage_default(8));
2643    }
2644    function warnIfRenderPropLooksLikeComponent(renderFn) {
2645      const functionName = renderFn.name;
2646      if (functionName.length === 0) {
2647        return;
2648      }
2649      if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) {
2650        return;
2651      }
2652      if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) {
2653        return;
2654      }
2655      warn(`The \`render\` prop received a function named \`$functionName}\` that starts with an uppercase letter.`, "This usually means a React component was passed directly as `render={Component}`.", "Base UI calls `render` as a plain function, which can break the Rules of Hooks during reconciliation.", "If this is an intentional render callback, rename it to start with a lowercase letter.", "Use `render={<Component />}` or `render={(props) => <Component {...props} />}` instead.", "https://base-ui.com/r/invalid-render-prop");
2656    }
2657    function renderTag(Tag, props) {
2658      if (Tag === "button") {
2659        return /* @__PURE__ */ (0, import_react.createElement)("button", {
2660          type: "button",
2661          ...props,
2662          key: props.key
2663        });
2664      }
2665      if (Tag === "img") {
2666        return /* @__PURE__ */ (0, import_react.createElement)("img", {
2667          alt: "",
2668          ...props,
2669          key: props.key
2670        });
2671      }
2672      return /* @__PURE__ */ React9.createElement(Tag, props);
2673    }
2674  
2675    // node_modules/@base-ui/utils/useId.mjs
2676    var React10 = __toESM(require_react(), 1);
2677    var globalId = 0;
2678    function useGlobalId(idOverride, prefix = "mui") {
2679      const [defaultId, setDefaultId] = React10.useState(idOverride);
2680      const id = idOverride || defaultId;
2681      React10.useEffect(() => {
2682        if (defaultId == null) {
2683          globalId += 1;
2684          setDefaultId(`$prefix}-$globalId}`);
2685        }
2686      }, [defaultId, prefix]);
2687      return id;
2688    }
2689    var maybeReactUseId = SafeReact.useId;
2690    function useId(idOverride, prefix) {
2691      if (maybeReactUseId !== void 0) {
2692        const reactId = maybeReactUseId();
2693        return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId);
2694      }
2695      return useGlobalId(idOverride, prefix);
2696    }
2697  
2698    // node_modules/@base-ui/react/internals/useBaseUiId.mjs
2699    function useBaseUiId(idOverride) {
2700      return useId(idOverride, "base-ui");
2701    }
2702  
2703    // node_modules/@base-ui/react/internals/reason-parts.mjs
2704    var reason_parts_exports = {};
2705    __export(reason_parts_exports, {
2706      cancelOpen: () => cancelOpen,
2707      chipRemovePress: () => chipRemovePress,
2708      clearPress: () => clearPress,
2709      closePress: () => closePress,
2710      closeWatcher: () => closeWatcher,
2711      decrementPress: () => decrementPress,
2712      disabled: () => disabled,
2713      drag: () => drag,
2714      escapeKey: () => escapeKey,
2715      focusOut: () => focusOut,
2716      imperativeAction: () => imperativeAction,
2717      incrementPress: () => incrementPress,
2718      initial: () => initial,
2719      inputBlur: () => inputBlur,
2720      inputChange: () => inputChange,
2721      inputClear: () => inputClear,
2722      inputPaste: () => inputPaste,
2723      inputPress: () => inputPress,
2724      itemPress: () => itemPress,
2725      keyboard: () => keyboard,
2726      linkPress: () => linkPress,
2727      listNavigation: () => listNavigation,
2728      missing: () => missing,
2729      none: () => none,
2730      outsidePress: () => outsidePress,
2731      pointer: () => pointer,
2732      scrub: () => scrub,
2733      siblingOpen: () => siblingOpen,
2734      swipe: () => swipe,
2735      trackPress: () => trackPress,
2736      triggerFocus: () => triggerFocus,
2737      triggerHover: () => triggerHover,
2738      triggerPress: () => triggerPress,
2739      wheel: () => wheel,
2740      windowResize: () => windowResize
2741    });
2742    var none = "none";
2743    var triggerPress = "trigger-press";
2744    var triggerHover = "trigger-hover";
2745    var triggerFocus = "trigger-focus";
2746    var outsidePress = "outside-press";
2747    var itemPress = "item-press";
2748    var closePress = "close-press";
2749    var linkPress = "link-press";
2750    var clearPress = "clear-press";
2751    var chipRemovePress = "chip-remove-press";
2752    var trackPress = "track-press";
2753    var incrementPress = "increment-press";
2754    var decrementPress = "decrement-press";
2755    var inputChange = "input-change";
2756    var inputClear = "input-clear";
2757    var inputBlur = "input-blur";
2758    var inputPaste = "input-paste";
2759    var inputPress = "input-press";
2760    var focusOut = "focus-out";
2761    var escapeKey = "escape-key";
2762    var closeWatcher = "close-watcher";
2763    var listNavigation = "list-navigation";
2764    var keyboard = "keyboard";
2765    var pointer = "pointer";
2766    var drag = "drag";
2767    var wheel = "wheel";
2768    var scrub = "scrub";
2769    var cancelOpen = "cancel-open";
2770    var siblingOpen = "sibling-open";
2771    var disabled = "disabled";
2772    var missing = "missing";
2773    var initial = "initial";
2774    var imperativeAction = "imperative-action";
2775    var swipe = "swipe";
2776    var windowResize = "window-resize";
2777  
2778    // node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs
2779    function createChangeEventDetails(reason, event, trigger, customProperties) {
2780      let canceled = false;
2781      let allowPropagation = false;
2782      const custom = customProperties ?? EMPTY_OBJECT;
2783      const details = {
2784        reason,
2785        event: event ?? new Event("base-ui"),
2786        cancel() {
2787          canceled = true;
2788        },
2789        allowPropagation() {
2790          allowPropagation = true;
2791        },
2792        get isCanceled() {
2793          return canceled;
2794        },
2795        get isPropagationAllowed() {
2796          return allowPropagation;
2797        },
2798        trigger,
2799        ...custom
2800      };
2801      return details;
2802    }
2803  
2804    // node_modules/@base-ui/react/internals/useTransitionStatus.mjs
2805    var React12 = __toESM(require_react(), 1);
2806  
2807    // node_modules/@base-ui/utils/useOnMount.mjs
2808    var React11 = __toESM(require_react(), 1);
2809    function useOnMount(fn) {
2810      React11.useEffect(fn, EMPTY_ARRAY);
2811    }
2812  
2813    // node_modules/@base-ui/utils/useAnimationFrame.mjs
2814    var EMPTY = null;
2815    var LAST_RAF = globalThis.requestAnimationFrame;
2816    var Scheduler = class {
2817      /* This implementation uses an array as a backing data-structure for frame callbacks.
2818       * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
2819       * never calls the native `cancelAnimationFrame` if there are no frames left. This can
2820       * be much more efficient if there is a call pattern that alterns as
2821       * "request-cancel-request-cancel-…".
2822       * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
2823       * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
2824      callbacks = [];
2825      callbacksCount = 0;
2826      nextId = 1;
2827      startId = 1;
2828      isScheduled = false;
2829      tick = (timestamp) => {
2830        this.isScheduled = false;
2831        const currentCallbacks = this.callbacks;
2832        const currentCallbacksCount = this.callbacksCount;
2833        this.callbacks = [];
2834        this.callbacksCount = 0;
2835        this.startId = this.nextId;
2836        if (currentCallbacksCount > 0) {
2837          for (let i2 = 0; i2 < currentCallbacks.length; i2 += 1) {
2838            currentCallbacks[i2]?.(timestamp);
2839          }
2840        }
2841      };
2842      request(fn) {
2843        const id = this.nextId;
2844        this.nextId += 1;
2845        this.callbacks.push(fn);
2846        this.callbacksCount += 1;
2847        const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true);
2848        if (!this.isScheduled || didRAFChange) {
2849          requestAnimationFrame(this.tick);
2850          this.isScheduled = true;
2851        }
2852        return id;
2853      }
2854      cancel(id) {
2855        const index2 = id - this.startId;
2856        if (index2 < 0 || index2 >= this.callbacks.length) {
2857          return;
2858        }
2859        this.callbacks[index2] = null;
2860        this.callbacksCount -= 1;
2861      }
2862    };
2863    var scheduler = new Scheduler();
2864    var AnimationFrame = class _AnimationFrame {
2865      static create() {
2866        return new _AnimationFrame();
2867      }
2868      static request(fn) {
2869        return scheduler.request(fn);
2870      }
2871      static cancel(id) {
2872        return scheduler.cancel(id);
2873      }
2874      currentId = EMPTY;
2875      /**
2876       * Executes `fn` after `delay`, clearing any previously scheduled call.
2877       */
2878      request(fn) {
2879        this.cancel();
2880        this.currentId = scheduler.request(() => {
2881          this.currentId = EMPTY;
2882          fn();
2883        });
2884      }
2885      cancel = () => {
2886        if (this.currentId !== EMPTY) {
2887          scheduler.cancel(this.currentId);
2888          this.currentId = EMPTY;
2889        }
2890      };
2891      disposeEffect = () => {
2892        return this.cancel;
2893      };
2894    };
2895    function useAnimationFrame() {
2896      const timeout = useRefWithInit(AnimationFrame.create).current;
2897      useOnMount(timeout.disposeEffect);
2898      return timeout;
2899    }
2900  
2901    // node_modules/@base-ui/react/internals/useTransitionStatus.mjs
2902    function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) {
2903      const [transitionStatus, setTransitionStatus] = React12.useState(open && enableIdleState ? "idle" : void 0);
2904      const [mounted, setMounted] = React12.useState(open);
2905      if (open && !mounted) {
2906        setMounted(true);
2907        setTransitionStatus("starting");
2908      }
2909      if (!open && mounted && transitionStatus !== "ending" && !deferEndingState) {
2910        setTransitionStatus("ending");
2911      }
2912      if (!open && !mounted && transitionStatus === "ending") {
2913        setTransitionStatus(void 0);
2914      }
2915      useIsoLayoutEffect(() => {
2916        if (!open && mounted && transitionStatus !== "ending" && deferEndingState) {
2917          const frame = AnimationFrame.request(() => {
2918            setTransitionStatus("ending");
2919          });
2920          return () => {
2921            AnimationFrame.cancel(frame);
2922          };
2923        }
2924        return void 0;
2925      }, [open, mounted, transitionStatus, deferEndingState]);
2926      useIsoLayoutEffect(() => {
2927        if (!open || enableIdleState) {
2928          return void 0;
2929        }
2930        const frame = AnimationFrame.request(() => {
2931          setTransitionStatus(void 0);
2932        });
2933        return () => {
2934          AnimationFrame.cancel(frame);
2935        };
2936      }, [enableIdleState, open]);
2937      useIsoLayoutEffect(() => {
2938        if (!open || !enableIdleState) {
2939          return void 0;
2940        }
2941        if (open && mounted && transitionStatus !== "idle") {
2942          setTransitionStatus("starting");
2943        }
2944        const frame = AnimationFrame.request(() => {
2945          setTransitionStatus("idle");
2946        });
2947        return () => {
2948          AnimationFrame.cancel(frame);
2949        };
2950      }, [enableIdleState, open, mounted, transitionStatus]);
2951      return {
2952        mounted,
2953        setMounted,
2954        transitionStatus
2955      };
2956    }
2957  
2958    // node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs
2959    var React13 = __toESM(require_react(), 1);
2960    function useCompositeListItem(params = {}) {
2961      const {
2962        guess,
2963        label,
2964        metadata,
2965        textRef,
2966        index: externalIndex
2967      } = params;
2968      const {
2969        register: register2,
2970        unregister,
2971        subscribeMapChange,
2972        nextIndexRef
2973      } = useCompositeListContext();
2974      const indexRef = React13.useRef(-1);
2975      const [internalIndex, setInternalIndex] = React13.useState(externalIndex == null && guess ? () => {
2976        if (indexRef.current === -1) {
2977          const newIndex = nextIndexRef.current;
2978          nextIndexRef.current += 1;
2979          indexRef.current = newIndex;
2980        }
2981        return indexRef.current;
2982      } : -1);
2983      const index2 = externalIndex ?? internalIndex;
2984      const componentRef = React13.useRef(null);
2985      const ref = React13.useCallback((node) => {
2986        const previousNode = componentRef.current;
2987        if (previousNode) {
2988          unregister(previousNode);
2989        }
2990        componentRef.current = node;
2991        if (node) {
2992          register2(node, {
2993            metadata: metadata ?? null,
2994            index: externalIndex ?? null,
2995            label,
2996            textRef
2997          });
2998        }
2999      }, [externalIndex, register2, unregister, metadata, label, textRef]);
3000      useIsoLayoutEffect(() => {
3001        if (externalIndex != null) {
3002          return void 0;
3003        }
3004        return subscribeMapChange((map) => {
3005          const i2 = componentRef.current ? map.get(componentRef.current)?.index : null;
3006          if (i2 != null) {
3007            setInternalIndex(i2);
3008          }
3009        });
3010      }, [externalIndex, subscribeMapChange]);
3011      return {
3012        ref,
3013        index: index2
3014      };
3015    }
3016  
3017    // node_modules/@base-ui/react/internals/stateAttributesMapping.mjs
3018    var TransitionStatusDataAttributes = /* @__PURE__ */ (function(TransitionStatusDataAttributes2) {
3019      TransitionStatusDataAttributes2["startingStyle"] = "data-starting-style";
3020      TransitionStatusDataAttributes2["endingStyle"] = "data-ending-style";
3021      return TransitionStatusDataAttributes2;
3022    })({});
3023    var STARTING_HOOK = {
3024      "data-starting-style": ""
3025    };
3026    var ENDING_HOOK = {
3027      "data-ending-style": ""
3028    };
3029    var transitionStatusMapping = {
3030      transitionStatus(value) {
3031        if (value === "starting") {
3032          return STARTING_HOOK;
3033        }
3034        if (value === "ending") {
3035          return ENDING_HOOK;
3036        }
3037        return null;
3038      }
3039    };
3040  
3041    // node_modules/@base-ui/react/internals/use-button/useButton.mjs
3042    var React16 = __toESM(require_react(), 1);
3043  
3044    // node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
3045    function hasWindow() {
3046      return typeof window !== "undefined";
3047    }
3048    function getNodeName(node) {
3049      if (isNode(node)) {
3050        return (node.nodeName || "").toLowerCase();
3051      }
3052      return "#document";
3053    }
3054    function getWindow(node) {
3055      var _node$ownerDocument;
3056      return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
3057    }
3058    function getDocumentElement(node) {
3059      var _ref;
3060      return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
3061    }
3062    function isNode(value) {
3063      if (!hasWindow()) {
3064        return false;
3065      }
3066      return value instanceof Node || value instanceof getWindow(value).Node;
3067    }
3068    function isElement(value) {
3069      if (!hasWindow()) {
3070        return false;
3071      }
3072      return value instanceof Element || value instanceof getWindow(value).Element;
3073    }
3074    function isHTMLElement(value) {
3075      if (!hasWindow()) {
3076        return false;
3077      }
3078      return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
3079    }
3080    function isShadowRoot(value) {
3081      if (!hasWindow() || typeof ShadowRoot === "undefined") {
3082        return false;
3083      }
3084      return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
3085    }
3086    function isOverflowElement(element) {
3087      const {
3088        overflow,
3089        overflowX,
3090        overflowY,
3091        display
3092      } = getComputedStyle2(element);
3093      return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
3094    }
3095    function isTableElement(element) {
3096      return /^(table|td|th)$/.test(getNodeName(element));
3097    }
3098    function isTopLayer(element) {
3099      try {
3100        if (element.matches(":popover-open")) {
3101          return true;
3102        }
3103      } catch (_e) {
3104      }
3105      try {
3106        return element.matches(":modal");
3107      } catch (_e) {
3108        return false;
3109      }
3110    }
3111    var willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
3112    var containRe = /paint|layout|strict|content/;
3113    var isNotNone = (value) => !!value && value !== "none";
3114    var isWebKitValue;
3115    function isContainingBlock(elementOrCss) {
3116      const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
3117      return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
3118    }
3119    function getContainingBlock(element) {
3120      let currentNode = getParentNode(element);
3121      while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
3122        if (isContainingBlock(currentNode)) {
3123          return currentNode;
3124        } else if (isTopLayer(currentNode)) {
3125          return null;
3126        }
3127        currentNode = getParentNode(currentNode);
3128      }
3129      return null;
3130    }
3131    function isWebKit() {
3132      if (isWebKitValue == null) {
3133        isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none");
3134      }
3135      return isWebKitValue;
3136    }
3137    function isLastTraversableNode(node) {
3138      return /^(html|body|#document)$/.test(getNodeName(node));
3139    }
3140    function getComputedStyle2(element) {
3141      return getWindow(element).getComputedStyle(element);
3142    }
3143    function getNodeScroll(element) {
3144      if (isElement(element)) {
3145        return {
3146          scrollLeft: element.scrollLeft,
3147          scrollTop: element.scrollTop
3148        };
3149      }
3150      return {
3151        scrollLeft: element.scrollX,
3152        scrollTop: element.scrollY
3153      };
3154    }
3155    function getParentNode(node) {
3156      if (getNodeName(node) === "html") {
3157        return node;
3158      }
3159      const result = (
3160        // Step into the shadow DOM of the parent of a slotted node.
3161        node.assignedSlot || // DOM Element detected.
3162        node.parentNode || // ShadowRoot detected.
3163        isShadowRoot(node) && node.host || // Fallback.
3164        getDocumentElement(node)
3165      );
3166      return isShadowRoot(result) ? result.host : result;
3167    }
3168    function getNearestOverflowAncestor(node) {
3169      const parentNode = getParentNode(node);
3170      if (isLastTraversableNode(parentNode)) {
3171        return (node.ownerDocument || node).body;
3172      }
3173      if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
3174        return parentNode;
3175      }
3176      return getNearestOverflowAncestor(parentNode);
3177    }
3178    function getOverflowAncestors(node, list, traverseIframes) {
3179      var _node$ownerDocument2;
3180      if (list === void 0) {
3181        list = [];
3182      }
3183      if (traverseIframes === void 0) {
3184        traverseIframes = true;
3185      }
3186      const scrollableAncestor = getNearestOverflowAncestor(node);
3187      const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
3188      const win = getWindow(scrollableAncestor);
3189      if (isBody) {
3190        const frameElement = getFrameElement(win);
3191        return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
3192      } else {
3193        return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
3194      }
3195    }
3196    function getFrameElement(win) {
3197      return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
3198    }
3199  
3200    // node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs
3201    var React14 = __toESM(require_react(), 1);
3202    var CompositeRootContext = /* @__PURE__ */ React14.createContext(void 0);
3203    if (true) CompositeRootContext.displayName = "CompositeRootContext";
3204    function useCompositeRootContext(optional = false) {
3205      const context = React14.useContext(CompositeRootContext);
3206      if (context === void 0 && !optional) {
3207        throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16));
3208      }
3209      return context;
3210    }
3211  
3212    // node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs
3213    var React15 = __toESM(require_react(), 1);
3214    function useFocusableWhenDisabled(parameters) {
3215      const {
3216        focusableWhenDisabled,
3217        disabled: disabled2,
3218        composite = false,
3219        tabIndex: tabIndexProp = 0,
3220        isNativeButton
3221      } = parameters;
3222      const isFocusableComposite = composite && focusableWhenDisabled !== false;
3223      const isNonFocusableComposite = composite && focusableWhenDisabled === false;
3224      const props = React15.useMemo(() => {
3225        const additionalProps = {
3226          // allow Tabbing away from focusableWhenDisabled elements
3227          onKeyDown(event) {
3228            if (disabled2 && focusableWhenDisabled && event.key !== "Tab") {
3229              event.preventDefault();
3230            }
3231          }
3232        };
3233        if (!composite) {
3234          additionalProps.tabIndex = tabIndexProp;
3235          if (!isNativeButton && disabled2) {
3236            additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1;
3237          }
3238        }
3239        if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) {
3240          additionalProps["aria-disabled"] = disabled2;
3241        }
3242        if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) {
3243          additionalProps.disabled = disabled2;
3244        }
3245        return additionalProps;
3246      }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]);
3247      return {
3248        props
3249      };
3250    }
3251  
3252    // node_modules/@base-ui/utils/owner.mjs
3253    function ownerDocument(node) {
3254      return node?.ownerDocument || document;
3255    }
3256  
3257    // node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs
3258    function dispatchClickWithModifiers(target, sourceEvent, {
3259      detail = 0
3260    } = {}) {
3261      target.dispatchEvent(new (getWindow(target)).PointerEvent("click", {
3262        bubbles: true,
3263        cancelable: true,
3264        composed: true,
3265        detail,
3266        shiftKey: sourceEvent.shiftKey,
3267        ctrlKey: sourceEvent.ctrlKey,
3268        altKey: sourceEvent.altKey,
3269        metaKey: sourceEvent.metaKey
3270      }));
3271    }
3272  
3273    // node_modules/@base-ui/react/internals/use-button/useButton.mjs
3274    function useButton(parameters = {}) {
3275      const {
3276        disabled: disabled2 = false,
3277        focusableWhenDisabled,
3278        tabIndex = 0,
3279        native: isNativeButton = true,
3280        composite: compositeProp
3281      } = parameters;
3282      const elementRef = React16.useRef(null);
3283      const compositeRootContext = useCompositeRootContext(true);
3284      const isCompositeItem = compositeProp ?? compositeRootContext !== void 0;
3285      const {
3286        props: focusableWhenDisabledProps
3287      } = useFocusableWhenDisabled({
3288        focusableWhenDisabled,
3289        disabled: disabled2,
3290        composite: isCompositeItem,
3291        tabIndex,
3292        isNativeButton
3293      });
3294      if (true) {
3295        React16.useEffect(() => {
3296          if (!elementRef.current) {
3297            return;
3298          }
3299          const isButtonTag = isButtonElement(elementRef.current);
3300          if (isNativeButton) {
3301            if (!isButtonTag) {
3302              const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
3303              const message2 = "A component that acts as a button expected a native <button> because the `nativeButton` prop is true. Rendering a non-<button> removes native button semantics, which can impact forms and accessibility. Use a real <button> in the `render` prop, or set `nativeButton` to `false`.";
3304              error(`$message2}$ownerStackMessage}`);
3305            }
3306          } else if (isButtonTag) {
3307            const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
3308            const message2 = "A component that acts as a button expected a non-<button> because the `nativeButton` prop is false. Rendering a <button> keeps native behavior while Base UI applies non-native attributes and handlers, which can add unintended extra attributes (such as `role` or `aria-disabled`). Use a non-<button> in the `render` prop, or set `nativeButton` to `true`.";
3309            error(`$message2}$ownerStackMessage}`);
3310          }
3311        }, [isNativeButton]);
3312      }
3313      const updateDisabled = React16.useCallback(() => {
3314        const element = elementRef.current;
3315        if (!isButtonElement(element)) {
3316          return;
3317        }
3318        if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) {
3319          element.disabled = false;
3320        }
3321      }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]);
3322      useIsoLayoutEffect(updateDisabled, [updateDisabled]);
3323      const getButtonProps = React16.useCallback((externalProps = {}) => {
3324        const {
3325          onClick: externalOnClick,
3326          onMouseDown: externalOnMouseDown,
3327          onKeyUp: externalOnKeyUp,
3328          onKeyDown: externalOnKeyDown,
3329          onPointerDown: externalOnPointerDown,
3330          ...otherExternalProps
3331        } = externalProps;
3332        return mergeProps({
3333          onClick(event) {
3334            if (disabled2) {
3335              event.preventDefault();
3336              return;
3337            }
3338            externalOnClick?.(event);
3339          },
3340          onMouseDown(event) {
3341            if (!disabled2) {
3342              externalOnMouseDown?.(event);
3343            }
3344          },
3345          onKeyDown(event) {
3346            if (disabled2) {
3347              return;
3348            }
3349            makeEventPreventable(event);
3350            externalOnKeyDown?.(event);
3351            if (event.baseUIHandlerPrevented) {
3352              return;
3353            }
3354            const isCurrentTarget = event.target === event.currentTarget;
3355            const currentTarget = event.currentTarget;
3356            const isButton2 = isButtonElement(currentTarget);
3357            const isLink = !isNativeButton && isValidLinkElement(currentTarget);
3358            const shouldClick = isCurrentTarget && (isNativeButton ? isButton2 : !isLink);
3359            const isEnterKey = event.key === "Enter";
3360            const isSpaceKey = event.key === " ";
3361            const role = currentTarget.getAttribute("role");
3362            const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell";
3363            if (isCurrentTarget && isCompositeItem && isSpaceKey) {
3364              if (event.defaultPrevented && isTextNavigationRole) {
3365                return;
3366              }
3367              event.preventDefault();
3368              if (!isNativeButton || isButton2) {
3369                event.preventBaseUIHandler();
3370                dispatchClickWithModifiers(currentTarget, event);
3371              }
3372              return;
3373            }
3374            if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) {
3375              if (isCurrentTarget && isLink && isSpaceKey) {
3376                event.preventDefault();
3377              }
3378              return;
3379            }
3380            if (event.defaultPrevented) {
3381              return;
3382            }
3383            event.preventDefault();
3384            if (isEnterKey) {
3385              event.preventBaseUIHandler();
3386              dispatchClickWithModifiers(currentTarget, event);
3387            }
3388          },
3389          onKeyUp(event) {
3390            if (disabled2) {
3391              return;
3392            }
3393            makeEventPreventable(event);
3394            externalOnKeyUp?.(event);
3395            if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") {
3396              event.preventDefault();
3397              return;
3398            }
3399            if (event.baseUIHandlerPrevented) {
3400              return;
3401            }
3402            if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") {
3403              event.preventBaseUIHandler();
3404              dispatchClickWithModifiers(event.currentTarget, event);
3405            }
3406          },
3407          onPointerDown(event) {
3408            if (disabled2) {
3409              event.preventDefault();
3410              return;
3411            }
3412            externalOnPointerDown?.(event);
3413          }
3414        }, isNativeButton ? {
3415          type: "button"
3416        } : {
3417          role: "button"
3418        }, focusableWhenDisabledProps, otherExternalProps);
3419      }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]);
3420      const buttonRef = useStableCallback((element) => {
3421        elementRef.current = element;
3422        updateDisabled();
3423      });
3424      return {
3425        getButtonProps,
3426        buttonRef
3427      };
3428    }
3429    function isButtonElement(elem) {
3430      return isHTMLElement(elem) && elem.tagName === "BUTTON";
3431    }
3432    function isValidLinkElement(elem) {
3433      return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href);
3434    }
3435  
3436    // node_modules/@base-ui/utils/addEventListener.mjs
3437    function addEventListener(target, type, listener, options) {
3438      target.addEventListener(type, listener, options);
3439      return () => {
3440        target.removeEventListener(type, listener, options);
3441      };
3442    }
3443  
3444    // node_modules/@base-ui/utils/useValueAsRef.mjs
3445    function useValueAsRef(value) {
3446      const latest = useRefWithInit(createLatestRef, value).current;
3447      latest.next = value;
3448      useIsoLayoutEffect(latest.effect);
3449      return latest;
3450    }
3451    function createLatestRef(value) {
3452      const latest = {
3453        current: value,
3454        next: value,
3455        effect: () => {
3456          latest.current = latest.next;
3457        }
3458      };
3459      return latest;
3460    }
3461  
3462    // node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
3463    var React17 = __toESM(require_react(), 1);
3464  
3465    // node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
3466    var ReactDOM = __toESM(require_react_dom(), 1);
3467  
3468    // node_modules/@base-ui/react/utils/resolveRef.mjs
3469    function resolveRef(maybeRef) {
3470      if (maybeRef == null) {
3471        return maybeRef;
3472      }
3473      return "current" in maybeRef ? maybeRef.current : maybeRef;
3474    }
3475  
3476    // node_modules/@base-ui/react/internals/useAnimationsFinished.mjs
3477    function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false) {
3478      const frame = useAnimationFrame();
3479      return useStableCallback((fnToExecute, signal = null) => {
3480        frame.cancel();
3481        const element = resolveRef(elementOrRef);
3482        if (element == null) {
3483          return;
3484        }
3485        const resolvedElement = element;
3486        const done = () => {
3487          ReactDOM.flushSync(fnToExecute);
3488        };
3489        if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) {
3490          fnToExecute();
3491          return;
3492        }
3493        function exec() {
3494          Promise.all(resolvedElement.getAnimations().map((animation) => animation.finished)).then(() => {
3495            if (!signal?.aborted) {
3496              done();
3497            }
3498          }, () => {
3499            if (signal?.aborted) {
3500              return;
3501            }
3502            const currentAnimations = resolvedElement.getAnimations();
3503            if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) {
3504              exec();
3505              return;
3506            }
3507            done();
3508          });
3509        }
3510        if (waitForStartingStyleRemoved) {
3511          const startingStyleAttribute = "data-starting-style";
3512          if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
3513            frame.request(exec);
3514            return;
3515          }
3516          const attributeObserver = new MutationObserver(() => {
3517            if (!resolvedElement.hasAttribute(startingStyleAttribute)) {
3518              attributeObserver.disconnect();
3519              exec();
3520            }
3521          });
3522          attributeObserver.observe(resolvedElement, {
3523            attributes: true,
3524            attributeFilter: [startingStyleAttribute]
3525          });
3526          signal?.addEventListener("abort", () => attributeObserver.disconnect(), {
3527            once: true
3528          });
3529          return;
3530        }
3531        frame.request(exec);
3532      });
3533    }
3534  
3535    // node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs
3536    function useOpenChangeComplete(parameters) {
3537      const {
3538        enabled = true,
3539        open,
3540        ref,
3541        onComplete: onCompleteParam
3542      } = parameters;
3543      const onComplete = useStableCallback(onCompleteParam);
3544      const runOnceAnimationsFinish = useAnimationsFinished(ref, open);
3545      React17.useEffect(() => {
3546        if (!enabled) {
3547          return void 0;
3548        }
3549        const abortController = new AbortController();
3550        runOnceAnimationsFinish(onComplete, abortController.signal);
3551        return () => {
3552          abortController.abort();
3553        };
3554      }, [enabled, open, onComplete, runOnceAnimationsFinish]);
3555    }
3556  
3557    // node_modules/@base-ui/utils/platform/parts.mjs
3558    var parts_exports = {};
3559    __export(parts_exports, {
3560      engine: () => engine_exports,
3561      env: () => env_exports,
3562      os: () => os_exports,
3563      screenReader: () => screen_reader_exports
3564    });
3565  
3566    // node_modules/@base-ui/utils/platform/os.mjs
3567    var os_exports = {};
3568    __export(os_exports, {
3569      android: () => android,
3570      apple: () => apple,
3571      ios: () => ios,
3572      linux: () => linux,
3573      mac: () => mac,
3574      windows: () => windows
3575    });
3576  
3577    // node_modules/@base-ui/utils/platform/shared.mjs
3578    function readRawData() {
3579      if (typeof navigator === "undefined") {
3580        return {
3581          userAgent: "",
3582          platform: "",
3583          maxTouchPoints: 0
3584        };
3585      }
3586      if (true) {
3587        const uaData = navigator.userAgentData;
3588        if (uaData && Array.isArray(uaData.brands)) {
3589          return {
3590            userAgent: uaData.brands.map(({
3591              brand,
3592              version: version2
3593            }) => `$brand}/$version2}`).join(" "),
3594            platform: uaData.platform ?? navigator.platform ?? "",
3595            maxTouchPoints: navigator.maxTouchPoints ?? 0
3596          };
3597        }
3598      }
3599      return {
3600        userAgent: navigator.userAgent,
3601        platform: navigator.platform ?? "",
3602        maxTouchPoints: navigator.maxTouchPoints ?? 0
3603      };
3604    }
3605    var {
3606      userAgent,
3607      platform,
3608      maxTouchPoints
3609    } = readRawData();
3610    var lowerUserAgent = userAgent.toLowerCase();
3611    var lowerPlatform = platform.toLowerCase();
3612  
3613    // node_modules/@base-ui/utils/platform/os.mjs
3614    var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1;
3615    var ANDROID_STRING = "android";
3616    var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING);
3617    var mac = !ios && lowerPlatform.startsWith("mac");
3618    var windows = lowerPlatform.startsWith("win");
3619    var linux = !android && /^(linux|chrome os)/.test(lowerPlatform);
3620    var apple = mac || ios;
3621  
3622    // node_modules/@base-ui/utils/platform/engine.mjs
3623    var engine_exports = {};
3624    __export(engine_exports, {
3625      blink: () => blink,
3626      gecko: () => gecko,
3627      webkit: () => webkit
3628    });
3629    var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none");
3630    var gecko = !webkit && lowerUserAgent.includes("firefox");
3631    var blink = !webkit && lowerUserAgent.includes("chrom");
3632  
3633    // node_modules/@base-ui/utils/platform/screen-reader.mjs
3634    var screen_reader_exports = {};
3635    __export(screen_reader_exports, {
3636      voiceOver: () => voiceOver
3637    });
3638    var voiceOver = apple;
3639  
3640    // node_modules/@base-ui/utils/platform/env.mjs
3641    var env_exports = {};
3642    __export(env_exports, {
3643      jsdom: () => jsdom
3644    });
3645    var jsdom = /jsdom|happydom/.test(lowerUserAgent);
3646  
3647    // node_modules/@base-ui/utils/useTimeout.mjs
3648    var EMPTY2 = 0;
3649    var Timeout = class _Timeout {
3650      static create() {
3651        return new _Timeout();
3652      }
3653      currentId = EMPTY2;
3654      /**
3655       * Executes `fn` after `delay`, clearing any previously scheduled call.
3656       */
3657      start(delay, fn) {
3658        this.clear();
3659        this.currentId = setTimeout(() => {
3660          this.currentId = EMPTY2;
3661          fn();
3662        }, delay);
3663      }
3664      isStarted() {
3665        return this.currentId !== EMPTY2;
3666      }
3667      clear = () => {
3668        if (this.currentId !== EMPTY2) {
3669          clearTimeout(this.currentId);
3670          this.currentId = EMPTY2;
3671        }
3672      };
3673      disposeEffect = () => {
3674        return this.clear;
3675      };
3676    };
3677    function useTimeout() {
3678      const timeout = useRefWithInit(Timeout.create).current;
3679      useOnMount(timeout.disposeEffect);
3680      return timeout;
3681    }
3682  
3683    // node_modules/@base-ui/utils/useScrollLock.mjs
3684    var originalHtmlStyles = {};
3685    var originalBodyStyles = {};
3686    var originalHtmlScrollBehavior = "";
3687    function getViewportScroller(html, body) {
3688      return isOverflowElement(html) ? html : body;
3689    }
3690    function isPageScrollLocked(win, html, body) {
3691      return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY);
3692    }
3693    function hasInsetScrollbars(referenceElement) {
3694      if (typeof document === "undefined") {
3695        return false;
3696      }
3697      const doc = ownerDocument(referenceElement);
3698      const win = getWindow(doc);
3699      return win.innerWidth - doc.documentElement.clientWidth > 0;
3700    }
3701    function supportsStableScrollbarGutter(referenceElement) {
3702      const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable");
3703      if (!supported || typeof document === "undefined") {
3704        return false;
3705      }
3706      const doc = ownerDocument(referenceElement);
3707      const html = doc.documentElement;
3708      const body = doc.body;
3709      const scrollContainer = getViewportScroller(html, body);
3710      const originalScrollContainerOverflowY = scrollContainer.style.overflowY;
3711      const originalHtmlStyleGutter = html.style.scrollbarGutter;
3712      html.style.scrollbarGutter = "stable";
3713      scrollContainer.style.overflowY = "scroll";
3714      const before = scrollContainer.offsetWidth;
3715      scrollContainer.style.overflowY = "hidden";
3716      const after = scrollContainer.offsetWidth;
3717      scrollContainer.style.overflowY = originalScrollContainerOverflowY;
3718      html.style.scrollbarGutter = originalHtmlStyleGutter;
3719      return before === after;
3720    }
3721    function preventScrollOverlayScrollbars(referenceElement) {
3722      const doc = ownerDocument(referenceElement);
3723      const html = doc.documentElement;
3724      const body = doc.body;
3725      const elementToLock = getViewportScroller(html, body);
3726      const originalElementToLockStyles = {
3727        overflowY: elementToLock.style.overflowY,
3728        overflowX: elementToLock.style.overflowX
3729      };
3730      Object.assign(elementToLock.style, {
3731        overflowY: "hidden",
3732        overflowX: "hidden"
3733      });
3734      return () => {
3735        Object.assign(elementToLock.style, originalElementToLockStyles);
3736      };
3737    }
3738    function preventScrollInsetScrollbars(referenceElement) {
3739      const doc = ownerDocument(referenceElement);
3740      const html = doc.documentElement;
3741      const body = doc.body;
3742      const win = getWindow(html);
3743      let scrollTop = 0;
3744      let scrollLeft = 0;
3745      let updateGutterOnly = false;
3746      const resizeFrame = AnimationFrame.create();
3747      if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) {
3748        return () => {
3749        };
3750      }
3751      function lockScroll() {
3752        const htmlStyles = win.getComputedStyle(html);
3753        const bodyStyles = win.getComputedStyle(body);
3754        const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || "";
3755        const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges");
3756        const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable";
3757        scrollTop = html.scrollTop;
3758        scrollLeft = html.scrollLeft;
3759        originalHtmlStyles = {
3760          scrollbarGutter: html.style.scrollbarGutter,
3761          overflowY: html.style.overflowY,
3762          overflowX: html.style.overflowX
3763        };
3764        originalHtmlScrollBehavior = html.style.scrollBehavior;
3765        originalBodyStyles = {
3766          position: body.style.position,
3767          height: body.style.height,
3768          width: body.style.width,
3769          boxSizing: body.style.boxSizing,
3770          overflowY: body.style.overflowY,
3771          overflowX: body.style.overflowX,
3772          scrollBehavior: body.style.scrollBehavior
3773        };
3774        const isScrollableY = html.scrollHeight > html.clientHeight;
3775        const isScrollableX = html.scrollWidth > html.clientWidth;
3776        const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll";
3777        const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll";
3778        const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth);
3779        const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight);
3780        const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom);
3781        const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight);
3782        const elementToLock = getViewportScroller(html, body);
3783        updateGutterOnly = supportsStableScrollbarGutter(referenceElement);
3784        if (updateGutterOnly) {
3785          html.style.scrollbarGutter = scrollbarGutterValue;
3786          elementToLock.style.overflowY = "hidden";
3787          elementToLock.style.overflowX = "hidden";
3788          return;
3789        }
3790        Object.assign(html.style, {
3791          scrollbarGutter: scrollbarGutterValue,
3792          overflowY: "hidden",
3793          overflowX: "hidden"
3794        });
3795        if (isScrollableY || hasConstantOverflowY) {
3796          html.style.overflowY = "scroll";
3797        }
3798        if (isScrollableX || hasConstantOverflowX) {
3799          html.style.overflowX = "scroll";
3800        }
3801        Object.assign(body.style, {
3802          position: "relative",
3803          height: marginY || scrollbarHeight ? `calc(100dvh - $marginY + scrollbarHeight}px)` : "100dvh",
3804          width: marginX || scrollbarWidth ? `calc(100vw - $marginX + scrollbarWidth}px)` : "100vw",
3805          boxSizing: "border-box",
3806          // Assign the longhands that `cleanup` restores, so nothing is left behind.
3807          overflowY: "hidden",
3808          overflowX: "hidden",
3809          scrollBehavior: "unset"
3810        });
3811        body.scrollTop = scrollTop;
3812        body.scrollLeft = scrollLeft;
3813        html.setAttribute("data-base-ui-scroll-locked", "");
3814        html.style.scrollBehavior = "unset";
3815      }
3816      function cleanup() {
3817        Object.assign(html.style, originalHtmlStyles);
3818        Object.assign(body.style, originalBodyStyles);
3819        if (!updateGutterOnly) {
3820          html.scrollTop = scrollTop;
3821          html.scrollLeft = scrollLeft;
3822          html.removeAttribute("data-base-ui-scroll-locked");
3823          html.style.scrollBehavior = originalHtmlScrollBehavior;
3824        }
3825      }
3826      function handleResize() {
3827        cleanup();
3828        resizeFrame.request(lockScroll);
3829      }
3830      lockScroll();
3831      const unsubscribeResize = addEventListener(win, "resize", handleResize);
3832      return () => {
3833        resizeFrame.cancel();
3834        cleanup();
3835        if (typeof win.removeEventListener === "function") {
3836          unsubscribeResize();
3837        }
3838      };
3839    }
3840    var ScrollLocker = class {
3841      lockCount = 0;
3842      restore = null;
3843      timeoutLock = Timeout.create();
3844      timeoutUnlock = Timeout.create();
3845      acquire(referenceElement) {
3846        this.lockCount += 1;
3847        if (this.lockCount === 1 && this.restore === null) {
3848          this.timeoutLock.start(0, () => this.lock(referenceElement));
3849        }
3850        return this.release;
3851      }
3852      release = () => {
3853        this.lockCount -= 1;
3854        if (this.lockCount === 0 && this.restore) {
3855          this.timeoutUnlock.start(0, this.unlock);
3856        }
3857      };
3858      unlock = () => {
3859        if (this.lockCount === 0 && this.restore) {
3860          this.restore?.();
3861          this.restore = null;
3862        }
3863      };
3864      lock(referenceElement) {
3865        if (this.lockCount === 0 || this.restore !== null) {
3866          return;
3867        }
3868        const doc = ownerDocument(referenceElement);
3869        const html = doc.documentElement;
3870        const body = doc.body;
3871        const win = getWindow(html);
3872        if (isPageScrollLocked(win, html, body)) {
3873          const observer = new win.MutationObserver(() => {
3874            if (isPageScrollLocked(win, html, body)) {
3875              return;
3876            }
3877            observer.disconnect();
3878            this.restore = null;
3879            this.lock(referenceElement);
3880          });
3881          const options = {
3882            attributes: true
3883          };
3884          observer.observe(html, options);
3885          observer.observe(body, options);
3886          this.restore = () => observer.disconnect();
3887          return;
3888        }
3889        const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement);
3890        this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement);
3891      }
3892    };
3893    var SCROLL_LOCKER = new ScrollLocker();
3894    function useScrollLock(enabled = true, referenceElement = null) {
3895      useIsoLayoutEffect(() => {
3896        if (!enabled) {
3897          return void 0;
3898        }
3899        return SCROLL_LOCKER.acquire(referenceElement);
3900      }, [enabled, referenceElement]);
3901    }
3902  
3903    // node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs
3904    var React18 = __toESM(require_react(), 1);
3905  
3906    // node_modules/@base-ui/react/floating-ui-react/utils/event.mjs
3907    function stopEvent(event) {
3908      event.preventDefault();
3909      event.stopPropagation();
3910    }
3911    function isReactEvent(event) {
3912      return "nativeEvent" in event;
3913    }
3914    function isVirtualClick(event) {
3915      if (event.pointerType === "" && event.isTrusted) {
3916        return true;
3917      }
3918      if (parts_exports.os.android && event.pointerType) {
3919        return event.type === "click" && event.buttons === 1;
3920      }
3921      return event.detail === 0 && !event.pointerType;
3922    }
3923    function isVirtualPointerEvent(event) {
3924      if (parts_exports.env.jsdom) {
3925        return false;
3926      }
3927      return !parts_exports.os.android && event.width === 0 && event.height === 0 || parts_exports.os.android && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" || // iOS VoiceOver returns 0.333• for width/height.
3928      event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch";
3929    }
3930    function isMouseLikePointerType(pointerType, strict) {
3931      const values = ["mouse", "pen"];
3932      if (!strict) {
3933        values.push("", void 0);
3934      }
3935      return values.includes(pointerType);
3936    }
3937    function isClickLikeEvent(event) {
3938      const type = event.type;
3939      return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup";
3940    }
3941  
3942    // node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs
3943    var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable";
3944    var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";
3945    var ARROW_LEFT = "ArrowLeft";
3946    var ARROW_RIGHT = "ArrowRight";
3947    var ARROW_UP = "ArrowUp";
3948    var ARROW_DOWN = "ArrowDown";
3949  
3950    // node_modules/@base-ui/react/internals/shadowDom.mjs
3951    function activeElement(doc) {
3952      let element = doc.activeElement;
3953      while (element?.shadowRoot?.activeElement != null) {
3954        element = element.shadowRoot.activeElement;
3955      }
3956      return element;
3957    }
3958    function contains(parent, child) {
3959      if (!parent || !child) {
3960        return false;
3961      }
3962      const rootNode = child.getRootNode?.();
3963      if (parent.contains(child)) {
3964        return true;
3965      }
3966      if (rootNode && isShadowRoot(rootNode)) {
3967        let next = child;
3968        while (next) {
3969          if (parent === next) {
3970            return true;
3971          }
3972          next = next.parentNode || next.host;
3973        }
3974      }
3975      return false;
3976    }
3977    function getTarget(event) {
3978      if ("composedPath" in event) {
3979        return event.composedPath()[0];
3980      }
3981      return event.target;
3982    }
3983  
3984    // node_modules/@base-ui/react/floating-ui-react/utils/element.mjs
3985    function isTargetInsideEnabledTrigger(target, triggerElements) {
3986      if (!isElement(target)) {
3987        return false;
3988      }
3989      const targetElement = target;
3990      if (triggerElements.hasElement(targetElement)) {
3991        return !targetElement.hasAttribute("data-trigger-disabled");
3992      }
3993      for (const [, trigger] of triggerElements.entries()) {
3994        if (contains(trigger, targetElement)) {
3995          return !trigger.hasAttribute("data-trigger-disabled");
3996        }
3997      }
3998      return false;
3999    }
4000    function isEventTargetWithin(event, node) {
4001      if (node == null) {
4002        return false;
4003      }
4004      if ("composedPath" in event) {
4005        return event.composedPath().includes(node);
4006      }
4007      const eventAgain = event;
4008      return eventAgain.target != null && node.contains(eventAgain.target);
4009    }
4010    function isRootElement(element) {
4011      return element.matches("html,body");
4012    }
4013    function isTypeableElement(element) {
4014      return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);
4015    }
4016    function isInteractiveElement(element) {
4017      return element?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),$TYPEABLE_SELECTOR}`) != null;
4018    }
4019    function isTypeableCombobox(element) {
4020      if (!element) {
4021        return false;
4022      }
4023      return element.getAttribute("role") === "combobox" && isTypeableElement(element);
4024    }
4025    function matchesFocusVisible(element) {
4026      if (!element || parts_exports.env.jsdom) {
4027        return true;
4028      }
4029      try {
4030        return element.matches(":focus-visible");
4031      } catch (_e) {
4032        return true;
4033      }
4034    }
4035    function getFloatingFocusElement(floatingElement) {
4036      if (!floatingElement) {
4037        return null;
4038      }
4039      return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[$FOCUSABLE_ATTRIBUTE}]`) || floatingElement;
4040    }
4041  
4042    // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs
4043    function resolveValue(value, pointerType) {
4044      if (pointerType != null && !isMouseLikePointerType(pointerType)) {
4045        return 0;
4046      }
4047      if (typeof value === "function") {
4048        return value();
4049      }
4050      return value;
4051    }
4052    function getDelay(value, prop, pointerType) {
4053      const result = resolveValue(value, pointerType);
4054      if (typeof result === "number") {
4055        return result;
4056      }
4057      return result?.[prop];
4058    }
4059    function getRestMs(value) {
4060      if (typeof value === "function") {
4061        return value();
4062      }
4063      return value;
4064    }
4065    function isClickLikeOpenEvent(openEventType, interactedInside) {
4066      return interactedInside || openEventType === "click" || openEventType === "mousedown";
4067    }
4068    function isHoverOpenEvent(openEventType) {
4069      return openEventType?.includes("mouse") && openEventType !== "mousedown";
4070    }
4071  
4072    // node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs
4073    var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
4074    var FloatingDelayGroupContext = /* @__PURE__ */ React18.createContext({
4075      hasProvider: false,
4076      timeoutMs: 0,
4077      delayRef: {
4078        current: 0
4079      },
4080      initialDelayRef: {
4081        current: 0
4082      },
4083      timeout: new Timeout(),
4084      currentIdRef: {
4085        current: null
4086      },
4087      currentContextRef: {
4088        current: null
4089      }
4090    });
4091    if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext";
4092    function resetDelayRef(delayRef, initialDelayRef) {
4093      delayRef.current = initialDelayRef.current;
4094    }
4095    function FloatingDelayGroup(props) {
4096      const {
4097        children,
4098        delay,
4099        timeoutMs = 0
4100      } = props;
4101      const delayRef = React18.useRef(delay);
4102      const initialDelayRef = React18.useRef(delay);
4103      const currentIdRef = React18.useRef(null);
4104      const currentContextRef = React18.useRef(null);
4105      const timeout = useTimeout();
4106      useIsoLayoutEffect(() => {
4107        initialDelayRef.current = delay;
4108        if (!currentIdRef.current) {
4109          delayRef.current = delay;
4110          return;
4111        }
4112        delayRef.current = {
4113          open: getDelay(delayRef.current, "open"),
4114          close: getDelay(delay, "close")
4115        };
4116      }, [delay, currentIdRef, delayRef, initialDelayRef]);
4117      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(FloatingDelayGroupContext.Provider, {
4118        value: React18.useMemo(() => ({
4119          hasProvider: true,
4120          delayRef,
4121          initialDelayRef,
4122          currentIdRef,
4123          timeoutMs,
4124          currentContextRef,
4125          timeout
4126        }), [timeoutMs, timeout]),
4127        children
4128      });
4129    }
4130    function useDelayGroup(context, options = {
4131      open: false
4132    }) {
4133      const {
4134        open
4135      } = options;
4136      const store = "rootStore" in context ? context.rootStore : context;
4137      const floatingId = store.useState("floatingId");
4138      const groupContext = React18.useContext(FloatingDelayGroupContext);
4139      const {
4140        currentIdRef,
4141        delayRef,
4142        timeoutMs,
4143        initialDelayRef,
4144        currentContextRef,
4145        hasProvider,
4146        timeout
4147      } = groupContext;
4148      const [isInstantPhase, setIsInstantPhase] = React18.useState(false);
4149      const openRef = React18.useRef(open);
4150      useIsoLayoutEffect(() => {
4151        openRef.current = open;
4152      }, [open]);
4153      useIsoLayoutEffect(() => {
4154        function unset() {
4155          currentContextRef.current?.setIsInstantPhase(false);
4156          currentIdRef.current = null;
4157          currentContextRef.current = null;
4158          delayRef.current = initialDelayRef.current;
4159          timeout.clear();
4160        }
4161        if (!currentIdRef.current) {
4162          return void 0;
4163        }
4164        if (!open && currentIdRef.current === floatingId) {
4165          setIsInstantPhase(false);
4166          if (timeoutMs) {
4167            const closingId = floatingId;
4168            timeout.start(timeoutMs, () => {
4169              if (store.select("open") || currentIdRef.current && currentIdRef.current !== closingId) {
4170                return;
4171              }
4172              unset();
4173            });
4174            return () => {
4175              if (openRef.current || currentIdRef.current !== closingId) {
4176                timeout.clear();
4177              }
4178            };
4179          }
4180          unset();
4181        }
4182        return void 0;
4183      }, [open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store]);
4184      useIsoLayoutEffect(() => {
4185        if (!open) {
4186          return;
4187        }
4188        const prevContext = currentContextRef.current;
4189        const prevId = currentIdRef.current;
4190        timeout.clear();
4191        currentContextRef.current = {
4192          onOpenChange: store.setOpen,
4193          setIsInstantPhase
4194        };
4195        currentIdRef.current = floatingId;
4196        delayRef.current = {
4197          open: 0,
4198          close: getDelay(initialDelayRef.current, "close")
4199        };
4200        if (prevId !== null && prevId !== floatingId) {
4201          setIsInstantPhase(true);
4202          prevContext?.setIsInstantPhase(true);
4203          prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none));
4204        } else {
4205          setIsInstantPhase(false);
4206          prevContext?.setIsInstantPhase(false);
4207        }
4208      }, [open, floatingId, store, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]);
4209      useIsoLayoutEffect(() => {
4210        return () => {
4211          if (currentIdRef.current === floatingId) {
4212            currentContextRef.current = null;
4213            if (!openRef.current) {
4214              return;
4215            }
4216            currentIdRef.current = null;
4217            resetDelayRef(delayRef, initialDelayRef);
4218            timeout.clear();
4219          }
4220        };
4221      }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]);
4222      return React18.useMemo(() => ({
4223        hasProvider,
4224        delayRef,
4225        isInstantPhase
4226      }), [hasProvider, delayRef, isInstantPhase]);
4227    }
4228  
4229    // node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs
4230    var React22 = __toESM(require_react(), 1);
4231  
4232    // node_modules/@base-ui/utils/mergeCleanups.mjs
4233    function mergeCleanups(...cleanups) {
4234      return () => {
4235        for (let i2 = 0; i2 < cleanups.length; i2 += 1) {
4236          const cleanup = cleanups[i2];
4237          if (cleanup) {
4238            cleanup();
4239          }
4240        }
4241      };
4242    }
4243  
4244    // node_modules/@base-ui/react/utils/FocusGuard.mjs
4245    var React19 = __toESM(require_react(), 1);
4246  
4247    // node_modules/@base-ui/utils/visuallyHidden.mjs
4248    var visuallyHiddenBase = {
4249      clipPath: "inset(50%)",
4250      overflow: "hidden",
4251      whiteSpace: "nowrap",
4252      border: 0,
4253      padding: 0,
4254      width: 1,
4255      height: 1,
4256      margin: -1
4257    };
4258    var visuallyHidden = {
4259      ...visuallyHiddenBase,
4260      position: "fixed",
4261      top: 0,
4262      left: 0
4263    };
4264    var visuallyHiddenInput = {
4265      ...visuallyHiddenBase,
4266      position: "absolute"
4267    };
4268  
4269    // node_modules/@base-ui/react/utils/FocusGuard.mjs
4270    var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
4271    var FocusGuard = /* @__PURE__ */ React19.forwardRef(function FocusGuard2(props, ref) {
4272      const [role, setRole] = React19.useState();
4273      useIsoLayoutEffect(() => {
4274        if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) {
4275          setRole("button");
4276        }
4277      }, []);
4278      const restProps = {
4279        tabIndex: 0,
4280        // Role is only for VoiceOver
4281        role
4282      };
4283      return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", {
4284        ...props,
4285        ref,
4286        style: visuallyHidden,
4287        "aria-hidden": role ? void 0 : true,
4288        ...restProps,
4289        "data-base-ui-focus-guard": ""
4290      });
4291    });
4292    if (true) FocusGuard.displayName = "FocusGuard";
4293  
4294    // node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
4295    var min = Math.min;
4296    var max = Math.max;
4297    var round = Math.round;
4298    var floor = Math.floor;
4299    var createCoords = (v2) => ({
4300      x: v2,
4301      y: v2
4302    });
4303    var oppositeSideMap = {
4304      left: "right",
4305      right: "left",
4306      bottom: "top",
4307      top: "bottom"
4308    };
4309    function clamp(start, value, end) {
4310      return max(start, min(value, end));
4311    }
4312    function evaluate(value, param) {
4313      return typeof value === "function" ? value(param) : value;
4314    }
4315    function getSide(placement) {
4316      return placement.split("-")[0];
4317    }
4318    function getAlignment(placement) {
4319      return placement.split("-")[1];
4320    }
4321    function getOppositeAxis(axis) {
4322      return axis === "x" ? "y" : "x";
4323    }
4324    function getAxisLength(axis) {
4325      return axis === "y" ? "height" : "width";
4326    }
4327    function getSideAxis(placement) {
4328      const firstChar = placement[0];
4329      return firstChar === "t" || firstChar === "b" ? "y" : "x";
4330    }
4331    function getAlignmentAxis(placement) {
4332      return getOppositeAxis(getSideAxis(placement));
4333    }
4334    function getAlignmentSides(placement, rects, rtl) {
4335      if (rtl === void 0) {
4336        rtl = false;
4337      }
4338      const alignment = getAlignment(placement);
4339      const alignmentAxis = getAlignmentAxis(placement);
4340      const length = getAxisLength(alignmentAxis);
4341      let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
4342      if (rects.reference[length] > rects.floating[length]) {
4343        mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
4344      }
4345      return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
4346    }
4347    function getExpandedPlacements(placement) {
4348      const oppositePlacement = getOppositePlacement(placement);
4349      return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
4350    }
4351    function getOppositeAlignmentPlacement(placement) {
4352      return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
4353    }
4354    var lrPlacement = ["left", "right"];
4355    var rlPlacement = ["right", "left"];
4356    var tbPlacement = ["top", "bottom"];
4357    var btPlacement = ["bottom", "top"];
4358    function getSideList(side, isStart, rtl) {
4359      switch (side) {
4360        case "top":
4361        case "bottom":
4362          if (rtl) return isStart ? rlPlacement : lrPlacement;
4363          return isStart ? lrPlacement : rlPlacement;
4364        case "left":
4365        case "right":
4366          return isStart ? tbPlacement : btPlacement;
4367        default:
4368          return [];
4369      }
4370    }
4371    function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
4372      const alignment = getAlignment(placement);
4373      let list = getSideList(getSide(placement), direction === "start", rtl);
4374      if (alignment) {
4375        list = list.map((side) => side + "-" + alignment);
4376        if (flipAlignment) {
4377          list = list.concat(list.map(getOppositeAlignmentPlacement));
4378        }
4379      }
4380      return list;
4381    }
4382    function getOppositePlacement(placement) {
4383      const side = getSide(placement);
4384      return oppositeSideMap[side] + placement.slice(side.length);
4385    }
4386    function expandPaddingObject(padding) {
4387      var _padding$top, _padding$right, _padding$bottom, _padding$left;
4388      return {
4389        top: (_padding$top = padding.top) != null ? _padding$top : 0,
4390        right: (_padding$right = padding.right) != null ? _padding$right : 0,
4391        bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,
4392        left: (_padding$left = padding.left) != null ? _padding$left : 0
4393      };
4394    }
4395    function getPaddingObject(padding) {
4396      return typeof padding !== "number" ? expandPaddingObject(padding) : {
4397        top: padding,
4398        right: padding,
4399        bottom: padding,
4400        left: padding
4401      };
4402    }
4403    function rectToClientRect(rect) {
4404      const {
4405        x: x2,
4406        y: y2,
4407        width,
4408        height
4409      } = rect;
4410      return {
4411        width,
4412        height,
4413        top: y2,
4414        left: x2,
4415        right: x2 + width,
4416        bottom: y2 + height,
4417        x: x2,
4418        y: y2
4419      };
4420    }
4421  
4422    // node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs
4423    function isIndexOutOfListBounds(list, index2) {
4424      return index2 < 0 || index2 >= list.length;
4425    }
4426    function getMinListIndex(listRef, disabledIndices) {
4427      return findNonDisabledListIndex(listRef.current, {
4428        disabledIndices
4429      });
4430    }
4431    function getMaxListIndex(listRef, disabledIndices) {
4432      return findNonDisabledListIndex(listRef.current, {
4433        decrement: true,
4434        startingIndex: listRef.current.length,
4435        disabledIndices
4436      });
4437    }
4438    function findNonDisabledListIndex(list, {
4439      startingIndex = -1,
4440      decrement = false,
4441      disabledIndices,
4442      amount = 1
4443    } = {}) {
4444      let index2 = startingIndex;
4445      do {
4446        index2 += decrement ? -amount : amount;
4447      } while (index2 >= 0 && index2 <= list.length - 1 && isListIndexDisabled(list, index2, disabledIndices));
4448      return index2;
4449    }
4450    function isListIndexDisabled(list, index2, disabledIndices) {
4451      const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index2) : disabledIndices?.includes(index2) ?? false;
4452      if (isExplicitlyDisabled) {
4453        return true;
4454      }
4455      const element = list[index2];
4456      if (!element) {
4457        return false;
4458      }
4459      if (!isElementVisible(element)) {
4460        return true;
4461      }
4462      if (element.matches(":disabled")) {
4463        return true;
4464      }
4465      return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true");
4466    }
4467    function isHiddenByStyles(styles) {
4468      return styles.visibility === "hidden" || styles.visibility === "collapse";
4469    }
4470    function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) {
4471      if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) {
4472        return false;
4473      }
4474      if (typeof element.checkVisibility === "function") {
4475        return element.checkVisibility();
4476      }
4477      return styles.display !== "none" && styles.display !== "contents";
4478    }
4479  
4480    // node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs
4481    var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';
4482    function getParentElement(element) {
4483      const assignedSlot = element.assignedSlot;
4484      if (assignedSlot) {
4485        return assignedSlot;
4486      }
4487      if (element.parentElement) {
4488        return element.parentElement;
4489      }
4490      const rootNode = element.getRootNode();
4491      return isShadowRoot(rootNode) ? rootNode.host : null;
4492    }
4493    function getDetailsSummary(details) {
4494      for (const child of Array.from(details.children)) {
4495        if (getNodeName(child) === "summary") {
4496          return child;
4497        }
4498      }
4499      return null;
4500    }
4501    function isWithinOpenDetailsSummary(element, details) {
4502      const summary = getDetailsSummary(details);
4503      return !!summary && (element === summary || contains(summary, element));
4504    }
4505    function isFocusableCandidate(element) {
4506      const nodeName = element ? getNodeName(element) : "";
4507      return element != null && element.matches(CANDIDATE_SELECTOR) && (nodeName !== "summary" || element.parentElement != null && getNodeName(element.parentElement) === "details" && getDetailsSummary(element.parentElement) === element) && (nodeName !== "details" || getDetailsSummary(element) == null) && (nodeName !== "input" || element.type !== "hidden");
4508    }
4509    function isFocusableElement(element) {
4510      if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) {
4511        return false;
4512      }
4513      for (let current = element; current; current = getParentElement(current)) {
4514        const isAncestor = current !== element;
4515        const isSlot = getNodeName(current) === "slot";
4516        if (current.hasAttribute("inert")) {
4517          return false;
4518        }
4519        if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) {
4520          return false;
4521        }
4522      }
4523      return true;
4524    }
4525    function isVisibleInTabbableTree(element, isAncestor) {
4526      const styles = getComputedStyle2(element);
4527      if (!isAncestor) {
4528        return isElementVisible(element, styles);
4529      }
4530      return styles.display !== "none";
4531    }
4532    function getTabIndex(element) {
4533      const tabIndex = element.tabIndex;
4534      if (tabIndex < 0) {
4535        const nodeName = getNodeName(element);
4536        if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) {
4537          return 0;
4538        }
4539      }
4540      return tabIndex;
4541    }
4542    function getNamedRadioInput(element) {
4543      if (getNodeName(element) !== "input") {
4544        return null;
4545      }
4546      const input = element;
4547      return input.type === "radio" && input.name !== "" ? input : null;
4548    }
4549    function isTabbableRadio(element, candidates) {
4550      const input = getNamedRadioInput(element);
4551      if (!input) {
4552        return true;
4553      }
4554      const checkedRadio = candidates.find((candidate) => {
4555        const radio = getNamedRadioInput(candidate);
4556        return radio?.name === input.name && radio.form === input.form && radio.checked;
4557      });
4558      if (checkedRadio) {
4559        return checkedRadio === input;
4560      }
4561      return candidates.find((candidate) => {
4562        const radio = getNamedRadioInput(candidate);
4563        return radio?.name === input.name && radio.form === input.form;
4564      }) === input;
4565    }
4566    function getComposedChildren(container) {
4567      if (isHTMLElement(container) && getNodeName(container) === "slot") {
4568        const assignedElements = container.assignedElements({
4569          flatten: true
4570        });
4571        if (assignedElements.length > 0) {
4572          return assignedElements;
4573        }
4574      }
4575      if (isHTMLElement(container) && container.shadowRoot) {
4576        return Array.from(container.shadowRoot.children);
4577      }
4578      return Array.from(container.children);
4579    }
4580    function appendCandidates(container, list) {
4581      getComposedChildren(container).forEach((child) => {
4582        if (isFocusableCandidate(child)) {
4583          list.push(child);
4584        }
4585        appendCandidates(child, list);
4586      });
4587    }
4588    function appendMatchingElements(container, selector2, list) {
4589      getComposedChildren(container).forEach((child) => {
4590        if (isHTMLElement(child) && child.matches(selector2)) {
4591          list.push(child);
4592        }
4593        appendMatchingElements(child, selector2, list);
4594      });
4595    }
4596    function isTabbable(element) {
4597      return isFocusableElement(element) && getTabIndex(element) >= 0;
4598    }
4599    function focusable(container) {
4600      const candidates = [];
4601      appendCandidates(container, candidates);
4602      return candidates.filter(isFocusableElement);
4603    }
4604    function tabbable(container) {
4605      const candidates = focusable(container);
4606      return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates));
4607    }
4608    function getTabbableIn(container, dir) {
4609      const list = tabbable(container);
4610      const len = list.length;
4611      if (len === 0) {
4612        return void 0;
4613      }
4614      const active = activeElement(ownerDocument(container));
4615      const index2 = list.indexOf(active);
4616      const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir;
4617      return list[nextIndex];
4618    }
4619    function getNextTabbable(referenceElement) {
4620      return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement;
4621    }
4622    function getPreviousTabbable(referenceElement) {
4623      return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement;
4624    }
4625    function getTabbableNearElement(referenceElement, dir) {
4626      if (!referenceElement) {
4627        return null;
4628      }
4629      const list = tabbable(ownerDocument(referenceElement).body);
4630      const elementCount = list.length;
4631      if (elementCount === 0) {
4632        return null;
4633      }
4634      const index2 = list.indexOf(referenceElement);
4635      if (index2 === -1) {
4636        return null;
4637      }
4638      const nextIndex = (index2 + dir + elementCount) % elementCount;
4639      return list[nextIndex];
4640    }
4641    function getTabbableAfterElement(referenceElement) {
4642      return getTabbableNearElement(referenceElement, 1);
4643    }
4644    function getTabbableBeforeElement(referenceElement) {
4645      return getTabbableNearElement(referenceElement, -1);
4646    }
4647    function isOutsideEvent(event, container) {
4648      const containerElement = container || event.currentTarget;
4649      const relatedTarget = event.relatedTarget;
4650      return !relatedTarget || !contains(containerElement, relatedTarget);
4651    }
4652    function disableFocusInside(container) {
4653      const tabbableElements = tabbable(container);
4654      tabbableElements.forEach((element) => {
4655        element.dataset.tabindex = element.getAttribute("tabindex") || "";
4656        element.setAttribute("tabindex", "-1");
4657      });
4658    }
4659    function enableFocusInside(container) {
4660      const elements = [];
4661      appendMatchingElements(container, "[data-tabindex]", elements);
4662      elements.forEach((element) => {
4663        const tabindex = element.dataset.tabindex;
4664        delete element.dataset.tabindex;
4665        if (tabindex) {
4666          element.setAttribute("tabindex", tabindex);
4667        } else {
4668          element.removeAttribute("tabindex");
4669        }
4670      });
4671    }
4672  
4673    // node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs
4674    function getNodeChildren(nodes, id, onlyOpenChildren = true) {
4675      const directChildren = nodes.filter((node) => node.parentId === id);
4676      return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);
4677    }
4678    function getNodeAncestors(nodes, id) {
4679      let allAncestors = [];
4680      let currentParentId = nodes.find((node) => node.id === id)?.parentId;
4681      while (currentParentId) {
4682        const currentNode = nodes.find((node) => node.id === currentParentId);
4683        currentParentId = currentNode?.parentId;
4684        if (currentNode) {
4685          allAncestors = allAncestors.concat(currentNode);
4686        }
4687      }
4688      return allAncestors;
4689    }
4690  
4691    // node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs
4692    function createAttribute(name) {
4693      return `data-base-ui-$name}`;
4694    }
4695  
4696    // node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs
4697    var rafId = 0;
4698    function enqueueFocus(el, options = {}) {
4699      const {
4700        preventScroll = false,
4701        sync: sync2 = false,
4702        shouldFocus
4703      } = options;
4704      cancelAnimationFrame(rafId);
4705      function exec() {
4706        if (shouldFocus && !shouldFocus()) {
4707          return;
4708        }
4709        el?.focus({
4710          preventScroll
4711        });
4712      }
4713      if (sync2) {
4714        exec();
4715        return NOOP;
4716      }
4717      const currentRafId = requestAnimationFrame(exec);
4718      rafId = currentRafId;
4719      return () => {
4720        if (rafId === currentRafId) {
4721          cancelAnimationFrame(currentRafId);
4722          rafId = 0;
4723        }
4724      };
4725    }
4726  
4727    // node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs
4728    var counters = {
4729      inert: /* @__PURE__ */ new WeakMap(),
4730      "aria-hidden": /* @__PURE__ */ new WeakMap()
4731    };
4732    var markerName = "data-base-ui-inert";
4733    var uncontrolledElementsSets = {
4734      inert: /* @__PURE__ */ new WeakSet(),
4735      "aria-hidden": /* @__PURE__ */ new WeakSet()
4736    };
4737    var markerCounterMap = /* @__PURE__ */ new WeakMap();
4738    var lockCount = 0;
4739    function getUncontrolledElementsSet(controlAttribute) {
4740      return uncontrolledElementsSets[controlAttribute];
4741    }
4742    function unwrapHost(node) {
4743      if (!node) {
4744        return null;
4745      }
4746      return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode);
4747    }
4748    var correctElements = (parent, targets) => targets.map((target) => {
4749      if (parent.contains(target)) {
4750        return target;
4751      }
4752      const correctedTarget = unwrapHost(target);
4753      if (parent.contains(correctedTarget)) {
4754        return correctedTarget;
4755      }
4756      return null;
4757    }).filter((x2) => x2 != null);
4758    var buildKeepSet = (targets) => {
4759      const keep = /* @__PURE__ */ new Set();
4760      targets.forEach((target) => {
4761        let node = target;
4762        while (node && !keep.has(node)) {
4763          keep.add(node);
4764          node = node.parentNode;
4765        }
4766      });
4767      return keep;
4768    };
4769    var collectOutsideElements = (root, keepElements, stopElements) => {
4770      const outside = [];
4771      const walk = (parent) => {
4772        if (!parent || stopElements.has(parent)) {
4773          return;
4774        }
4775        Array.from(parent.children).forEach((node) => {
4776          if (getNodeName(node) === "script") {
4777            return;
4778          }
4779          if (keepElements.has(node)) {
4780            walk(node);
4781          } else {
4782            outside.push(node);
4783          }
4784        });
4785      };
4786      walk(root);
4787      return outside;
4788    };
4789    function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert, {
4790      mark = true
4791    }) {
4792      let controlAttribute = null;
4793      if (inert) {
4794        controlAttribute = "inert";
4795      } else if (ariaHidden) {
4796        controlAttribute = "aria-hidden";
4797      }
4798      let counterMap = null;
4799      let uncontrolledElementsSet = null;
4800      const avoidElements = correctElements(body, uncorrectedAvoidElements);
4801      const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : [];
4802      const hiddenElements = [];
4803      const markedElements = [];
4804      if (controlAttribute) {
4805        const map = counters[controlAttribute];
4806        const currentUncontrolledElementsSet = getUncontrolledElementsSet(controlAttribute);
4807        uncontrolledElementsSet = currentUncontrolledElementsSet;
4808        counterMap = map;
4809        const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]")));
4810        const controlElements = avoidElements.concat(ariaLiveElements);
4811        const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements));
4812        controlTargets.forEach((node) => {
4813          const attr2 = node.getAttribute(controlAttribute);
4814          const alreadyHidden = attr2 !== null && attr2 !== "false";
4815          const counterValue = (map.get(node) || 0) + 1;
4816          map.set(node, counterValue);
4817          hiddenElements.push(node);
4818          if (counterValue === 1 && alreadyHidden) {
4819            currentUncontrolledElementsSet.add(node);
4820          }
4821          if (!alreadyHidden) {
4822            node.setAttribute(controlAttribute, controlAttribute === "inert" ? "" : "true");
4823          }
4824        });
4825      }
4826      if (mark) {
4827        markerTargets.forEach((node) => {
4828          const markerValue = (markerCounterMap.get(node) || 0) + 1;
4829          markerCounterMap.set(node, markerValue);
4830          markedElements.push(node);
4831          if (markerValue === 1) {
4832            node.setAttribute(markerName, "");
4833          }
4834        });
4835      }
4836      lockCount += 1;
4837      return () => {
4838        if (counterMap) {
4839          hiddenElements.forEach((element) => {
4840            const currentCounterValue = counterMap.get(element) || 0;
4841            const counterValue = currentCounterValue - 1;
4842            counterMap.set(element, counterValue);
4843            if (!counterValue) {
4844              if (!uncontrolledElementsSet?.has(element) && controlAttribute) {
4845                element.removeAttribute(controlAttribute);
4846              }
4847              uncontrolledElementsSet?.delete(element);
4848            }
4849          });
4850        }
4851        if (mark) {
4852          markedElements.forEach((element) => {
4853            const markerValue = (markerCounterMap.get(element) || 0) - 1;
4854            markerCounterMap.set(element, markerValue);
4855            if (!markerValue) {
4856              element.removeAttribute(markerName);
4857            }
4858          });
4859        }
4860        lockCount -= 1;
4861        if (!lockCount) {
4862          counters.inert = /* @__PURE__ */ new WeakMap();
4863          counters["aria-hidden"] = /* @__PURE__ */ new WeakMap();
4864          uncontrolledElementsSets.inert = /* @__PURE__ */ new WeakSet();
4865          uncontrolledElementsSets["aria-hidden"] = /* @__PURE__ */ new WeakSet();
4866          markerCounterMap = /* @__PURE__ */ new WeakMap();
4867        }
4868      };
4869    }
4870    function markOthers(avoidElements, options = {}) {
4871      const {
4872        ariaHidden = false,
4873        inert = false,
4874        mark = true
4875      } = options;
4876      const body = ownerDocument(avoidElements[0]).body;
4877      return applyAttributeToOthers(avoidElements, body, ariaHidden, inert, {
4878        mark
4879      });
4880    }
4881  
4882    // node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs
4883    var React20 = __toESM(require_react(), 1);
4884    var ReactDOM2 = __toESM(require_react_dom(), 1);
4885  
4886    // node_modules/@base-ui/react/internals/constants.mjs
4887    var TYPEAHEAD_RESET_MS = 500;
4888    var PATIENT_CLICK_THRESHOLD = 500;
4889    var DISABLED_TRANSITIONS_STYLE = {
4890      style: {
4891        transition: "none"
4892      }
4893    };
4894    var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger";
4895    var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore";
4896    var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore";
4897    var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`;
4898    var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`;
4899    var DROPDOWN_COLLISION_AVOIDANCE = {
4900      fallbackAxisSide: "none"
4901    };
4902    var POPUP_COLLISION_AVOIDANCE = {
4903      fallbackAxisSide: "end"
4904    };
4905    var ownerVisuallyHidden = {
4906      clipPath: "inset(50%)",
4907      position: "fixed",
4908      top: 0,
4909      left: 0
4910    };
4911  
4912    // node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs
4913    var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
4914    var PortalContext = /* @__PURE__ */ React20.createContext(null);
4915    if (true) PortalContext.displayName = "PortalContext";
4916    var usePortalContext = () => React20.useContext(PortalContext);
4917    var attr = createAttribute("portal");
4918    function useFloatingPortalNode(props = {}) {
4919      const {
4920        ref,
4921        container: containerProp,
4922        componentProps = EMPTY_OBJECT,
4923        elementProps
4924      } = props;
4925      const uniqueId = useId();
4926      const portalContext = usePortalContext();
4927      const parentPortalNode = portalContext?.portalNode;
4928      const [containerElement, setContainerElement] = React20.useState(null);
4929      const [portalNode, setPortalNode] = React20.useState(null);
4930      const setPortalNodeRef = useStableCallback((node) => {
4931        if (node !== null) {
4932          setPortalNode(node);
4933        }
4934      });
4935      const containerRef = React20.useRef(null);
4936      useIsoLayoutEffect(() => {
4937        if (containerProp === null) {
4938          if (containerRef.current) {
4939            containerRef.current = null;
4940            setPortalNode(null);
4941            setContainerElement(null);
4942          }
4943          return;
4944        }
4945        const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body;
4946        if (resolvedContainer == null) {
4947          if (containerRef.current) {
4948            containerRef.current = null;
4949            setPortalNode(null);
4950            setContainerElement(null);
4951          }
4952          return;
4953        }
4954        if (containerRef.current !== resolvedContainer) {
4955          containerRef.current = resolvedContainer;
4956          setPortalNode(null);
4957          setContainerElement(resolvedContainer);
4958        }
4959      }, [containerProp, parentPortalNode]);
4960      const portalElement = useRenderElement("div", componentProps, {
4961        ref: [ref, setPortalNodeRef],
4962        props: [{
4963          id: uniqueId,
4964          [attr]: ""
4965        }, elementProps]
4966      });
4967      const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null;
4968      return {
4969        node: portalNode,
4970        // `id` and `render` props can override or remove the generated ID. Use the exact
4971        // rendered value so `aria-owns` never points at an ID absent from the DOM.
4972        nodeId: /* @__PURE__ */ React20.isValidElement(portalElement) ? portalElement.props.id : void 0,
4973        subtree: portalSubtree
4974      };
4975    }
4976    var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2(componentProps, forwardedRef) {
4977      const {
4978        render: render4,
4979        className,
4980        style,
4981        children,
4982        container,
4983        ...elementProps
4984      } = componentProps;
4985      const {
4986        node: portalNode,
4987        nodeId: portalNodeId,
4988        subtree: portalSubtree
4989      } = useFloatingPortalNode({
4990        container,
4991        ref: forwardedRef,
4992        componentProps,
4993        elementProps
4994      });
4995      const beforeOutsideRef = React20.useRef(null);
4996      const afterOutsideRef = React20.useRef(null);
4997      const beforeInsideRef = React20.useRef(null);
4998      const afterInsideRef = React20.useRef(null);
4999      const [focusManagerState, setFocusManagerState] = React20.useState(null);
5000      const focusInsideDisabledRef = React20.useRef(false);
5001      const modal = focusManagerState?.modal;
5002      const open = focusManagerState?.open;
5003      const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode;
5004      React20.useEffect(() => {
5005        if (!portalNode || modal) {
5006          return void 0;
5007        }
5008        function onFocus(event) {
5009          if (portalNode && event.relatedTarget && isOutsideEvent(event)) {
5010            if (event.type === "focusin") {
5011              if (focusInsideDisabledRef.current) {
5012                enableFocusInside(portalNode);
5013                focusInsideDisabledRef.current = false;
5014              }
5015            } else {
5016              disableFocusInside(portalNode);
5017              focusInsideDisabledRef.current = true;
5018            }
5019          }
5020        }
5021        return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true));
5022      }, [portalNode, modal]);
5023      useIsoLayoutEffect(() => {
5024        if (!portalNode || open !== true || !focusInsideDisabledRef.current) {
5025          return;
5026        }
5027        enableFocusInside(portalNode);
5028        focusInsideDisabledRef.current = false;
5029      }, [open, portalNode]);
5030      const portalContextValue = React20.useMemo(() => ({
5031        beforeOutsideRef,
5032        afterOutsideRef,
5033        beforeInsideRef,
5034        afterInsideRef,
5035        portalNode,
5036        setFocusManagerState
5037      }), [portalNode]);
5038      return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(React20.Fragment, {
5039        children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(PortalContext.Provider, {
5040          value: portalContextValue,
5041          children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FocusGuard, {
5042            "data-type": "outside",
5043            ref: beforeOutsideRef,
5044            onFocus: (event) => {
5045              if (isOutsideEvent(event, portalNode)) {
5046                beforeInsideRef.current?.focus();
5047              } else {
5048                const domReference = focusManagerState ? focusManagerState.domReference : null;
5049                const prevTabbable = getPreviousTabbable(domReference);
5050                prevTabbable?.focus();
5051              }
5052            }
5053          }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", {
5054            "aria-owns": portalNodeId,
5055            style: ownerVisuallyHidden
5056          }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FocusGuard, {
5057            "data-type": "outside",
5058            ref: afterOutsideRef,
5059            onFocus: (event) => {
5060              if (isOutsideEvent(event, portalNode)) {
5061                afterInsideRef.current?.focus();
5062              } else {
5063                const domReference = focusManagerState ? focusManagerState.domReference : null;
5064                const nextTabbable = getNextTabbable(domReference);
5065                nextTabbable?.focus();
5066                if (focusManagerState?.closeOnFocusOut) {
5067                  focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent));
5068                }
5069              }
5070            }
5071          })]
5072        })]
5073      });
5074    });
5075    if (true) FloatingPortal.displayName = "FloatingPortal";
5076  
5077    // node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs
5078    var React21 = __toESM(require_react(), 1);
5079  
5080    // node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs
5081    function createEventEmitter() {
5082      const map = /* @__PURE__ */ new Map();
5083      return {
5084        emit(event, data) {
5085          map.get(event)?.forEach((listener) => listener(data));
5086        },
5087        on(event, listener) {
5088          if (!map.has(event)) {
5089            map.set(event, /* @__PURE__ */ new Set());
5090          }
5091          map.get(event).add(listener);
5092        },
5093        off(event, listener) {
5094          map.get(event)?.delete(listener);
5095        }
5096      };
5097    }
5098  
5099    // node_modules/@base-ui/react/floating-ui-react/components/FloatingTreeStore.mjs
5100    var FloatingTreeStore = class {
5101      nodesRef = {
5102        current: []
5103      };
5104      events = createEventEmitter();
5105      addNode(node) {
5106        this.nodesRef.current.push(node);
5107      }
5108      removeNode(node) {
5109        const index2 = this.nodesRef.current.findIndex((n2) => n2 === node);
5110        if (index2 !== -1) {
5111          this.nodesRef.current.splice(index2, 1);
5112        }
5113      }
5114    };
5115  
5116    // node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs
5117    var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
5118    var FloatingNodeContext = /* @__PURE__ */ React21.createContext(null);
5119    if (true) FloatingNodeContext.displayName = "FloatingNodeContext";
5120    var FloatingTreeContext = /* @__PURE__ */ React21.createContext(null);
5121    if (true) FloatingTreeContext.displayName = "FloatingTreeContext";
5122    var useFloatingParentNodeId = () => React21.useContext(FloatingNodeContext)?.id || null;
5123    var useFloatingTree = (externalTree) => {
5124      const contextTree = React21.useContext(FloatingTreeContext);
5125      return externalTree ?? contextTree;
5126    };
5127    function useFloatingNodeId(externalTree) {
5128      const id = useId();
5129      const tree = useFloatingTree(externalTree);
5130      const parentId = useFloatingParentNodeId();
5131      useIsoLayoutEffect(() => {
5132        if (!id) {
5133          return void 0;
5134        }
5135        const node = {
5136          id,
5137          parentId
5138        };
5139        tree?.addNode(node);
5140        return () => {
5141          tree?.removeNode(node);
5142        };
5143      }, [tree, id, parentId]);
5144      return id;
5145    }
5146    function FloatingNode(props) {
5147      const {
5148        children,
5149        id
5150      } = props;
5151      const parentId = useFloatingParentNodeId();
5152      return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(FloatingNodeContext.Provider, {
5153        value: React21.useMemo(() => ({
5154          id,
5155          parentId
5156        }), [id, parentId]),
5157        children
5158      });
5159    }
5160    function FloatingTree(props) {
5161      const {
5162        children,
5163        externalTree
5164      } = props;
5165      const tree = useRefWithInit(() => externalTree ?? new FloatingTreeStore()).current;
5166      return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(FloatingTreeContext.Provider, {
5167        value: tree,
5168        children
5169      });
5170    }
5171  
5172    // node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs
5173    var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
5174    function getEventType(event, lastInteractionType) {
5175      const win = getWindow(getTarget(event));
5176      if (event instanceof win.KeyboardEvent) {
5177        return "keyboard";
5178      }
5179      if (event instanceof win.FocusEvent) {
5180        return lastInteractionType || "keyboard";
5181      }
5182      if ("pointerType" in event) {
5183        return event.pointerType || "keyboard";
5184      }
5185      if ("touches" in event) {
5186        return "touch";
5187      }
5188      if (event instanceof win.MouseEvent) {
5189        return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse");
5190      }
5191      return "";
5192    }
5193    var LIST_LIMIT = 20;
5194    var previouslyFocusedElements = [];
5195    function clearDisconnectedPreviouslyFocusedElements() {
5196      previouslyFocusedElements = previouslyFocusedElements.filter((entry) => {
5197        return entry.deref()?.isConnected;
5198      });
5199    }
5200    function addPreviouslyFocusedElement(element) {
5201      clearDisconnectedPreviouslyFocusedElements();
5202      if (element && getNodeName(element) !== "body") {
5203        previouslyFocusedElements.push(new WeakRef(element));
5204        if (previouslyFocusedElements.length > LIST_LIMIT) {
5205          previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);
5206        }
5207      }
5208    }
5209    function getPreviouslyFocusedElement() {
5210      clearDisconnectedPreviouslyFocusedElements();
5211      return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref();
5212    }
5213    function getFirstTabbableElement(container) {
5214      if (!container) {
5215        return null;
5216      }
5217      if (isTabbable(container)) {
5218        return container;
5219      }
5220      return tabbable(container)[0] || container;
5221    }
5222    function handleTabIndex(floatingFocusElement) {
5223      if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) {
5224        return;
5225      }
5226      if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) {
5227        return;
5228      }
5229      const focusableElements = focusable(floatingFocusElement);
5230      const tabbableContent = focusableElements.filter((element) => {
5231        const dataTabIndex = element.getAttribute("data-tabindex") || "";
5232        return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-");
5233      });
5234      const tabIndex = floatingFocusElement.getAttribute("tabindex");
5235      if (tabbableContent.length === 0) {
5236        if (tabIndex !== "0") {
5237          floatingFocusElement.setAttribute("tabindex", "0");
5238          floatingFocusElement.setAttribute("data-tabindex", "0");
5239        }
5240      } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") {
5241        floatingFocusElement.setAttribute("tabindex", "-1");
5242        floatingFocusElement.setAttribute("data-tabindex", "-1");
5243      }
5244    }
5245    function FloatingFocusManager(props) {
5246      const {
5247        context,
5248        children,
5249        disabled: disabled2 = false,
5250        initialFocus = true,
5251        returnFocus = true,
5252        restoreFocus = false,
5253        modal = true,
5254        closeOnFocusOut = true,
5255        openInteractionType = "",
5256        nextFocusableElement,
5257        previousFocusableElement,
5258        beforeContentFocusGuardRef,
5259        externalTree,
5260        getInsideElements
5261      } = props;
5262      const store = "rootStore" in context ? context.rootStore : context;
5263      const open = store.useState("open");
5264      const domReference = store.useState("domReferenceElement");
5265      const floating = store.useState("floatingElement");
5266      const {
5267        events,
5268        dataRef
5269      } = store.context;
5270      const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId);
5271      const ignoreInitialFocus = initialFocus === false;
5272      const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;
5273      const initialFocusRef = useValueAsRef(initialFocus);
5274      const returnFocusRef = useValueAsRef(returnFocus);
5275      const openInteractionTypeRef = useValueAsRef(openInteractionType);
5276      const openRef = useValueAsRef(open);
5277      const tree = useFloatingTree(externalTree);
5278      const portalContext = usePortalContext();
5279      const preventReturnFocusRef = React22.useRef(false);
5280      const isPointerDownRef = React22.useRef(false);
5281      const pointerDownOutsideRef = React22.useRef(false);
5282      const lastFocusedTabbableRef = React22.useRef(null);
5283      const closeTypeRef = React22.useRef("");
5284      const lastInteractionTypeRef = React22.useRef("");
5285      const beforeGuardRef = React22.useRef(null);
5286      const afterGuardRef = React22.useRef(null);
5287      const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef);
5288      const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef);
5289      const blurTimeout = useTimeout();
5290      const pointerDownTimeout = useTimeout();
5291      const restoreFocusFrame = useAnimationFrame();
5292      const isInsidePortal = portalContext != null;
5293      const floatingFocusElement = getFloatingFocusElement(floating);
5294      const getTabbableContent = useStableCallback((container = floatingFocusElement) => {
5295        return container ? tabbable(container) : [];
5296      });
5297      const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []);
5298      React22.useEffect(() => {
5299        if (disabled2 || !modal) {
5300          return void 0;
5301        }
5302        function onKeyDown(event) {
5303          if (event.key === "Tab") {
5304            if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {
5305              stopEvent(event);
5306            }
5307          }
5308        }
5309        const doc = ownerDocument(floatingFocusElement);
5310        return addEventListener(doc, "keydown", onKeyDown);
5311      }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]);
5312      React22.useEffect(() => {
5313        if (disabled2 || !open) {
5314          return void 0;
5315        }
5316        const doc = ownerDocument(floatingFocusElement);
5317        function clearPointerDownOutside() {
5318          pointerDownOutsideRef.current = false;
5319        }
5320        function onPointerDown(event) {
5321          const target = getTarget(event);
5322          const insideElements = getResolvedInsideElements();
5323          const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target));
5324          pointerDownOutsideRef.current = !pointerTargetInside;
5325          lastInteractionTypeRef.current = event.pointerType || "keyboard";
5326          if (target?.closest(`[$CLICK_TRIGGER_IDENTIFIER}]`)) {
5327            isPointerDownRef.current = true;
5328            pointerDownTimeout.start(0, () => {
5329              isPointerDownRef.current = false;
5330            });
5331          }
5332        }
5333        function onKeyDown() {
5334          lastInteractionTypeRef.current = "keyboard";
5335        }
5336        return mergeCleanups(
5337          addEventListener(doc, "pointerdown", onPointerDown, true),
5338          addEventListener(doc, "pointerup", clearPointerDownOutside, true),
5339          addEventListener(doc, "pointercancel", clearPointerDownOutside, true),
5340          addEventListener(doc, "keydown", onKeyDown, true),
5341          // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups)
5342          // if the popup dismissed between pointerdown and pointerup.
5343          clearPointerDownOutside
5344        );
5345      }, [disabled2, floating, domReference, floatingFocusElement, open, portalContext, pointerDownTimeout, getResolvedInsideElements]);
5346      React22.useEffect(() => {
5347        if (disabled2 || !closeOnFocusOut) {
5348          return void 0;
5349        }
5350        const doc = ownerDocument(floatingFocusElement);
5351        function handlePointerDown() {
5352          isPointerDownRef.current = true;
5353          pointerDownTimeout.start(0, () => {
5354            isPointerDownRef.current = false;
5355          });
5356        }
5357        function handleFocusIn(event) {
5358          const target = getTarget(event);
5359          if (isTabbable(target)) {
5360            lastFocusedTabbableRef.current = target;
5361          }
5362        }
5363        function handleFocusOutside(event) {
5364          const relatedTarget = event.relatedTarget;
5365          const currentTarget = event.currentTarget;
5366          const target = getTarget(event);
5367          if (modal && relatedTarget == null && target != null && contains(floating, target)) {
5368            addPreviouslyFocusedElement(target);
5369          }
5370          queueMicrotask(() => {
5371            const nodeId = getNodeId();
5372            const triggers = store.context.triggerElements;
5373            const insideElements = getResolvedInsideElements();
5374            const isRelatedFocusGuard = relatedTarget?.hasAttribute(createAttribute("focus-guard")) && [beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeInsideRef.current, portalContext?.afterInsideRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement)].includes(relatedTarget);
5375            const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext?.portalNode, relatedTarget) || insideElements.some((element) => element === relatedTarget || contains(element, relatedTarget)) || triggers.hasMatchingElement((trigger) => contains(trigger, relatedTarget)) || isRelatedFocusGuard || tree && (getNodeChildren(tree.nodesRef.current, nodeId).find((node) => contains(node.context?.elements.floating, relatedTarget) || contains(node.context?.elements.domReference, relatedTarget)) || getNodeAncestors(tree.nodesRef.current, nodeId).find((node) => [node.context?.elements.floating, getFloatingFocusElement(node.context?.elements.floating)].includes(relatedTarget) || node.context?.elements.domReference === relatedTarget)));
5376            if (currentTarget === domReference && floatingFocusElement) {
5377              handleTabIndex(floatingFocusElement);
5378            }
5379            if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) {
5380              if (isHTMLElement(floatingFocusElement)) {
5381                floatingFocusElement.focus();
5382                if (restoreFocus === "popup") {
5383                  restoreFocusFrame.request(() => {
5384                    floatingFocusElement.focus();
5385                  });
5386                  return;
5387                }
5388              }
5389              const tabbableContent = getTabbableContent();
5390              const prevTabbable = lastFocusedTabbableRef.current;
5391              const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;
5392              if (isHTMLElement(nodeToFocus)) {
5393                nodeToFocus.focus();
5394              }
5395            }
5396            if (dataRef.current.insideReactTree) {
5397              dataRef.current.insideReactTree = false;
5398              return;
5399            }
5400            if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering.
5401            // For an "untrapped" typeable combobox (input role=combobox with
5402            // initialFocus=false), re-opening the popup and tabbing out should still close it even
5403            // when the previously focused element (e.g. the next tabbable outside the popup) is
5404            // focused again. Otherwise, the popup remains open on the second Tab sequence:
5405            // click input -> Tab (closes) -> click input -> Tab.
5406            // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element.
5407            (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) {
5408              preventReturnFocusRef.current = true;
5409              store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event));
5410            }
5411          });
5412        }
5413        function markInsideReactTree() {
5414          if (pointerDownOutsideRef.current) {
5415            return;
5416          }
5417          dataRef.current.insideReactTree = true;
5418          blurTimeout.start(0, () => {
5419            dataRef.current.insideReactTree = false;
5420          });
5421        }
5422        const domReferenceElement = isHTMLElement(domReference) ? domReference : null;
5423        if (!floating && !domReferenceElement) {
5424          return void 0;
5425        }
5426        return mergeCleanups(domReferenceElement && addEventListener(domReferenceElement, "focusout", handleFocusOutside), domReferenceElement && addEventListener(domReferenceElement, "pointerdown", handlePointerDown), floating && addEventListener(floating, "focusin", handleFocusIn), floating && addEventListener(floating, "focusout", handleFocusOutside), floating && portalContext && addEventListener(floating, "focusout", markInsideReactTree, true));
5427      }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]);
5428      React22.useEffect(() => {
5429        if (disabled2 || !floating || !open) {
5430          return void 0;
5431        }
5432        const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[$createAttribute("portal")}]`) || []);
5433        const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];
5434        const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference;
5435        const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()];
5436        const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x2) => x2 != null);
5437        const ariaHiddenCleanup = markOthers(insideElements, {
5438          ariaHidden: modal || isUntrappedTypeableCombobox,
5439          mark: false
5440        });
5441        const markerInsideElements = [floating, ...portalNodes].filter((x2) => x2 != null);
5442        const markerCleanup = markOthers(markerInsideElements);
5443        return () => {
5444          markerCleanup();
5445          ariaHiddenCleanup();
5446        };
5447      }, [open, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]);
5448      useIsoLayoutEffect(() => {
5449        if (!open || disabled2 || !isHTMLElement(floatingFocusElement)) {
5450          return;
5451        }
5452        closeTypeRef.current = "";
5453        lastInteractionTypeRef.current = "";
5454        const doc = ownerDocument(floatingFocusElement);
5455        const previouslyFocusedElement = activeElement(doc);
5456        queueMicrotask(() => {
5457          const initialFocusValueOrFn = initialFocusRef.current;
5458          const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn;
5459          if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) {
5460            return;
5461          }
5462          const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);
5463          if (focusAlreadyInsideFloatingEl) {
5464            return;
5465          }
5466          let focusableElements = null;
5467          const getDefaultFocusElement = () => {
5468            if (focusableElements == null) {
5469              focusableElements = getTabbableContent(floatingFocusElement);
5470            }
5471            return focusableElements[0] || floatingFocusElement;
5472          };
5473          let elToFocus;
5474          if (resolvedInitialFocus === true || resolvedInitialFocus === null) {
5475            elToFocus = getDefaultFocusElement();
5476          } else {
5477            elToFocus = resolveRef(resolvedInitialFocus);
5478          }
5479          elToFocus = elToFocus || getDefaultFocusElement();
5480          const hadFocusInside = contains(floatingFocusElement, activeElement(doc));
5481          void enqueueFocus(elToFocus, {
5482            preventScroll: elToFocus === floatingFocusElement,
5483            shouldFocus() {
5484              if (!openRef.current) {
5485                return false;
5486              }
5487              if (hadFocusInside) {
5488                return true;
5489              }
5490              const currentActiveElement = activeElement(doc);
5491              const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement);
5492              return !focusMovedInside;
5493            }
5494          });
5495        });
5496      }, [disabled2, open, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef]);
5497      useIsoLayoutEffect(() => {
5498        if (disabled2 || !floatingFocusElement) {
5499          return void 0;
5500        }
5501        const doc = ownerDocument(floatingFocusElement);
5502        const elementFocusedBeforeOpen = activeElement(doc);
5503        const preferPreviousFocus = openInteractionTypeRef.current == null;
5504        addPreviouslyFocusedElement(elementFocusedBeforeOpen);
5505        function onOpenChangeLocal(details) {
5506          if (!details.open) {
5507            closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current);
5508          }
5509          if (details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") {
5510            preventReturnFocusRef.current = true;
5511          }
5512          if (details.reason !== reason_parts_exports.outsidePress) {
5513            return;
5514          }
5515          if (details.nested) {
5516            preventReturnFocusRef.current = false;
5517          } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) {
5518            preventReturnFocusRef.current = false;
5519          } else {
5520            let isPreventScrollSupported = false;
5521            ownerDocument(floatingFocusElement).createElement("div").focus({
5522              get preventScroll() {
5523                isPreventScrollSupported = true;
5524                return false;
5525              }
5526            });
5527            if (isPreventScrollSupported) {
5528              preventReturnFocusRef.current = false;
5529            } else {
5530              preventReturnFocusRef.current = true;
5531            }
5532          }
5533        }
5534        events.on("openchange", onOpenChangeLocal);
5535        function getReturnElement(closeType) {
5536          const returnFocusValueOrFn = returnFocusRef.current;
5537          let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn;
5538          if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) {
5539            return null;
5540          }
5541          if (resolvedReturnFocusValue === null) {
5542            resolvedReturnFocusValue = true;
5543          }
5544          const referenceReturnElement = domReference?.isConnected ? domReference : null;
5545          const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null;
5546          let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement;
5547          if (!defaultReturnElement) {
5548            defaultReturnElement = getPreviouslyFocusedElement() || null;
5549          }
5550          if (typeof resolvedReturnFocusValue === "boolean") {
5551            return defaultReturnElement;
5552          }
5553          return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null;
5554        }
5555        return () => {
5556          events.off("openchange", onOpenChangeLocal);
5557          const activeEl = activeElement(doc);
5558          const insideElements = getResolvedInsideElements();
5559          const isFocusInsideFloatingTree = contains(floating, activeEl) || insideElements.some((element) => element === activeEl || contains(element, activeEl)) || tree && getNodeChildren(tree.nodesRef.current, getNodeId(), false).some((node) => contains(node.context?.elements.floating, activeEl));
5560          const returnFocusValueOrFn = returnFocusRef.current;
5561          const closeType = closeTypeRef.current;
5562          const returnElement = getReturnElement(closeType);
5563          queueMicrotask(() => {
5564            const tabbableReturnElement = getFirstTabbableElement(returnElement);
5565            const hasExplicitReturnFocus = typeof returnFocusValueOrFn !== "boolean";
5566            if (returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus
5567            // since it likely entered a different element which should be
5568            // respected: https://github.com/floating-ui/floating-ui/issues/2607
5569            (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {
5570              const focusOptions = {
5571                preventScroll: true
5572              };
5573              if (closeType === "keyboard") {
5574                focusOptions.focusVisible = true;
5575              }
5576              tabbableReturnElement.focus(focusOptions);
5577            }
5578            preventReturnFocusRef.current = false;
5579          });
5580        };
5581      }, [disabled2, floating, floatingFocusElement, returnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]);
5582      useIsoLayoutEffect(() => {
5583        if (!parts_exports.engine.webkit || open || !floating) {
5584          return;
5585        }
5586        const activeEl = activeElement(ownerDocument(floating));
5587        if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) {
5588          return;
5589        }
5590        if (contains(floating, activeEl)) {
5591          activeEl.blur();
5592        }
5593      }, [open, floating]);
5594      useIsoLayoutEffect(() => {
5595        if (disabled2 || !portalContext) {
5596          return void 0;
5597        }
5598        portalContext.setFocusManagerState({
5599          modal,
5600          closeOnFocusOut,
5601          open,
5602          onOpenChange: store.setOpen,
5603          domReference
5604        });
5605        return () => {
5606          portalContext.setFocusManagerState(null);
5607        };
5608      }, [disabled2, portalContext, modal, open, store, closeOnFocusOut, domReference]);
5609      useIsoLayoutEffect(() => {
5610        if (disabled2 || !floatingFocusElement) {
5611          return void 0;
5612        }
5613        handleTabIndex(floatingFocusElement);
5614        return () => {
5615          queueMicrotask(clearDisconnectedPreviouslyFocusedElements);
5616        };
5617      }, [disabled2, floatingFocusElement]);
5618      const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);
5619      return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(React22.Fragment, {
5620        children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(FocusGuard, {
5621          "data-type": "inside",
5622          ref: mergedBeforeGuardRef,
5623          onFocus: (event) => {
5624            if (modal) {
5625              const els = getTabbableContent();
5626              void enqueueFocus(els[els.length - 1]);
5627            } else if (portalContext?.portalNode) {
5628              preventReturnFocusRef.current = false;
5629              if (isOutsideEvent(event, portalContext.portalNode)) {
5630                const nextTabbable = getNextTabbable(domReference);
5631                nextTabbable?.focus();
5632              } else {
5633                resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus();
5634              }
5635            }
5636          }
5637        }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(FocusGuard, {
5638          "data-type": "inside",
5639          ref: mergedAfterGuardRef,
5640          onFocus: (event) => {
5641            if (modal) {
5642              void enqueueFocus(getTabbableContent()[0]);
5643            } else if (portalContext?.portalNode) {
5644              if (closeOnFocusOut) {
5645                preventReturnFocusRef.current = true;
5646              }
5647              if (isOutsideEvent(event, portalContext.portalNode)) {
5648                const prevTabbable = getPreviousTabbable(domReference);
5649                prevTabbable?.focus();
5650              } else {
5651                resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus();
5652              }
5653            }
5654          }
5655        })]
5656      });
5657    }
5658  
5659    // node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs
5660    var React23 = __toESM(require_react(), 1);
5661    function useClick(context, props = {}) {
5662      const {
5663        enabled = true,
5664        event: eventOption = "click",
5665        toggle = true,
5666        ignoreMouse = false,
5667        stickIfOpen = true,
5668        touchOpenDelay = 0,
5669        reason = reason_parts_exports.triggerPress
5670      } = props;
5671      const store = "rootStore" in context ? context.rootStore : context;
5672      const dataRef = store.context.dataRef;
5673      const pointerTypeRef = React23.useRef(void 0);
5674      const frame = useAnimationFrame();
5675      const touchOpenTimeout = useTimeout();
5676      const reference = React23.useMemo(() => {
5677        function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) {
5678          const details = createChangeEventDetails(reason, nativeEvent, target);
5679          if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) {
5680            touchOpenTimeout.start(touchOpenDelay, () => {
5681              store.setOpen(true, details);
5682            });
5683          } else {
5684            store.setOpen(nextOpen, details);
5685          }
5686        }
5687        function getNextOpen(open, currentTarget, isClickLikeOpenEvent2) {
5688          const openEvent = dataRef.current.openEvent;
5689          const hasClickedOnInactiveTrigger = store.select("domReferenceElement") !== currentTarget;
5690          if (open && hasClickedOnInactiveTrigger) {
5691            return true;
5692          }
5693          if (!open) {
5694            return true;
5695          }
5696          if (!toggle) {
5697            return true;
5698          }
5699          if (openEvent && stickIfOpen) {
5700            return !isClickLikeOpenEvent2(openEvent.type);
5701          }
5702          return false;
5703        }
5704        return {
5705          onPointerDown(event) {
5706            pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType;
5707          },
5708          onMouseDown(event) {
5709            const pointerType = pointerTypeRef.current;
5710            const nativeEvent = event.nativeEvent;
5711            const open = store.select("open");
5712            if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) {
5713              return;
5714            }
5715            const nextOpen = getNextOpen(open, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown");
5716            const target = getTarget(nativeEvent);
5717            if (isTypeableElement(target)) {
5718              setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType);
5719              return;
5720            }
5721            const eventCurrentTarget = event.currentTarget;
5722            frame.request(() => {
5723              setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType);
5724            });
5725          },
5726          onClick(event) {
5727            if (eventOption === "mousedown-only") {
5728              return;
5729            }
5730            const pointerType = pointerTypeRef.current;
5731            if (eventOption === "mousedown" && pointerType) {
5732              pointerTypeRef.current = void 0;
5733              return;
5734            }
5735            if (isMouseLikePointerType(pointerType, true) && ignoreMouse) {
5736              return;
5737            }
5738            const open = store.select("open");
5739            const nextOpen = getNextOpen(open, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup");
5740            setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType);
5741          },
5742          onKeyDown() {
5743            pointerTypeRef.current = void 0;
5744          }
5745        };
5746      }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]);
5747      return React23.useMemo(() => enabled ? {
5748        reference
5749      } : EMPTY_OBJECT, [enabled, reference]);
5750    }
5751  
5752    // node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs
5753    var React24 = __toESM(require_react(), 1);
5754    function createVirtualElement(domElement, data) {
5755      let offsetX = null;
5756      let offsetY = null;
5757      let isAutoUpdateEvent = false;
5758      return {
5759        contextElement: domElement || void 0,
5760        getBoundingClientRect() {
5761          const domRect = domElement?.getBoundingClientRect() || {
5762            width: 0,
5763            height: 0,
5764            x: 0,
5765            y: 0
5766          };
5767          const isXAxis = data.axis === "x" || data.axis === "both";
5768          const isYAxis = data.axis === "y" || data.axis === "both";
5769          const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch";
5770          let width = domRect.width;
5771          let height = domRect.height;
5772          let x2 = domRect.x;
5773          let y2 = domRect.y;
5774          if (offsetX == null && data.x && isXAxis) {
5775            offsetX = domRect.x - data.x;
5776          }
5777          if (offsetY == null && data.y && isYAxis) {
5778            offsetY = domRect.y - data.y;
5779          }
5780          x2 -= offsetX || 0;
5781          y2 -= offsetY || 0;
5782          width = 0;
5783          height = 0;
5784          if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {
5785            width = data.axis === "y" ? domRect.width : 0;
5786            height = data.axis === "x" ? domRect.height : 0;
5787            x2 = isXAxis && data.x != null ? data.x : x2;
5788            y2 = isYAxis && data.y != null ? data.y : y2;
5789          } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {
5790            height = data.axis === "x" ? domRect.height : height;
5791            width = data.axis === "y" ? domRect.width : width;
5792          }
5793          isAutoUpdateEvent = true;
5794          return {
5795            width,
5796            height,
5797            x: x2,
5798            y: y2,
5799            top: y2,
5800            right: x2 + width,
5801            bottom: y2 + height,
5802            left: x2
5803          };
5804        }
5805      };
5806    }
5807    function isMouseBasedEvent(event) {
5808      return event != null && event.clientX != null;
5809    }
5810    function useClientPoint(context, props = {}) {
5811      const {
5812        enabled = true,
5813        axis = "both"
5814      } = props;
5815      const store = "rootStore" in context ? context.rootStore : context;
5816      const open = store.useState("open");
5817      const floating = store.useState("floatingElement");
5818      const domReference = store.useState("domReferenceElement");
5819      const dataRef = store.context.dataRef;
5820      const initialRef = React24.useRef(false);
5821      const cleanupListenerRef = React24.useRef(null);
5822      const [pointerType, setPointerType] = React24.useState();
5823      const [reactive, setReactive] = React24.useState([]);
5824      const resetReference = useStableCallback((reference2) => {
5825        store.set("positionReference", reference2);
5826      });
5827      const setReference = useStableCallback((newX, newY, referenceElement) => {
5828        if (initialRef.current) {
5829          return;
5830        }
5831        if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {
5832          return;
5833        }
5834        store.set("positionReference", createVirtualElement(referenceElement ?? domReference, {
5835          x: newX,
5836          y: newY,
5837          axis,
5838          dataRef,
5839          pointerType
5840        }));
5841      });
5842      const handleReferenceEnterOrMove = useStableCallback((event) => {
5843        if (!open) {
5844          setReference(event.clientX, event.clientY, event.currentTarget);
5845        } else if (!cleanupListenerRef.current) {
5846          setReference(event.clientX, event.clientY, event.currentTarget);
5847          setReactive([]);
5848        }
5849      });
5850      const openCheck = isMouseLikePointerType(pointerType) ? floating : open;
5851      React24.useEffect(() => {
5852        if (!enabled) {
5853          resetReference(domReference);
5854          return void 0;
5855        }
5856        if (!openCheck) {
5857          return void 0;
5858        }
5859        function cleanupListener() {
5860          cleanupListenerRef.current?.();
5861          cleanupListenerRef.current = null;
5862        }
5863        const win = getWindow(floating);
5864        function handleMouseMove(event) {
5865          const target = getTarget(event);
5866          if (!contains(floating, target)) {
5867            setReference(event.clientX, event.clientY);
5868          } else {
5869            cleanupListener();
5870          }
5871        }
5872        if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {
5873          cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove);
5874        } else {
5875          resetReference(domReference);
5876        }
5877        return cleanupListener;
5878      }, [openCheck, enabled, floating, dataRef, domReference, store, setReference, resetReference, reactive]);
5879      React24.useEffect(() => () => {
5880        store.set("positionReference", null);
5881      }, [store]);
5882      React24.useEffect(() => {
5883        if (enabled && !floating) {
5884          initialRef.current = false;
5885        }
5886      }, [enabled, floating]);
5887      React24.useEffect(() => {
5888        if (!enabled && open) {
5889          initialRef.current = true;
5890        }
5891      }, [enabled, open]);
5892      const reference = React24.useMemo(() => {
5893        function setPointerTypeRef(event) {
5894          setPointerType(event.pointerType);
5895        }
5896        return {
5897          onPointerDown: setPointerTypeRef,
5898          onPointerEnter: setPointerTypeRef,
5899          onMouseMove: handleReferenceEnterOrMove,
5900          onMouseEnter: handleReferenceEnterOrMove
5901        };
5902      }, [handleReferenceEnterOrMove]);
5903      return React24.useMemo(() => enabled ? {
5904        reference,
5905        trigger: reference
5906      } : {}, [enabled, reference]);
5907    }
5908  
5909    // node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs
5910    var React25 = __toESM(require_react(), 1);
5911    function alwaysFalse() {
5912      return false;
5913    }
5914    function normalizeProp(normalizable) {
5915      return {
5916        escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false,
5917        outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true
5918      };
5919    }
5920    function useDismiss(context, props = {}) {
5921      const {
5922        enabled = true,
5923        escapeKey: escapeKey2 = true,
5924        outsidePress: outsidePressProp = true,
5925        outsidePressEvent = "sloppy",
5926        referencePress = alwaysFalse,
5927        bubbles,
5928        externalTree
5929      } = props;
5930      const store = "rootStore" in context ? context.rootStore : context;
5931      const open = store.useState("open");
5932      const floatingElement = store.useState("floatingElement");
5933      const {
5934        dataRef
5935      } = store.context;
5936      const tree = useFloatingTree(externalTree);
5937      const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false);
5938      const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp;
5939      const outsidePressEnabled = outsidePress2 !== false;
5940      const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent);
5941      const {
5942        escapeKey: escapeKeyBubbles,
5943        outsidePress: outsidePressBubbles
5944      } = normalizeProp(bubbles);
5945      const pressStartedInsideRef = React25.useRef(false);
5946      const pressStartPreventedRef = React25.useRef(false);
5947      const suppressNextOutsideClickRef = React25.useRef(false);
5948      const isComposingRef = React25.useRef(false);
5949      const currentPointerTypeRef = React25.useRef("");
5950      const touchStateRef = React25.useRef(null);
5951      const cancelDismissOnEndTimeout = useTimeout();
5952      const clearInsideReactTreeTimeout = useTimeout();
5953      const clearInsideReactTree = useStableCallback(() => {
5954        clearInsideReactTreeTimeout.clear();
5955        dataRef.current.insideReactTree = false;
5956      });
5957      const hasBlockingChild = useStableCallback((bubbleKey) => {
5958        const nodeId = dataRef.current.floatingContext?.nodeId;
5959        const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];
5960        return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]);
5961      });
5962      const isEventWithinOwnElements = useStableCallback((event) => {
5963        return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement"));
5964      });
5965      const closeOnReferencePress = useStableCallback((event) => {
5966        if (!referencePress()) {
5967          return;
5968        }
5969        store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent));
5970      });
5971      const closeOnEscapeKeyDown = useStableCallback((event) => {
5972        if (!open || !enabled || !escapeKey2 || event.key !== "Escape") {
5973          return;
5974        }
5975        if (isComposingRef.current) {
5976          return;
5977        }
5978        if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) {
5979          return;
5980        }
5981        const native = isReactEvent(event) ? event.nativeEvent : event;
5982        const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native);
5983        store.setOpen(false, eventDetails);
5984        if (!eventDetails.isCanceled) {
5985          event.preventDefault();
5986        }
5987        if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) {
5988          event.stopPropagation();
5989        }
5990      });
5991      const markInsideReactTree = useStableCallback(() => {
5992        dataRef.current.insideReactTree = true;
5993        clearInsideReactTreeTimeout.start(0, clearInsideReactTree);
5994      });
5995      const markPressStartedInsideReactTree = useStableCallback((event) => {
5996        if (!open || !enabled || event.button !== 0) {
5997          return;
5998        }
5999        const target = getTarget(event.nativeEvent);
6000        if (!contains(store.select("floatingElement"), target)) {
6001          return;
6002        }
6003        if (!pressStartedInsideRef.current) {
6004          pressStartedInsideRef.current = true;
6005          pressStartPreventedRef.current = false;
6006        }
6007      });
6008      const markInsidePressStartPrevented = useStableCallback((event) => {
6009        if (!open || !enabled) {
6010          return;
6011        }
6012        if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) {
6013          return;
6014        }
6015        if (pressStartedInsideRef.current) {
6016          pressStartPreventedRef.current = true;
6017        }
6018      });
6019      React25.useEffect(() => {
6020        if (!open || !enabled) {
6021          return clearInsideReactTree;
6022        }
6023        dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;
6024        dataRef.current.__outsidePressBubbles = outsidePressBubbles;
6025        const compositionTimeout = new Timeout();
6026        const preventedPressSuppressionTimeout = new Timeout();
6027        function handleCompositionStart() {
6028          compositionTimeout.clear();
6029          isComposingRef.current = true;
6030        }
6031        function handleCompositionEnd() {
6032          compositionTimeout.start(
6033            // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.
6034            // Only apply to WebKit for the test to remain 0ms.
6035            parts_exports.engine.webkit ? 5 : 0,
6036            () => {
6037              isComposingRef.current = false;
6038            }
6039          );
6040        }
6041        function suppressImmediateOutsideClickAfterPreventedStart() {
6042          suppressNextOutsideClickRef.current = true;
6043          preventedPressSuppressionTimeout.start(0, () => {
6044            suppressNextOutsideClickRef.current = false;
6045          });
6046        }
6047        function resetPressStartState() {
6048          pressStartedInsideRef.current = false;
6049          pressStartPreventedRef.current = false;
6050        }
6051        function getOutsidePressEvent() {
6052          const type = currentPointerTypeRef.current;
6053          const computedType = type === "pen" || !type ? "mouse" : type;
6054          const outsidePressEventValue = getOutsidePressEventProp();
6055          const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue;
6056          if (typeof resolved === "string") {
6057            return resolved;
6058          }
6059          return resolved[computedType];
6060        }
6061        function shouldIgnoreEvent(event) {
6062          const computedOutsidePressEvent = getOutsidePressEvent();
6063          return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click";
6064        }
6065        function isEventWithinFloatingTree(event) {
6066          const nodeId = dataRef.current.floatingContext?.nodeId;
6067          const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating));
6068          return isEventWithinOwnElements(event) || targetIsInsideChildren;
6069        }
6070        function closeOnPressOutside(event) {
6071          if (shouldIgnoreEvent(event)) {
6072            if (event.type !== "click" && !isEventWithinOwnElements(event)) {
6073              preventedPressSuppressionTimeout.clear();
6074              suppressNextOutsideClickRef.current = false;
6075            }
6076            clearInsideReactTree();
6077            return;
6078          }
6079          if (dataRef.current.insideReactTree) {
6080            clearInsideReactTree();
6081            return;
6082          }
6083          const target = getTarget(event);
6084          const inertSelector = `[$createAttribute("inert")}]`;
6085          const targetRoot = isElement(target) ? target.getRootNode() : null;
6086          const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector));
6087          const triggers = store.context.triggerElements;
6088          if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) {
6089            return;
6090          }
6091          let targetRootAncestor = isElement(target) ? target : null;
6092          while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {
6093            const nextParent = getParentNode(targetRootAncestor);
6094            if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {
6095              break;
6096            }
6097            targetRootAncestor = nextParent;
6098          }
6099          if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay).
6100          !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the
6101          // element was injected after the floating element rendered.
6102          markers.every((marker) => !contains(targetRootAncestor, marker))) {
6103            return;
6104          }
6105          if (isHTMLElement(target) && !("touches" in event)) {
6106            const lastTraversableNode = isLastTraversableNode(target);
6107            const style = getComputedStyle2(target);
6108            const scrollRe = /auto|scroll/;
6109            const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);
6110            const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);
6111            const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;
6112            const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;
6113            const isRTL11 = style.direction === "rtl";
6114            const pressedVerticalScrollbar = canScrollY && (isRTL11 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);
6115            const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;
6116            if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {
6117              return;
6118            }
6119          }
6120          if (isEventWithinFloatingTree(event)) {
6121            return;
6122          }
6123          if (getOutsidePressEvent() === "intentional" && suppressNextOutsideClickRef.current) {
6124            preventedPressSuppressionTimeout.clear();
6125            suppressNextOutsideClickRef.current = false;
6126            return;
6127          }
6128          if (typeof outsidePress2 === "function" && !outsidePress2(event)) {
6129            return;
6130          }
6131          if (hasBlockingChild("__outsidePressBubbles")) {
6132            return;
6133          }
6134          store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event));
6135          clearInsideReactTree();
6136        }
6137        function handlePointerDown(event) {
6138          if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) {
6139            return;
6140          }
6141          closeOnPressOutside(event);
6142        }
6143        function handleTouchStart(event) {
6144          if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) {
6145            return;
6146          }
6147          const touch = event.touches[0];
6148          if (touch) {
6149            touchStateRef.current = {
6150              startTime: Date.now(),
6151              startX: touch.clientX,
6152              startY: touch.clientY,
6153              dismissOnTouchEnd: false,
6154              dismissOnMouseDown: true
6155            };
6156            cancelDismissOnEndTimeout.start(1e3, () => {
6157              if (touchStateRef.current) {
6158                touchStateRef.current.dismissOnTouchEnd = false;
6159                touchStateRef.current.dismissOnMouseDown = false;
6160              }
6161            });
6162          }
6163        }
6164        function addTargetEventListenerOnce(event, listener) {
6165          const target = getTarget(event);
6166          if (!target) {
6167            return;
6168          }
6169          const unsubscribe2 = addEventListener(target, event.type, () => {
6170            listener(event);
6171            unsubscribe2();
6172          });
6173        }
6174        function handleTouchStartCapture(event) {
6175          currentPointerTypeRef.current = "touch";
6176          addTargetEventListenerOnce(event, handleTouchStart);
6177        }
6178        function closeOnPressOutsideCapture(event) {
6179          cancelDismissOnEndTimeout.clear();
6180          if (event.type === "pointerdown") {
6181            currentPointerTypeRef.current = event.pointerType;
6182          }
6183          if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) {
6184            return;
6185          }
6186          addTargetEventListenerOnce(event, (targetEvent) => {
6187            if (targetEvent.type === "pointerdown") {
6188              handlePointerDown(targetEvent);
6189            } else {
6190              closeOnPressOutside(targetEvent);
6191            }
6192          });
6193        }
6194        function handlePressEndCapture(event) {
6195          if (!pressStartedInsideRef.current) {
6196            return;
6197          }
6198          const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current;
6199          resetPressStartState();
6200          if (getOutsidePressEvent() !== "intentional") {
6201            return;
6202          }
6203          if (event.type === "pointercancel") {
6204            if (pressStartedInsideDefaultPrevented) {
6205              suppressImmediateOutsideClickAfterPreventedStart();
6206            }
6207            return;
6208          }
6209          if (isEventWithinFloatingTree(event)) {
6210            return;
6211          }
6212          if (pressStartedInsideDefaultPrevented) {
6213            suppressImmediateOutsideClickAfterPreventedStart();
6214            return;
6215          }
6216          if (typeof outsidePress2 === "function" && !outsidePress2(event)) {
6217            return;
6218          }
6219          preventedPressSuppressionTimeout.clear();
6220          suppressNextOutsideClickRef.current = true;
6221          clearInsideReactTree();
6222        }
6223        function handleTouchMove(event) {
6224          if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) {
6225            return;
6226          }
6227          const touch = event.touches[0];
6228          if (!touch) {
6229            return;
6230          }
6231          const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX);
6232          const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY);
6233          const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
6234          if (distance > 5) {
6235            touchStateRef.current.dismissOnTouchEnd = true;
6236          }
6237          if (distance > 10) {
6238            closeOnPressOutside(event);
6239            cancelDismissOnEndTimeout.clear();
6240            touchStateRef.current = null;
6241          }
6242        }
6243        function handleTouchMoveCapture(event) {
6244          addTargetEventListenerOnce(event, handleTouchMove);
6245        }
6246        function handleTouchEnd(event) {
6247          if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) {
6248            return;
6249          }
6250          if (touchStateRef.current.dismissOnTouchEnd) {
6251            closeOnPressOutside(event);
6252          }
6253          cancelDismissOnEndTimeout.clear();
6254          touchStateRef.current = null;
6255        }
6256        function handleTouchEndCapture(event) {
6257          addTargetEventListenerOnce(event, handleTouchEnd);
6258        }
6259        const doc = ownerDocument(floatingElement);
6260        const unsubscribe = mergeCleanups(escapeKey2 && mergeCleanups(addEventListener(doc, "keydown", closeOnEscapeKeyDown), addEventListener(doc, "compositionstart", handleCompositionStart), addEventListener(doc, "compositionend", handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, "click", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerdown", closeOnPressOutsideCapture, true), addEventListener(doc, "pointerup", handlePressEndCapture, true), addEventListener(doc, "pointercancel", handlePressEndCapture, true), addEventListener(doc, "mousedown", closeOnPressOutsideCapture, true), addEventListener(doc, "mouseup", handlePressEndCapture, true), addEventListener(doc, "touchstart", handleTouchStartCapture, true), addEventListener(doc, "touchmove", handleTouchMoveCapture, true), addEventListener(doc, "touchend", handleTouchEndCapture, true)));
6261        return () => {
6262          unsubscribe();
6263          compositionTimeout.clear();
6264          preventedPressSuppressionTimeout.clear();
6265          resetPressStartState();
6266          suppressNextOutsideClickRef.current = false;
6267          clearInsideReactTree();
6268        };
6269      }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout]);
6270      const reference = React25.useMemo(() => ({
6271        onKeyDown: closeOnEscapeKeyDown,
6272        onPointerDown: closeOnReferencePress,
6273        onClick: closeOnReferencePress
6274      }), [closeOnEscapeKeyDown, closeOnReferencePress]);
6275      const floating = React25.useMemo(() => ({
6276        onKeyDown: closeOnEscapeKeyDown,
6277        // `onMouseDown` may be blocked if `event.preventDefault()` is called in
6278        // `onPointerDown`, such as with <NumberField.ScrubArea>.
6279        // See https://github.com/mui/base-ui/pull/3379
6280        onPointerDown: markInsidePressStartPrevented,
6281        onMouseDown: markInsidePressStartPrevented,
6282        onClickCapture: markInsideReactTree,
6283        onMouseDownCapture(event) {
6284          markInsideReactTree();
6285          markPressStartedInsideReactTree(event);
6286        },
6287        onPointerDownCapture(event) {
6288          markInsideReactTree();
6289          markPressStartedInsideReactTree(event);
6290        },
6291        onMouseUpCapture: markInsideReactTree,
6292        onTouchEndCapture: markInsideReactTree,
6293        onTouchMoveCapture: markInsideReactTree
6294      }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]);
6295      return React25.useMemo(() => enabled ? {
6296        reference,
6297        floating,
6298        trigger: reference
6299      } : {}, [enabled, reference, floating]);
6300    }
6301  
6302    // node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs
6303    var React33 = __toESM(require_react(), 1);
6304  
6305    // node_modules/@floating-ui/core/dist/floating-ui.core.mjs
6306    function computeCoordsFromPlacement(_ref, placement, rtl) {
6307      let {
6308        reference,
6309        floating
6310      } = _ref;
6311      const sideAxis = getSideAxis(placement);
6312      const alignmentAxis = getAlignmentAxis(placement);
6313      const alignLength = getAxisLength(alignmentAxis);
6314      const side = getSide(placement);
6315      const isVertical = sideAxis === "y";
6316      const commonX = reference.x + reference.width / 2 - floating.width / 2;
6317      const commonY = reference.y + reference.height / 2 - floating.height / 2;
6318      const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
6319      let coords;
6320      switch (side) {
6321        case "top":
6322          coords = {
6323            x: commonX,
6324            y: reference.y - floating.height
6325          };
6326          break;
6327        case "bottom":
6328          coords = {
6329            x: commonX,
6330            y: reference.y + reference.height
6331          };
6332          break;
6333        case "right":
6334          coords = {
6335            x: reference.x + reference.width,
6336            y: commonY
6337          };
6338          break;
6339        case "left":
6340          coords = {
6341            x: reference.x - floating.width,
6342            y: commonY
6343          };
6344          break;
6345        default:
6346          coords = {
6347            x: reference.x,
6348            y: reference.y
6349          };
6350      }
6351      const alignment = getAlignment(placement);
6352      if (alignment) {
6353        coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1);
6354      }
6355      return coords;
6356    }
6357    async function detectOverflow(state, options) {
6358      var _await$platform$isEle;
6359      if (options === void 0) {
6360        options = {};
6361      }
6362      const {
6363        x: x2,
6364        y: y2,
6365        platform: platform3,
6366        rects,
6367        elements,
6368        strategy
6369      } = state;
6370      const {
6371        boundary = "clippingAncestors",
6372        rootBoundary = "viewport",
6373        elementContext = "floating",
6374        altBoundary = false,
6375        padding = 0
6376      } = evaluate(options, state);
6377      const paddingObject = getPaddingObject(padding);
6378      const altContext = elementContext === "floating" ? "reference" : "floating";
6379      const element = elements[altBoundary ? altContext : elementContext];
6380      const clippingClientRect = rectToClientRect(await platform3.getClippingRect({
6381        element: ((_await$platform$isEle = await (platform3.isElement == null ? void 0 : platform3.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform3.getDocumentElement == null ? void 0 : platform3.getDocumentElement(elements.floating)),
6382        boundary,
6383        rootBoundary,
6384        strategy
6385      }));
6386      const rect = elementContext === "floating" ? {
6387        x: x2,
6388        y: y2,
6389        width: rects.floating.width,
6390        height: rects.floating.height
6391      } : rects.reference;
6392      const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating));
6393      const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || {
6394        x: 1,
6395        y: 1
6396      };
6397      const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({
6398        elements,
6399        rect,
6400        offsetParent,
6401        strategy
6402      }) : rect);
6403      return {
6404        top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
6405        bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
6406        left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
6407        right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
6408      };
6409    }
6410    var MAX_RESET_COUNT = 50;
6411    var computePosition = async (reference, floating, config) => {
6412      const {
6413        placement = "bottom",
6414        strategy = "absolute",
6415        middleware = [],
6416        platform: platform3
6417      } = config;
6418      const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : {
6419        ...platform3,
6420        detectOverflow
6421      };
6422      const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating));
6423      let rects = await platform3.getElementRects({
6424        reference,
6425        floating,
6426        strategy
6427      });
6428      let {
6429        x: x2,
6430        y: y2
6431      } = computeCoordsFromPlacement(rects, placement, rtl);
6432      let statefulPlacement = placement;
6433      let resetCount = 0;
6434      const middlewareData = {};
6435      for (let i2 = 0; i2 < middleware.length; i2++) {
6436        const currentMiddleware = middleware[i2];
6437        if (!currentMiddleware) {
6438          continue;
6439        }
6440        const {
6441          name,
6442          fn
6443        } = currentMiddleware;
6444        const {
6445          x: nextX,
6446          y: nextY,
6447          data,
6448          reset
6449        } = await fn({
6450          x: x2,
6451          y: y2,
6452          initialPlacement: placement,
6453          placement: statefulPlacement,
6454          strategy,
6455          middlewareData,
6456          rects,
6457          platform: platformWithDetectOverflow,
6458          elements: {
6459            reference,
6460            floating
6461          }
6462        });
6463        x2 = nextX != null ? nextX : x2;
6464        y2 = nextY != null ? nextY : y2;
6465        middlewareData[name] = {
6466          ...middlewareData[name],
6467          ...data
6468        };
6469        if (reset && resetCount < MAX_RESET_COUNT) {
6470          resetCount++;
6471          if (typeof reset === "object") {
6472            if (reset.placement) {
6473              statefulPlacement = reset.placement;
6474            }
6475            if (reset.rects) {
6476              rects = reset.rects === true ? await platform3.getElementRects({
6477                reference,
6478                floating,
6479                strategy
6480              }) : reset.rects;
6481            }
6482            ({
6483              x: x2,
6484              y: y2
6485            } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
6486          }
6487          i2 = -1;
6488        }
6489      }
6490      return {
6491        x: x2,
6492        y: y2,
6493        placement: statefulPlacement,
6494        strategy,
6495        middlewareData
6496      };
6497    };
6498    var flip = function(options) {
6499      if (options === void 0) {
6500        options = {};
6501      }
6502      return {
6503        name: "flip",
6504        options,
6505        async fn(state) {
6506          var _middlewareData$arrow, _middlewareData$flip;
6507          const {
6508            placement,
6509            middlewareData,
6510            rects,
6511            initialPlacement,
6512            platform: platform3,
6513            elements
6514          } = state;
6515          const {
6516            mainAxis: checkMainAxis = true,
6517            crossAxis: checkCrossAxis = true,
6518            fallbackPlacements: specifiedFallbackPlacements,
6519            fallbackStrategy = "bestFit",
6520            fallbackAxisSideDirection = "none",
6521            flipAlignment = true,
6522            ...detectOverflowOptions
6523          } = evaluate(options, state);
6524          if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
6525            return {};
6526          }
6527          const side = getSide(placement);
6528          const initialSideAxis = getSideAxis(initialPlacement);
6529          const isBasePlacement = getSide(initialPlacement) === initialPlacement;
6530          const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating));
6531          const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
6532          const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none";
6533          if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
6534            fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
6535          }
6536          const placements2 = [initialPlacement, ...fallbackPlacements];
6537          const overflow = await platform3.detectOverflow(state, detectOverflowOptions);
6538          const overflows = [];
6539          let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
6540          if (checkMainAxis) {
6541            overflows.push(overflow[side]);
6542          }
6543          if (checkCrossAxis) {
6544            const sides2 = getAlignmentSides(placement, rects, rtl);
6545            overflows.push(overflow[sides2[0]], overflow[sides2[1]]);
6546          }
6547          overflowsData = [...overflowsData, {
6548            placement,
6549            overflows
6550          }];
6551          if (!overflows.every((side2) => side2 <= 0)) {
6552            var _middlewareData$flip2, _overflowsData$filter;
6553            const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
6554            const nextPlacement = placements2[nextIndex];
6555            if (nextPlacement) {
6556              const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false;
6557              if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis
6558              // overflows the main axis.
6559              overflowsData.every((d2) => getSideAxis(d2.placement) === initialSideAxis ? d2.overflows[0] > 0 : true)) {
6560                return {
6561                  data: {
6562                    index: nextIndex,
6563                    overflows: overflowsData
6564                  },
6565                  reset: {
6566                    placement: nextPlacement
6567                  }
6568                };
6569              }
6570            }
6571            let resetPlacement = (_overflowsData$filter = overflowsData.filter((d2) => d2.overflows[0] <= 0).sort((a2, b2) => a2.overflows[1] - b2.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
6572            if (!resetPlacement) {
6573              switch (fallbackStrategy) {
6574                case "bestFit": {
6575                  var _overflowsData$filter2;
6576                  const placement2 = (_overflowsData$filter2 = overflowsData.filter((d2) => {
6577                    if (hasFallbackAxisSideDirection) {
6578                      const currentSideAxis = getSideAxis(d2.placement);
6579                      return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal
6580                      // reading directions favoring greater width.
6581                      currentSideAxis === "y";
6582                    }
6583                    return true;
6584                  }).map((d2) => [d2.placement, d2.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a2, b2) => a2[1] - b2[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
6585                  if (placement2) {
6586                    resetPlacement = placement2;
6587                  }
6588                  break;
6589                }
6590                case "initialPlacement":
6591                  resetPlacement = initialPlacement;
6592                  break;
6593              }
6594            }
6595            if (placement !== resetPlacement) {
6596              return {
6597                reset: {
6598                  placement: resetPlacement
6599                }
6600              };
6601            }
6602          }
6603          return {};
6604        }
6605      };
6606    };
6607    var originSides = /* @__PURE__ */ new Set(["left", "top"]);
6608    async function convertValueToCoords(state, options) {
6609      const {
6610        placement,
6611        platform: platform3,
6612        elements
6613      } = state;
6614      const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating));
6615      const side = getSide(placement);
6616      const alignment = getAlignment(placement);
6617      const isVertical = getSideAxis(placement) === "y";
6618      const mainAxisMulti = originSides.has(side) ? -1 : 1;
6619      const crossAxisMulti = rtl && isVertical ? -1 : 1;
6620      const rawValue = evaluate(options, state);
6621      let {
6622        mainAxis,
6623        crossAxis,
6624        alignmentAxis
6625      } = typeof rawValue === "number" ? {
6626        mainAxis: rawValue,
6627        crossAxis: 0,
6628        alignmentAxis: null
6629      } : {
6630        mainAxis: rawValue.mainAxis || 0,
6631        crossAxis: rawValue.crossAxis || 0,
6632        alignmentAxis: rawValue.alignmentAxis
6633      };
6634      if (alignment && typeof alignmentAxis === "number") {
6635        crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
6636      }
6637      return isVertical ? {
6638        x: crossAxis * crossAxisMulti,
6639        y: mainAxis * mainAxisMulti
6640      } : {
6641        x: mainAxis * mainAxisMulti,
6642        y: crossAxis * crossAxisMulti
6643      };
6644    }
6645    var offset = function(options) {
6646      if (options === void 0) {
6647        options = 0;
6648      }
6649      return {
6650        name: "offset",
6651        options,
6652        async fn(state) {
6653          var _middlewareData$offse, _middlewareData$arrow;
6654          const {
6655            x: x2,
6656            y: y2,
6657            placement,
6658            middlewareData
6659          } = state;
6660          const diffCoords = await convertValueToCoords(state, options);
6661          if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
6662            return {};
6663          }
6664          return {
6665            x: x2 + diffCoords.x,
6666            y: y2 + diffCoords.y,
6667            data: {
6668              ...diffCoords,
6669              placement
6670            }
6671          };
6672        }
6673      };
6674    };
6675    var shift = function(options) {
6676      if (options === void 0) {
6677        options = {};
6678      }
6679      return {
6680        name: "shift",
6681        options,
6682        async fn(state) {
6683          const {
6684            x: x2,
6685            y: y2,
6686            placement,
6687            platform: platform3
6688          } = state;
6689          const {
6690            mainAxis: checkMainAxis = true,
6691            crossAxis: checkCrossAxis = false,
6692            limiter = {
6693              fn: (_ref) => {
6694                let {
6695                  x: x3,
6696                  y: y3
6697                } = _ref;
6698                return {
6699                  x: x3,
6700                  y: y3
6701                };
6702              }
6703            },
6704            ...detectOverflowOptions
6705          } = evaluate(options, state);
6706          const coords = {
6707            x: x2,
6708            y: y2
6709          };
6710          const overflow = await platform3.detectOverflow(state, detectOverflowOptions);
6711          const crossAxis = getSideAxis(placement);
6712          const mainAxis = getOppositeAxis(crossAxis);
6713          let mainAxisCoord = coords[mainAxis];
6714          let crossAxisCoord = coords[crossAxis];
6715          const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]);
6716          if (checkMainAxis) {
6717            mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);
6718          }
6719          if (checkCrossAxis) {
6720            crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);
6721          }
6722          const limitedCoords = limiter.fn({
6723            ...state,
6724            [mainAxis]: mainAxisCoord,
6725            [crossAxis]: crossAxisCoord
6726          });
6727          return {
6728            ...limitedCoords,
6729            data: {
6730              x: limitedCoords.x - x2,
6731              y: limitedCoords.y - y2,
6732              enabled: {
6733                [mainAxis]: checkMainAxis,
6734                [crossAxis]: checkCrossAxis
6735              }
6736            }
6737          };
6738        }
6739      };
6740    };
6741    var limitShift = function(options) {
6742      if (options === void 0) {
6743        options = {};
6744      }
6745      return {
6746        options,
6747        fn(state) {
6748          var _rawOffset$mainAxis, _rawOffset$crossAxis;
6749          const {
6750            x: x2,
6751            y: y2,
6752            placement,
6753            rects,
6754            middlewareData
6755          } = state;
6756          const {
6757            offset: offset4 = 0,
6758            mainAxis: checkMainAxis = true,
6759            crossAxis: checkCrossAxis = true
6760          } = evaluate(options, state);
6761          const coords = {
6762            x: x2,
6763            y: y2
6764          };
6765          const crossAxis = getSideAxis(placement);
6766          const mainAxis = getOppositeAxis(crossAxis);
6767          let mainAxisCoord = coords[mainAxis];
6768          let crossAxisCoord = coords[crossAxis];
6769          const rawOffset = evaluate(offset4, state);
6770          const computedOffset = typeof rawOffset === "number" ? {
6771            mainAxis: rawOffset,
6772            crossAxis: 0
6773          } : {
6774            mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,
6775            crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0
6776          };
6777          if (checkMainAxis) {
6778            const len = mainAxis === "y" ? "height" : "width";
6779            const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
6780            const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
6781            if (mainAxisCoord < limitMin) {
6782              mainAxisCoord = limitMin;
6783            } else if (mainAxisCoord > limitMax) {
6784              mainAxisCoord = limitMax;
6785            }
6786          }
6787          if (checkCrossAxis) {
6788            var _middlewareData$offse, _middlewareData$offse2;
6789            const len = mainAxis === "y" ? "width" : "height";
6790            const isOriginSide = originSides.has(getSide(placement));
6791            const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
6792            const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
6793            if (crossAxisCoord < limitMin) {
6794              crossAxisCoord = limitMin;
6795            } else if (crossAxisCoord > limitMax) {
6796              crossAxisCoord = limitMax;
6797            }
6798          }
6799          return {
6800            [mainAxis]: mainAxisCoord,
6801            [crossAxis]: crossAxisCoord
6802          };
6803        }
6804      };
6805    };
6806    var size = function(options) {
6807      if (options === void 0) {
6808        options = {};
6809      }
6810      return {
6811        name: "size",
6812        options,
6813        async fn(state) {
6814          const {
6815            placement,
6816            rects,
6817            platform: platform3,
6818            elements
6819          } = state;
6820          const {
6821            apply = () => {
6822            },
6823            ...detectOverflowOptions
6824          } = evaluate(options, state);
6825          const overflow = await platform3.detectOverflow(state, detectOverflowOptions);
6826          const side = getSide(placement);
6827          const alignment = getAlignment(placement);
6828          const isYAxis = getSideAxis(placement) === "y";
6829          const {
6830            width,
6831            height
6832          } = rects.floating;
6833          let heightSide;
6834          let widthSide;
6835          if (side === "top" || side === "bottom") {
6836            heightSide = side;
6837            widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right";
6838          } else {
6839            widthSide = side;
6840            heightSide = alignment === "end" ? "top" : "bottom";
6841          }
6842          const maximumClippingHeight = height - overflow.top - overflow.bottom;
6843          const maximumClippingWidth = width - overflow.left - overflow.right;
6844          const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
6845          const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
6846          const shiftData = state.middlewareData.shift;
6847          const noShift = !shiftData;
6848          let availableHeight = overflowAvailableHeight;
6849          let availableWidth = overflowAvailableWidth;
6850          if (shiftData != null && shiftData.enabled.x) {
6851            availableWidth = maximumClippingWidth;
6852          }
6853          if (shiftData != null && shiftData.enabled.y) {
6854            availableHeight = maximumClippingHeight;
6855          }
6856          if (noShift && !alignment) {
6857            if (isYAxis) {
6858              availableWidth = width - 2 * max(overflow.left, overflow.right);
6859            } else {
6860              availableHeight = height - 2 * max(overflow.top, overflow.bottom);
6861            }
6862          }
6863          await apply({
6864            ...state,
6865            availableWidth,
6866            availableHeight
6867          });
6868          const nextDimensions = await platform3.getDimensions(elements.floating);
6869          if (width !== nextDimensions.width || height !== nextDimensions.height) {
6870            return {
6871              reset: {
6872                rects: true
6873              }
6874            };
6875          }
6876          return {};
6877        }
6878      };
6879    };
6880  
6881    // node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
6882    function getCssDimensions(element) {
6883      const css = getComputedStyle2(element);
6884      let width = parseFloat(css.width) || 0;
6885      let height = parseFloat(css.height) || 0;
6886      const hasOffset = isHTMLElement(element);
6887      const offsetWidth = hasOffset ? element.offsetWidth : width;
6888      const offsetHeight = hasOffset ? element.offsetHeight : height;
6889      const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
6890      if (shouldFallback) {
6891        width = offsetWidth;
6892        height = offsetHeight;
6893      }
6894      return {
6895        width,
6896        height,
6897        $: shouldFallback
6898      };
6899    }
6900    function unwrapElement(element) {
6901      return !isElement(element) ? element.contextElement : element;
6902    }
6903    function getScale(element) {
6904      const domElement = unwrapElement(element);
6905      if (!isHTMLElement(domElement)) {
6906        return createCoords(1);
6907      }
6908      const rect = domElement.getBoundingClientRect();
6909      const {
6910        width,
6911        height,
6912        $: $2
6913      } = getCssDimensions(domElement);
6914      let x2 = ($2 ? round(rect.width) : rect.width) / width;
6915      let y2 = ($2 ? round(rect.height) : rect.height) / height;
6916      if (!x2 || !Number.isFinite(x2)) {
6917        x2 = 1;
6918      }
6919      if (!y2 || !Number.isFinite(y2)) {
6920        y2 = 1;
6921      }
6922      return {
6923        x: x2,
6924        y: y2
6925      };
6926    }
6927    var noOffsets = /* @__PURE__ */ createCoords(0);
6928    function getVisualOffsets(element) {
6929      const win = getWindow(element);
6930      if (!isWebKit() || !win.visualViewport) {
6931        return noOffsets;
6932      }
6933      return {
6934        x: win.visualViewport.offsetLeft,
6935        y: win.visualViewport.offsetTop
6936      };
6937    }
6938    function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
6939      if (isFixed === void 0) {
6940        isFixed = false;
6941      }
6942      return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element);
6943    }
6944    function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
6945      if (includeScale === void 0) {
6946        includeScale = false;
6947      }
6948      if (isFixedStrategy === void 0) {
6949        isFixedStrategy = false;
6950      }
6951      const clientRect = element.getBoundingClientRect();
6952      const domElement = unwrapElement(element);
6953      let scale = createCoords(1);
6954      if (includeScale) {
6955        if (offsetParent) {
6956          if (isElement(offsetParent)) {
6957            scale = getScale(offsetParent);
6958          }
6959        } else {
6960          scale = getScale(element);
6961        }
6962      }
6963      const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
6964      let x2 = (clientRect.left + visualOffsets.x) / scale.x;
6965      let y2 = (clientRect.top + visualOffsets.y) / scale.y;
6966      let width = clientRect.width / scale.x;
6967      let height = clientRect.height / scale.y;
6968      if (domElement && offsetParent) {
6969        const win = getWindow(domElement);
6970        const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
6971        let currentWin = win;
6972        let currentIFrame = getFrameElement(currentWin);
6973        while (currentIFrame && offsetWin !== currentWin) {
6974          const iframeScale = getScale(currentIFrame);
6975          const iframeRect = currentIFrame.getBoundingClientRect();
6976          const css = getComputedStyle2(currentIFrame);
6977          const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
6978          const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
6979          x2 *= iframeScale.x;
6980          y2 *= iframeScale.y;
6981          width *= iframeScale.x;
6982          height *= iframeScale.y;
6983          x2 += left;
6984          y2 += top;
6985          currentWin = getWindow(currentIFrame);
6986          currentIFrame = getFrameElement(currentWin);
6987        }
6988      }
6989      return rectToClientRect({
6990        width,
6991        height,
6992        x: x2,
6993        y: y2
6994      });
6995    }
6996    function getWindowScrollBarX(element, rect) {
6997      const leftScroll = getNodeScroll(element).scrollLeft;
6998      if (!rect) {
6999        return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
7000      }
7001      return rect.left + leftScroll;
7002    }
7003    function getHTMLOffset(documentElement, scroll) {
7004      const htmlRect = documentElement.getBoundingClientRect();
7005      const x2 = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
7006      const y2 = htmlRect.top + scroll.scrollTop;
7007      return {
7008        x: x2,
7009        y: y2
7010      };
7011    }
7012    function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
7013      let {
7014        elements,
7015        rect,
7016        offsetParent,
7017        strategy
7018      } = _ref;
7019      const isFixed = strategy === "fixed";
7020      const documentElement = getDocumentElement(offsetParent);
7021      const topLayer = elements ? isTopLayer(elements.floating) : false;
7022      if (offsetParent === documentElement || topLayer && isFixed) {
7023        return rect;
7024      }
7025      let scroll = {
7026        scrollLeft: 0,
7027        scrollTop: 0
7028      };
7029      let scale = createCoords(1);
7030      const offsets = createCoords(0);
7031      const isOffsetParentAnElement = isHTMLElement(offsetParent);
7032      if (isOffsetParentAnElement || !isFixed) {
7033        if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
7034          scroll = getNodeScroll(offsetParent);
7035        }
7036        if (isOffsetParentAnElement) {
7037          const offsetRect = getBoundingClientRect(offsetParent);
7038          scale = getScale(offsetParent);
7039          offsets.x = offsetRect.x + offsetParent.clientLeft;
7040          offsets.y = offsetRect.y + offsetParent.clientTop;
7041        }
7042      }
7043      const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
7044      return {
7045        width: rect.width * scale.x,
7046        height: rect.height * scale.y,
7047        x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
7048        y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
7049      };
7050    }
7051    function getClientRects(element) {
7052      return element.getClientRects ? Array.from(element.getClientRects()) : [];
7053    }
7054    function getDocumentRect(html) {
7055      const scroll = getNodeScroll(html);
7056      const body = html.ownerDocument.body;
7057      const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
7058      const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
7059      let x2 = -scroll.scrollLeft + getWindowScrollBarX(html);
7060      const y2 = -scroll.scrollTop;
7061      if (getComputedStyle2(body).direction === "rtl") {
7062        x2 += max(html.clientWidth, body.clientWidth) - width;
7063      }
7064      return {
7065        width,
7066        height,
7067        x: x2,
7068        y: y2
7069      };
7070    }
7071    var SCROLLBAR_MAX = 25;
7072    function getViewportRect(element, strategy, rootBoundary) {
7073      if (rootBoundary === void 0) {
7074        rootBoundary = "viewport";
7075      }
7076      const isLayoutViewport = rootBoundary === "layoutViewport";
7077      const win = getWindow(element);
7078      const html = getDocumentElement(element);
7079      const visualViewport = win.visualViewport;
7080      let width = html.clientWidth;
7081      let height = html.clientHeight;
7082      let x2 = 0;
7083      let y2 = 0;
7084      if (visualViewport) {
7085        const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed";
7086        if (isLayoutViewport) {
7087          if (!layoutRelativeClientCoords) {
7088            x2 = -visualViewport.offsetLeft;
7089            y2 = -visualViewport.offsetTop;
7090          }
7091        } else {
7092          width = visualViewport.width;
7093          height = visualViewport.height;
7094          if (layoutRelativeClientCoords) {
7095            x2 = visualViewport.offsetLeft;
7096            y2 = visualViewport.offsetTop;
7097          }
7098        }
7099      }
7100      const windowScrollbarX = getWindowScrollBarX(html);
7101      if (windowScrollbarX <= 0) {
7102        const doc = html.ownerDocument;
7103        const body = doc.body;
7104        const bodyStyles = getComputedStyle(body);
7105        const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
7106        const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
7107        const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth;
7108        if (gutter <= SCROLLBAR_MAX) {
7109          width -= gutter;
7110        }
7111      }
7112      return {
7113        width,
7114        height,
7115        x: x2,
7116        y: y2
7117      };
7118    }
7119    function getInnerBoundingClientRect(element, strategy) {
7120      const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
7121      const top = clientRect.top + element.clientTop;
7122      const left = clientRect.left + element.clientLeft;
7123      const scale = getScale(element);
7124      const width = element.clientWidth * scale.x;
7125      const height = element.clientHeight * scale.y;
7126      const x2 = left * scale.x;
7127      const y2 = top * scale.y;
7128      return {
7129        width,
7130        height,
7131        x: x2,
7132        y: y2
7133      };
7134    }
7135    function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
7136      let rect;
7137      if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") {
7138        rect = getViewportRect(element, strategy, clippingAncestor);
7139      } else if (clippingAncestor === "document") {
7140        rect = getDocumentRect(getDocumentElement(element));
7141      } else if (isElement(clippingAncestor)) {
7142        rect = getInnerBoundingClientRect(clippingAncestor, strategy);
7143      } else {
7144        const visualOffsets = getVisualOffsets(element);
7145        rect = {
7146          x: clippingAncestor.x - visualOffsets.x,
7147          y: clippingAncestor.y - visualOffsets.y,
7148          width: clippingAncestor.width,
7149          height: clippingAncestor.height
7150        };
7151      }
7152      return rectToClientRect(rect);
7153    }
7154    function getClippingElementAncestors(element, cache) {
7155      const cachedResult = cache.get(element);
7156      if (cachedResult) {
7157        return cachedResult;
7158      }
7159      let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
7160      let lastKeptComputedStyle = null;
7161      const elementIsFixed = getComputedStyle2(element).position === "fixed";
7162      let currentNode = elementIsFixed ? getParentNode(element) : element;
7163      while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
7164        const computedStyle = getComputedStyle2(currentNode);
7165        const currentNodeIsContaining = isContainingBlock(currentNode);
7166        const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : "";
7167        const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static");
7168        if (shouldDropCurrentNode) {
7169          result = result.filter((ancestor) => ancestor !== currentNode);
7170        } else {
7171          lastKeptComputedStyle = computedStyle;
7172        }
7173        currentNode = getParentNode(currentNode);
7174      }
7175      cache.set(element, result);
7176      return result;
7177    }
7178    function getClippingRect(_ref) {
7179      let {
7180        element,
7181        boundary,
7182        rootBoundary,
7183        strategy
7184      } = _ref;
7185      const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
7186      const clippingAncestors = [...elementClippingAncestors, rootBoundary];
7187      const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
7188      let top = firstRect.top;
7189      let right = firstRect.right;
7190      let bottom = firstRect.bottom;
7191      let left = firstRect.left;
7192      for (let i2 = 1; i2 < clippingAncestors.length; i2++) {
7193        const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i2], strategy);
7194        top = max(rect.top, top);
7195        right = min(rect.right, right);
7196        bottom = min(rect.bottom, bottom);
7197        left = max(rect.left, left);
7198      }
7199      return {
7200        width: right - left,
7201        height: bottom - top,
7202        x: left,
7203        y: top
7204      };
7205    }
7206    function getDimensions(element) {
7207      const {
7208        width,
7209        height
7210      } = getCssDimensions(element);
7211      return {
7212        width,
7213        height
7214      };
7215    }
7216    function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
7217      const isOffsetParentAnElement = isHTMLElement(offsetParent);
7218      const documentElement = getDocumentElement(offsetParent);
7219      const isFixed = strategy === "fixed";
7220      const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
7221      let scroll = {
7222        scrollLeft: 0,
7223        scrollTop: 0
7224      };
7225      const offsets = createCoords(0);
7226      if (isOffsetParentAnElement || !isFixed) {
7227        if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
7228          scroll = getNodeScroll(offsetParent);
7229        }
7230        if (isOffsetParentAnElement) {
7231          const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
7232          offsets.x = offsetRect.x + offsetParent.clientLeft;
7233          offsets.y = offsetRect.y + offsetParent.clientTop;
7234        }
7235      }
7236      if (!isOffsetParentAnElement && documentElement) {
7237        offsets.x = getWindowScrollBarX(documentElement);
7238      }
7239      const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
7240      const x2 = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
7241      const y2 = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
7242      return {
7243        x: x2,
7244        y: y2,
7245        width: rect.width,
7246        height: rect.height
7247      };
7248    }
7249    function isStaticPositioned(element) {
7250      return getComputedStyle2(element).position === "static";
7251    }
7252    function getTrueOffsetParent(element, polyfill) {
7253      if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
7254        return null;
7255      }
7256      if (polyfill) {
7257        return polyfill(element);
7258      }
7259      let rawOffsetParent = element.offsetParent;
7260      if (getDocumentElement(element) === rawOffsetParent) {
7261        rawOffsetParent = rawOffsetParent.ownerDocument.body;
7262      }
7263      return rawOffsetParent;
7264    }
7265    function getOffsetParent(element, polyfill) {
7266      const win = getWindow(element);
7267      if (isTopLayer(element)) {
7268        return win;
7269      }
7270      if (!isHTMLElement(element)) {
7271        let svgOffsetParent = getParentNode(element);
7272        while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
7273          if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
7274            return svgOffsetParent;
7275          }
7276          svgOffsetParent = getParentNode(svgOffsetParent);
7277        }
7278        return win;
7279      }
7280      let offsetParent = getTrueOffsetParent(element, polyfill);
7281      while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
7282        offsetParent = getTrueOffsetParent(offsetParent, polyfill);
7283      }
7284      if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
7285        return win;
7286      }
7287      return offsetParent || getContainingBlock(element) || win;
7288    }
7289    var getElementRects = async function(data) {
7290      const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
7291      const getDimensionsFn = this.getDimensions;
7292      const floatingDimensions = await getDimensionsFn(data.floating);
7293      return {
7294        reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
7295        floating: {
7296          x: 0,
7297          y: 0,
7298          width: floatingDimensions.width,
7299          height: floatingDimensions.height
7300        }
7301      };
7302    };
7303    function isRTL(element) {
7304      return getComputedStyle2(element).direction === "rtl";
7305    }
7306    var platform2 = {
7307      convertOffsetParentRelativeRectToViewportRelativeRect,
7308      getDocumentElement,
7309      getClippingRect,
7310      getOffsetParent,
7311      getElementRects,
7312      getClientRects,
7313      getDimensions,
7314      getScale,
7315      isElement,
7316      isRTL
7317    };
7318    function rectsAreEqual(a2, b2) {
7319      return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height;
7320    }
7321    function observeMove(element, onMove, ancestorResize) {
7322      let io = null;
7323      let timeoutId;
7324      const root = getDocumentElement(element);
7325      function cleanup() {
7326        var _io;
7327        clearTimeout(timeoutId);
7328        (_io = io) == null || _io.disconnect();
7329        io = null;
7330      }
7331      function refresh(skip, threshold) {
7332        if (skip === void 0) {
7333          skip = false;
7334        }
7335        if (threshold === void 0) {
7336          threshold = 1;
7337        }
7338        cleanup();
7339        const elementRectForRootMargin = element.getBoundingClientRect();
7340        const {
7341          left,
7342          top,
7343          width,
7344          height
7345        } = elementRectForRootMargin;
7346        if (!skip) {
7347          onMove();
7348        }
7349        if (!width || !height) {
7350          return;
7351        }
7352        const insetTop = floor(top);
7353        const insetRight = floor(root.clientWidth - (left + width));
7354        const insetBottom = floor(root.clientHeight - (top + height));
7355        const insetLeft = floor(left);
7356        const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
7357        const options = {
7358          rootMargin,
7359          threshold: max(0, min(1, threshold)) || 1
7360        };
7361        let isFirstUpdate = true;
7362        function handleObserve(entries) {
7363          const ratio = entries[0].intersectionRatio;
7364          if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
7365            return refresh();
7366          }
7367          if (ratio !== threshold) {
7368            if (!isFirstUpdate) {
7369              return refresh();
7370            }
7371            if (!ratio) {
7372              timeoutId = setTimeout(() => {
7373                refresh(false, 1e-7);
7374              }, 1e3);
7375            } else {
7376              refresh(false, ratio);
7377            }
7378          }
7379          isFirstUpdate = false;
7380        }
7381        try {
7382          io = new IntersectionObserver(handleObserve, {
7383            ...options,
7384            // Handle <iframe>s
7385            root: root.ownerDocument
7386          });
7387        } catch (_e) {
7388          io = new IntersectionObserver(handleObserve, options);
7389        }
7390        io.observe(element);
7391      }
7392      const win = getWindow(element);
7393      const handleResize = () => refresh(ancestorResize);
7394      win.addEventListener("resize", handleResize);
7395      refresh(true);
7396      return () => {
7397        win.removeEventListener("resize", handleResize);
7398        cleanup();
7399      };
7400    }
7401    function autoUpdate(reference, floating, update2, options) {
7402      if (options === void 0) {
7403        options = {};
7404      }
7405      const {
7406        ancestorScroll = true,
7407        ancestorResize = true,
7408        elementResize = typeof ResizeObserver === "function",
7409        layoutShift = typeof IntersectionObserver === "function",
7410        animationFrame = false
7411      } = options;
7412      const referenceEl = unwrapElement(reference);
7413      const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];
7414      ancestors.forEach((ancestor) => {
7415        ancestorScroll && ancestor.addEventListener("scroll", update2);
7416        ancestorResize && ancestor.addEventListener("resize", update2);
7417      });
7418      const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null;
7419      let reobserveFrame = -1;
7420      let resizeObserver = null;
7421      if (elementResize) {
7422        resizeObserver = new ResizeObserver((_ref) => {
7423          let [firstEntry] = _ref;
7424          if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
7425            resizeObserver.unobserve(floating);
7426            cancelAnimationFrame(reobserveFrame);
7427            reobserveFrame = requestAnimationFrame(() => {
7428              var _resizeObserver;
7429              (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
7430            });
7431          }
7432          update2();
7433        });
7434        if (referenceEl && !animationFrame) {
7435          resizeObserver.observe(referenceEl);
7436        }
7437        if (floating) {
7438          resizeObserver.observe(floating);
7439        }
7440      }
7441      let frameId;
7442      let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
7443      if (animationFrame) {
7444        frameLoop();
7445      }
7446      function frameLoop() {
7447        const nextRefRect = getBoundingClientRect(reference);
7448        if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
7449          update2();
7450        }
7451        prevRefRect = nextRefRect;
7452        frameId = requestAnimationFrame(frameLoop);
7453      }
7454      update2();
7455      return () => {
7456        var _resizeObserver2;
7457        ancestors.forEach((ancestor) => {
7458          ancestorScroll && ancestor.removeEventListener("scroll", update2);
7459          ancestorResize && ancestor.removeEventListener("resize", update2);
7460        });
7461        cleanupIo == null || cleanupIo();
7462        (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
7463        resizeObserver = null;
7464        if (animationFrame) {
7465          cancelAnimationFrame(frameId);
7466        }
7467      };
7468    }
7469    var offset2 = offset;
7470    var shift2 = shift;
7471    var flip2 = flip;
7472    var size2 = size;
7473    var limitShift2 = limitShift;
7474    var computePosition2 = (reference, floating, options) => {
7475      const cache = /* @__PURE__ */ new Map();
7476      const mergedOptions = options != null ? options : {};
7477      const platformWithCache = {
7478        ...platform2,
7479        ...mergedOptions.platform,
7480        _c: cache
7481      };
7482      return computePosition(reference, floating, {
7483        ...mergedOptions,
7484        platform: platformWithCache
7485      });
7486    };
7487  
7488    // node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
7489    var React26 = __toESM(require_react(), 1);
7490    var import_react2 = __toESM(require_react(), 1);
7491    var ReactDOM3 = __toESM(require_react_dom(), 1);
7492    var isClient = typeof document !== "undefined";
7493    var noop3 = function noop4() {
7494    };
7495    var index = isClient ? import_react2.useLayoutEffect : noop3;
7496    function deepEqual(a2, b2) {
7497      if (a2 === b2) {
7498        return true;
7499      }
7500      if (typeof a2 !== typeof b2) {
7501        return false;
7502      }
7503      if (typeof a2 === "function" && a2.toString() === b2.toString()) {
7504        return true;
7505      }
7506      let length;
7507      let i2;
7508      let keys;
7509      if (a2 && b2 && typeof a2 === "object") {
7510        if (Array.isArray(a2)) {
7511          length = a2.length;
7512          if (length !== b2.length) return false;
7513          for (i2 = length; i2-- !== 0; ) {
7514            if (!deepEqual(a2[i2], b2[i2])) {
7515              return false;
7516            }
7517          }
7518          return true;
7519        }
7520        keys = Object.keys(a2);
7521        length = keys.length;
7522        if (length !== Object.keys(b2).length) {
7523          return false;
7524        }
7525        for (i2 = length; i2-- !== 0; ) {
7526          if (!{}.hasOwnProperty.call(b2, keys[i2])) {
7527            return false;
7528          }
7529        }
7530        for (i2 = length; i2-- !== 0; ) {
7531          const key = keys[i2];
7532          if (key === "_owner" && a2.$$typeof) {
7533            continue;
7534          }
7535          if (!deepEqual(a2[key], b2[key])) {
7536            return false;
7537          }
7538        }
7539        return true;
7540      }
7541      return a2 !== a2 && b2 !== b2;
7542    }
7543    function getDPR(element) {
7544      if (typeof window === "undefined") {
7545        return 1;
7546      }
7547      const win = element.ownerDocument.defaultView || window;
7548      return win.devicePixelRatio || 1;
7549    }
7550    function roundByDPR(element, value) {
7551      const dpr = getDPR(element);
7552      return Math.round(value * dpr) / dpr;
7553    }
7554    function useLatestRef(value) {
7555      const ref = React26.useRef(value);
7556      index(() => {
7557        ref.current = value;
7558      });
7559      return ref;
7560    }
7561    function useFloating(options) {
7562      if (options === void 0) {
7563        options = {};
7564      }
7565      const {
7566        placement = "bottom",
7567        strategy = "absolute",
7568        middleware = [],
7569        platform: platform3,
7570        elements: {
7571          reference: externalReference,
7572          floating: externalFloating
7573        } = {},
7574        transform = true,
7575        whileElementsMounted,
7576        open
7577      } = options;
7578      const [data, setData] = React26.useState({
7579        x: 0,
7580        y: 0,
7581        strategy,
7582        placement,
7583        middlewareData: {},
7584        isPositioned: false
7585      });
7586      const [latestMiddleware, setLatestMiddleware] = React26.useState(middleware);
7587      if (!deepEqual(latestMiddleware, middleware)) {
7588        setLatestMiddleware(middleware);
7589      }
7590      const [_reference, _setReference] = React26.useState(null);
7591      const [_floating, _setFloating] = React26.useState(null);
7592      const setReference = React26.useCallback((node) => {
7593        if (node !== referenceRef.current) {
7594          referenceRef.current = node;
7595          _setReference(node);
7596        }
7597      }, []);
7598      const setFloating = React26.useCallback((node) => {
7599        if (node !== floatingRef.current) {
7600          floatingRef.current = node;
7601          _setFloating(node);
7602        }
7603      }, []);
7604      const referenceEl = externalReference || _reference;
7605      const floatingEl = externalFloating || _floating;
7606      const referenceRef = React26.useRef(null);
7607      const floatingRef = React26.useRef(null);
7608      const dataRef = React26.useRef(data);
7609      const hasWhileElementsMounted = whileElementsMounted != null;
7610      const whileElementsMountedRef = useLatestRef(whileElementsMounted);
7611      const platformRef = useLatestRef(platform3);
7612      const openRef = useLatestRef(open);
7613      const update2 = React26.useCallback(() => {
7614        if (!referenceRef.current || !floatingRef.current) {
7615          return;
7616        }
7617        const config = {
7618          placement,
7619          strategy,
7620          middleware: latestMiddleware
7621        };
7622        if (platformRef.current) {
7623          config.platform = platformRef.current;
7624        }
7625        computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => {
7626          const fullData = {
7627            ...data2,
7628            // The floating element's position may be recomputed while it's closed
7629            // but still mounted (such as when transitioning out). To ensure
7630            // `isPositioned` will be `false` initially on the next open, avoid
7631            // setting it to `true` when `open === false` (must be specified).
7632            isPositioned: openRef.current !== false
7633          };
7634          if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {
7635            dataRef.current = fullData;
7636            ReactDOM3.flushSync(() => {
7637              setData(fullData);
7638            });
7639          }
7640        });
7641      }, [latestMiddleware, placement, strategy, platformRef, openRef]);
7642      index(() => {
7643        if (open === false && dataRef.current.isPositioned) {
7644          dataRef.current.isPositioned = false;
7645          setData((data2) => ({
7646            ...data2,
7647            isPositioned: false
7648          }));
7649        }
7650      }, [open]);
7651      const isMountedRef = React26.useRef(false);
7652      index(() => {
7653        isMountedRef.current = true;
7654        return () => {
7655          isMountedRef.current = false;
7656        };
7657      }, []);
7658      index(() => {
7659        if (referenceEl) referenceRef.current = referenceEl;
7660        if (floatingEl) floatingRef.current = floatingEl;
7661        if (referenceEl && floatingEl) {
7662          if (whileElementsMountedRef.current) {
7663            return whileElementsMountedRef.current(referenceEl, floatingEl, update2);
7664          }
7665          update2();
7666        }
7667      }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]);
7668      const refs = React26.useMemo(() => ({
7669        reference: referenceRef,
7670        floating: floatingRef,
7671        setReference,
7672        setFloating
7673      }), [setReference, setFloating]);
7674      const elements = React26.useMemo(() => ({
7675        reference: referenceEl,
7676        floating: floatingEl
7677      }), [referenceEl, floatingEl]);
7678      const floatingStyles = React26.useMemo(() => {
7679        const initialStyles = {
7680          position: strategy,
7681          left: 0,
7682          top: 0
7683        };
7684        if (!elements.floating) {
7685          return initialStyles;
7686        }
7687        const x2 = roundByDPR(elements.floating, data.x);
7688        const y2 = roundByDPR(elements.floating, data.y);
7689        if (transform) {
7690          return {
7691            ...initialStyles,
7692            transform: "translate(" + x2 + "px, " + y2 + "px)",
7693            ...getDPR(elements.floating) >= 1.5 && {
7694              willChange: "transform"
7695            }
7696          };
7697        }
7698        return {
7699          position: strategy,
7700          left: x2,
7701          top: y2
7702        };
7703      }, [strategy, transform, elements.floating, data.x, data.y]);
7704      return React26.useMemo(() => ({
7705        ...data,
7706        update: update2,
7707        refs,
7708        elements,
7709        floatingStyles
7710      }), [data, update2, refs, elements, floatingStyles]);
7711    }
7712    var offset3 = (options, deps) => {
7713      const result = offset2(options);
7714      return {
7715        name: result.name,
7716        fn: result.fn,
7717        options: [options, deps]
7718      };
7719    };
7720    var shift3 = (options, deps) => {
7721      const result = shift2(options);
7722      return {
7723        name: result.name,
7724        fn: result.fn,
7725        options: [options, deps]
7726      };
7727    };
7728    var limitShift3 = (options, deps) => {
7729      const result = limitShift2(options);
7730      return {
7731        fn: result.fn,
7732        options: [options, deps]
7733      };
7734    };
7735    var flip3 = (options, deps) => {
7736      const result = flip2(options);
7737      return {
7738        name: result.name,
7739        fn: result.fn,
7740        options: [options, deps]
7741      };
7742    };
7743    var size3 = (options, deps) => {
7744      const result = size2(options);
7745      return {
7746        name: result.name,
7747        fn: result.fn,
7748        options: [options, deps]
7749      };
7750    };
7751  
7752    // node_modules/@base-ui/react/utils/popups/popupHandle.mjs
7753    var BasePopupHandle = class {
7754      /**
7755       * Stores of every root currently using this handle, in attach order. A handle is meant to be used
7756       * by a single mounted root, but roots can transiently overlap (e.g. during an animated route
7757       * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of
7758       * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first.
7759       */
7760      attachedStores = [];
7761      /**
7762       * Store of the root that currently controls the handle: the most recently attached one still
7763       * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`.
7764       */
7765      attachedStoreValue = null;
7766      /**
7767       * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer.
7768       */
7769      storeListeners = /* @__PURE__ */ new Set();
7770      /**
7771       * Creates a handle backed by the store used while no root is attached.
7772       *
7773       * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached,
7774       * so they can render and register without a mounted root. Triggers register into whichever store
7775       * `store` currently resolves to, so while detached they live in this store's trigger map and
7776       * migrate themselves to the root's store (and back) as it attaches/detaches.
7777       * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces
7778       * `MenuHandle.open()` in warning text.
7779       * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is
7780       * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to,
7781       * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning.
7782       */
7783      constructor(fallbackStore, componentName, throwOnMissingTrigger = true) {
7784        this.fallbackStore = fallbackStore;
7785        this.componentName = componentName;
7786        this.throwOnMissingTrigger = throwOnMissingTrigger;
7787      }
7788      get attachedStore() {
7789        return this.attachedStoreValue;
7790      }
7791      /**
7792       * Store that detached triggers read from: the attached root's store, or an inert fallback store
7793       * used while no root is attached.
7794       * @internal
7795       */
7796      get store() {
7797        return this.attachedStoreValue ?? this.fallbackStore;
7798      }
7799      /**
7800       * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on
7801       * the handle during render because a handle can be shared by concurrent server-rendered requests.
7802       * @internal
7803       */
7804      get serverStore() {
7805        return this.fallbackStore;
7806      }
7807      /**
7808       * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind
7809       * when a root attaches or detaches. Returns a function that removes the listener.
7810       * @internal
7811       */
7812      subscribeStore(listener) {
7813        this.storeListeners.add(listener);
7814        return () => {
7815          this.storeListeners.delete(listener);
7816        };
7817      }
7818      /**
7819       * Points the handle at a root's store and notifies subscribers so detached triggers re-render and
7820       * re-register into it (their registration ref re-fires on the store-pointer change). Returns a
7821       * cleanup function that detaches the store again.
7822       * @internal
7823       */
7824      attachStore(newStore) {
7825        this.attachedStores.push(newStore);
7826        this.setActiveStore(newStore);
7827        if (true) {
7828          if (this.attachedStores.length > 1) {
7829            const dev = this;
7830            (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => {
7831              if (this.attachedStores.length > 1) {
7832                console.warn("Base UI: A handle is attached to more than one mounted root at the same time. The most recently mounted root takes over and the previous one stops being controlled by the handle. A handle should be used by a single root that stays mounted for the lifetime of the handle.");
7833              }
7834            });
7835          }
7836        }
7837        return () => {
7838          const index2 = this.attachedStores.lastIndexOf(newStore);
7839          if (index2 !== -1) {
7840            this.attachedStores.splice(index2, 1);
7841          }
7842          this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null);
7843        };
7844      }
7845      /**
7846       * Sets the store that currently controls the handle and notifies subscribers when it changes, so
7847       * detached triggers re-render and migrate their registration to the new store.
7848       */
7849      setActiveStore(store) {
7850        if (this.attachedStoreValue !== store) {
7851          this.attachedStoreValue = store;
7852          this.storeListeners.forEach((listener) => {
7853            listener();
7854          });
7855        }
7856      }
7857      /**
7858       * Opens the attached root's store and associates it with the trigger with the given id, or a
7859       * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public
7860       * `open()` method, which only narrows the parameter type.
7861       *
7862       * When a trigger id is given but no matching trigger is registered, anchored popups throw (see
7863       * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead.
7864       *
7865       * This method should only be called in an event handler or an effect (not during rendering).
7866       *
7867       * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open
7868       * without associating any trigger.
7869       */
7870      openByTrigger(triggerId) {
7871        const attachedStore = this.attachedStore;
7872        if (attachedStore === null) {
7873          if (true) {
7874            console.warn(`Base UI: $this.componentName}Handle.open() was called while no root using this handle is mounted. The call was ignored; mount a root with this handle before opening it imperatively.`);
7875          }
7876          return;
7877        }
7878        let triggerElement;
7879        if (triggerId) {
7880          for (let i2 = this.attachedStores.length - 1; i2 >= 0 && !triggerElement; i2 -= 1) {
7881            triggerElement = this.attachedStores[i2].context.triggerElements.getById(triggerId);
7882          }
7883          triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId);
7884        }
7885        if (triggerId && !triggerElement) {
7886          if (this.throwOnMissingTrigger) {
7887            throw new Error(true ? `Base UI: $this.componentName}Handle.open() was called with the trigger id "$triggerId}", but no matching trigger is registered with this handle. An anchored popup cannot open without a trigger to anchor to. Pass the id of a mounted $this.componentName}.Trigger that has this handle set on its "handle" prop.` : formatErrorMessage_default(99, this.componentName, triggerId, this.componentName));
7888          }
7889          if (true) {
7890            console.warn(`Base UI: $this.componentName}Handle.open: No trigger found with id "$triggerId}". The popup will open, but the trigger will not be associated with it.`);
7891          }
7892        }
7893        attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement));
7894      }
7895      /**
7896       * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning)
7897       * while no root is attached. Shared by every concrete handle's public `close()` method.
7898       *
7899       * This method should only be called in an event handler or an effect (not during rendering).
7900       */
7901      closePopup() {
7902        const attachedStore = this.attachedStore;
7903        if (attachedStore === null) {
7904          if (true) {
7905            console.warn(`Base UI: $this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`);
7906          }
7907          return;
7908        }
7909        attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction));
7910      }
7911    };
7912  
7913    // node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs
7914    var React31 = __toESM(require_react(), 1);
7915    var ReactDOM4 = __toESM(require_react_dom(), 1);
7916  
7917    // node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs
7918    var React30 = __toESM(require_react(), 1);
7919  
7920    // node_modules/@base-ui/utils/store/useStore.mjs
7921    var React28 = __toESM(require_react(), 1);
7922    var import_shim = __toESM(require_shim(), 1);
7923    var import_with_selector = __toESM(require_with_selector(), 1);
7924  
7925    // node_modules/@base-ui/utils/fastHooks.mjs
7926    var React27 = __toESM(require_react(), 1);
7927    var hooks = [];
7928    var currentInstance = void 0;
7929    function getInstance() {
7930      return currentInstance;
7931    }
7932    function register(hook) {
7933      hooks.push(hook);
7934    }
7935    function fastComponent(fn) {
7936      const FastComponent = (props, forwardedRef) => {
7937        const instance = useRefWithInit(createInstance).current;
7938        let result;
7939        try {
7940          currentInstance = instance;
7941          for (const hook of hooks) {
7942            hook.before(instance);
7943          }
7944          result = fn(props, forwardedRef);
7945          for (const hook of hooks) {
7946            hook.after(instance);
7947          }
7948          instance.didInitialize = true;
7949        } finally {
7950          currentInstance = void 0;
7951        }
7952        return result;
7953      };
7954      FastComponent.displayName = fn.displayName || fn.name;
7955      return FastComponent;
7956    }
7957    function fastComponentRef(fn) {
7958      return /* @__PURE__ */ React27.forwardRef(fastComponent(fn));
7959    }
7960    function createInstance() {
7961      return {
7962        didInitialize: false
7963      };
7964    }
7965  
7966    // node_modules/@base-ui/utils/store/useStore.mjs
7967    var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19);
7968    var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy;
7969    function useStore(store, selector2, a1, a2, a3) {
7970      return useStoreImplementation(store, selector2, a1, a2, a3);
7971    }
7972    function useStoreR19(store, selector2, a1, a2, a3) {
7973      const getSelection = React28.useCallback(() => selector2(store.getSnapshot(), a1, a2, a3), [store, selector2, a1, a2, a3]);
7974      return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection);
7975    }
7976    register({
7977      before(instance) {
7978        instance.syncIndex = 0;
7979        if (!instance.didInitialize) {
7980          instance.syncTick = 1;
7981          instance.syncHooks = [];
7982          instance.didChangeStore = true;
7983          instance.getSnapshot = () => {
7984            let didChange2 = false;
7985            for (let i2 = 0; i2 < instance.syncHooks.length; i2 += 1) {
7986              const hook = instance.syncHooks[i2];
7987              const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3);
7988              if (!Object.is(hook.value, value)) {
7989                didChange2 = true;
7990                hook.value = value;
7991              }
7992            }
7993            if (didChange2) {
7994              instance.syncTick += 1;
7995            }
7996            return instance.syncTick;
7997          };
7998        }
7999      },
8000      after(instance) {
8001        if (instance.syncHooks.length > 0) {
8002          if (instance.didChangeStore) {
8003            instance.didChangeStore = false;
8004            instance.subscribe = (onStoreChange) => {
8005              const stores = /* @__PURE__ */ new Set();
8006              for (const hook of instance.syncHooks) {
8007                stores.add(hook.store);
8008              }
8009              const unsubscribes = [];
8010              for (const store of stores) {
8011                unsubscribes.push(store.subscribe(onStoreChange));
8012              }
8013              return () => {
8014                for (const unsubscribe of unsubscribes) {
8015                  unsubscribe();
8016                }
8017              };
8018            };
8019          }
8020          (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot);
8021        }
8022      }
8023    });
8024    function useStoreFast(store, selector2, a1, a2, a3) {
8025      const instance = getInstance();
8026      if (!instance) {
8027        return useStoreR19(store, selector2, a1, a2, a3);
8028      }
8029      const index2 = instance.syncIndex;
8030      instance.syncIndex += 1;
8031      let hook;
8032      if (!instance.didInitialize) {
8033        hook = {
8034          store,
8035          selector: selector2,
8036          a1,
8037          a2,
8038          a3,
8039          value: selector2(store.getSnapshot(), a1, a2, a3)
8040        };
8041        instance.syncHooks.push(hook);
8042      } else {
8043        hook = instance.syncHooks[index2];
8044        if (hook.store !== store || hook.selector !== selector2 || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) {
8045          if (hook.store !== store) {
8046            instance.didChangeStore = true;
8047          }
8048          hook.store = store;
8049          hook.selector = selector2;
8050          hook.a1 = a1;
8051          hook.a2 = a2;
8052          hook.a3 = a3;
8053          hook.value = selector2(store.getSnapshot(), a1, a2, a3);
8054        }
8055      }
8056      return hook.value;
8057    }
8058    function useStoreLegacy(store, selector2, a1, a2, a3) {
8059      return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector2(state, a1, a2, a3));
8060    }
8061  
8062    // node_modules/@base-ui/utils/store/Store.mjs
8063    var Store = class {
8064      /**
8065       * The current state of the store.
8066       * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}.
8067       * To subscribe to state changes, use the {@link useState} method. The value returned by {@link useState} is updated after the component renders (similarly to React's useState).
8068       * The values can be used directly (to avoid subscribing to the store) in effects or event handlers.
8069       *
8070       * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification.
8071       */
8072      // Internal state to handle recursive `setState()` calls
8073      constructor(state) {
8074        this.state = state;
8075        this.listeners = /* @__PURE__ */ new Set();
8076        this.updateTick = 0;
8077      }
8078      /**
8079       * Registers a listener that will be called whenever the store's state changes.
8080       *
8081       * @param fn The listener function to be called on state changes.
8082       * @returns A function to unsubscribe the listener.
8083       */
8084      subscribe = (fn) => {
8085        this.listeners.add(fn);
8086        return () => {
8087          this.listeners.delete(fn);
8088        };
8089      };
8090      /**
8091       * Returns the current state of the store.
8092       */
8093      getSnapshot = () => {
8094        return this.state;
8095      };
8096      /**
8097       * Updates the entire store's state and notifies all registered listeners.
8098       *
8099       * @param newState The new state to set for the store.
8100       */
8101      setState(newState) {
8102        if (this.state === newState) {
8103          return;
8104        }
8105        this.state = newState;
8106        this.updateTick += 1;
8107        const currentTick = this.updateTick;
8108        for (const listener of this.listeners) {
8109          if (currentTick !== this.updateTick) {
8110            return;
8111          }
8112          listener(newState);
8113        }
8114      }
8115      /**
8116       * Merges the provided changes into the current state and notifies listeners if there are changes.
8117       *
8118       * @param changes An object containing the changes to apply to the current state.
8119       */
8120      update(changes) {
8121        for (const key in changes) {
8122          if (!Object.is(this.state[key], changes[key])) {
8123            this.setState({
8124              ...this.state,
8125              ...changes
8126            });
8127            return;
8128          }
8129        }
8130      }
8131      /**
8132       * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed.
8133       *
8134       * @param key The key in the store's state to update.
8135       * @param value The new value to set for the specified key.
8136       */
8137      set(key, value) {
8138        if (!Object.is(this.state[key], value)) {
8139          this.setState({
8140            ...this.state,
8141            [key]: value
8142          });
8143        }
8144      }
8145      /**
8146       * Gives the state a new reference and updates all registered listeners.
8147       */
8148      notifyAll() {
8149        const newState = {
8150          ...this.state
8151        };
8152        this.setState(newState);
8153      }
8154      use(selector2, a1, a2, a3) {
8155        return useStore(this, selector2, a1, a2, a3);
8156      }
8157    };
8158  
8159    // node_modules/@base-ui/utils/store/ReactStore.mjs
8160    var React29 = __toESM(require_react(), 1);
8161    var ReactStore = class extends Store {
8162      /**
8163       * Creates a new ReactStore instance.
8164       *
8165       * @param state Initial state of the store.
8166       * @param context Non-reactive context values.
8167       * @param selectors Optional selectors for use with `useState`.
8168       */
8169      constructor(state, context = {}, selectors4) {
8170        super(state);
8171        this.context = context;
8172        this.selectors = selectors4;
8173      }
8174      /**
8175       * Non-reactive values such as refs, callbacks, etc.
8176       */
8177      /**
8178       * Synchronizes a single external value into the store.
8179       *
8180       * Note that the while the value in `state` is updated immediately, the value returned
8181       * by `useState` is updated before the next render (similarly to React's `useState`).
8182       */
8183      useSyncedValue(key, value) {
8184        React29.useDebugValue(key);
8185        const store = this;
8186        useIsoLayoutEffect(() => {
8187          if (store.state[key] !== value) {
8188            store.set(key, value);
8189          }
8190        }, [store, key, value]);
8191      }
8192      /**
8193       * Synchronizes a single external value into the store and
8194       * cleans it up (sets to `undefined`) on unmount.
8195       *
8196       * Note that the while the value in `state` is updated immediately, the value returned
8197       * by `useState` is updated before the next render (similarly to React's `useState`).
8198       */
8199      useSyncedValueWithCleanup(key, value) {
8200        const store = this;
8201        useIsoLayoutEffect(() => {
8202          if (store.state[key] !== value) {
8203            store.set(key, value);
8204          }
8205          return () => {
8206            store.set(key, void 0);
8207          };
8208        }, [store, key, value]);
8209      }
8210      /**
8211       * Synchronizes multiple external values into the store.
8212       *
8213       * Note that the while the values in `state` are updated immediately, the values returned
8214       * by `useState` are updated before the next render (similarly to React's `useState`).
8215       */
8216      useSyncedValues(statePart) {
8217        const store = this;
8218        if (true) {
8219          React29.useDebugValue(statePart, (p2) => Object.keys(p2));
8220          const keys = React29.useRef(Object.keys(statePart)).current;
8221          const nextKeys = Object.keys(statePart);
8222          if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) {
8223            console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable.");
8224          }
8225        }
8226        const dependencies = Object.values(statePart);
8227        useIsoLayoutEffect(() => {
8228          store.update(statePart);
8229        }, [store, ...dependencies]);
8230      }
8231      /**
8232       * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled`
8233       * is non-undefined, the store's state at `key` is updated to match `controlled`.
8234       */
8235      useControlledProp(key, controlled) {
8236        React29.useDebugValue(key);
8237        const store = this;
8238        const isControlled = controlled !== void 0;
8239        useIsoLayoutEffect(() => {
8240          if (isControlled && !Object.is(store.state[key], controlled)) {
8241            store.setState({
8242              ...store.state,
8243              [key]: controlled
8244            });
8245          }
8246        }, [store, key, controlled, isControlled]);
8247        if (true) {
8248          const cache = this.controlledValues ??= /* @__PURE__ */ new Map();
8249          if (!cache.has(key)) {
8250            cache.set(key, isControlled);
8251          }
8252          const previouslyControlled = cache.get(key);
8253          if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) {
8254            console.error(`A component is changing the $isControlled ? "" : "un"}controlled state of $key.toString()} to be $isControlled ? "un" : ""}controlled. Elements should not switch from uncontrolled to controlled (or vice versa).`);
8255          }
8256        }
8257      }
8258      /** Gets the current value from the store using a selector with the provided key.
8259       *
8260       * @param key Key of the selector to use.
8261       */
8262      select(key, a1, a2, a3) {
8263        const selector2 = this.selectors[key];
8264        return selector2(this.state, a1, a2, a3);
8265      }
8266      /**
8267       * Returns a value from the store's state using a selector function.
8268       * Used to subscribe to specific parts of the state.
8269       * This methods causes a rerender whenever the selected state changes.
8270       *
8271       * @param key Key of the selector to use.
8272       */
8273      useState(key, a1, a2, a3) {
8274        React29.useDebugValue(key);
8275        return useStore(this, this.selectors[key], a1, a2, a3);
8276      }
8277      /**
8278       * Wraps a function with `useStableCallback` to ensure it has a stable reference
8279       * and assigns it to the context.
8280       *
8281       * @param key Key of the event callback. Must be a function in the context.
8282       * @param fn Function to assign.
8283       */
8284      useContextCallback(key, fn) {
8285        React29.useDebugValue(key);
8286        const stableFunction = useStableCallback(fn ?? NOOP);
8287        this.context[key] = stableFunction;
8288      }
8289      /**
8290       * Returns a stable setter function for a specific key in the store's state.
8291       * It's commonly used to pass as a ref callback to React elements.
8292       *
8293       * @param key Key of the state to set.
8294       */
8295      useStateSetter(key) {
8296        const ref = React29.useRef(void 0);
8297        if (ref.current === void 0) {
8298          ref.current = (value) => {
8299            this.set(key, value);
8300          };
8301        }
8302        return ref.current;
8303      }
8304      /**
8305       * Observes changes derived from the store's selectors and calls the listener when the selected value changes.
8306       *
8307       * @param key Key of the selector to observe.
8308       * @param listener Listener function called when the selector result changes.
8309       */
8310      observe(selector2, listener) {
8311        let selectFn;
8312        if (typeof selector2 === "function") {
8313          selectFn = selector2;
8314        } else {
8315          selectFn = this.selectors[selector2];
8316        }
8317        let prevValue = selectFn(this.state);
8318        listener(prevValue, prevValue, this);
8319        return this.subscribe((nextState) => {
8320          const nextValue = selectFn(nextState);
8321          if (!Object.is(prevValue, nextValue)) {
8322            const oldValue = prevValue;
8323            prevValue = nextValue;
8324            listener(nextValue, oldValue, this);
8325          }
8326        });
8327      }
8328    };
8329  
8330    // node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs
8331    var selectors = {
8332      open: (state) => state.open,
8333      transitionStatus: (state) => state.transitionStatus,
8334      domReferenceElement: (state) => state.domReferenceElement,
8335      referenceElement: (state) => state.positionReference ?? state.referenceElement,
8336      floatingElement: (state) => state.floatingElement,
8337      floatingId: (state) => state.floatingId
8338    };
8339    var FloatingRootStore = class extends ReactStore {
8340      constructor(options) {
8341        const {
8342          syncOnly,
8343          nested,
8344          onOpenChange,
8345          triggerElements,
8346          ...initialState
8347        } = options;
8348        super({
8349          ...initialState,
8350          positionReference: initialState.referenceElement,
8351          domReferenceElement: initialState.referenceElement
8352        }, {
8353          onOpenChange,
8354          dataRef: {
8355            current: {}
8356          },
8357          events: createEventEmitter(),
8358          nested,
8359          triggerElements
8360        }, selectors);
8361        this.syncOnly = syncOnly;
8362      }
8363      /**
8364       * Syncs the event used by hover logic to distinguish hover-open from click-like interaction.
8365       */
8366      syncOpenEvent = (newOpen, event) => {
8367        if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing
8368        // click events to upgrade a hover-open.
8369        event != null && isClickLikeEvent(event)) {
8370          this.context.dataRef.current.openEvent = newOpen ? event : void 0;
8371        }
8372      };
8373      /**
8374       * Runs the root-owned side effects for an open state change.
8375       */
8376      dispatchOpenChange = (newOpen, eventDetails) => {
8377        this.syncOpenEvent(newOpen, eventDetails.event);
8378        const details = {
8379          open: newOpen,
8380          reason: eventDetails.reason,
8381          nativeEvent: eventDetails.event,
8382          nested: this.context.nested,
8383          triggerElement: eventDetails.trigger
8384        };
8385        this.context.events.emit("openchange", details);
8386      };
8387      /**
8388       * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments.
8389       *
8390       * @param newOpen The new open state.
8391       * @param eventDetails Details about the event that triggered the open state change.
8392       */
8393      setOpen = (newOpen, eventDetails) => {
8394        if (this.syncOnly) {
8395          this.context.onOpenChange?.(newOpen, eventDetails);
8396          return;
8397        }
8398        this.dispatchOpenChange(newOpen, eventDetails);
8399        this.context.onOpenChange?.(newOpen, eventDetails);
8400      };
8401    };
8402  
8403    // node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs
8404    function useSyncedFloatingRootContext(options) {
8405      const {
8406        popupStore,
8407        treatPopupAsFloatingElement = false,
8408        floatingRootContext: floatingRootContextProp,
8409        floatingId,
8410        nested,
8411        onOpenChange
8412      } = options;
8413      const open = popupStore.useState("open");
8414      const referenceElement = popupStore.useState("activeTriggerElement");
8415      const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement");
8416      const triggerElements = popupStore.context.triggerElements;
8417      const handleOpenChange = onOpenChange;
8418      const internalStoreRef = React30.useRef(null);
8419      if (floatingRootContextProp === void 0 && internalStoreRef.current === null) {
8420        internalStoreRef.current = new FloatingRootStore({
8421          open,
8422          transitionStatus: void 0,
8423          referenceElement,
8424          floatingElement,
8425          triggerElements,
8426          onOpenChange: handleOpenChange,
8427          floatingId,
8428          syncOnly: true,
8429          nested
8430        });
8431      }
8432      const store = floatingRootContextProp ?? internalStoreRef.current;
8433      popupStore.useSyncedValue("floatingId", floatingId);
8434      useIsoLayoutEffect(() => {
8435        const valuesToSync = {
8436          open,
8437          floatingId,
8438          referenceElement,
8439          floatingElement
8440        };
8441        if (isElement(referenceElement)) {
8442          valuesToSync.domReferenceElement = referenceElement;
8443        }
8444        if (store.state.positionReference === store.state.referenceElement) {
8445          valuesToSync.positionReference = referenceElement;
8446        }
8447        store.update(valuesToSync);
8448      }, [open, floatingId, referenceElement, floatingElement, store]);
8449      store.context.onOpenChange = handleOpenChange;
8450      store.context.nested = nested;
8451      return store;
8452    }
8453  
8454    // node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs
8455    var FOCUSABLE_POPUP_PROPS = {
8456      tabIndex: -1,
8457      [FOCUSABLE_ATTRIBUTE]: ""
8458    };
8459    function usePopupRootStore(createStore2, treatPopupAsFloatingElement = false) {
8460      const floatingId = useId();
8461      const nested = useFloatingParentNodeId() != null;
8462      const store = useRefWithInit(() => createStore2(floatingId, nested)).current;
8463      useSyncedFloatingRootContext({
8464        popupStore: store,
8465        treatPopupAsFloatingElement,
8466        floatingRootContext: store.state.floatingRootContext,
8467        floatingId,
8468        nested,
8469        onOpenChange: store.setOpen
8470      });
8471      return store;
8472    }
8473    function PopupHandleAttachment({
8474      handle,
8475      store
8476    }) {
8477      useIsoLayoutEffect(() => {
8478        return handle.attachStore(store);
8479      }, [handle, store]);
8480      return null;
8481    }
8482    function useTriggerRegistration(id, store) {
8483      const registeredElementIdRef = React31.useRef(null);
8484      const registeredElementRef = React31.useRef(null);
8485      return React31.useCallback((element) => {
8486        if (id === void 0) {
8487          return;
8488        }
8489        let shouldSyncTriggerCount = false;
8490        if (registeredElementIdRef.current !== null) {
8491          const registeredId = registeredElementIdRef.current;
8492          const registeredElement = registeredElementRef.current;
8493          const currentElement = store.context.triggerElements.getById(registeredId);
8494          if (registeredElement && currentElement === registeredElement) {
8495            store.context.triggerElements.delete(registeredId);
8496            shouldSyncTriggerCount = true;
8497          }
8498          registeredElementIdRef.current = null;
8499          registeredElementRef.current = null;
8500        }
8501        if (element !== null) {
8502          registeredElementIdRef.current = id;
8503          registeredElementRef.current = element;
8504          store.context.triggerElements.add(id, element);
8505          shouldSyncTriggerCount = true;
8506        }
8507        if (shouldSyncTriggerCount) {
8508          const triggerCount = store.context.triggerElements.size;
8509          if (store.select("open") && store.state.triggerCount !== triggerCount) {
8510            store.set("triggerCount", triggerCount);
8511          }
8512        }
8513      }, [store, id]);
8514    }
8515    function setPopupOpenState(state, open, trigger, preventUnmountOnClose = false) {
8516      if (open) {
8517        state.preventUnmountingOnClose = false;
8518      } else if (preventUnmountOnClose) {
8519        state.preventUnmountingOnClose = true;
8520      }
8521      const triggerId = trigger?.id ?? null;
8522      if (triggerId || open) {
8523        state.activeTriggerId = triggerId;
8524        state.activeTriggerElement = trigger ?? null;
8525      }
8526    }
8527    function attachPreventUnmountOnClose(eventDetails) {
8528      let preventUnmountOnClose = false;
8529      eventDetails.preventUnmountOnClose = () => {
8530        preventUnmountOnClose = true;
8531      };
8532      return () => preventUnmountOnClose;
8533    }
8534    function applyPopupOpenChange(store, nextOpen, eventDetails, options = {}) {
8535      const reason = eventDetails.reason;
8536      const isHover = reason === reason_parts_exports.triggerHover;
8537      const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus;
8538      const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey);
8539      const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);
8540      store.context.onOpenChange?.(nextOpen, eventDetails);
8541      if (eventDetails.isCanceled) {
8542        return;
8543      }
8544      options.onBeforeDispatch?.();
8545      store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
8546      const changeState = () => {
8547        const updatedState = {
8548          ...options.extraState,
8549          open: nextOpen
8550        };
8551        if (isFocusOpen) {
8552          updatedState.instantType = "focus";
8553        } else if (isDismissClose) {
8554          updatedState.instantType = "dismiss";
8555        } else if (isHover) {
8556          updatedState.instantType = void 0;
8557        }
8558        setPopupOpenState(updatedState, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());
8559        store.update(updatedState);
8560      };
8561      if (isHover) {
8562        ReactDOM4.flushSync(changeState);
8563      } else {
8564        changeState();
8565      }
8566    }
8567    function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates) {
8568      const isMountedByThisTrigger = store.useState("isMountedByTrigger", triggerId);
8569      const baseRegisterTrigger = useTriggerRegistration(triggerId, store);
8570      const applyTriggerData = useStableCallback((element) => {
8571        const open = store.select("open");
8572        const activeTriggerId = store.select("activeTriggerId");
8573        if (activeTriggerId === triggerId) {
8574          store.update({
8575            activeTriggerElement: element,
8576            ...open ? stateUpdates : null
8577          });
8578          return;
8579        }
8580        if (activeTriggerId == null && open) {
8581          store.update({
8582            activeTriggerId: triggerId,
8583            activeTriggerElement: element,
8584            ...stateUpdates
8585          });
8586        }
8587      });
8588      const registerTrigger = React31.useCallback((element) => {
8589        baseRegisterTrigger(element);
8590        if (element) {
8591          applyTriggerData(element);
8592        }
8593      }, [baseRegisterTrigger, applyTriggerData]);
8594      useIsoLayoutEffect(() => {
8595        if (isMountedByThisTrigger) {
8596          store.update({
8597            activeTriggerElement: triggerElementRef.current,
8598            ...stateUpdates
8599          });
8600        }
8601      }, [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)]);
8602      return {
8603        registerTrigger,
8604        isMountedByThisTrigger
8605      };
8606    }
8607    function useImplicitActiveTrigger(store, options = {}) {
8608      const {
8609        closeOnActiveTriggerUnmount = false
8610      } = options;
8611      const resolvedActiveTriggerIdRef = React31.useRef(null);
8612      const open = store.useState("open");
8613      const reactiveTriggerCount = store.useState("triggerCount");
8614      const activeTriggerId = store.useState("activeTriggerId");
8615      const reactiveActiveTriggerElement = store.useState("activeTriggerElement");
8616      useIsoLayoutEffect(() => {
8617        if (!open) {
8618          resolvedActiveTriggerIdRef.current = null;
8619          if (store.state.triggerCount !== 0) {
8620            store.set("triggerCount", 0);
8621          }
8622          return;
8623        }
8624        const triggerCount = store.context.triggerElements.size;
8625        const stateUpdates = {};
8626        if (store.state.triggerCount !== triggerCount) {
8627          stateUpdates.triggerCount = triggerCount;
8628        }
8629        const currentActiveTriggerId = store.select("activeTriggerId");
8630        let lostActiveTriggerId = null;
8631        if (currentActiveTriggerId) {
8632          const activeTriggerElement = store.context.triggerElements.getById(currentActiveTriggerId);
8633          if (!activeTriggerElement) {
8634            for (const [triggerId, triggerElement] of store.context.triggerElements.entries()) {
8635              if (triggerElement === store.state.activeTriggerElement) {
8636                stateUpdates.activeTriggerId = triggerId;
8637                stateUpdates.activeTriggerElement = triggerElement;
8638                resolvedActiveTriggerIdRef.current = triggerId;
8639                break;
8640              }
8641            }
8642            if (stateUpdates.activeTriggerId === void 0) {
8643              if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) {
8644                lostActiveTriggerId = currentActiveTriggerId;
8645              } else {
8646                resolvedActiveTriggerIdRef.current = null;
8647              }
8648            }
8649          } else {
8650            resolvedActiveTriggerIdRef.current = currentActiveTriggerId;
8651            if (activeTriggerElement !== store.state.activeTriggerElement) {
8652              stateUpdates.activeTriggerElement = activeTriggerElement;
8653            }
8654          }
8655        } else {
8656          resolvedActiveTriggerIdRef.current = null;
8657        }
8658        if (!lostActiveTriggerId && !currentActiveTriggerId && triggerCount === 1) {
8659          const iteratorResult = store.context.triggerElements.entries().next();
8660          if (!iteratorResult.done) {
8661            const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value;
8662            stateUpdates.activeTriggerId = implicitTriggerId;
8663            stateUpdates.activeTriggerElement = implicitTriggerElement;
8664            resolvedActiveTriggerIdRef.current = implicitTriggerId;
8665          }
8666        }
8667        if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) {
8668          store.update(stateUpdates);
8669        }
8670        if (lostActiveTriggerId) {
8671          if (closeOnActiveTriggerUnmount) {
8672            queueMicrotask(() => {
8673              if (store.select("open") && store.select("activeTriggerId") === lostActiveTriggerId && !store.context.triggerElements.getById(lostActiveTriggerId)) {
8674                const eventDetails = createChangeEventDetails(reason_parts_exports.none);
8675                store.setOpen(false, eventDetails);
8676                if (!eventDetails.isCanceled) {
8677                  store.update({
8678                    activeTriggerId: null,
8679                    activeTriggerElement: null
8680                  });
8681                }
8682              }
8683            });
8684          }
8685        }
8686      }, [open, store, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]);
8687    }
8688    function useOpenStateTransitions(open, store, onUnmount) {
8689      const {
8690        mounted,
8691        setMounted,
8692        transitionStatus
8693      } = useTransitionStatus(open);
8694      const preventUnmountingOnClose = store.useState("preventUnmountingOnClose");
8695      const syncedPreventUnmountingOnClose = open ? false : preventUnmountingOnClose;
8696      store.useSyncedValues({
8697        mounted,
8698        transitionStatus,
8699        preventUnmountingOnClose: syncedPreventUnmountingOnClose
8700      });
8701      const forceUnmount = useStableCallback(() => {
8702        setMounted(false);
8703        store.update({
8704          activeTriggerId: null,
8705          activeTriggerElement: null,
8706          mounted: false,
8707          preventUnmountingOnClose: false
8708        });
8709        onUnmount?.();
8710        store.context.onOpenChangeComplete?.(false);
8711      });
8712      useOpenChangeComplete({
8713        enabled: mounted && !open && !syncedPreventUnmountingOnClose,
8714        open,
8715        ref: store.context.popupRef,
8716        onComplete() {
8717          if (!open) {
8718            forceUnmount();
8719          }
8720        }
8721      });
8722      return {
8723        forceUnmount,
8724        transitionStatus
8725      };
8726    }
8727    function usePopupInteractionProps(store, statePart) {
8728      store.useSyncedValues(statePart);
8729      useIsoLayoutEffect(() => () => {
8730        store.update({
8731          activeTriggerProps: EMPTY_OBJECT,
8732          inactiveTriggerProps: EMPTY_OBJECT,
8733          popupProps: EMPTY_OBJECT
8734        });
8735      }, [store]);
8736    }
8737  
8738    // node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs
8739    var devElementIdsByMap;
8740    function getDevElementIds(map) {
8741      devElementIdsByMap ??= /* @__PURE__ */ new WeakMap();
8742      let elementIds = devElementIdsByMap.get(map);
8743      if (!elementIds) {
8744        elementIds = /* @__PURE__ */ new WeakMap();
8745        devElementIdsByMap.set(map, elementIds);
8746      }
8747      return elementIds;
8748    }
8749    var PopupTriggerMap = class {
8750      constructor() {
8751        this.idMap = /* @__PURE__ */ new Map();
8752      }
8753      /**
8754       * Adds a trigger element with the given ID.
8755       *
8756       * Note: The provided element is assumed to not be registered under multiple IDs.
8757       */
8758      add(id, element) {
8759        if (true) {
8760          const elementIds = getDevElementIds(this);
8761          const existingId = elementIds.get(element);
8762          if (existingId !== void 0 && existingId !== id) {
8763            throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap.");
8764          }
8765          const previousElement = this.idMap.get(id);
8766          if (previousElement !== void 0 && previousElement !== element) {
8767            elementIds.delete(previousElement);
8768          }
8769          elementIds.set(element, id);
8770        }
8771        this.idMap.set(id, element);
8772      }
8773      /**
8774       * Removes the trigger element with the given ID.
8775       */
8776      delete(id) {
8777        if (true) {
8778          const element = this.idMap.get(id);
8779          if (element !== void 0) {
8780            devElementIdsByMap?.get(this)?.delete(element);
8781          }
8782        }
8783        this.idMap.delete(id);
8784      }
8785      /**
8786       * Whether the given element is registered as a trigger.
8787       */
8788      hasElement(element) {
8789        for (const registered of this.idMap.values()) {
8790          if (registered === element) {
8791            return true;
8792          }
8793        }
8794        return false;
8795      }
8796      /**
8797       * Whether there is a registered trigger element matching the given predicate.
8798       */
8799      hasMatchingElement(predicate) {
8800        for (const element of this.idMap.values()) {
8801          if (predicate(element)) {
8802            return true;
8803          }
8804        }
8805        return false;
8806      }
8807      /**
8808       * Returns the trigger element associated with the given ID, or undefined if no such element exists.
8809       */
8810      getById(id) {
8811        return this.idMap.get(id);
8812      }
8813      /**
8814       * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element].
8815       */
8816      entries() {
8817        return this.idMap.entries();
8818      }
8819      /**
8820       * Returns an iterable of all registered trigger elements.
8821       */
8822      elements() {
8823        return this.idMap.values();
8824      }
8825      /**
8826       * Returns the number of registered trigger elements.
8827       */
8828      get size() {
8829        return this.idMap.size;
8830      }
8831    };
8832  
8833    // node_modules/@base-ui/react/floating-ui-react/utils/getEmptyRootContext.mjs
8834    function getEmptyRootContext() {
8835      return new FloatingRootStore({
8836        open: false,
8837        transitionStatus: void 0,
8838        floatingElement: null,
8839        referenceElement: null,
8840        triggerElements: new PopupTriggerMap(),
8841        floatingId: void 0,
8842        syncOnly: false,
8843        nested: false,
8844        onOpenChange: void 0
8845      });
8846    }
8847  
8848    // node_modules/@base-ui/react/utils/popups/store.mjs
8849    function createInitialPopupStoreState() {
8850      return {
8851        open: false,
8852        openProp: void 0,
8853        mounted: false,
8854        transitionStatus: void 0,
8855        floatingRootContext: getEmptyRootContext(),
8856        floatingId: void 0,
8857        triggerCount: 0,
8858        preventUnmountingOnClose: false,
8859        payload: void 0,
8860        activeTriggerId: null,
8861        activeTriggerElement: null,
8862        triggerIdProp: void 0,
8863        popupElement: null,
8864        positionerElement: null,
8865        activeTriggerProps: EMPTY_OBJECT,
8866        inactiveTriggerProps: EMPTY_OBJECT,
8867        popupProps: EMPTY_OBJECT
8868      };
8869    }
8870    function createPopupFloatingRootContext(triggerElements, floatingId, nested = false) {
8871      return new FloatingRootStore({
8872        open: false,
8873        transitionStatus: void 0,
8874        floatingElement: null,
8875        referenceElement: null,
8876        triggerElements,
8877        floatingId,
8878        syncOnly: true,
8879        nested,
8880        onOpenChange: void 0
8881      });
8882    }
8883    var activeTriggerIdSelector = (state) => state.triggerIdProp ?? state.activeTriggerId;
8884    var openSelector = (state) => state.openProp ?? state.open;
8885    var popupIdSelector = (state) => {
8886      const popupId = state.popupElement?.id ?? state.floatingId;
8887      return popupId || void 0;
8888    };
8889    function triggerOwnsOpenPopup(state, triggerId) {
8890      return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId;
8891    }
8892    function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) {
8893      if (triggerOwnsOpenPopup(state, triggerId)) {
8894        return true;
8895      }
8896      return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && state.triggerCount === 1;
8897    }
8898    var popupStoreSelectors = {
8899      open: openSelector,
8900      mounted: (state) => state.mounted,
8901      transitionStatus: (state) => state.transitionStatus,
8902      floatingRootContext: (state) => state.floatingRootContext,
8903      triggerCount: (state) => state.triggerCount,
8904      preventUnmountingOnClose: (state) => state.preventUnmountingOnClose,
8905      payload: (state) => state.payload,
8906      activeTriggerId: activeTriggerIdSelector,
8907      activeTriggerElement: (state) => state.mounted ? state.activeTriggerElement : null,
8908      popupId: popupIdSelector,
8909      /**
8910       * Whether the trigger with the given ID was used to open the popup.
8911       */
8912      isTriggerActive: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId,
8913      /**
8914       * Whether the popup is open and was activated by a trigger with the given ID.
8915       */
8916      isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId),
8917      /**
8918       * Whether the popup is mounted and was activated by a trigger with the given ID.
8919       */
8920      isMountedByTrigger: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted,
8921      triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps,
8922      /**
8923       * Popup id for the trigger that currently owns the open popup.
8924       */
8925      triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0,
8926      popupProps: (state) => state.popupProps,
8927      popupElement: (state) => state.popupElement,
8928      positionerElement: (state) => state.positionerElement
8929    };
8930  
8931    // node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs
8932    var React32 = __toESM(require_react(), 1);
8933    var import_shim2 = __toESM(require_shim(), 1);
8934    function usePopupHandleStore(handle) {
8935      const subscribe2 = React32.useCallback((listener) => {
8936        if (handle === void 0) {
8937          return NOOP;
8938        }
8939        return handle.subscribeStore(listener);
8940      }, [handle]);
8941      const getSnapshot = React32.useCallback(() => {
8942        return handle === void 0 ? void 0 : handle.store;
8943      }, [handle]);
8944      return (0, import_shim2.useSyncExternalStore)(subscribe2, getSnapshot, () => handle?.serverStore);
8945    }
8946  
8947    // node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs
8948    function useBaseUIFloating(options) {
8949      return useFloatingWithStore(options, options.rootContext);
8950    }
8951    function useFloatingWithStore(options, store) {
8952      const {
8953        nodeId,
8954        externalTree
8955      } = options;
8956      const referenceElement = store.useState("referenceElement");
8957      const floatingElement = store.useState("floatingElement");
8958      const domReferenceElement = store.useState("domReferenceElement");
8959      const open = store.useState("open");
8960      const floatingId = store.useState("floatingId");
8961      const [positionReference, setPositionReferenceRaw] = React33.useState(null);
8962      const [localDomReference, setLocalDomReference] = React33.useState(void 0);
8963      const [localFloatingElement, setLocalFloatingElement] = React33.useState(void 0);
8964      const domReferenceRef = React33.useRef(null);
8965      const tree = useFloatingTree(externalTree);
8966      const storeElements = React33.useMemo(() => ({
8967        reference: referenceElement,
8968        floating: floatingElement,
8969        domReference: domReferenceElement
8970      }), [referenceElement, floatingElement, domReferenceElement]);
8971      const position = useFloating({
8972        ...options,
8973        elements: {
8974          ...storeElements,
8975          ...positionReference && {
8976            reference: positionReference
8977          }
8978        }
8979      });
8980      const localDomReferenceElement = isElement(localDomReference) ? localDomReference : null;
8981      const syncedFloatingElement = localFloatingElement === void 0 ? store.state.floatingElement : localFloatingElement;
8982      store.useSyncedValue("referenceElement", localDomReference ?? null);
8983      store.useSyncedValue("domReferenceElement", localDomReference === void 0 ? domReferenceElement : localDomReferenceElement);
8984      store.useSyncedValue("floatingElement", syncedFloatingElement);
8985      const setPositionReference = React33.useCallback((node) => {
8986        const computedPositionReference = isElement(node) ? {
8987          getBoundingClientRect: () => node.getBoundingClientRect(),
8988          getClientRects: () => node.getClientRects(),
8989          contextElement: node
8990        } : node;
8991        setPositionReferenceRaw(computedPositionReference);
8992        position.refs.setReference(computedPositionReference);
8993      }, [position.refs]);
8994      const setReference = React33.useCallback((node) => {
8995        if (isElement(node) || node === null) {
8996          domReferenceRef.current = node;
8997          setLocalDomReference(node);
8998        }
8999        if (isElement(position.refs.reference.current) || position.refs.reference.current === null || // Don't allow setting virtual elements using the old technique back to
9000        // `null` to support `positionReference` + an unstable `reference`
9001        // callback ref.
9002        node !== null && !isElement(node)) {
9003          position.refs.setReference(node);
9004        }
9005      }, [position.refs, setLocalDomReference]);
9006      const setFloating = React33.useCallback((node) => {
9007        setLocalFloatingElement(node);
9008        position.refs.setFloating(node);
9009      }, [position.refs]);
9010      const refs = React33.useMemo(() => ({
9011        ...position.refs,
9012        setReference,
9013        setFloating,
9014        setPositionReference,
9015        domReference: domReferenceRef
9016      }), [position.refs, setReference, setFloating, setPositionReference]);
9017      const elements = React33.useMemo(() => ({
9018        ...position.elements,
9019        domReference: domReferenceElement
9020      }), [position.elements, domReferenceElement]);
9021      const context = React33.useMemo(() => ({
9022        ...position,
9023        dataRef: store.context.dataRef,
9024        open,
9025        onOpenChange: store.setOpen,
9026        events: store.context.events,
9027        floatingId,
9028        refs,
9029        elements,
9030        nodeId,
9031        rootStore: store
9032      }), [position, refs, elements, nodeId, store, open, floatingId]);
9033      useIsoLayoutEffect(() => {
9034        if (domReferenceElement) {
9035          domReferenceRef.current = domReferenceElement;
9036        }
9037      }, [domReferenceElement]);
9038      useIsoLayoutEffect(() => {
9039        store.context.dataRef.current.floatingContext = context;
9040        const node = tree?.nodesRef.current.find((n2) => n2.id === nodeId);
9041        if (node) {
9042          node.context = context;
9043        }
9044      });
9045      return React33.useMemo(() => ({
9046        ...position,
9047        context,
9048        refs,
9049        elements,
9050        rootStore: store
9051      }), [position, refs, elements, context, store]);
9052    }
9053  
9054    // node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs
9055    var React34 = __toESM(require_react(), 1);
9056    var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit;
9057    function useFocus(context, props = {}) {
9058      const {
9059        enabled = true,
9060        delay
9061      } = props;
9062      const store = "rootStore" in context ? context.rootStore : context;
9063      const {
9064        events,
9065        dataRef
9066      } = store.context;
9067      const blockFocusRef = React34.useRef(false);
9068      const blockedReferenceRef = React34.useRef(null);
9069      const keyboardModalityRef = React34.useRef(true);
9070      const timeout = useTimeout();
9071      React34.useEffect(() => {
9072        const domReference = store.select("domReferenceElement");
9073        if (!enabled) {
9074          return void 0;
9075        }
9076        const win = getWindow(domReference);
9077        function onBlur() {
9078          const currentDomReference = store.select("domReferenceElement");
9079          if (!store.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) {
9080            blockFocusRef.current = true;
9081          }
9082        }
9083        function onKeyDown() {
9084          keyboardModalityRef.current = true;
9085        }
9086        function onPointerDown() {
9087          keyboardModalityRef.current = false;
9088        }
9089        return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true));
9090      }, [store, enabled]);
9091      React34.useEffect(() => {
9092        if (!enabled) {
9093          return void 0;
9094        }
9095        function onOpenChangeLocal(details) {
9096          if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) {
9097            const referenceElement = store.select("domReferenceElement");
9098            if (isElement(referenceElement)) {
9099              blockedReferenceRef.current = referenceElement;
9100              blockFocusRef.current = true;
9101            }
9102          }
9103        }
9104        events.on("openchange", onOpenChangeLocal);
9105        return () => {
9106          events.off("openchange", onOpenChangeLocal);
9107        };
9108      }, [events, enabled, store]);
9109      const reference = React34.useMemo(() => {
9110        function resetBlockedFocus() {
9111          blockFocusRef.current = false;
9112          blockedReferenceRef.current = null;
9113        }
9114        return {
9115          onMouseLeave() {
9116            resetBlockedFocus();
9117          },
9118          onFocus(event) {
9119            const focusTarget = event.currentTarget;
9120            if (blockFocusRef.current) {
9121              if (blockedReferenceRef.current === focusTarget) {
9122                return;
9123              }
9124              resetBlockedFocus();
9125            }
9126            const target = getTarget(event.nativeEvent);
9127            if (isElement(target)) {
9128              if (isMacSafari && !event.relatedTarget) {
9129                if (!keyboardModalityRef.current && !isTypeableElement(target)) {
9130                  return;
9131                }
9132              } else if (!matchesFocusVisible(target)) {
9133                return;
9134              }
9135            }
9136            const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements);
9137            const {
9138              nativeEvent,
9139              currentTarget
9140            } = event;
9141            const delayValue = typeof delay === "function" ? delay() : delay;
9142            if (store.select("open") && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === void 0) {
9143              store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget));
9144              return;
9145            }
9146            timeout.start(delayValue, () => {
9147              if (blockFocusRef.current) {
9148                return;
9149              }
9150              store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget));
9151            });
9152          },
9153          onBlur(event) {
9154            resetBlockedFocus();
9155            const relatedTarget = event.relatedTarget;
9156            const nativeEvent = event.nativeEvent;
9157            const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside";
9158            timeout.start(0, () => {
9159              const domReference = store.select("domReferenceElement");
9160              const activeEl = activeElement(ownerDocument(domReference));
9161              if (!relatedTarget && activeEl === domReference) {
9162                return;
9163              }
9164              if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) {
9165                return;
9166              }
9167              const nextFocusedElement = relatedTarget ?? activeEl;
9168              if (isTargetInsideEnabledTrigger(nextFocusedElement, store.context.triggerElements)) {
9169                return;
9170              }
9171              store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent));
9172            });
9173          }
9174        };
9175      }, [dataRef, delay, store, timeout]);
9176      return React34.useMemo(() => enabled ? {
9177        reference,
9178        trigger: reference
9179      } : {}, [enabled, reference]);
9180    }
9181  
9182    // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs
9183    var React35 = __toESM(require_react(), 1);
9184  
9185    // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs
9186    var HoverInteraction = class _HoverInteraction {
9187      constructor() {
9188        this.pointerType = void 0;
9189        this.interactedInside = false;
9190        this.handler = void 0;
9191        this.blockMouseMove = true;
9192        this.performedPointerEventsMutation = false;
9193        this.pointerEventsScopeElement = null;
9194        this.pointerEventsReferenceElement = null;
9195        this.pointerEventsFloatingElement = null;
9196        this.restTimeoutPending = false;
9197        this.openChangeTimeout = new Timeout();
9198        this.restTimeout = new Timeout();
9199        this.handleCloseOptions = void 0;
9200      }
9201      static create() {
9202        return new _HoverInteraction();
9203      }
9204      dispose = () => {
9205        this.openChangeTimeout.clear();
9206        this.restTimeout.clear();
9207      };
9208      disposeEffect = () => {
9209        return this.dispose;
9210      };
9211    };
9212    var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap();
9213    function clearSafePolygonPointerEventsMutation(instance) {
9214      if (!instance.performedPointerEventsMutation) {
9215        return;
9216      }
9217      const scopeElement = instance.pointerEventsScopeElement;
9218      if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) {
9219        instance.pointerEventsScopeElement?.style.removeProperty("pointer-events");
9220        instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events");
9221        instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events");
9222        pointerEventsMutationOwnerByScopeElement.delete(scopeElement);
9223      }
9224      instance.performedPointerEventsMutation = false;
9225      instance.pointerEventsScopeElement = null;
9226      instance.pointerEventsReferenceElement = null;
9227      instance.pointerEventsFloatingElement = null;
9228    }
9229    function applySafePolygonPointerEventsMutation(instance, options) {
9230      const {
9231        scopeElement,
9232        referenceElement,
9233        floatingElement
9234      } = options;
9235      const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement);
9236      if (existingOwner && existingOwner !== instance) {
9237        clearSafePolygonPointerEventsMutation(existingOwner);
9238      }
9239      clearSafePolygonPointerEventsMutation(instance);
9240      instance.performedPointerEventsMutation = true;
9241      instance.pointerEventsScopeElement = scopeElement;
9242      instance.pointerEventsReferenceElement = referenceElement;
9243      instance.pointerEventsFloatingElement = floatingElement;
9244      pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance);
9245      scopeElement.style.pointerEvents = "none";
9246      referenceElement.style.pointerEvents = "auto";
9247      floatingElement.style.pointerEvents = "auto";
9248    }
9249    function useHoverInteractionSharedState(store) {
9250      const data = store.context.dataRef.current;
9251      const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current;
9252      if (!data.hoverInteractionState) {
9253        data.hoverInteractionState = instance;
9254      }
9255      useOnMount(data.hoverInteractionState.disposeEffect);
9256      return data.hoverInteractionState;
9257    }
9258  
9259    // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs
9260    function useHoverFloatingInteraction(context, parameters = {}) {
9261      const {
9262        enabled = true,
9263        closeDelay: closeDelayProp = 0,
9264        nodeId: nodeIdProp
9265      } = parameters;
9266      const store = "rootStore" in context ? context.rootStore : context;
9267      const open = store.useState("open");
9268      const floatingElement = store.useState("floatingElement");
9269      const domReferenceElement = store.useState("domReferenceElement");
9270      const {
9271        dataRef
9272      } = store.context;
9273      const tree = useFloatingTree();
9274      const parentId = useFloatingParentNodeId();
9275      const instance = useHoverInteractionSharedState(store);
9276      const childClosedTimeout = useTimeout();
9277      const isClickLikeOpenEvent2 = useStableCallback(() => {
9278        return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside);
9279      });
9280      const isHoverOpen = useStableCallback(() => {
9281        return isHoverOpenEvent(dataRef.current.openEvent?.type);
9282      });
9283      const clearPointerEvents = useStableCallback(() => {
9284        clearSafePolygonPointerEventsMutation(instance);
9285      });
9286      useIsoLayoutEffect(() => {
9287        if (!open) {
9288          instance.pointerType = void 0;
9289          instance.restTimeoutPending = false;
9290          instance.interactedInside = false;
9291          clearPointerEvents();
9292        }
9293      }, [open, instance, clearPointerEvents]);
9294      React35.useEffect(() => {
9295        return clearPointerEvents;
9296      }, [clearPointerEvents]);
9297      useIsoLayoutEffect(() => {
9298        if (!enabled) {
9299          return void 0;
9300        }
9301        if (open && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) {
9302          const ref = domReferenceElement;
9303          const floatingEl = floatingElement;
9304          const doc = ownerDocument(floatingElement);
9305          const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating;
9306          if (parentFloating) {
9307            parentFloating.style.pointerEvents = "";
9308          }
9309          const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null;
9310          const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null;
9311          const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest("[data-rootownerid]") ?? doc.body;
9312          applySafePolygonPointerEventsMutation(instance, {
9313            scopeElement,
9314            referenceElement: ref,
9315            floatingElement: floatingEl
9316          });
9317          return () => {
9318            clearPointerEvents();
9319          };
9320        }
9321        return void 0;
9322      }, [enabled, open, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]);
9323      React35.useEffect(() => {
9324        if (!enabled) {
9325          return void 0;
9326        }
9327        function hasParentChildren() {
9328          return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0);
9329        }
9330        function closeWithDelay(event) {
9331          const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType);
9332          const close = () => {
9333            store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
9334            tree?.events.emit("floating.closed", event);
9335          };
9336          if (closeDelay) {
9337            instance.openChangeTimeout.start(closeDelay, close);
9338          } else {
9339            instance.openChangeTimeout.clear();
9340            close();
9341          }
9342        }
9343        function handleInteractInside(event) {
9344          const target = getTarget(event);
9345          if (!isInteractiveElement(target)) {
9346            instance.interactedInside = false;
9347            return;
9348          }
9349          instance.interactedInside = target?.closest("[aria-haspopup]") != null;
9350        }
9351        function onFloatingMouseEnter() {
9352          instance.openChangeTimeout.clear();
9353          childClosedTimeout.clear();
9354          tree?.events.off("floating.closed", onNodeClosed);
9355          clearPointerEvents();
9356        }
9357        function onFloatingMouseLeave(event) {
9358          if (hasParentChildren() && tree) {
9359            tree.events.on("floating.closed", onNodeClosed);
9360            return;
9361          }
9362          if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) {
9363            return;
9364          }
9365          const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp;
9366          const relatedTarget = event.relatedTarget;
9367          const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget));
9368          if (isMovingIntoDescendantFloating) {
9369            return;
9370          }
9371          if (instance.handler) {
9372            instance.handler(event);
9373            return;
9374          }
9375          clearPointerEvents();
9376          if (isHoverOpen() && !isClickLikeOpenEvent2()) {
9377            closeWithDelay(event);
9378          }
9379        }
9380        function onNodeClosed(event) {
9381          if (!tree || !parentId || hasParentChildren()) {
9382            return;
9383          }
9384          childClosedTimeout.start(0, () => {
9385            tree.events.off("floating.closed", onNodeClosed);
9386            store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
9387            tree.events.emit("floating.closed", event);
9388          });
9389        }
9390        const floating = floatingElement;
9391        return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => {
9392          tree?.events.off("floating.closed", onNodeClosed);
9393        });
9394      }, [enabled, floatingElement, store, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]);
9395    }
9396  
9397    // node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs
9398    var React36 = __toESM(require_react(), 1);
9399    var ReactDOM5 = __toESM(require_react_dom(), 1);
9400    var EMPTY_REF = {
9401      current: null
9402    };
9403    function useHoverReferenceInteraction(context, props = {}) {
9404      const {
9405        enabled = true,
9406        delay = 0,
9407        handleClose = null,
9408        mouseOnly = false,
9409        restMs = 0,
9410        move = true,
9411        triggerElementRef = EMPTY_REF,
9412        externalTree,
9413        isActiveTrigger = true,
9414        getHandleCloseContext,
9415        isClosing,
9416        shouldOpen: shouldOpenProp,
9417        guardStaleOpen = false
9418      } = props;
9419      const store = "rootStore" in context ? context.rootStore : context;
9420      const {
9421        dataRef,
9422        events
9423      } = store.context;
9424      const tree = useFloatingTree(externalTree);
9425      const instance = useHoverInteractionSharedState(store);
9426      const isHoverCloseActiveRef = React36.useRef(false);
9427      const handleCloseRef = useValueAsRef(handleClose);
9428      const delayRef = useValueAsRef(delay);
9429      const restMsRef = useValueAsRef(restMs);
9430      const enabledRef = useValueAsRef(enabled);
9431      const shouldOpenRef = useValueAsRef(shouldOpenProp);
9432      const isClosingRef = useValueAsRef(isClosing);
9433      const isClickLikeOpenEvent2 = useStableCallback(() => {
9434        return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside);
9435      });
9436      const checkShouldOpen = useStableCallback(() => {
9437        return shouldOpenRef.current?.() !== false;
9438      });
9439      const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => {
9440        const allTriggers = store.context.triggerElements;
9441        if (allTriggers.hasElement(currentTarget)) {
9442          return !currentDomReference || !contains(currentDomReference, currentTarget);
9443        }
9444        if (!isElement(target)) {
9445          return false;
9446        }
9447        const targetElement = target;
9448        return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement));
9449      });
9450      const cleanupMouseMoveHandler = useStableCallback(() => {
9451        if (!instance.handler) {
9452          return;
9453        }
9454        const doc = ownerDocument(store.select("domReferenceElement"));
9455        doc.removeEventListener("mousemove", instance.handler);
9456        instance.handler = void 0;
9457      });
9458      const clearPointerEvents = useStableCallback(() => {
9459        clearSafePolygonPointerEventsMutation(instance);
9460      });
9461      if (isActiveTrigger) {
9462        instance.handleCloseOptions = handleCloseRef.current?.__options;
9463      }
9464      React36.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]);
9465      React36.useEffect(() => {
9466        if (!enabled) {
9467          return void 0;
9468        }
9469        function onOpenChangeLocal(details) {
9470          if (!details.open) {
9471            isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover;
9472            cleanupMouseMoveHandler();
9473            instance.openChangeTimeout.clear();
9474            instance.restTimeout.clear();
9475            instance.blockMouseMove = true;
9476            instance.restTimeoutPending = false;
9477          } else {
9478            isHoverCloseActiveRef.current = false;
9479          }
9480        }
9481        events.on("openchange", onOpenChangeLocal);
9482        return () => {
9483          events.off("openchange", onOpenChangeLocal);
9484        };
9485      }, [enabled, events, instance, cleanupMouseMoveHandler]);
9486      React36.useEffect(() => {
9487        if (!enabled) {
9488          return void 0;
9489        }
9490        function closeWithDelay(event, runElseBranch = true) {
9491          const closeDelay = getDelay(delayRef.current, "close", instance.pointerType);
9492          if (closeDelay) {
9493            instance.openChangeTimeout.start(closeDelay, () => {
9494              store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
9495              tree?.events.emit("floating.closed", event);
9496            });
9497          } else if (runElseBranch) {
9498            instance.openChangeTimeout.clear();
9499            store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
9500            tree?.events.emit("floating.closed", event);
9501          }
9502        }
9503        const trigger = triggerElementRef.current ?? (isActiveTrigger ? store.select("domReferenceElement") : null);
9504        if (!isElement(trigger)) {
9505          return void 0;
9506        }
9507        function onMouseEnter(event) {
9508          instance.openChangeTimeout.clear();
9509          instance.blockMouseMove = false;
9510          if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {
9511            return;
9512          }
9513          const restMsValue = getRestMs(restMsRef.current);
9514          const openDelay = getDelay(delayRef.current, "open", instance.pointerType);
9515          const eventTarget = getTarget(event);
9516          const currentTarget = event.currentTarget ?? null;
9517          const currentDomReference = store.select("domReferenceElement");
9518          let triggerNode = currentTarget;
9519          if (isElement(eventTarget) && !store.context.triggerElements.hasElement(eventTarget)) {
9520            for (const triggerElement of store.context.triggerElements.elements()) {
9521              if (contains(triggerElement, eventTarget)) {
9522                triggerNode = triggerElement;
9523                break;
9524              }
9525            }
9526          }
9527          if (isElement(currentTarget) && isElement(currentDomReference) && !store.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) {
9528            triggerNode = currentDomReference;
9529          }
9530          const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget);
9531          const isOpen = store.select("open");
9532          const isInClosingTransition = isClosingRef.current?.() ?? store.select("transitionStatus") === "ending";
9533          const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current;
9534          const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition;
9535          const isRestOnlyDelay = restMsValue > 0 && !openDelay;
9536          const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition;
9537          const shouldOpen = !isOpen || isOverInactive;
9538          if (shouldOpenImmediately) {
9539            if (checkShouldOpen()) {
9540              store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
9541            }
9542            return;
9543          }
9544          if (isRestOnlyDelay) {
9545            return;
9546          }
9547          if (openDelay) {
9548            instance.openChangeTimeout.start(openDelay, () => {
9549              if (shouldOpen && checkShouldOpen()) {
9550                store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
9551              }
9552            });
9553          } else if (shouldOpen) {
9554            if (checkShouldOpen()) {
9555              store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode));
9556            }
9557          }
9558        }
9559        function onMouseLeave(event) {
9560          if (isClickLikeOpenEvent2()) {
9561            clearPointerEvents();
9562            return;
9563          }
9564          cleanupMouseMoveHandler();
9565          const domReferenceElement = store.select("domReferenceElement");
9566          const doc = ownerDocument(domReferenceElement);
9567          instance.restTimeout.clear();
9568          instance.restTimeoutPending = false;
9569          const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.();
9570          if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) {
9571            return;
9572          }
9573          if (handleCloseRef.current && handleCloseContextBase) {
9574            if (!store.select("open")) {
9575              instance.openChangeTimeout.clear();
9576            }
9577            const currentTrigger = triggerElementRef.current;
9578            instance.handler = handleCloseRef.current({
9579              ...handleCloseContextBase,
9580              tree,
9581              x: event.clientX,
9582              y: event.clientY,
9583              onClose() {
9584                clearPointerEvents();
9585                cleanupMouseMoveHandler();
9586                if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store.select("domReferenceElement")) {
9587                  closeWithDelay(event, true);
9588                }
9589              }
9590            });
9591            doc.addEventListener("mousemove", instance.handler);
9592            instance.handler(event);
9593            return;
9594          }
9595          const shouldClose = instance.pointerType === "touch" ? !contains(store.select("floatingElement"), event.relatedTarget) : true;
9596          if (shouldClose) {
9597            closeWithDelay(event);
9598          }
9599        }
9600        function onMouseOut(event) {
9601          if (contains(trigger, event.relatedTarget)) {
9602            return;
9603          }
9604          instance.openChangeTimeout.clear();
9605          instance.restTimeout.clear();
9606          instance.restTimeoutPending = false;
9607        }
9608        const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0;
9609        if (move) {
9610          return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, {
9611            once: true
9612          }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard);
9613        }
9614        return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard);
9615      }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]);
9616      return React36.useMemo(() => {
9617        if (!enabled) {
9618          return void 0;
9619        }
9620        function setPointerRef(event) {
9621          instance.pointerType = event.pointerType;
9622        }
9623        return {
9624          onPointerDown: setPointerRef,
9625          onPointerEnter: setPointerRef,
9626          onMouseMove(event) {
9627            const {
9628              nativeEvent
9629            } = event;
9630            const trigger = event.currentTarget;
9631            const currentDomReference = store.select("domReferenceElement");
9632            const currentOpen = store.select("open");
9633            const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target);
9634            if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {
9635              return;
9636            }
9637            if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) {
9638              const floatingElement = store.select("floatingElement");
9639              if (floatingElement) {
9640                const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body;
9641                applySafePolygonPointerEventsMutation(instance, {
9642                  scopeElement,
9643                  referenceElement: trigger,
9644                  floatingElement
9645                });
9646              }
9647            }
9648            const restMsValue = getRestMs(restMsRef.current);
9649            if (currentOpen && !isOverInactive || restMsValue === 0) {
9650              return;
9651            }
9652            if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) {
9653              return;
9654            }
9655            instance.restTimeout.clear();
9656            function handleMouseMove() {
9657              instance.restTimeoutPending = false;
9658              if (isClickLikeOpenEvent2()) {
9659                return;
9660              }
9661              const latestOpen = store.select("open");
9662              if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) {
9663                store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger));
9664              }
9665            }
9666            if (instance.pointerType === "touch") {
9667              ReactDOM5.flushSync(() => {
9668                handleMouseMove();
9669              });
9670            } else if (isOverInactive && currentOpen) {
9671              handleMouseMove();
9672            } else {
9673              instance.restTimeoutPending = true;
9674              instance.restTimeout.start(restMsValue, handleMouseMove);
9675            }
9676          }
9677        };
9678      }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store, restMsRef, checkShouldOpen]);
9679    }
9680  
9681    // node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs
9682    var React37 = __toESM(require_react(), 1);
9683    var ESCAPE = "Escape";
9684    function isStationaryWebKitPointer(event) {
9685      return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0;
9686    }
9687    function doSwitch(orientation, vertical, horizontal) {
9688      switch (orientation) {
9689        case "vertical":
9690          return vertical;
9691        case "horizontal":
9692          return horizontal;
9693        default:
9694          return vertical || horizontal;
9695      }
9696    }
9697    function isMainOrientationKey(key, orientation) {
9698      const vertical = key === ARROW_UP || key === ARROW_DOWN;
9699      const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;
9700      return doSwitch(orientation, vertical, horizontal);
9701    }
9702    function isMainOrientationToEndKey(key, orientation, rtl) {
9703      const vertical = key === ARROW_DOWN;
9704      const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;
9705      return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === "";
9706    }
9707    function isCrossOrientationOpenKey(key, orientation, rtl) {
9708      const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;
9709      const horizontal = key === ARROW_DOWN;
9710      return doSwitch(orientation, vertical, horizontal);
9711    }
9712    function isCrossOrientationCloseKey(key, orientation, rtl, grid) {
9713      const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;
9714      const horizontal = key === ARROW_UP;
9715      if (orientation === "both" || orientation === "horizontal" && grid) {
9716        return key === ESCAPE;
9717      }
9718      return doSwitch(orientation, vertical, horizontal);
9719    }
9720    function useListNavigation(context, props) {
9721      const {
9722        listRef,
9723        activeIndex,
9724        onNavigate: onNavigateProp = () => {
9725        },
9726        enabled = true,
9727        selectedIndex = null,
9728        allowEscape = false,
9729        loopFocus = false,
9730        nested = false,
9731        rtl = false,
9732        virtual = false,
9733        focusItemOnOpen = "auto",
9734        focusItemOnHover = true,
9735        openOnArrowKeyDown = true,
9736        disabledIndices = void 0,
9737        orientation = "vertical",
9738        parentOrientation,
9739        id,
9740        resetOnPointerLeave = true,
9741        externalTree,
9742        grid: navigateGrid
9743      } = props;
9744      const isGrid2 = navigateGrid != null;
9745      if (true) {
9746        if (allowEscape) {
9747          if (!loopFocus) {
9748            console.warn("`useListNavigation` looping must be enabled to allow escaping.");
9749          }
9750          if (!virtual) {
9751            console.warn("`useListNavigation` must be virtual to allow escaping.");
9752          }
9753        }
9754        if (orientation === "vertical" && isGrid2) {
9755          console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".');
9756        }
9757      }
9758      const store = "rootStore" in context ? context.rootStore : context;
9759      const open = store.useState("open");
9760      const floatingElement = store.useState("floatingElement");
9761      const domReferenceElement = store.useState("domReferenceElement");
9762      const dataRef = store.context.dataRef;
9763      const floatingFocusElement = getFloatingFocusElement(floatingElement);
9764      const typeableComboboxReference = isTypeableCombobox(domReferenceElement);
9765      const floatingFocusElementRef = useValueAsRef(floatingFocusElement);
9766      const parentId = useFloatingParentNodeId();
9767      const tree = useFloatingTree(externalTree);
9768      const focusItemOnOpenRef = React37.useRef(focusItemOnOpen);
9769      const indexRef = React37.useRef(selectedIndex ?? -1);
9770      const keyRef = React37.useRef(null);
9771      const isPointerModalityRef = React37.useRef(true);
9772      const onNavigate = useStableCallback((event) => {
9773        onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event);
9774      });
9775      const previousMountedRef = React37.useRef(!!floatingElement);
9776      const previousOpenRef = React37.useRef(open);
9777      const forceSyncFocusRef = React37.useRef(false);
9778      const forceScrollIntoViewRef = React37.useRef(false);
9779      const cancelQueuedFocusRef = React37.useRef(null);
9780      const disabledIndicesRef = useValueAsRef(disabledIndices);
9781      const latestOpenRef = useValueAsRef(open);
9782      const selectedIndexRef = useValueAsRef(selectedIndex);
9783      const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave);
9784      const focusFrame = useAnimationFrame();
9785      const waitForListPopulatedFrame = useAnimationFrame();
9786      const focusItem = useStableCallback(() => {
9787        function runFocus(item2) {
9788          if (virtual) {
9789            tree?.events.emit("virtualfocus", item2);
9790          } else {
9791            cancelQueuedFocusRef.current = enqueueFocus(item2, {
9792              sync: forceSyncFocusRef.current,
9793              preventScroll: true
9794            });
9795          }
9796        }
9797        const initialItem = listRef.current[indexRef.current];
9798        const forceScrollIntoView = forceScrollIntoViewRef.current;
9799        if (initialItem) {
9800          runFocus(initialItem);
9801        }
9802        const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback);
9803        scheduler2(() => {
9804          const waitedItem = listRef.current[indexRef.current] || initialItem;
9805          if (!waitedItem) {
9806            return;
9807          }
9808          if (!initialItem) {
9809            runFocus(waitedItem);
9810          }
9811          const shouldScrollIntoView = (
9812            // eslint-disable-next-line @typescript-eslint/no-use-before-define
9813            item && (forceScrollIntoView || !isPointerModalityRef.current)
9814          );
9815          if (shouldScrollIntoView) {
9816            waitedItem.scrollIntoView?.({
9817              block: "nearest",
9818              inline: "nearest"
9819            });
9820          }
9821        });
9822      });
9823      useIsoLayoutEffect(() => {
9824        dataRef.current.orientation = orientation;
9825      }, [dataRef, orientation]);
9826      useIsoLayoutEffect(() => {
9827        if (!enabled) {
9828          return;
9829        }
9830        if (open && floatingElement) {
9831          indexRef.current = selectedIndex ?? -1;
9832          if (focusItemOnOpenRef.current && selectedIndex != null) {
9833            forceScrollIntoViewRef.current = true;
9834            onNavigate();
9835          }
9836        } else if (previousMountedRef.current) {
9837          indexRef.current = -1;
9838          onNavigate();
9839        }
9840      }, [enabled, open, floatingElement, selectedIndex, onNavigate]);
9841      useIsoLayoutEffect(() => {
9842        if (!enabled) {
9843          return;
9844        }
9845        if (!open) {
9846          forceSyncFocusRef.current = false;
9847          return;
9848        }
9849        if (!floatingElement) {
9850          return;
9851        }
9852        if (activeIndex == null) {
9853          forceSyncFocusRef.current = false;
9854          if (selectedIndexRef.current != null) {
9855            return;
9856          }
9857          if (previousMountedRef.current) {
9858            indexRef.current = -1;
9859            focusItem();
9860          }
9861          if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {
9862            let runs = 0;
9863            const waitForListPopulated = () => {
9864              if (listRef.current[0] == null) {
9865                if (runs < 2) {
9866                  const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask;
9867                  scheduler2(waitForListPopulated);
9868                }
9869                runs += 1;
9870              } else {
9871                indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef);
9872                keyRef.current = null;
9873                onNavigate();
9874              }
9875            };
9876            waitForListPopulated();
9877          }
9878        } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) {
9879          indexRef.current = activeIndex;
9880          focusItem();
9881          forceScrollIntoViewRef.current = false;
9882        }
9883      }, [enabled, open, floatingElement, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]);
9884      useIsoLayoutEffect(() => {
9885        if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) {
9886          return;
9887        }
9888        const nodes = tree.nodesRef.current;
9889        const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating;
9890        const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null));
9891        const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl));
9892        if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {
9893          parent.focus({
9894            preventScroll: true
9895          });
9896        }
9897      }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]);
9898      useIsoLayoutEffect(() => {
9899        previousOpenRef.current = open;
9900        previousMountedRef.current = !!floatingElement;
9901      });
9902      useIsoLayoutEffect(() => {
9903        if (!open) {
9904          keyRef.current = null;
9905          focusItemOnOpenRef.current = focusItemOnOpen;
9906        }
9907      }, [open, focusItemOnOpen]);
9908      const hasActiveIndex = activeIndex != null;
9909      const syncCurrentTarget = useStableCallback((event) => {
9910        if (!latestOpenRef.current) {
9911          return;
9912        }
9913        const index2 = listRef.current.indexOf(event.currentTarget);
9914        if (index2 !== -1 && (indexRef.current !== index2 || activeIndex !== index2)) {
9915          indexRef.current = index2;
9916          onNavigate(event);
9917        }
9918      });
9919      const getParentOrientation = useStableCallback(() => {
9920        return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation;
9921      });
9922      const getMinEnabledIndex = useStableCallback(() => {
9923        return getMinListIndex(listRef, disabledIndicesRef.current);
9924      });
9925      const commonOnKeyDown = useStableCallback((event) => {
9926        isPointerModalityRef.current = false;
9927        forceSyncFocusRef.current = true;
9928        if (event.which === 229) {
9929          return;
9930        }
9931        if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {
9932          return;
9933        }
9934        if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid2)) {
9935          if (!isMainOrientationKey(event.key, getParentOrientation())) {
9936            stopEvent(event);
9937          }
9938          store.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent));
9939          if (isHTMLElement(domReferenceElement)) {
9940            if (virtual) {
9941              tree?.events.emit("virtualfocus", domReferenceElement);
9942            } else {
9943              domReferenceElement.focus();
9944            }
9945          }
9946          return;
9947        }
9948        const currentIndex = indexRef.current;
9949        const minIndex = getMinListIndex(listRef, disabledIndices);
9950        const maxIndex = getMaxListIndex(listRef, disabledIndices);
9951        if (!typeableComboboxReference) {
9952          if (event.key === "Home") {
9953            stopEvent(event);
9954            indexRef.current = minIndex;
9955            onNavigate(event);
9956          }
9957          if (event.key === "End") {
9958            stopEvent(event);
9959            indexRef.current = maxIndex;
9960            onNavigate(event);
9961          }
9962        }
9963        if (navigateGrid != null) {
9964          const index2 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex);
9965          if (index2 != null) {
9966            indexRef.current = index2;
9967            onNavigate(event);
9968          }
9969          if (orientation === "both") {
9970            return;
9971          }
9972        }
9973        if (isMainOrientationKey(event.key, orientation)) {
9974          stopEvent(event);
9975          if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {
9976            indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;
9977            onNavigate(event);
9978            return;
9979          }
9980          if (isMainOrientationToEndKey(event.key, orientation, rtl)) {
9981            if (loopFocus) {
9982              if (currentIndex >= maxIndex) {
9983                if (allowEscape && currentIndex !== listRef.current.length) {
9984                  indexRef.current = -1;
9985                } else {
9986                  forceSyncFocusRef.current = false;
9987                  indexRef.current = minIndex;
9988                }
9989              } else {
9990                indexRef.current = findNonDisabledListIndex(listRef.current, {
9991                  startingIndex: currentIndex,
9992                  disabledIndices
9993                });
9994              }
9995            } else {
9996              indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef.current, {
9997                startingIndex: currentIndex,
9998                disabledIndices
9999              }));
10000            }
10001          } else if (loopFocus) {
10002            if (currentIndex <= minIndex) {
10003              if (allowEscape && currentIndex !== -1) {
10004                indexRef.current = listRef.current.length;
10005              } else {
10006                forceSyncFocusRef.current = false;
10007                indexRef.current = maxIndex;
10008              }
10009            } else {
10010              indexRef.current = findNonDisabledListIndex(listRef.current, {
10011                startingIndex: currentIndex,
10012                decrement: true,
10013                disabledIndices
10014              });
10015            }
10016          } else {
10017            indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef.current, {
10018              startingIndex: currentIndex,
10019              decrement: true,
10020              disabledIndices
10021            }));
10022          }
10023          if (isIndexOutOfListBounds(listRef.current, indexRef.current)) {
10024            indexRef.current = -1;
10025          }
10026          onNavigate(event);
10027        }
10028      });
10029      const item = React37.useMemo(() => {
10030        const itemProps = {
10031          onFocus(event) {
10032            forceSyncFocusRef.current = true;
10033            syncCurrentTarget(event);
10034          },
10035          onClick: ({
10036            currentTarget
10037          }) => currentTarget.focus({
10038            preventScroll: true
10039          }),
10040          // Safari
10041          onMouseMove(event) {
10042            if (isStationaryWebKitPointer(event)) {
10043              return;
10044            }
10045            forceSyncFocusRef.current = true;
10046            forceScrollIntoViewRef.current = false;
10047            if (focusItemOnHover) {
10048              syncCurrentTarget(event);
10049            }
10050          },
10051          onPointerLeave(event) {
10052            if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") {
10053              return;
10054            }
10055            forceSyncFocusRef.current = true;
10056            const relatedTarget = event.relatedTarget;
10057            if (!focusItemOnHover || listRef.current.includes(relatedTarget)) {
10058              return;
10059            }
10060            if (!resetOnPointerLeaveRef.current) {
10061              return;
10062            }
10063            cancelQueuedFocusRef.current?.();
10064            cancelQueuedFocusRef.current = null;
10065            indexRef.current = -1;
10066            onNavigate(event);
10067            if (!virtual) {
10068              const floatingFocusEl = floatingFocusElementRef.current;
10069              const activeEl = activeElement(ownerDocument(floatingFocusEl));
10070              if (floatingFocusEl && contains(floatingFocusEl, activeEl)) {
10071                floatingFocusEl.focus({
10072                  preventScroll: true
10073                });
10074              }
10075            }
10076          }
10077        };
10078        return itemProps;
10079      }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]);
10080      const ariaActiveDescendantProp = React37.useMemo(() => {
10081        return virtual && open && hasActiveIndex && {
10082          "aria-activedescendant": `$id}-$activeIndex}`
10083        };
10084      }, [virtual, open, hasActiveIndex, id, activeIndex]);
10085      const floating = React37.useMemo(() => {
10086        return {
10087          "aria-orientation": orientation === "both" ? void 0 : orientation,
10088          ...!typeableComboboxReference ? ariaActiveDescendantProp : {},
10089          onKeyDown(event) {
10090            if (event.key === "Tab" && event.shiftKey && open && !virtual) {
10091              const target = getTarget(event.nativeEvent);
10092              if (target && !contains(floatingFocusElementRef.current, target)) {
10093                return;
10094              }
10095              stopEvent(event);
10096              store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent));
10097              if (isHTMLElement(domReferenceElement)) {
10098                domReferenceElement.focus();
10099              }
10100              return;
10101            }
10102            commonOnKeyDown(event);
10103          },
10104          onPointerMove(event) {
10105            if (isStationaryWebKitPointer(event)) {
10106              return;
10107            }
10108            isPointerModalityRef.current = true;
10109          }
10110        };
10111      }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, orientation, typeableComboboxReference, store, open, virtual, domReferenceElement]);
10112      const trigger = React37.useMemo(() => {
10113        function openOnNavigationKeyDown(event) {
10114          store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget));
10115        }
10116        function checkVirtualMouse(event) {
10117          if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) {
10118            focusItemOnOpenRef.current = !virtual;
10119          }
10120        }
10121        function checkVirtualPointer(event) {
10122          focusItemOnOpenRef.current = focusItemOnOpen;
10123          if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) {
10124            focusItemOnOpenRef.current = true;
10125          }
10126        }
10127        return {
10128          onKeyDown(event) {
10129            const currentOpen = store.select("open");
10130            isPointerModalityRef.current = false;
10131            const isArrowKey = event.key.startsWith("Arrow");
10132            const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);
10133            const isMainKey = isMainOrientationKey(event.key, orientation);
10134            const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === "";
10135            if (virtual && currentOpen) {
10136              return commonOnKeyDown(event);
10137            }
10138            if (!currentOpen && !openOnArrowKeyDown && isArrowKey) {
10139              return void 0;
10140            }
10141            if (isNavigationKey) {
10142              const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());
10143              keyRef.current = nested && isParentMainKey ? null : event.key;
10144            }
10145            if (nested) {
10146              if (isParentCrossOpenKey) {
10147                stopEvent(event);
10148                if (currentOpen) {
10149                  indexRef.current = getMinEnabledIndex();
10150                  onNavigate(event);
10151                } else {
10152                  openOnNavigationKeyDown(event);
10153                }
10154              }
10155              return void 0;
10156            }
10157            if (isMainKey) {
10158              if (selectedIndexRef.current != null) {
10159                indexRef.current = selectedIndexRef.current;
10160              }
10161              stopEvent(event);
10162              if (!currentOpen && openOnArrowKeyDown) {
10163                openOnNavigationKeyDown(event);
10164              } else {
10165                commonOnKeyDown(event);
10166              }
10167              if (currentOpen) {
10168                onNavigate(event);
10169              }
10170            }
10171            return void 0;
10172          },
10173          onFocus(event) {
10174            if (store.select("open") && !virtual) {
10175              indexRef.current = -1;
10176              onNavigate(event);
10177            }
10178          },
10179          onPointerDown: checkVirtualPointer,
10180          onPointerEnter: checkVirtualPointer,
10181          onMouseDown: checkVirtualMouse,
10182          onClick: checkVirtualMouse
10183        };
10184      }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndexRef, virtual]);
10185      const reference = React37.useMemo(() => {
10186        return {
10187          ...ariaActiveDescendantProp,
10188          ...trigger
10189        };
10190      }, [ariaActiveDescendantProp, trigger]);
10191      return React37.useMemo(() => enabled ? {
10192        reference,
10193        floating,
10194        item,
10195        trigger
10196      } : {}, [enabled, reference, floating, trigger, item]);
10197    }
10198  
10199    // node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs
10200    var React38 = __toESM(require_react(), 1);
10201    function useTypeahead(context, props) {
10202      const {
10203        listRef,
10204        elementsRef,
10205        activeIndex,
10206        onMatch: onMatchProp,
10207        disabledIndices,
10208        onTyping,
10209        enabled = true,
10210        resetMs = 750,
10211        selectedIndex = null
10212      } = props;
10213      const store = "rootStore" in context ? context.rootStore : context;
10214      const open = store.useState("open");
10215      const timeout = useTimeout();
10216      const stringRef = React38.useRef("");
10217      const prevIndexRef = React38.useRef(selectedIndex ?? activeIndex ?? -1);
10218      const matchIndexRef = React38.useRef(null);
10219      const onKeyDown = useStableCallback((event) => {
10220        function getElement(index3) {
10221          return elementsRef?.current[index3];
10222        }
10223        function isItemAvailable(index3) {
10224          const element = getElement(index3);
10225          if (element && !isElementVisible(element) || element?.matches(":disabled")) {
10226            return false;
10227          }
10228          return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index3, disabledIndices);
10229        }
10230        function getMatchingIndex(list, string, startIndex2 = 0) {
10231          if (list.length === 0) {
10232            return -1;
10233          }
10234          const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length;
10235          const lowerString = string.toLowerCase();
10236          for (let offset4 = 0; offset4 < list.length; offset4 += 1) {
10237            const index3 = (normalizedStartIndex + offset4) % list.length;
10238            const text = list[index3];
10239            if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index3)) {
10240              continue;
10241            }
10242            return index3;
10243          }
10244          return -1;
10245        }
10246        const listContent = listRef.current;
10247        if (stringRef.current.length > 0 && event.key === " ") {
10248          stopEvent(event);
10249          onTyping?.(true);
10250        }
10251        if (stringRef.current.length > 0 && stringRef.current[0] !== " ") {
10252          if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") {
10253            onTyping?.(false);
10254          }
10255        }
10256        if (listContent == null || // Character key.
10257        event.key.length !== 1 || // Modifier key.
10258        event.ctrlKey || event.metaKey || event.altKey) {
10259          return;
10260        }
10261        if (open && event.key !== " ") {
10262          stopEvent(event);
10263          onTyping?.(true);
10264        }
10265        const isNewSession = stringRef.current === "";
10266        if (isNewSession) {
10267          prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;
10268        }
10269        const allowRapidSuccessionOfFirstLetter = listContent.every((text, index3) => text && isItemAvailable(index3) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true);
10270        if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {
10271          stringRef.current = "";
10272          prevIndexRef.current = matchIndexRef.current;
10273        }
10274        stringRef.current += event.key;
10275        timeout.start(resetMs, () => {
10276          stringRef.current = "";
10277          prevIndexRef.current = matchIndexRef.current;
10278          onTyping?.(false);
10279        });
10280        const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current;
10281        const startIndex = (prevIndex ?? 0) + 1;
10282        const index2 = getMatchingIndex(listContent, stringRef.current, startIndex);
10283        if (index2 !== -1) {
10284          onMatchProp?.(index2);
10285          matchIndexRef.current = index2;
10286        } else if (event.key !== " ") {
10287          stringRef.current = "";
10288          onTyping?.(false);
10289        }
10290      });
10291      const onBlur = useStableCallback((event) => {
10292        const next = event.relatedTarget;
10293        const currentDomReferenceElement = store.select("domReferenceElement");
10294        const currentFloatingElement = store.select("floatingElement");
10295        const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next);
10296        if (withinComposite) {
10297          return;
10298        }
10299        timeout.clear();
10300        stringRef.current = "";
10301        prevIndexRef.current = matchIndexRef.current;
10302        onTyping?.(false);
10303      });
10304      useIsoLayoutEffect(() => {
10305        if (!open && selectedIndex !== null) {
10306          return;
10307        }
10308        timeout.clear();
10309        matchIndexRef.current = null;
10310        if (stringRef.current !== "") {
10311          stringRef.current = "";
10312        }
10313      }, [open, selectedIndex, timeout]);
10314      const sharedProps = React38.useMemo(() => ({
10315        onKeyDown,
10316        onBlur
10317      }), [onKeyDown, onBlur]);
10318      return React38.useMemo(() => enabled ? {
10319        reference: sharedProps,
10320        floating: sharedProps
10321      } : {}, [enabled, sharedProps]);
10322    }
10323  
10324    // node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs
10325    var CURSOR_SPEED_THRESHOLD = 0.1;
10326    var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD;
10327    var POLYGON_BUFFER = 0.5;
10328    function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) {
10329      return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi;
10330    }
10331    function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) {
10332      let isInsideValue = false;
10333      if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) {
10334        isInsideValue = !isInsideValue;
10335      }
10336      if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) {
10337        isInsideValue = !isInsideValue;
10338      }
10339      if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) {
10340        isInsideValue = !isInsideValue;
10341      }
10342      if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) {
10343        isInsideValue = !isInsideValue;
10344      }
10345      return isInsideValue;
10346    }
10347    function isInsideRect(pointX, pointY, rect) {
10348      return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height;
10349    }
10350    function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) {
10351      const minX = Math.min(x1, x2);
10352      const maxX = Math.max(x1, x2);
10353      const minY = Math.min(y1, y2);
10354      const maxY = Math.max(y1, y2);
10355      return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY;
10356    }
10357    function safePolygon(options = {}) {
10358      const {
10359        blockPointerEvents = false
10360      } = options;
10361      const timeout = new Timeout();
10362      const fn = ({
10363        x: x2,
10364        y: y2,
10365        placement,
10366        elements,
10367        onClose,
10368        nodeId,
10369        tree
10370      }) => {
10371        const side = placement?.split("-")[0];
10372        let hasLanded = false;
10373        let lastX = null;
10374        let lastY = null;
10375        let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0;
10376        function isCursorMovingSlowly(nextX, nextY) {
10377          const currentTime = performance.now();
10378          const elapsedTime = currentTime - lastCursorTime;
10379          if (lastX === null || lastY === null || elapsedTime === 0) {
10380            lastX = nextX;
10381            lastY = nextY;
10382            lastCursorTime = currentTime;
10383            return false;
10384          }
10385          const deltaX = nextX - lastX;
10386          const deltaY = nextY - lastY;
10387          const distanceSquared = deltaX * deltaX + deltaY * deltaY;
10388          const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED;
10389          lastX = nextX;
10390          lastY = nextY;
10391          lastCursorTime = currentTime;
10392          return distanceSquared < thresholdSquared;
10393        }
10394        function close() {
10395          timeout.clear();
10396          onClose();
10397        }
10398        return function onMouseMove(event) {
10399          timeout.clear();
10400          const domReference = elements.domReference;
10401          const floating = elements.floating;
10402          if (!domReference || !floating || side == null || x2 == null || y2 == null) {
10403            return void 0;
10404          }
10405          const {
10406            clientX,
10407            clientY
10408          } = event;
10409          const target = getTarget(event);
10410          const isLeave = event.type === "mouseleave";
10411          const isOverFloatingEl = contains(floating, target);
10412          const isOverReferenceEl = contains(domReference, target);
10413          if (isOverFloatingEl) {
10414            hasLanded = true;
10415            if (!isLeave) {
10416              return void 0;
10417            }
10418          }
10419          if (isOverReferenceEl) {
10420            hasLanded = false;
10421            if (!isLeave) {
10422              hasLanded = true;
10423              return void 0;
10424            }
10425          }
10426          if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) {
10427            return void 0;
10428          }
10429          function hasOpenChildNode() {
10430            return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0);
10431          }
10432          function closeIfNoOpenChild() {
10433            if (!hasOpenChildNode()) {
10434              close();
10435            }
10436          }
10437          if (hasOpenChildNode()) {
10438            return void 0;
10439          }
10440          const refRect = domReference.getBoundingClientRect();
10441          const rect = floating.getBoundingClientRect();
10442          const cursorLeaveFromRight = x2 > rect.right - rect.width / 2;
10443          const cursorLeaveFromBottom = y2 > rect.bottom - rect.height / 2;
10444          const isFloatingWider = rect.width > refRect.width;
10445          const isFloatingTaller = rect.height > refRect.height;
10446          const left = (isFloatingWider ? refRect : rect).left;
10447          const right = (isFloatingWider ? refRect : rect).right;
10448          const top = (isFloatingTaller ? refRect : rect).top;
10449          const bottom = (isFloatingTaller ? refRect : rect).bottom;
10450          if (side === "top" && y2 >= refRect.bottom - 1 || side === "bottom" && y2 <= refRect.top + 1 || side === "left" && x2 >= refRect.right - 1 || side === "right" && x2 <= refRect.left + 1) {
10451            closeIfNoOpenChild();
10452            return void 0;
10453          }
10454          let isInsideTroughRect = false;
10455          switch (side) {
10456            case "top":
10457              isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1);
10458              break;
10459            case "bottom":
10460              isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1);
10461              break;
10462            case "left":
10463              isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top);
10464              break;
10465            case "right":
10466              isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top);
10467              break;
10468            default:
10469          }
10470          if (isInsideTroughRect) {
10471            return void 0;
10472          }
10473          if (hasLanded && !isInsideRect(clientX, clientY, refRect)) {
10474            closeIfNoOpenChild();
10475            return void 0;
10476          }
10477          if (!isLeave && isCursorMovingSlowly(clientX, clientY)) {
10478            closeIfNoOpenChild();
10479            return void 0;
10480          }
10481          let isInsidePolygon = false;
10482          switch (side) {
10483            case "top": {
10484              const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
10485              const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
10486              const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
10487              const cursorPointY = y2 + POLYGON_BUFFER + 1;
10488              const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top;
10489              const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER;
10490              isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);
10491              break;
10492            }
10493            case "bottom": {
10494              const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
10495              const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
10496              const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset;
10497              const cursorPointY = y2 - POLYGON_BUFFER;
10498              const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom;
10499              const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER;
10500              isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);
10501              break;
10502            }
10503            case "left": {
10504              const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
10505              const cursorPointOneY = isFloatingTaller ? y2 + cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset;
10506              const cursorPointTwoY = isFloatingTaller ? y2 - cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset;
10507              const cursorPointX = x2 + POLYGON_BUFFER + 1;
10508              const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left;
10509              const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER;
10510              isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY);
10511              break;
10512            }
10513            case "right": {
10514              const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
10515              const cursorPointOneY = isFloatingTaller ? y2 + cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset;
10516              const cursorPointTwoY = isFloatingTaller ? y2 - cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset;
10517              const cursorPointX = x2 - POLYGON_BUFFER;
10518              const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right;
10519              const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER;
10520              isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom);
10521              break;
10522            }
10523            default:
10524          }
10525          if (!isInsidePolygon) {
10526            closeIfNoOpenChild();
10527          } else if (!hasLanded) {
10528            timeout.start(40, closeIfNoOpenChild);
10529          }
10530          return void 0;
10531        };
10532      };
10533      fn.__options = {
10534        ...options,
10535        blockPointerEvents
10536      };
10537      return fn;
10538    }
10539  
10540    // node_modules/@base-ui/react/utils/NullStore.mjs
10541    var NullStore = class extends ReactStore {
10542      // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding
10543      // `setState` alone would neutralize them today. They are overridden explicitly so the store stays
10544      // inert even if a future base-class change stops routing a mutator through `setState`.
10545      setState(_newState) {
10546      }
10547      update(_changes) {
10548      }
10549      set(_key, _value) {
10550      }
10551      notifyAll() {
10552      }
10553    };
10554  
10555    // node_modules/@base-ui/react/utils/popupStateMapping.mjs
10556    var CommonPopupDataAttributes = (function(CommonPopupDataAttributes2) {
10557      CommonPopupDataAttributes2["open"] = "data-open";
10558      CommonPopupDataAttributes2["closed"] = "data-closed";
10559      CommonPopupDataAttributes2[CommonPopupDataAttributes2["startingStyle"] = TransitionStatusDataAttributes.startingStyle] = "startingStyle";
10560      CommonPopupDataAttributes2[CommonPopupDataAttributes2["endingStyle"] = TransitionStatusDataAttributes.endingStyle] = "endingStyle";
10561      CommonPopupDataAttributes2["anchorHidden"] = "data-anchor-hidden";
10562      CommonPopupDataAttributes2["side"] = "data-side";
10563      CommonPopupDataAttributes2["align"] = "data-align";
10564      return CommonPopupDataAttributes2;
10565    })({});
10566    var TRIGGER_HOOK = {
10567      "data-popup-open": ""
10568    };
10569    var PRESSABLE_TRIGGER_HOOK = {
10570      "data-popup-open": "",
10571      "data-pressed": ""
10572    };
10573    var POPUP_OPEN_HOOK = {
10574      "data-open": ""
10575    };
10576    var POPUP_CLOSED_HOOK = {
10577      "data-closed": ""
10578    };
10579    var ANCHOR_HIDDEN_HOOK = {
10580      "data-anchor-hidden": ""
10581    };
10582    var triggerOpenStateMapping = {
10583      open(value) {
10584        if (value) {
10585          return TRIGGER_HOOK;
10586        }
10587        return null;
10588      }
10589    };
10590    var pressableTriggerOpenStateMapping = {
10591      open(value) {
10592        if (value) {
10593          return PRESSABLE_TRIGGER_HOOK;
10594        }
10595        return null;
10596      }
10597    };
10598    var popupStateMapping = {
10599      open(value) {
10600        if (value) {
10601          return POPUP_OPEN_HOOK;
10602        }
10603        return POPUP_CLOSED_HOOK;
10604      },
10605      anchorHidden(value) {
10606        if (value) {
10607          return ANCHOR_HIDDEN_HOOK;
10608        }
10609        return null;
10610      }
10611    };
10612    var popupTransitionStateMapping = {
10613      ...popupStateMapping,
10614      ...transitionStatusMapping
10615    };
10616  
10617    // node_modules/@base-ui/react/internals/composite/composite.mjs
10618    var ARROW_UP2 = "ArrowUp";
10619    var ARROW_DOWN2 = "ArrowDown";
10620    var ARROW_LEFT2 = "ArrowLeft";
10621    var ARROW_RIGHT2 = "ArrowRight";
10622    var HOME = "Home";
10623    var END = "End";
10624    var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]);
10625  
10626    // node_modules/@base-ui/utils/inertValue.mjs
10627    function inertValue(value) {
10628      if (isReactVersionAtLeast(19)) {
10629        return value;
10630      }
10631      return value ? "true" : void 0;
10632    }
10633  
10634    // node_modules/@base-ui/react/utils/InternalBackdrop.mjs
10635    var React39 = __toESM(require_react(), 1);
10636    var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
10637    var InternalBackdrop = /* @__PURE__ */ React39.forwardRef(function InternalBackdrop2(props, ref) {
10638      const {
10639        cutout,
10640        ...otherProps
10641      } = props;
10642      let clipPath;
10643      if (cutout) {
10644        const rect = cutout.getBoundingClientRect();
10645        clipPath = `polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,$rect.left}px $rect.top}px,$rect.left}px $rect.bottom}px,$rect.right}px $rect.bottom}px,$rect.right}px $rect.top}px,$rect.left}px $rect.top}px)`;
10646      }
10647      return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", {
10648        ref,
10649        role: "presentation",
10650        "data-base-ui-inert": "",
10651        ...otherProps,
10652        style: {
10653          position: "fixed",
10654          inset: 0,
10655          userSelect: "none",
10656          WebkitUserSelect: "none",
10657          clipPath
10658        }
10659      });
10660    });
10661    if (true) InternalBackdrop.displayName = "InternalBackdrop";
10662  
10663    // node_modules/@base-ui/react/utils/useOpenInteractionType.mjs
10664    var React42 = __toESM(require_react(), 1);
10665  
10666    // node_modules/@base-ui/utils/useEnhancedClickHandler.mjs
10667    var React40 = __toESM(require_react(), 1);
10668    function useEnhancedClickHandler(handler) {
10669      const lastClickInteractionTypeRef = React40.useRef("");
10670      const handlePointerDown = React40.useCallback((event) => {
10671        if (event.defaultPrevented) {
10672          return;
10673        }
10674        lastClickInteractionTypeRef.current = event.pointerType;
10675        handler(event, event.pointerType);
10676      }, [handler]);
10677      const handleClick = React40.useCallback((event) => {
10678        if (event.detail === 0) {
10679          handler(event, "keyboard");
10680          return;
10681        }
10682        if ("pointerType" in event) {
10683          handler(event, event.pointerType);
10684        } else {
10685          handler(event, lastClickInteractionTypeRef.current);
10686        }
10687        lastClickInteractionTypeRef.current = "";
10688      }, [handler]);
10689      return {
10690        onClick: handleClick,
10691        onPointerDown: handlePointerDown
10692      };
10693    }
10694  
10695    // node_modules/@base-ui/react/internals/useValueChanged.mjs
10696    var React41 = __toESM(require_react(), 1);
10697    function useValueChanged(value, onChange) {
10698      const valueRef = React41.useRef(value);
10699      const onChangeCallback = useStableCallback(onChange);
10700      useIsoLayoutEffect(() => {
10701        if (valueRef.current !== value) {
10702          onChangeCallback(valueRef.current);
10703        }
10704        valueRef.current = value;
10705      }, [value, onChangeCallback]);
10706    }
10707  
10708    // node_modules/@base-ui/react/utils/useOpenInteractionType.mjs
10709    function useOpenMethodTriggerProps(open, setOpenMethod) {
10710      const handleTriggerClick = useStableCallback((_, interactionType) => {
10711        const isOpen = typeof open === "function" ? open() : open;
10712        if (!isOpen) {
10713          setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's
10714          // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType`
10715          // will be "" in that case.
10716          (parts_exports.os.ios ? "touch" : ""));
10717        }
10718      });
10719      const {
10720        onClick,
10721        onPointerDown
10722      } = useEnhancedClickHandler(handleTriggerClick);
10723      return React42.useMemo(() => ({
10724        onClick,
10725        onPointerDown
10726      }), [onClick, onPointerDown]);
10727    }
10728    function useOpenInteractionType(open) {
10729      const [openMethod, setOpenMethod] = React42.useState(null);
10730      const triggerProps = useOpenMethodTriggerProps(open, setOpenMethod);
10731      useValueChanged(open, (previousOpen) => {
10732        if (previousOpen && !open) {
10733          setOpenMethod(null);
10734        }
10735      });
10736      return React42.useMemo(() => ({
10737        openMethod,
10738        triggerProps
10739      }), [openMethod, triggerProps]);
10740    }
10741  
10742    // node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs
10743    var React43 = __toESM(require_react(), 1);
10744  
10745    // node_modules/@base-ui/react/internals/field-constants/constants.mjs
10746    var DEFAULT_VALIDITY_STATE = {
10747      badInput: false,
10748      customError: false,
10749      patternMismatch: false,
10750      rangeOverflow: false,
10751      rangeUnderflow: false,
10752      stepMismatch: false,
10753      tooLong: false,
10754      tooShort: false,
10755      typeMismatch: false,
10756      valid: null,
10757      valueMissing: false
10758    };
10759    var DEFAULT_FIELD_STATE_ATTRIBUTES = {
10760      valid: null,
10761      touched: false,
10762      dirty: false,
10763      filled: false,
10764      focused: false
10765    };
10766    var DEFAULT_FIELD_ROOT_STATE = {
10767      disabled: false,
10768      ...DEFAULT_FIELD_STATE_ATTRIBUTES
10769    };
10770    var fieldValidityMapping = {
10771      valid(value) {
10772        if (value === null) {
10773          return null;
10774        }
10775        if (value) {
10776          return {
10777            "data-valid": ""
10778          };
10779        }
10780        return {
10781          "data-invalid": ""
10782        };
10783      }
10784    };
10785  
10786    // node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs
10787    var DEFAULT_FIELD_ROOT_CONTEXT = {
10788      invalid: void 0,
10789      name: void 0,
10790      validityData: {
10791        state: DEFAULT_VALIDITY_STATE,
10792        errors: [],
10793        error: "",
10794        value: "",
10795        initialValue: null
10796      },
10797      setValidityData: NOOP,
10798      disabled: void 0,
10799      setTouched: NOOP,
10800      setDirty: NOOP,
10801      setFilled: NOOP,
10802      setFocused: NOOP,
10803      validationMode: "onSubmit",
10804      shouldValidateOnChange: () => false,
10805      state: DEFAULT_FIELD_ROOT_STATE,
10806      registerFieldControl: NOOP,
10807      validation: {
10808        getValidationProps: (_disabled, props = EMPTY_OBJECT) => props,
10809        inputRef: {
10810          current: null
10811        },
10812        registeredInputs: /* @__PURE__ */ new Map(),
10813        registerInput: NOOP,
10814        getInputControl: () => null,
10815        commit: async () => {
10816        },
10817        change: NOOP
10818      }
10819    };
10820    var FieldRootContext = /* @__PURE__ */ React43.createContext(DEFAULT_FIELD_ROOT_CONTEXT);
10821    if (true) FieldRootContext.displayName = "FieldRootContext";
10822    function useFieldRootContext(optional = true) {
10823      const context = React43.useContext(FieldRootContext);
10824      if (context.setValidityData === NOOP && !optional) {
10825        throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28));
10826      }
10827      return context;
10828    }
10829  
10830    // node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs
10831    function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name) {
10832      const {
10833        registerFieldControl
10834      } = useFieldRootContext();
10835      const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol());
10836      useIsoLayoutEffect(() => {
10837        const source = sourceRef.current;
10838        if (!enabled) {
10839          registerFieldControl(source, void 0);
10840          return;
10841        }
10842        const registration = {
10843          controlRef,
10844          getValue: getFormValueOverride,
10845          id,
10846          name,
10847          value
10848        };
10849        registerFieldControl(source, registration);
10850      }, [controlRef, enabled, getFormValueOverride, id, name, registerFieldControl, sourceRef, value]);
10851      useIsoLayoutEffect(() => {
10852        const source = sourceRef.current;
10853        return () => {
10854          registerFieldControl(source, void 0);
10855        };
10856      }, [registerFieldControl, sourceRef]);
10857    }
10858  
10859    // node_modules/@base-ui/react/internals/form-context/FormContext.mjs
10860    var React44 = __toESM(require_react(), 1);
10861    var FormContext = /* @__PURE__ */ React44.createContext({
10862      elementRef: {
10863        current: null
10864      },
10865      formRef: {
10866        current: {
10867          fields: /* @__PURE__ */ new Map()
10868        }
10869      },
10870      errors: {},
10871      clearErrors: NOOP,
10872      validationMode: "onSubmit",
10873      submitAttemptedRef: {
10874        current: false
10875      }
10876    });
10877    if (true) FormContext.displayName = "FormContext";
10878    function useFormContext() {
10879      return React44.useContext(FormContext);
10880    }
10881  
10882    // node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs
10883    var React46 = __toESM(require_react(), 1);
10884  
10885    // node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs
10886    var React45 = __toESM(require_react(), 1);
10887    var LabelableContext = /* @__PURE__ */ React45.createContext({
10888      controlId: void 0,
10889      registerControlId: NOOP,
10890      labelId: void 0,
10891      setLabelId: NOOP,
10892      messageIds: [],
10893      setMessageIds: NOOP,
10894      getDescriptionProps: (externalProps) => externalProps
10895    });
10896    if (true) LabelableContext.displayName = "LabelableContext";
10897    function useLabelableContext() {
10898      return React45.useContext(LabelableContext);
10899    }
10900  
10901    // node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs
10902    function useLabelableId(params = {}) {
10903      const {
10904        id,
10905        implicit = false,
10906        controlRef
10907      } = params;
10908      const {
10909        controlId,
10910        registerControlId
10911      } = useLabelableContext();
10912      const defaultId = useBaseUiId(id);
10913      const controlIdForEffect = implicit ? controlId : void 0;
10914      const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol());
10915      const hasRegisteredRef = React46.useRef(false);
10916      const hadExplicitIdRef = React46.useRef(id != null);
10917      const unregisterControlId = useStableCallback(() => {
10918        if (!hasRegisteredRef.current || registerControlId === NOOP) {
10919          return;
10920        }
10921        hasRegisteredRef.current = false;
10922        registerControlId(controlSourceRef.current, void 0);
10923      });
10924      useIsoLayoutEffect(() => {
10925        if (registerControlId === NOOP) {
10926          return void 0;
10927        }
10928        let nextId;
10929        if (implicit) {
10930          const elem = controlRef?.current;
10931          if (isElement(elem) && elem.closest("label") != null) {
10932            nextId = id ?? null;
10933          } else {
10934            nextId = controlIdForEffect ?? defaultId;
10935          }
10936        } else if (id != null) {
10937          hadExplicitIdRef.current = true;
10938          nextId = id;
10939        } else if (hadExplicitIdRef.current) {
10940          nextId = defaultId;
10941        } else {
10942          unregisterControlId();
10943          return void 0;
10944        }
10945        if (nextId === void 0) {
10946          unregisterControlId();
10947          return void 0;
10948        }
10949        hasRegisteredRef.current = true;
10950        registerControlId(controlSourceRef.current, nextId);
10951        return void 0;
10952      }, [id, controlRef, controlIdForEffect, registerControlId, implicit, defaultId, controlSourceRef, unregisterControlId]);
10953      React46.useEffect(() => {
10954        return unregisterControlId;
10955      }, [unregisterControlId]);
10956      return controlId ?? defaultId;
10957    }
10958  
10959    // node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs
10960    var React47 = __toESM(require_react(), 1);
10961    var DirectionContext = /* @__PURE__ */ React47.createContext(void 0);
10962    if (true) DirectionContext.displayName = "DirectionContext";
10963    function useDirection() {
10964      const context = React47.useContext(DirectionContext);
10965      return context?.direction ?? "ltr";
10966    }
10967  
10968    // node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs
10969    var BOUNDARY_OFFSET = 5;
10970    function isMouseWithinBounds(event, element) {
10971      const bounds = getPseudoElementBounds(element);
10972      return event.clientX >= bounds.left - BOUNDARY_OFFSET && event.clientX <= bounds.right + BOUNDARY_OFFSET && event.clientY >= bounds.top - BOUNDARY_OFFSET && event.clientY <= bounds.bottom + BOUNDARY_OFFSET;
10973    }
10974    function getPseudoElementBounds(element) {
10975      const elementRect = element.getBoundingClientRect();
10976      const win = getWindow(element);
10977      if (parts_exports.env.jsdom) {
10978        return elementRect;
10979      }
10980      const beforeStyles = win.getComputedStyle(element, "::before");
10981      const afterStyles = win.getComputedStyle(element, "::after");
10982      const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none";
10983      if (!hasPseudoElements) {
10984        return elementRect;
10985      }
10986      const beforeWidth = parseFloat(beforeStyles.width) || 0;
10987      const beforeHeight = parseFloat(beforeStyles.height) || 0;
10988      const afterWidth = parseFloat(afterStyles.width) || 0;
10989      const afterHeight = parseFloat(afterStyles.height) || 0;
10990      const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth);
10991      const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight);
10992      const widthDiff = totalWidth - elementRect.width;
10993      const heightDiff = totalHeight - elementRect.height;
10994      return {
10995        left: elementRect.left - widthDiff / 2,
10996        right: elementRect.right + widthDiff / 2,
10997        top: elementRect.top - heightDiff / 2,
10998        bottom: elementRect.bottom + heightDiff / 2
10999      };
11000    }
11001  
11002    // node_modules/@base-ui/react/internals/useAnchorPositioning.mjs
11003    var React48 = __toESM(require_react(), 1);
11004  
11005    // node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs
11006    var baseArrow = (options) => ({
11007      name: "arrow",
11008      options,
11009      async fn(state) {
11010        const {
11011          x: x2,
11012          y: y2,
11013          placement,
11014          rects,
11015          platform: platform3,
11016          elements,
11017          middlewareData
11018        } = state;
11019        const {
11020          element,
11021          padding = 0,
11022          offsetParent = "real"
11023        } = evaluate(options, state) || {};
11024        if (element == null) {
11025          return {};
11026        }
11027        const paddingObject = getPaddingObject(padding);
11028        const coords = {
11029          x: x2,
11030          y: y2
11031        };
11032        const axis = getAlignmentAxis(placement);
11033        const length = getAxisLength(axis);
11034        const arrowDimensions = await platform3.getDimensions(element);
11035        const isYAxis = axis === "y";
11036        const minProp = isYAxis ? "top" : "left";
11037        const maxProp = isYAxis ? "bottom" : "right";
11038        const clientProp = isYAxis ? "clientHeight" : "clientWidth";
11039        const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
11040        const startDiff = coords[axis] - rects.reference[axis];
11041        const arrowOffsetParent = offsetParent === "real" ? await platform3.getOffsetParent?.(element) : elements.floating;
11042        let clientSize = elements.floating[clientProp] || rects.floating[length];
11043        if (!clientSize || !await platform3.isElement?.(arrowOffsetParent)) {
11044          clientSize = elements.floating[clientProp] || rects.floating[length];
11045        }
11046        const centerToReference = endDiff / 2 - startDiff / 2;
11047        const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
11048        const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding);
11049        const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding);
11050        const min3 = minPadding;
11051        const max3 = clientSize - arrowDimensions[length] - maxPadding;
11052        const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
11053        const offset4 = clamp(min3, center, max3);
11054        const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min3 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
11055        const alignmentOffset = shouldAddOffset ? center < min3 ? center - min3 : center - max3 : 0;
11056        return {
11057          [axis]: coords[axis] + alignmentOffset,
11058          data: {
11059            [axis]: offset4,
11060            centerOffset: center - offset4 - alignmentOffset,
11061            ...shouldAddOffset && {
11062              alignmentOffset
11063            }
11064          },
11065          reset: shouldAddOffset
11066        };
11067      }
11068    });
11069    var arrow4 = (options, deps) => ({
11070      ...baseArrow(options),
11071      options: [options, deps]
11072    });
11073  
11074    // node_modules/@base-ui/react/utils/hideMiddleware.mjs
11075    var hide4 = {
11076      name: "hide",
11077      async fn(state) {
11078        const {
11079          width,
11080          height,
11081          x: x2,
11082          y: y2
11083        } = state.rects.reference;
11084        const anchorHidden = width === 0 && height === 0 && x2 === 0 && y2 === 0;
11085        const overflow = await state.platform.detectOverflow(state, {
11086          elementContext: "reference"
11087        });
11088        const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0;
11089        return {
11090          data: {
11091            referenceHidden: referenceHidden || anchorHidden
11092          }
11093        };
11094      }
11095    };
11096  
11097    // node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs
11098    var DEFAULT_SIDES = {
11099      sideX: "left",
11100      sideY: "top"
11101    };
11102  
11103    // node_modules/@base-ui/react/internals/useAnchorPositioning.mjs
11104    var AVAILABLE_WIDTH_VAR = "--available-width";
11105    var AVAILABLE_HEIGHT_VAR = "--available-height";
11106    function getLogicalSide(sideParam, renderedSide, isRtl) {
11107      const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end";
11108      const logicalRight = isRtl ? "inline-start" : "inline-end";
11109      const logicalLeft = isRtl ? "inline-end" : "inline-start";
11110      return {
11111        top: "top",
11112        right: isLogicalSideParam ? logicalRight : "right",
11113        bottom: "bottom",
11114        left: isLogicalSideParam ? logicalLeft : "left"
11115      }[renderedSide];
11116    }
11117    function getOffsetData(state, sideParam, isRtl) {
11118      const {
11119        rects,
11120        placement
11121      } = state;
11122      const data = {
11123        side: getLogicalSide(sideParam, getSide(placement), isRtl),
11124        align: getAlignment(placement) || "center",
11125        anchor: {
11126          width: rects.reference.width,
11127          height: rects.reference.height
11128        },
11129        positioner: {
11130          width: rects.floating.width,
11131          height: rects.floating.height
11132        }
11133      };
11134      return data;
11135    }
11136    function useAnchorPositioning(params) {
11137      return useAnchorPositioningWithHook(params, useBaseUIFloating);
11138    }
11139    function useAnchorPositioningWithHook(params, useFloatingHook) {
11140      const {
11141        // Public parameters
11142        anchor,
11143        positionMethod = "absolute",
11144        side: sideParam = "bottom",
11145        sideOffset = 0,
11146        align = "center",
11147        alignOffset = 0,
11148        collisionBoundary,
11149        collisionPadding: collisionPaddingParam = 5,
11150        sticky = false,
11151        arrowPadding = 5,
11152        disableAnchorTracking = false,
11153        inline: inlineMiddleware,
11154        // Private parameters
11155        keepMounted = false,
11156        floatingRootContext,
11157        mounted,
11158        collisionAvoidance,
11159        shift: shift4,
11160        nodeId,
11161        adaptiveOrigin: adaptiveOrigin2,
11162        lazyFlip = false,
11163        externalTree
11164      } = params;
11165      const [mountSide, setMountSide] = React48.useState(null);
11166      if (!mounted && mountSide !== null) {
11167        setMountSide(null);
11168      }
11169      const collisionAvoidanceSide = collisionAvoidance.side || "flip";
11170      const collisionAvoidanceAlign = collisionAvoidance.align || "flip";
11171      const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end";
11172      const shiftCrossAxis = shift4?.crossAxis ?? false;
11173      const shiftRootBoundary = shift4?.rootBoundary;
11174      const anchorFn = typeof anchor === "function" ? anchor : void 0;
11175      const anchorFnCallback = useStableCallback(anchorFn);
11176      const anchorDep = anchorFn ? anchorFnCallback : anchor;
11177      const anchorValueRef = useValueAsRef(anchor);
11178      const mountedRef = useValueAsRef(mounted);
11179      const direction = useDirection();
11180      const isRtl = direction === "rtl";
11181      const side = mountSide || {
11182        top: "top",
11183        right: "right",
11184        bottom: "bottom",
11185        left: "left",
11186        "inline-end": isRtl ? "left" : "right",
11187        "inline-start": isRtl ? "right" : "left"
11188      }[sideParam];
11189      const placement = align === "center" ? side : `$side}-$align}`;
11190      let collisionPadding = collisionPaddingParam;
11191      if (typeof collisionPadding === "number") {
11192        collisionPadding = {
11193          top: collisionPadding,
11194          right: collisionPadding,
11195          bottom: collisionPadding,
11196          left: collisionPadding
11197        };
11198      } else if (collisionPadding) {
11199        collisionPadding = {
11200          top: collisionPadding.top || 0,
11201          right: collisionPadding.right || 0,
11202          bottom: collisionPadding.bottom || 0,
11203          left: collisionPadding.left || 0
11204        };
11205      }
11206      const bias = 1;
11207      const biasTop = sideParam === "bottom" ? bias : 0;
11208      const biasBottom = sideParam === "top" ? bias : 0;
11209      const biasLeft = sideParam === "right" ? bias : 0;
11210      const biasRight = sideParam === "left" ? bias : 0;
11211      const commonCollisionProps = {
11212        boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary,
11213        padding: collisionPadding
11214      };
11215      const arrowRef = React48.useRef(null);
11216      const sideOffsetRef = useValueAsRef(sideOffset);
11217      const alignOffsetRef = useValueAsRef(alignOffset);
11218      const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0;
11219      const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0;
11220      const middleware = [];
11221      if (inlineMiddleware) {
11222        middleware.push(inlineMiddleware);
11223      }
11224      middleware.push(offset3((state) => {
11225        const data = getOffsetData(state, sideParam, isRtl);
11226        const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current;
11227        const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current;
11228        return {
11229          mainAxis: sideAxis,
11230          crossAxis: alignAxis,
11231          alignmentAxis: alignAxis
11232        };
11233      }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam]));
11234      const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift";
11235      const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift");
11236      const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({
11237        ...commonCollisionProps,
11238        // Ensure the popup flips if it's been limited by its --available-height and it resizes.
11239        // Since the size() padding is smaller than the flip() padding, flip() will take precedence.
11240        padding: {
11241          top: collisionPadding.top + bias + biasTop,
11242          right: collisionPadding.right + bias + biasRight,
11243          bottom: collisionPadding.bottom + bias + biasBottom,
11244          left: collisionPadding.left + bias + biasLeft
11245        },
11246        mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip",
11247        crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false,
11248        fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide
11249      });
11250      const shiftMiddleware = shiftDisabled ? null : shift3({
11251        ...commonCollisionProps,
11252        // Use the Layout Viewport to avoid shifting around when pinch-zooming.
11253        rootBoundary: shiftRootBoundary,
11254        mainAxis: collisionAvoidanceAlign !== "none",
11255        crossAxis: crossAxisShiftEnabled,
11256        limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => {
11257          if (!arrowRef.current) {
11258            return {};
11259          }
11260          const {
11261            width,
11262            height
11263          } = arrowRef.current.getBoundingClientRect();
11264          const sideAxis = getSideAxis(getSide(limitData.placement));
11265          const arrowSize = sideAxis === "y" ? width : height;
11266          const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom;
11267          return {
11268            offset: arrowSize / 2 + offsetAmount / 2
11269          };
11270        })
11271      }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]);
11272      if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || align === "center") {
11273        middleware.push(shiftMiddleware, flipMiddleware);
11274      } else {
11275        middleware.push(flipMiddleware, shiftMiddleware);
11276      }
11277      middleware.push(size3({
11278        ...commonCollisionProps,
11279        apply({
11280          elements: {
11281            floating
11282          },
11283          availableWidth,
11284          availableHeight,
11285          rects
11286        }) {
11287          if (!mountedRef.current) {
11288            return;
11289          }
11290          const floatingStyle = floating.style;
11291          floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth}px`);
11292          floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight}px`);
11293          const dpr = getWindow(floating).devicePixelRatio || 1;
11294          const {
11295            x: x3,
11296            y: y3,
11297            width,
11298            height
11299          } = rects.reference;
11300          const anchorWidth = (Math.round((x3 + width) * dpr) - Math.round(x3 * dpr)) / dpr;
11301          const anchorHeight = (Math.round((y3 + height) * dpr) - Math.round(y3 * dpr)) / dpr;
11302          floatingStyle.setProperty("--anchor-width", `$anchorWidth}px`);
11303          floatingStyle.setProperty("--anchor-height", `$anchorHeight}px`);
11304        }
11305      }), arrow4((state) => ({
11306        // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set,
11307        // we'll create a fake element.
11308        element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"),
11309        padding: arrowPadding,
11310        offsetParent: "floating"
11311      }), [arrowPadding]), {
11312        name: "transformOrigin",
11313        fn(state) {
11314          const {
11315            elements: elements2,
11316            middlewareData: middlewareData2,
11317            placement: renderedPlacement2,
11318            rects,
11319            y: y3
11320          } = state;
11321          const currentRenderedSide = getSide(renderedPlacement2);
11322          const currentRenderedAxis = getSideAxis(currentRenderedSide);
11323          const arrowEl = arrowRef.current;
11324          const arrowX = middlewareData2.arrow?.x || 0;
11325          const arrowY = middlewareData2.arrow?.y || 0;
11326          const arrowWidth = arrowEl?.clientWidth || 0;
11327          const arrowHeight = arrowEl?.clientHeight || 0;
11328          const transformX = arrowX + arrowWidth / 2;
11329          const transformY = arrowY + arrowHeight / 2;
11330          const shiftY = Math.abs(middlewareData2.shift?.y || 0);
11331          const halfAnchorHeight = rects.reference.height / 2;
11332          const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset;
11333          const isOverlappingAnchor = shiftY > sideOffsetValue;
11334          const adjacentTransformOrigin = {
11335            top: `$transformX}px calc(100% + $sideOffsetValue}px)`,
11336            bottom: `$transformX}px ${-sideOffsetValue}px`,
11337            left: `calc(100% + $sideOffsetValue}px) $transformY}px`,
11338            right: `${-sideOffsetValue}px $transformY}px`
11339          }[currentRenderedSide];
11340          const overlapTransformOrigin = `$transformX}px $rects.reference.y + halfAnchorHeight - y3}px`;
11341          elements2.floating.style.setProperty("--transform-origin", crossAxisShiftEnabled && currentRenderedAxis === "y" && isOverlappingAnchor ? overlapTransformOrigin : adjacentTransformOrigin);
11342          return {};
11343        }
11344      }, hide4, adaptiveOrigin2);
11345      useIsoLayoutEffect(() => {
11346        if (!mounted && floatingRootContext) {
11347          floatingRootContext.update({
11348            referenceElement: null,
11349            floatingElement: null,
11350            domReferenceElement: null,
11351            positionReference: null
11352          });
11353        }
11354      }, [mounted, floatingRootContext]);
11355      const autoUpdateOptions = React48.useMemo(() => ({
11356        elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined",
11357        layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined"
11358      }), [disableAnchorTracking]);
11359      const {
11360        refs,
11361        elements,
11362        x: x2,
11363        y: y2,
11364        middlewareData,
11365        update: update2,
11366        placement: renderedPlacement,
11367        context,
11368        isPositioned,
11369        floatingStyles: originalFloatingStyles
11370      } = useFloatingHook({
11371        rootContext: floatingRootContext,
11372        open: keepMounted ? mounted : void 0,
11373        placement,
11374        middleware,
11375        strategy: positionMethod,
11376        whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions),
11377        nodeId,
11378        externalTree
11379      });
11380      const {
11381        sideX,
11382        sideY
11383      } = middlewareData.adaptiveOrigin || DEFAULT_SIDES;
11384      const resolvedPosition = isPositioned ? positionMethod : "fixed";
11385      const floatingStyles = React48.useMemo(() => {
11386        let base;
11387        if (!isPositioned) {
11388          base = {
11389            position: resolvedPosition,
11390            top: 0,
11391            left: 0
11392          };
11393        } else if (adaptiveOrigin2) {
11394          base = {
11395            position: resolvedPosition,
11396            [sideX]: x2,
11397            [sideY]: y2
11398          };
11399        } else {
11400          base = {
11401            ...originalFloatingStyles,
11402            position: resolvedPosition
11403          };
11404        }
11405        base[AVAILABLE_WIDTH_VAR] = "100vw";
11406        base[AVAILABLE_HEIGHT_VAR] = "100vh";
11407        if (!isPositioned) {
11408          base.opacity = 0;
11409        }
11410        return base;
11411      }, [adaptiveOrigin2, resolvedPosition, sideX, x2, sideY, y2, originalFloatingStyles, isPositioned]);
11412      const registeredPositionReferenceRef = React48.useRef(null);
11413      useIsoLayoutEffect(() => {
11414        if (!mounted) {
11415          return;
11416        }
11417        const anchorValue = anchorValueRef.current;
11418        const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue;
11419        const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null;
11420        const finalAnchor = unwrappedElement || null;
11421        if (finalAnchor !== registeredPositionReferenceRef.current) {
11422          refs.setPositionReference(finalAnchor);
11423          registeredPositionReferenceRef.current = finalAnchor;
11424        }
11425      }, [mounted, refs, anchorDep, anchorValueRef]);
11426      React48.useEffect(() => {
11427        if (!mounted) {
11428          return;
11429        }
11430        const anchorValue = anchorValueRef.current;
11431        if (typeof anchorValue === "function") {
11432          return;
11433        }
11434        if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) {
11435          refs.setPositionReference(anchorValue.current);
11436          registeredPositionReferenceRef.current = anchorValue.current;
11437        }
11438      }, [mounted, refs, anchorDep, anchorValueRef]);
11439      React48.useEffect(() => {
11440        if (keepMounted && mounted && elements.reference && elements.floating) {
11441          return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions);
11442        }
11443        return void 0;
11444      }, [keepMounted, mounted, elements, update2, autoUpdateOptions]);
11445      const renderedSide = getSide(renderedPlacement);
11446      const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl);
11447      const renderedAlign = getAlignment(renderedPlacement) || "center";
11448      const anchorHidden = Boolean(middlewareData.hide?.referenceHidden);
11449      useIsoLayoutEffect(() => {
11450        if (lazyFlip && mounted && isPositioned && renderedSide !== side) {
11451          setMountSide(renderedSide);
11452        }
11453      }, [lazyFlip, mounted, isPositioned, renderedSide, side]);
11454      const arrowStyles = React48.useMemo(() => ({
11455        position: "absolute",
11456        top: middlewareData.arrow?.y,
11457        left: middlewareData.arrow?.x
11458      }), [middlewareData.arrow]);
11459      const arrowUncentered = middlewareData.arrow?.centerOffset !== 0;
11460      return React48.useMemo(() => ({
11461        positionerStyles: floatingStyles,
11462        arrowStyles,
11463        arrowRef,
11464        arrowUncentered,
11465        side: logicalRenderedSide,
11466        align: renderedAlign,
11467        physicalSide: renderedSide,
11468        anchorHidden,
11469        refs,
11470        context,
11471        isPositioned,
11472        update: update2
11473      }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden, refs, context, isPositioned, update2]);
11474    }
11475    function isRef(param) {
11476      return param != null && "current" in param;
11477    }
11478  
11479    // node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs
11480    function getDisabledMountTransitionStyles(transitionStatus) {
11481      return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT;
11482    }
11483  
11484    // node_modules/@base-ui/react/utils/usePositioner.mjs
11485    function usePositioner(componentProps, state, {
11486      styles,
11487      transitionStatus,
11488      props,
11489      refs,
11490      hidden,
11491      inert = false
11492    }) {
11493      const style = {
11494        ...styles
11495      };
11496      if (inert) {
11497        style.pointerEvents = "none";
11498      }
11499      return useRenderElement("div", componentProps, {
11500        state,
11501        ref: refs,
11502        props: [{
11503          role: "presentation",
11504          hidden,
11505          style
11506        }, getDisabledMountTransitionStyles(transitionStatus), props],
11507        stateAttributesMapping: popupStateMapping
11508      });
11509    }
11510  
11511    // node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs
11512    var React49 = __toESM(require_react(), 1);
11513    var VIEWPORT_WIDTH_TOLERANCE_PX = 20;
11514    function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) {
11515      const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React49.useState(false);
11516      useIsoLayoutEffect(() => {
11517        if (!enabled || !touchOpen || positionerElement == null) {
11518          setTouchOpenShouldLockScroll(false);
11519          return;
11520        }
11521        const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth;
11522        const popupWidth = positionerElement.offsetWidth;
11523        setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth > 0 && popupWidth >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX);
11524      }, [enabled, touchOpen, positionerElement]);
11525      useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement);
11526    }
11527  
11528    // node_modules/@base-ui/react/button/Button.mjs
11529    var React50 = __toESM(require_react(), 1);
11530    var Button = /* @__PURE__ */ React50.forwardRef(function Button2(componentProps, forwardedRef) {
11531      const {
11532        render: render4,
11533        className,
11534        disabled: disabled2 = false,
11535        focusableWhenDisabled = false,
11536        nativeButton = true,
11537        style,
11538        ...elementProps
11539      } = componentProps;
11540      const {
11541        getButtonProps,
11542        buttonRef
11543      } = useButton({
11544        disabled: disabled2,
11545        focusableWhenDisabled,
11546        native: nativeButton
11547      });
11548      const state = {
11549        disabled: disabled2
11550      };
11551      return useRenderElement("button", componentProps, {
11552        state,
11553        ref: [forwardedRef, buttonRef],
11554        props: [elementProps, getButtonProps]
11555      });
11556    });
11557    if (true) Button.displayName = "Button";
11558  
11559    // node_modules/@base-ui/react/field/item/FieldItemContext.mjs
11560    var React51 = __toESM(require_react(), 1);
11561    var FieldItemContext = /* @__PURE__ */ React51.createContext({
11562      disabled: false
11563    });
11564    if (true) FieldItemContext.displayName = "FieldItemContext";
11565    function useFieldItemContext() {
11566      const context = React51.useContext(FieldItemContext);
11567      return context;
11568    }
11569  
11570    // node_modules/@base-ui/react/field/root/useFieldValidation.mjs
11571    var React52 = __toESM(require_react(), 1);
11572  
11573    // node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs
11574    function getCombinedFieldValidityData(validityData, invalid) {
11575      return {
11576        ...validityData,
11577        state: {
11578          ...validityData.state,
11579          valid: !invalid && validityData.state.valid
11580        }
11581      };
11582    }
11583  
11584    // node_modules/@base-ui/react/field/root/useFieldValidation.mjs
11585    var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE);
11586    function isEligibleInput(input, formElement) {
11587      if (input.matches(":disabled")) {
11588        return false;
11589      }
11590      if (!formElement || input.form === formElement) {
11591        return true;
11592      }
11593      return input.form === null && !input.hasAttribute("form");
11594    }
11595    function findRepresentativeInput(inputs, formElement) {
11596      let fallback = null;
11597      for (const input of inputs.keys()) {
11598        if (!isEligibleInput(input, formElement)) {
11599          continue;
11600        }
11601        if (!input.validity.valid) {
11602          return input;
11603        }
11604        fallback ??= input;
11605      }
11606      return fallback;
11607    }
11608    function clearCustomValidity(element, inputs) {
11609      for (const input of inputs.keys()) {
11610        input.setCustomValidity("");
11611      }
11612      element?.setCustomValidity("");
11613    }
11614    function useFieldValidation(params) {
11615      const {
11616        elementRef,
11617        formRef
11618      } = useFormContext();
11619      const {
11620        setValidityData,
11621        validate,
11622        validityData,
11623        validationDebounceTime,
11624        invalid,
11625        markedDirtyRef,
11626        state,
11627        shouldValidateOnChange,
11628        registeredFieldIdRef
11629      } = params;
11630      const {
11631        controlId,
11632        getDescriptionProps
11633      } = useLabelableContext();
11634      const timeout = useTimeout();
11635      const inputRef = React52.useRef(null);
11636      const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current;
11637      const validationCommitIdRef = React52.useRef(0);
11638      const registerInput = React52.useCallback((element, registration) => {
11639        registeredInputs.set(element, registration);
11640        return () => {
11641          registeredInputs.delete(element);
11642        };
11643      }, [registeredInputs]);
11644      const getInputControl = useStableCallback(() => {
11645        const element = findRepresentativeInput(registeredInputs, elementRef.current);
11646        return element && registeredInputs.get(element)?.controlRef.current || null;
11647      });
11648      const commit = useStableCallback(async (value, revalidate = false) => {
11649        validationCommitIdRef.current += 1;
11650        const validationCommitId = validationCommitIdRef.current;
11651        function updateRegisteredFieldValidity(nextValidityData2, externalInvalid = invalid) {
11652          const fieldId = registeredFieldIdRef.current ?? controlId;
11653          if (fieldId == null) {
11654            return;
11655          }
11656          const currentFieldData = formRef.current.fields.get(fieldId);
11657          if (!currentFieldData) {
11658            return;
11659          }
11660          const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData2, externalInvalid);
11661          formRef.current.fields.set(fieldId, {
11662            ...currentFieldData,
11663            validityData: validityDataWithFormErrors
11664          });
11665        }
11666        function publishAllValid(input, externalInvalid) {
11667          const nextValidityData2 = {
11668            value,
11669            state: {
11670              ...DEFAULT_VALIDITY_STATE,
11671              valid: true
11672            },
11673            error: "",
11674            errors: [],
11675            initialValue: validityData.initialValue
11676          };
11677          clearCustomValidity(input, registeredInputs);
11678          updateRegisteredFieldValidity(nextValidityData2, externalInvalid);
11679          setValidityData(nextValidityData2);
11680        }
11681        const element = registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current;
11682        if (revalidate) {
11683          if (state.valid !== false || !element) {
11684            return;
11685          }
11686          const currentNativeValidity = element.validity;
11687          if (!currentNativeValidity.valueMissing) {
11688            publishAllValid(element, false);
11689            return;
11690          }
11691          for (const key of validityKeys) {
11692            if (key !== "valid" && key !== "valueMissing" && key !== "customError" && currentNativeValidity[key]) {
11693              return;
11694            }
11695          }
11696        }
11697        function getState(el) {
11698          const computedState = validityKeys.reduce((acc, key) => {
11699            acc[key] = el.validity[key];
11700            return acc;
11701          }, {});
11702          let hasOnlyValueMissingError = false;
11703          for (const key of validityKeys) {
11704            if (key === "valid") {
11705              continue;
11706            }
11707            if (key === "valueMissing" && computedState[key]) {
11708              hasOnlyValueMissingError = true;
11709            } else if (computedState[key]) {
11710              return computedState;
11711            }
11712          }
11713          if (hasOnlyValueMissingError && !markedDirtyRef.current) {
11714            computedState.valid = true;
11715            computedState.valueMissing = false;
11716          }
11717          return computedState;
11718        }
11719        timeout.clear();
11720        let result = null;
11721        let validationErrors = [];
11722        const nextState = element ? getState(element) : {
11723          ...DEFAULT_VALIDITY_STATE,
11724          valid: true
11725        };
11726        let defaultValidationMessage;
11727        const isValidatingOnChange = shouldValidateOnChange();
11728        if (element && element.validationMessage && !isValidatingOnChange) {
11729          defaultValidationMessage = element.validationMessage;
11730          validationErrors = [element.validationMessage];
11731        } else {
11732          const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => {
11733            if (field.name) {
11734              acc[field.name] = field.getValue();
11735            }
11736            return acc;
11737          }, {});
11738          const resultOrPromise = validate(value, formValues);
11739          if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) {
11740            result = await resultOrPromise;
11741            if (validationCommitId !== validationCommitIdRef.current) {
11742              return;
11743            }
11744          } else {
11745            result = resultOrPromise;
11746          }
11747          if (result !== null) {
11748            nextState.valid = false;
11749            nextState.customError = true;
11750            if (Array.isArray(result)) {
11751              validationErrors = result;
11752              element?.setCustomValidity(result.join("\n"));
11753            } else if (result) {
11754              validationErrors = [result];
11755              element?.setCustomValidity(result);
11756            }
11757          } else if (isValidatingOnChange) {
11758            clearCustomValidity(element, registeredInputs);
11759            nextState.customError = false;
11760            if (element && element.validationMessage) {
11761              defaultValidationMessage = element.validationMessage;
11762              validationErrors = [element.validationMessage];
11763            } else if ((!element || element.validity.valid) && !nextState.valid) {
11764              nextState.valid = true;
11765            }
11766          }
11767        }
11768        const nextValidityData = {
11769          value,
11770          state: nextState,
11771          error: defaultValidationMessage ?? (Array.isArray(result) ? result[0] : result ?? ""),
11772          errors: validationErrors,
11773          initialValue: validityData.initialValue
11774        };
11775        updateRegisteredFieldValidity(nextValidityData);
11776        setValidityData(nextValidityData);
11777      });
11778      const change = useStableCallback((value) => {
11779        timeout.clear();
11780        const validateOnChange = shouldValidateOnChange();
11781        if (validateOnChange && value !== "" && validationDebounceTime) {
11782          validationCommitIdRef.current += 1;
11783          timeout.start(validationDebounceTime, () => {
11784            commit(value);
11785          });
11786        } else {
11787          commit(value, !validateOnChange);
11788        }
11789      });
11790      const getValidationProps = React52.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled2 ? {
11791        "aria-invalid": true
11792      } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]);
11793      return React52.useMemo(() => ({
11794        getValidationProps,
11795        inputRef,
11796        registeredInputs,
11797        registerInput,
11798        getInputControl,
11799        commit,
11800        change
11801      }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]);
11802    }
11803  
11804    // node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs
11805    function useRegisteredLabelId(idProp, setLabelId) {
11806      const id = useBaseUiId(idProp);
11807      useIsoLayoutEffect(() => {
11808        setLabelId(id);
11809        return () => {
11810          setLabelId((currentId) => currentId === id ? void 0 : currentId);
11811        };
11812      }, [id, setLabelId]);
11813      return id;
11814    }
11815  
11816    // node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs
11817    function useLabel(params = {}) {
11818      const {
11819        id: idProp,
11820        fallbackControlId,
11821        native = false,
11822        setLabelId: setLabelIdProp,
11823        focusControl: focusControlProp
11824      } = params;
11825      const {
11826        controlId: contextControlId,
11827        setLabelId: setContextLabelId
11828      } = useLabelableContext();
11829      const syncLabelId = useStableCallback((nextLabelId) => {
11830        setContextLabelId(nextLabelId);
11831        setLabelIdProp?.(nextLabelId);
11832      });
11833      const id = useRegisteredLabelId(idProp, syncLabelId);
11834      const resolvedControlId = contextControlId ?? fallbackControlId;
11835      function focusControl(event) {
11836        if (focusControlProp) {
11837          focusControlProp(event, resolvedControlId);
11838          return;
11839        }
11840        if (!resolvedControlId) {
11841          return;
11842        }
11843        const controlElement = ownerDocument(event.currentTarget).getElementById(resolvedControlId);
11844        if (isHTMLElement(controlElement)) {
11845          focusElementWithVisible(controlElement);
11846        }
11847      }
11848      function handleInteraction(event) {
11849        const target = getTarget(event.nativeEvent);
11850        if (target?.closest("button,input,select,textarea")) {
11851          return;
11852        }
11853        if (!event.defaultPrevented && event.detail > 1) {
11854          event.preventDefault();
11855        }
11856        if (native) {
11857          return;
11858        }
11859        focusControl(event);
11860      }
11861      return native ? {
11862        id,
11863        htmlFor: resolvedControlId ?? void 0,
11864        onMouseDown: handleInteraction
11865      } : {
11866        id,
11867        onClick: handleInteraction,
11868        onPointerDown(event) {
11869          event.preventDefault();
11870        }
11871      };
11872    }
11873    function focusElementWithVisible(element) {
11874      element.focus({
11875        // Available from Chrome 144+ (January 2026).
11876        // Safari and Firefox already support it.
11877        focusVisible: true
11878      });
11879    }
11880  
11881    // node_modules/@base-ui/react/context-menu/root/ContextMenuRootContext.mjs
11882    var React53 = __toESM(require_react(), 1);
11883    var ContextMenuRootContext = /* @__PURE__ */ React53.createContext(void 0);
11884    if (true) ContextMenuRootContext.displayName = "ContextMenuRootContext";
11885    function useContextMenuRootContext(optional = true) {
11886      const context = React53.useContext(ContextMenuRootContext);
11887      if (context === void 0 && !optional) {
11888        throw new Error(true ? "Base UI: ContextMenuRootContext is missing. ContextMenu parts must be placed within <ContextMenu.Root>." : formatErrorMessage_default(25));
11889      }
11890      return context;
11891    }
11892  
11893    // node_modules/@base-ui/react/menu/index.parts.mjs
11894    var index_parts_exports = {};
11895    __export(index_parts_exports, {
11896      Arrow: () => MenuArrow,
11897      Backdrop: () => MenuBackdrop,
11898      CheckboxItem: () => MenuCheckboxItem,
11899      CheckboxItemIndicator: () => MenuCheckboxItemIndicator,
11900      Group: () => MenuGroup,
11901      GroupLabel: () => MenuGroupLabel,
11902      Handle: () => MenuHandle,
11903      Item: () => MenuItem,
11904      LinkItem: () => MenuLinkItem,
11905      Popup: () => MenuPopup,
11906      Portal: () => MenuPortal,
11907      Positioner: () => MenuPositioner,
11908      RadioGroup: () => MenuRadioGroup,
11909      RadioItem: () => MenuRadioItem,
11910      RadioItemIndicator: () => MenuRadioItemIndicator,
11911      Root: () => MenuRoot,
11912      Separator: () => Separator,
11913      SubmenuRoot: () => MenuSubmenuRoot,
11914      SubmenuTrigger: () => MenuSubmenuTrigger,
11915      Trigger: () => MenuTrigger,
11916      Viewport: () => MenuViewport,
11917      createHandle: () => createMenuHandle
11918    });
11919  
11920    // node_modules/@base-ui/react/menu/arrow/MenuArrow.mjs
11921    var React56 = __toESM(require_react(), 1);
11922  
11923    // node_modules/@base-ui/react/menu/positioner/MenuPositionerContext.mjs
11924    var React54 = __toESM(require_react(), 1);
11925    var MenuPositionerContext = /* @__PURE__ */ React54.createContext(void 0);
11926    if (true) MenuPositionerContext.displayName = "MenuPositionerContext";
11927    function useMenuPositionerContext(optional) {
11928      const context = React54.useContext(MenuPositionerContext);
11929      if (context === void 0 && !optional) {
11930        throw new Error(true ? "Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within <Menu.Positioner>." : formatErrorMessage_default(33));
11931      }
11932      return context;
11933    }
11934  
11935    // node_modules/@base-ui/react/menu/root/MenuRootContext.mjs
11936    var React55 = __toESM(require_react(), 1);
11937    var MenuRootContext = /* @__PURE__ */ React55.createContext(void 0);
11938    if (true) MenuRootContext.displayName = "MenuRootContext";
11939    function useMenuRootContext(optional) {
11940      const context = React55.useContext(MenuRootContext);
11941      if (context === void 0 && !optional) {
11942        throw new Error(true ? "Base UI: MenuRootContext is missing. Menu parts must be placed within <Menu.Root>." : formatErrorMessage_default(36));
11943      }
11944      return context;
11945    }
11946  
11947    // node_modules/@base-ui/react/menu/arrow/MenuArrow.mjs
11948    var MenuArrow = /* @__PURE__ */ React56.forwardRef(function MenuArrow2(componentProps, forwardedRef) {
11949      const {
11950        render: render4,
11951        className,
11952        style,
11953        ...elementProps
11954      } = componentProps;
11955      const {
11956        store
11957      } = useMenuRootContext();
11958      const {
11959        arrowRef,
11960        side,
11961        align,
11962        arrowUncentered,
11963        arrowStyles
11964      } = useMenuPositionerContext();
11965      const open = store.useState("open");
11966      const state = {
11967        open,
11968        side,
11969        align,
11970        uncentered: arrowUncentered
11971      };
11972      return useRenderElement("div", componentProps, {
11973        ref: [arrowRef, forwardedRef],
11974        stateAttributesMapping: popupStateMapping,
11975        state,
11976        props: {
11977          style: arrowStyles,
11978          "aria-hidden": true,
11979          ...elementProps
11980        }
11981      });
11982    });
11983    if (true) MenuArrow.displayName = "MenuArrow";
11984  
11985    // node_modules/@base-ui/react/menu/backdrop/MenuBackdrop.mjs
11986    var React57 = __toESM(require_react(), 1);
11987    var MenuBackdrop = /* @__PURE__ */ React57.forwardRef(function MenuBackdrop2(componentProps, forwardedRef) {
11988      const {
11989        render: render4,
11990        className,
11991        style,
11992        ...elementProps
11993      } = componentProps;
11994      const {
11995        store
11996      } = useMenuRootContext();
11997      const open = store.useState("open");
11998      const mounted = store.useState("mounted");
11999      const transitionStatus = store.useState("transitionStatus");
12000      const lastOpenChangeReason = store.useState("lastOpenChangeReason");
12001      const contextMenuContext = useContextMenuRootContext();
12002      const state = {
12003        open,
12004        transitionStatus
12005      };
12006      return useRenderElement("div", componentProps, {
12007        ref: contextMenuContext?.backdropRef ? [forwardedRef, contextMenuContext.backdropRef] : forwardedRef,
12008        state,
12009        stateAttributesMapping: popupTransitionStateMapping,
12010        props: [{
12011          role: "presentation",
12012          hidden: !mounted,
12013          style: {
12014            pointerEvents: lastOpenChangeReason === reason_parts_exports.triggerHover ? "none" : void 0,
12015            userSelect: "none",
12016            WebkitUserSelect: "none"
12017          }
12018        }, elementProps]
12019      });
12020    });
12021    if (true) MenuBackdrop.displayName = "MenuBackdrop";
12022  
12023    // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItem.mjs
12024    var React61 = __toESM(require_react(), 1);
12025  
12026    // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItemContext.mjs
12027    var React58 = __toESM(require_react(), 1);
12028    var MenuCheckboxItemContext = /* @__PURE__ */ React58.createContext(void 0);
12029    if (true) MenuCheckboxItemContext.displayName = "MenuCheckboxItemContext";
12030    function useMenuCheckboxItemContext() {
12031      const context = React58.useContext(MenuCheckboxItemContext);
12032      if (context === void 0) {
12033        throw new Error(true ? "Base UI: MenuCheckboxItemContext is missing. MenuCheckboxItem parts must be placed within <Menu.CheckboxItem>." : formatErrorMessage_default(30));
12034      }
12035      return context;
12036    }
12037  
12038    // node_modules/@base-ui/react/menu/item/useMenuItem.mjs
12039    var React60 = __toESM(require_react(), 1);
12040  
12041    // node_modules/@base-ui/react/menu/item/useMenuItemCommonProps.mjs
12042    var React59 = __toESM(require_react(), 1);
12043    function useMenuItemCommonProps(params) {
12044      const {
12045        closeOnClick,
12046        highlighted,
12047        id,
12048        nodeId,
12049        store,
12050        typingRef,
12051        itemRef,
12052        itemMetadata
12053      } = params;
12054      const {
12055        events: menuEvents
12056      } = store.useState("floatingTreeRoot");
12057      const open = store.useState("open");
12058      const contextMenuContext = useContextMenuRootContext(true);
12059      const isContextMenu = contextMenuContext !== void 0;
12060      return React59.useMemo(() => ({
12061        id,
12062        role: "menuitem",
12063        tabIndex: open && highlighted ? 0 : -1,
12064        onKeyDown(event) {
12065          if (event.key === " " && typingRef?.current) {
12066            event.preventDefault();
12067          }
12068        },
12069        onMouseMove(event) {
12070          if (!nodeId) {
12071            return;
12072          }
12073          menuEvents.emit("itemhover", {
12074            nodeId,
12075            target: event.currentTarget
12076          });
12077        },
12078        onClick(event) {
12079          if (closeOnClick) {
12080            menuEvents.emit("close", {
12081              domEvent: event,
12082              reason: reason_parts_exports.itemPress
12083            });
12084          }
12085        },
12086        onMouseUp(event) {
12087          if (contextMenuContext) {
12088            const initialCursorPoint = contextMenuContext.initialCursorPointRef.current;
12089            contextMenuContext.initialCursorPointRef.current = null;
12090            if (isContextMenu && initialCursorPoint && Math.abs(event.clientX - initialCursorPoint.x) <= 1 && Math.abs(event.clientY - initialCursorPoint.y) <= 1) {
12091              return;
12092            }
12093            if (isContextMenu && !parts_exports.os.mac && event.button === 2) {
12094              return;
12095            }
12096          }
12097          if (itemRef.current && store.context.allowMouseUpTriggerRef.current && (!isContextMenu || event.button === 2)) {
12098            if (itemMetadata.type === "regular-item") {
12099              dispatchClickWithModifiers(itemRef.current, event, {
12100                detail: 1
12101              });
12102            }
12103          }
12104        }
12105      }), [closeOnClick, highlighted, id, menuEvents, nodeId, open, store, typingRef, itemRef, contextMenuContext, isContextMenu, itemMetadata]);
12106    }
12107  
12108    // node_modules/@base-ui/react/menu/item/useMenuItem.mjs
12109    var REGULAR_ITEM = {
12110      type: "regular-item"
12111    };
12112    function useMenuItem(params) {
12113      const {
12114        closeOnClick,
12115        disabled: disabled2,
12116        highlighted,
12117        id,
12118        store,
12119        typingRef = store.context.typingRef,
12120        nativeButton,
12121        itemMetadata,
12122        nodeId
12123      } = params;
12124      const itemRef = React60.useRef(null);
12125      const {
12126        getButtonProps,
12127        buttonRef
12128      } = useButton({
12129        disabled: disabled2,
12130        focusableWhenDisabled: true,
12131        native: nativeButton,
12132        composite: true
12133      });
12134      const commonProps = useMenuItemCommonProps({
12135        closeOnClick,
12136        highlighted,
12137        id,
12138        nodeId,
12139        store,
12140        typingRef,
12141        itemRef,
12142        itemMetadata
12143      });
12144      const getItemProps = React60.useCallback((externalProps) => {
12145        return mergeProps(commonProps, {
12146          onMouseEnter() {
12147            if (itemMetadata.type !== "submenu-trigger") {
12148              return;
12149            }
12150            itemMetadata.setActive();
12151          }
12152        }, externalProps, getButtonProps);
12153      }, [commonProps, getButtonProps, itemMetadata]);
12154      const mergedRef = useMergedRefs(itemRef, buttonRef);
12155      return React60.useMemo(() => ({
12156        getItemProps,
12157        itemRef: mergedRef
12158      }), [getItemProps, mergedRef]);
12159    }
12160  
12161    // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItemDataAttributes.mjs
12162    var MenuCheckboxItemDataAttributes = /* @__PURE__ */ (function(MenuCheckboxItemDataAttributes2) {
12163      MenuCheckboxItemDataAttributes2["checked"] = "data-checked";
12164      MenuCheckboxItemDataAttributes2["unchecked"] = "data-unchecked";
12165      MenuCheckboxItemDataAttributes2["disabled"] = "data-disabled";
12166      MenuCheckboxItemDataAttributes2["highlighted"] = "data-highlighted";
12167      return MenuCheckboxItemDataAttributes2;
12168    })({});
12169  
12170    // node_modules/@base-ui/react/menu/utils/stateAttributesMapping.mjs
12171    var itemMapping = {
12172      checked(value) {
12173        if (value) {
12174          return {
12175            [MenuCheckboxItemDataAttributes.checked]: ""
12176          };
12177        }
12178        return {
12179          [MenuCheckboxItemDataAttributes.unchecked]: ""
12180        };
12181      },
12182      ...transitionStatusMapping
12183    };
12184  
12185    // node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItem.mjs
12186    var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
12187    var MenuCheckboxItem = /* @__PURE__ */ React61.forwardRef(function MenuCheckboxItem2(componentProps, forwardedRef) {
12188      const {
12189        render: render4,
12190        className,
12191        id: idProp,
12192        label,
12193        nativeButton = false,
12194        disabled: disabledProp = false,
12195        closeOnClick = false,
12196        checked: checkedProp,
12197        defaultChecked,
12198        onCheckedChange,
12199        style,
12200        ...elementProps
12201      } = componentProps;
12202      const listItem = useCompositeListItem({
12203        guess: true,
12204        label
12205      });
12206      const menuPositionerContext = useMenuPositionerContext(true);
12207      const id = useBaseUiId(idProp);
12208      const {
12209        store
12210      } = useMenuRootContext();
12211      const rootDisabled = store.useState("disabled");
12212      const disabled2 = disabledProp || rootDisabled;
12213      const highlighted = store.useState("isActive", listItem.index);
12214      const itemProps = store.useState("itemProps");
12215      const [checked, setChecked] = useControlled({
12216        controlled: checkedProp,
12217        default: defaultChecked ?? false,
12218        name: "MenuCheckboxItem",
12219        state: "checked"
12220      });
12221      const {
12222        getItemProps,
12223        itemRef
12224      } = useMenuItem({
12225        closeOnClick,
12226        disabled: disabled2,
12227        highlighted,
12228        id,
12229        store,
12230        nativeButton,
12231        nodeId: menuPositionerContext?.context.nodeId,
12232        itemMetadata: REGULAR_ITEM
12233      });
12234      const state = React61.useMemo(() => ({
12235        disabled: disabled2,
12236        highlighted,
12237        checked
12238      }), [disabled2, highlighted, checked]);
12239      function handleClick(event) {
12240        const details = createChangeEventDetails(reason_parts_exports.itemPress, event.nativeEvent, void 0, {
12241          preventUnmountOnClose: NOOP
12242        });
12243        onCheckedChange?.(!checked, details);
12244        if (details.isCanceled) {
12245          return;
12246        }
12247        setChecked((currentlyChecked) => !currentlyChecked);
12248      }
12249      const element = useRenderElement("div", componentProps, {
12250        state,
12251        stateAttributesMapping: itemMapping,
12252        props: [itemProps, {
12253          role: "menuitemcheckbox",
12254          "aria-checked": checked,
12255          onClick: handleClick
12256        }, elementProps, getItemProps],
12257        ref: [itemRef, forwardedRef, listItem.ref]
12258      });
12259      return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(MenuCheckboxItemContext.Provider, {
12260        value: state,
12261        children: element
12262      });
12263    });
12264    if (true) MenuCheckboxItem.displayName = "MenuCheckboxItem";
12265  
12266    // node_modules/@base-ui/react/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.mjs
12267    var React62 = __toESM(require_react(), 1);
12268    var MenuCheckboxItemIndicator = /* @__PURE__ */ React62.forwardRef(function MenuCheckboxItemIndicator2(componentProps, forwardedRef) {
12269      const {
12270        render: render4,
12271        className,
12272        style,
12273        keepMounted = false,
12274        ...elementProps
12275      } = componentProps;
12276      const item = useMenuCheckboxItemContext();
12277      const indicatorRef = React62.useRef(null);
12278      const {
12279        transitionStatus,
12280        mounted,
12281        setMounted
12282      } = useTransitionStatus(item.checked);
12283      useOpenChangeComplete({
12284        open: item.checked,
12285        ref: indicatorRef,
12286        onComplete() {
12287          if (!item.checked) {
12288            setMounted(false);
12289          }
12290        }
12291      });
12292      const state = {
12293        checked: item.checked,
12294        disabled: item.disabled,
12295        highlighted: item.highlighted,
12296        transitionStatus
12297      };
12298      const element = useRenderElement("span", componentProps, {
12299        state,
12300        ref: [forwardedRef, indicatorRef],
12301        stateAttributesMapping: itemMapping,
12302        props: {
12303          "aria-hidden": true,
12304          ...elementProps
12305        },
12306        enabled: keepMounted || mounted
12307      });
12308      return element;
12309    });
12310    if (true) MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator";
12311  
12312    // node_modules/@base-ui/react/menu/group/MenuGroup.mjs
12313    var React64 = __toESM(require_react(), 1);
12314  
12315    // node_modules/@base-ui/react/menu/group/MenuGroupContext.mjs
12316    var React63 = __toESM(require_react(), 1);
12317    var MenuGroupContext = /* @__PURE__ */ React63.createContext(void 0);
12318    if (true) MenuGroupContext.displayName = "MenuGroupContext";
12319    function useMenuGroupRootContext() {
12320      const context = React63.useContext(MenuGroupContext);
12321      if (context === void 0) {
12322        throw new Error(true ? "Base UI: MenuGroupContext is missing. Menu group parts must be used within <Menu.Group> or <Menu.RadioGroup>." : formatErrorMessage_default(31));
12323      }
12324      return context;
12325    }
12326  
12327    // node_modules/@base-ui/react/menu/group/MenuGroup.mjs
12328    var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
12329    var MenuGroup = /* @__PURE__ */ React64.forwardRef(function MenuGroup2(componentProps, forwardedRef) {
12330      const {
12331        render: render4,
12332        className,
12333        style,
12334        ...elementProps
12335      } = componentProps;
12336      const [labelId, setLabelId] = React64.useState(void 0);
12337      const element = useRenderElement("div", componentProps, {
12338        ref: forwardedRef,
12339        props: {
12340          role: "group",
12341          "aria-labelledby": labelId,
12342          ...elementProps
12343        }
12344      });
12345      return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(MenuGroupContext.Provider, {
12346        value: setLabelId,
12347        children: element
12348      });
12349    });
12350    if (true) MenuGroup.displayName = "MenuGroup";
12351  
12352    // node_modules/@base-ui/react/menu/group-label/MenuGroupLabel.mjs
12353    var React65 = __toESM(require_react(), 1);
12354    var MenuGroupLabel = /* @__PURE__ */ React65.forwardRef(function MenuGroupLabel2(componentProps, forwardedRef) {
12355      const {
12356        render: render4,
12357        className,
12358        style,
12359        id: idProp,
12360        ...elementProps
12361      } = componentProps;
12362      const id = useBaseUiId(idProp);
12363      const setLabelId = useMenuGroupRootContext();
12364      useIsoLayoutEffect(() => {
12365        setLabelId(id);
12366        return () => {
12367          setLabelId((currentId) => currentId === id ? void 0 : currentId);
12368        };
12369      }, [setLabelId, id]);
12370      return useRenderElement("div", componentProps, {
12371        ref: forwardedRef,
12372        props: {
12373          id,
12374          role: "presentation",
12375          ...elementProps
12376        }
12377      });
12378    });
12379    if (true) MenuGroupLabel.displayName = "MenuGroupLabel";
12380  
12381    // node_modules/@base-ui/react/menu/item/MenuItem.mjs
12382    var React66 = __toESM(require_react(), 1);
12383    var MenuItem = /* @__PURE__ */ React66.forwardRef(function MenuItem2(componentProps, forwardedRef) {
12384      const {
12385        render: render4,
12386        className,
12387        id: idProp,
12388        label,
12389        nativeButton = false,
12390        disabled: disabledProp = false,
12391        closeOnClick = true,
12392        style,
12393        ...elementProps
12394      } = componentProps;
12395      const listItem = useCompositeListItem({
12396        guess: true,
12397        label
12398      });
12399      const menuPositionerContext = useMenuPositionerContext(true);
12400      const id = useBaseUiId(idProp);
12401      const {
12402        store
12403      } = useMenuRootContext();
12404      const rootDisabled = store.useState("disabled");
12405      const disabled2 = disabledProp || rootDisabled;
12406      const highlighted = store.useState("isActive", listItem.index);
12407      const itemProps = store.useState("itemProps");
12408      const {
12409        getItemProps,
12410        itemRef
12411      } = useMenuItem({
12412        closeOnClick,
12413        disabled: disabled2,
12414        highlighted,
12415        id,
12416        store,
12417        nativeButton,
12418        nodeId: menuPositionerContext?.context.nodeId,
12419        itemMetadata: REGULAR_ITEM
12420      });
12421      const state = {
12422        disabled: disabled2,
12423        highlighted
12424      };
12425      return useRenderElement("div", componentProps, {
12426        state,
12427        props: [itemProps, elementProps, getItemProps],
12428        ref: [itemRef, forwardedRef, listItem.ref]
12429      });
12430    });
12431    if (true) MenuItem.displayName = "MenuItem";
12432  
12433    // node_modules/@base-ui/react/menu/link-item/MenuLinkItem.mjs
12434    var React67 = __toESM(require_react(), 1);
12435    var MenuLinkItem = /* @__PURE__ */ React67.forwardRef(function MenuLinkItem2(componentProps, forwardedRef) {
12436      const {
12437        render: render4,
12438        className,
12439        id: idProp,
12440        label,
12441        closeOnClick = false,
12442        style,
12443        ...elementProps
12444      } = componentProps;
12445      const linkRef = React67.useRef(null);
12446      const listItem = useCompositeListItem({
12447        guess: true,
12448        label
12449      });
12450      const menuPositionerContext = useMenuPositionerContext(true);
12451      const nodeId = menuPositionerContext?.context.nodeId;
12452      const id = useBaseUiId(idProp);
12453      const {
12454        store
12455      } = useMenuRootContext();
12456      const highlighted = store.useState("isActive", listItem.index);
12457      const itemProps = store.useState("itemProps");
12458      const typingRef = store.context.typingRef;
12459      const {
12460        getButtonProps,
12461        buttonRef
12462      } = useButton({
12463        native: false,
12464        composite: true
12465      });
12466      const commonProps = useMenuItemCommonProps({
12467        closeOnClick,
12468        highlighted,
12469        id,
12470        nodeId,
12471        store,
12472        typingRef,
12473        itemRef: linkRef,
12474        itemMetadata: REGULAR_ITEM
12475      });
12476      function getItemProps(externalProps) {
12477        return mergeProps(commonProps, externalProps, getButtonProps);
12478      }
12479      const state = {
12480        highlighted
12481      };
12482      return useRenderElement("a", componentProps, {
12483        state,
12484        props: [itemProps, elementProps, getItemProps],
12485        ref: [linkRef, buttonRef, forwardedRef, listItem.ref]
12486      });
12487    });
12488    if (true) MenuLinkItem.displayName = "MenuLinkItem";
12489  
12490    // node_modules/@base-ui/react/menu/popup/MenuPopup.mjs
12491    var React69 = __toESM(require_react(), 1);
12492  
12493    // node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs
12494    var React68 = __toESM(require_react(), 1);
12495    var ToolbarRootContext = /* @__PURE__ */ React68.createContext(void 0);
12496    if (true) ToolbarRootContext.displayName = "ToolbarRootContext";
12497    function useToolbarRootContext(optional) {
12498      const context = React68.useContext(ToolbarRootContext);
12499      if (context === void 0 && !optional) {
12500        throw new Error(true ? "Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>." : formatErrorMessage_default(69));
12501      }
12502      return context;
12503    }
12504  
12505    // node_modules/@base-ui/react/menu/popup/MenuPopup.mjs
12506    var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
12507    var MenuPopup = /* @__PURE__ */ React69.forwardRef(function MenuPopup2(componentProps, forwardedRef) {
12508      const {
12509        render: render4,
12510        className,
12511        style,
12512        finalFocus,
12513        ...elementProps
12514      } = componentProps;
12515      const {
12516        store
12517      } = useMenuRootContext();
12518      const {
12519        side,
12520        align
12521      } = useMenuPositionerContext();
12522      const insideToolbar = useToolbarRootContext(true) != null;
12523      const open = store.useState("open");
12524      const transitionStatus = store.useState("transitionStatus");
12525      const popupProps = store.useState("popupProps");
12526      const mounted = store.useState("mounted");
12527      const instantType = store.useState("instantType");
12528      const activeTriggerElement = store.useState("activeTriggerElement");
12529      const parent = store.useState("parent");
12530      const lastOpenChangeReason = store.useState("lastOpenChangeReason");
12531      const rootId = store.useState("rootId");
12532      const floatingContext = store.useState("floatingRootContext");
12533      const floatingTreeRoot = store.useState("floatingTreeRoot");
12534      const closeDelay = store.useState("closeDelay");
12535      const hoverEnabled = store.useState("hoverEnabled");
12536      const disabled2 = store.useState("disabled");
12537      const openMethod = store.useState("openMethod");
12538      const isContextMenu = parent.type === "context-menu";
12539      useOpenChangeComplete({
12540        open,
12541        ref: store.context.popupRef,
12542        onComplete() {
12543          if (open) {
12544            store.context.onOpenChangeComplete?.(true);
12545          }
12546        }
12547      });
12548      React69.useEffect(() => {
12549        function handleClose(event) {
12550          store.setOpen(false, createChangeEventDetails(event.reason, event.domEvent));
12551        }
12552        floatingTreeRoot.events.on("close", handleClose);
12553        return () => {
12554          floatingTreeRoot.events.off("close", handleClose);
12555        };
12556      }, [floatingTreeRoot.events, store]);
12557      useHoverFloatingInteraction(floatingContext, {
12558        enabled: hoverEnabled && !disabled2 && !isContextMenu && parent.type !== "menubar",
12559        closeDelay
12560      });
12561      const setPopupElement = store.useStateSetter("popupElement");
12562      const state = {
12563        transitionStatus,
12564        side,
12565        align,
12566        open,
12567        nested: parent.type === "menu",
12568        instant: instantType
12569      };
12570      const element = useRenderElement("div", componentProps, {
12571        state,
12572        ref: [forwardedRef, store.context.popupRef, setPopupElement],
12573        stateAttributesMapping: popupTransitionStateMapping,
12574        props: [popupProps, {
12575          onKeyDown(event) {
12576            if (insideToolbar && COMPOSITE_KEYS.has(event.key)) {
12577              event.stopPropagation();
12578            }
12579          }
12580        }, getDisabledMountTransitionStyles(transitionStatus), elementProps, {
12581          "data-rootownerid": rootId
12582        }]
12583      });
12584      let returnFocus = parent.type === void 0 || isContextMenu;
12585      if (activeTriggerElement || parent.type === "menubar" && lastOpenChangeReason !== reason_parts_exports.outsidePress) {
12586        returnFocus = true;
12587      }
12588      return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(FloatingFocusManager, {
12589        context: floatingContext,
12590        openInteractionType: openMethod,
12591        modal: isContextMenu,
12592        disabled: !mounted,
12593        returnFocus: finalFocus === void 0 ? returnFocus : finalFocus,
12594        initialFocus: parent.type !== "menu",
12595        restoreFocus: true,
12596        externalTree: parent.type !== "menubar" ? floatingTreeRoot : void 0,
12597        previousFocusableElement: activeTriggerElement,
12598        nextFocusableElement: parent.type === void 0 ? store.context.triggerFocusTargetRef : void 0,
12599        beforeContentFocusGuardRef: parent.type === void 0 ? store.context.beforeContentFocusGuardRef : void 0,
12600        children: element
12601      });
12602    });
12603    if (true) MenuPopup.displayName = "MenuPopup";
12604  
12605    // node_modules/@base-ui/react/menu/portal/MenuPortal.mjs
12606    var React71 = __toESM(require_react(), 1);
12607  
12608    // node_modules/@base-ui/react/menu/portal/MenuPortalContext.mjs
12609    var React70 = __toESM(require_react(), 1);
12610    var MenuPortalContext = /* @__PURE__ */ React70.createContext(void 0);
12611    if (true) MenuPortalContext.displayName = "MenuPortalContext";
12612    function useMenuPortalContext() {
12613      const value = React70.useContext(MenuPortalContext);
12614      if (value === void 0) {
12615        throw new Error(true ? "Base UI: <Menu.Portal> is missing." : formatErrorMessage_default(32));
12616      }
12617      return value;
12618    }
12619  
12620    // node_modules/@base-ui/react/menu/portal/MenuPortal.mjs
12621    var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
12622    var MenuPortal = /* @__PURE__ */ React71.forwardRef(function MenuPortal2(props, forwardedRef) {
12623      const {
12624        keepMounted = false,
12625        ...portalProps
12626      } = props;
12627      const {
12628        store
12629      } = useMenuRootContext();
12630      const mounted = store.useState("mounted");
12631      const shouldRender = mounted || keepMounted;
12632      if (!shouldRender) {
12633        return null;
12634      }
12635      return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(MenuPortalContext.Provider, {
12636        value: keepMounted,
12637        children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(FloatingPortal, {
12638          ref: forwardedRef,
12639          ...portalProps
12640        })
12641      });
12642    });
12643    if (true) MenuPortal.displayName = "MenuPortal";
12644  
12645    // node_modules/@base-ui/react/menu/positioner/MenuPositioner.mjs
12646    var React72 = __toESM(require_react(), 1);
12647    var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
12648    var MenuPositioner = /* @__PURE__ */ React72.forwardRef(function MenuPositioner2(componentProps, forwardedRef) {
12649      const {
12650        anchor: anchorProp,
12651        positionMethod: positionMethodProp = "absolute",
12652        className,
12653        render: render4,
12654        side,
12655        align: alignProp,
12656        sideOffset: sideOffsetProp = 0,
12657        alignOffset: alignOffsetProp = 0,
12658        collisionBoundary = "clipping-ancestors",
12659        collisionPadding = 5,
12660        arrowPadding = 5,
12661        sticky = false,
12662        disableAnchorTracking = false,
12663        collisionAvoidance: collisionAvoidanceProp = DROPDOWN_COLLISION_AVOIDANCE,
12664        style,
12665        ...elementProps
12666      } = componentProps;
12667      const {
12668        store
12669      } = useMenuRootContext();
12670      const keepMounted = useMenuPortalContext();
12671      const contextMenuContext = useContextMenuRootContext(true);
12672      const parent = store.useState("parent");
12673      const floatingRootContext = store.useState("floatingRootContext");
12674      const floatingTreeRoot = store.useState("floatingTreeRoot");
12675      const mounted = store.useState("mounted");
12676      const open = store.useState("open");
12677      const modal = store.useState("modal");
12678      const openMethod = store.useState("openMethod");
12679      const triggerElement = store.useState("activeTriggerElement");
12680      const transitionStatus = store.useState("transitionStatus");
12681      const positionerElement = store.useState("positionerElement");
12682      const instantType = store.useState("instantType");
12683      const adaptiveOrigin2 = store.useState("adaptiveOrigin");
12684      const lastOpenChangeReason = store.useState("lastOpenChangeReason");
12685      const floatingNodeId = store.useState("floatingNodeId");
12686      const floatingParentNodeId = store.useState("floatingParentNodeId");
12687      const domReference = floatingRootContext.useState("domReferenceElement");
12688      const previousTriggerRef = React72.useRef(null);
12689      const runOnceAnimationsFinish = useAnimationsFinished(positionerElement);
12690      let anchor = anchorProp;
12691      let sideOffset = sideOffsetProp;
12692      let alignOffset = alignOffsetProp;
12693      let align = alignProp;
12694      let collisionAvoidance = collisionAvoidanceProp;
12695      if (parent.type === "context-menu") {
12696        anchor = anchorProp ?? parent.context?.anchor;
12697        align = align ?? "start";
12698        if (!side && align !== "center") {
12699          alignOffset = componentProps.alignOffset ?? 2;
12700          sideOffset = componentProps.sideOffset ?? -5;
12701        }
12702      }
12703      let computedSide = side;
12704      let computedAlign = align;
12705      if (parent.type === "menu") {
12706        computedSide = computedSide ?? "inline-end";
12707        computedAlign = computedAlign ?? "start";
12708        collisionAvoidance = componentProps.collisionAvoidance ?? POPUP_COLLISION_AVOIDANCE;
12709      } else if (parent.type === "menubar") {
12710        computedSide = computedSide ?? (parent.context.orientation === "vertical" ? "inline-end" : "bottom");
12711        computedAlign = computedAlign ?? "start";
12712      }
12713      const contextMenu = parent.type === "context-menu";
12714      const positioner = useAnchorPositioning({
12715        anchor,
12716        floatingRootContext,
12717        positionMethod: contextMenuContext ? "fixed" : positionMethodProp,
12718        mounted,
12719        side: computedSide,
12720        sideOffset,
12721        align: computedAlign,
12722        alignOffset,
12723        arrowPadding: contextMenu ? 0 : arrowPadding,
12724        collisionBoundary,
12725        collisionPadding,
12726        sticky,
12727        nodeId: floatingNodeId,
12728        keepMounted,
12729        disableAnchorTracking,
12730        collisionAvoidance,
12731        shift: contextMenu ? {
12732          crossAxis: !("side" in collisionAvoidance && collisionAvoidance.side === "flip"),
12733          rootBoundary: "layoutViewport"
12734        } : void 0,
12735        externalTree: floatingTreeRoot,
12736        adaptiveOrigin: adaptiveOrigin2
12737      });
12738      React72.useEffect(() => {
12739        function onMenuOpenChange(details) {
12740          if (details.open) {
12741            if (details.parentNodeId === floatingNodeId) {
12742              store.set("hoverEnabled", false);
12743            }
12744            if (details.nodeId !== floatingNodeId && details.parentNodeId === store.select("floatingParentNodeId")) {
12745              store.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen));
12746            }
12747          }
12748        }
12749        floatingTreeRoot.events.on("menuopenchange", onMenuOpenChange);
12750        return () => {
12751          floatingTreeRoot.events.off("menuopenchange", onMenuOpenChange);
12752        };
12753      }, [store, floatingTreeRoot.events, floatingNodeId]);
12754      React72.useEffect(() => {
12755        if (store.select("floatingParentNodeId") == null) {
12756          return void 0;
12757        }
12758        function onParentClose(details) {
12759          if (details.open || details.nodeId !== store.select("floatingParentNodeId")) {
12760            return;
12761          }
12762          const reason = details.reason ?? reason_parts_exports.siblingOpen;
12763          store.setOpen(false, createChangeEventDetails(reason));
12764        }
12765        floatingTreeRoot.events.on("menuopenchange", onParentClose);
12766        return () => {
12767          floatingTreeRoot.events.off("menuopenchange", onParentClose);
12768        };
12769      }, [floatingTreeRoot.events, store]);
12770      const closeTimeout = useTimeout();
12771      React72.useEffect(() => {
12772        if (!open) {
12773          closeTimeout.clear();
12774        }
12775      }, [open, closeTimeout]);
12776      React72.useEffect(() => {
12777        function onItemHover(event) {
12778          if (!open || event.nodeId !== store.select("floatingParentNodeId")) {
12779            return;
12780          }
12781          if (event.target && triggerElement && triggerElement !== event.target) {
12782            const delay = store.select("closeDelay");
12783            if (delay > 0) {
12784              if (!closeTimeout.isStarted()) {
12785                closeTimeout.start(delay, () => {
12786                  store.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen));
12787                });
12788              }
12789            } else {
12790              store.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen));
12791            }
12792          } else {
12793            closeTimeout.clear();
12794          }
12795        }
12796        floatingTreeRoot.events.on("itemhover", onItemHover);
12797        return () => {
12798          floatingTreeRoot.events.off("itemhover", onItemHover);
12799        };
12800      }, [floatingTreeRoot.events, open, triggerElement, store, closeTimeout]);
12801      React72.useEffect(() => {
12802        const eventDetails = {
12803          open,
12804          nodeId: floatingNodeId,
12805          parentNodeId: floatingParentNodeId,
12806          reason: store.select("lastOpenChangeReason")
12807        };
12808        floatingTreeRoot.events.emit("menuopenchange", eventDetails);
12809      }, [floatingTreeRoot.events, open, store, floatingNodeId, floatingParentNodeId]);
12810      useIsoLayoutEffect(() => {
12811        const currentTrigger = domReference;
12812        const previousTrigger = previousTriggerRef.current;
12813        if (currentTrigger) {
12814          previousTriggerRef.current = currentTrigger;
12815        }
12816        if (previousTrigger && currentTrigger && currentTrigger !== previousTrigger) {
12817          store.set("instantType", void 0);
12818          const abortController = new AbortController();
12819          runOnceAnimationsFinish(() => {
12820            store.set("instantType", "trigger-change");
12821          }, abortController.signal);
12822          return () => {
12823            abortController.abort();
12824          };
12825        }
12826        return void 0;
12827      }, [domReference, runOnceAnimationsFinish, store]);
12828      const state = {
12829        open,
12830        side: positioner.side,
12831        align: positioner.align,
12832        anchorHidden: positioner.anchorHidden,
12833        nested: parent.type === "menu",
12834        instant: instantType
12835      };
12836      const menubarModal = parent.type === "menubar" && parent.context.modal;
12837      const popupModal = modal && lastOpenChangeReason !== reason_parts_exports.triggerHover;
12838      useAnchoredPopupScrollLock(open && (menubarModal || popupModal), openMethod === "touch", positionerElement, triggerElement);
12839      const element = usePositioner(componentProps, state, {
12840        styles: positioner.positionerStyles,
12841        transitionStatus,
12842        props: elementProps,
12843        refs: [forwardedRef, store.useStateSetter("positionerElement")],
12844        hidden: !mounted,
12845        inert: !open
12846      });
12847      const shouldRenderBackdrop = mounted && parent.type !== "menu" && (parent.type !== "menubar" && modal && lastOpenChangeReason !== reason_parts_exports.triggerHover || parent.type === "menubar" && parent.context.modal);
12848      let backdropCutout = null;
12849      if (parent.type === "menubar") {
12850        backdropCutout = parent.context.contentElement;
12851      } else if (parent.type === void 0) {
12852        backdropCutout = triggerElement;
12853      }
12854      return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(MenuPositionerContext.Provider, {
12855        value: positioner,
12856        children: [shouldRenderBackdrop && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(InternalBackdrop, {
12857          ref: parent.type === "context-menu" || parent.type === "nested-context-menu" ? parent.context.internalBackdropRef : null,
12858          inert: inertValue(!open),
12859          cutout: backdropCutout
12860        }), /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FloatingNode, {
12861          id: floatingNodeId,
12862          children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CompositeList, {
12863            elementsRef: store.context.itemDomElements,
12864            labelsRef: store.context.itemLabels,
12865            children: element
12866          })
12867        })]
12868      });
12869    });
12870    if (true) MenuPositioner.displayName = "MenuPositioner";
12871  
12872    // node_modules/@base-ui/react/menu/radio-group/MenuRadioGroup.mjs
12873    var React74 = __toESM(require_react(), 1);
12874  
12875    // node_modules/@base-ui/react/menu/radio-group/MenuRadioGroupContext.mjs
12876    var React73 = __toESM(require_react(), 1);
12877    var MenuRadioGroupContext = /* @__PURE__ */ React73.createContext(void 0);
12878    if (true) MenuRadioGroupContext.displayName = "MenuRadioGroupContext";
12879    function useMenuRadioGroupContext() {
12880      const context = React73.useContext(MenuRadioGroupContext);
12881      if (context === void 0) {
12882        throw new Error(true ? "Base UI: MenuRadioGroupContext is missing. MenuRadioGroup parts must be placed within <Menu.RadioGroup>." : formatErrorMessage_default(34));
12883      }
12884      return context;
12885    }
12886  
12887    // node_modules/@base-ui/react/menu/radio-group/MenuRadioGroup.mjs
12888    var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);
12889    var MenuRadioGroup = /* @__PURE__ */ React74.memo(/* @__PURE__ */ React74.forwardRef(function MenuRadioGroup2(componentProps, forwardedRef) {
12890      const {
12891        render: render4,
12892        className,
12893        value: valueProp,
12894        defaultValue: defaultValue2,
12895        onValueChange: onValueChangeProp,
12896        disabled: disabled2 = false,
12897        style,
12898        "aria-labelledby": ariaLabelledByProp,
12899        ...elementProps
12900      } = componentProps;
12901      const [labelId, setLabelId] = React74.useState(void 0);
12902      const [value, setValueUnwrapped] = useControlled({
12903        controlled: valueProp,
12904        default: defaultValue2,
12905        name: "MenuRadioGroup"
12906      });
12907      const setValue = useStableCallback((newValue, eventDetails) => {
12908        onValueChangeProp?.(newValue, eventDetails);
12909        if (eventDetails.isCanceled) {
12910          return;
12911        }
12912        setValueUnwrapped(newValue);
12913      });
12914      const state = {
12915        disabled: disabled2
12916      };
12917      const element = useRenderElement("div", componentProps, {
12918        state,
12919        ref: forwardedRef,
12920        props: {
12921          role: "group",
12922          "aria-labelledby": ariaLabelledByProp ?? labelId,
12923          "aria-disabled": disabled2 || void 0,
12924          ...elementProps
12925        }
12926      });
12927      const context = React74.useMemo(() => ({
12928        value,
12929        setValue,
12930        disabled: disabled2
12931      }), [value, setValue, disabled2]);
12932      return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(MenuGroupContext.Provider, {
12933        value: setLabelId,
12934        children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(MenuRadioGroupContext.Provider, {
12935          value: context,
12936          children: element
12937        })
12938      });
12939    }));
12940    if (true) MenuRadioGroup.displayName = "MenuRadioGroup";
12941  
12942    // node_modules/@base-ui/react/menu/radio-item/MenuRadioItem.mjs
12943    var React76 = __toESM(require_react(), 1);
12944  
12945    // node_modules/@base-ui/react/menu/radio-item/MenuRadioItemContext.mjs
12946    var React75 = __toESM(require_react(), 1);
12947    var MenuRadioItemContext = /* @__PURE__ */ React75.createContext(void 0);
12948    if (true) MenuRadioItemContext.displayName = "MenuRadioItemContext";
12949    function useMenuRadioItemContext() {
12950      const context = React75.useContext(MenuRadioItemContext);
12951      if (context === void 0) {
12952        throw new Error(true ? "Base UI: MenuRadioItemContext is missing. MenuRadioItem parts must be placed within <Menu.RadioItem>." : formatErrorMessage_default(35));
12953      }
12954      return context;
12955    }
12956  
12957    // node_modules/@base-ui/react/menu/radio-item/MenuRadioItem.mjs
12958    var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
12959    var MenuRadioItem = /* @__PURE__ */ React76.forwardRef(function MenuRadioItem2(componentProps, forwardedRef) {
12960      const {
12961        render: render4,
12962        className,
12963        id: idProp,
12964        label,
12965        nativeButton = false,
12966        disabled: disabledProp = false,
12967        closeOnClick = false,
12968        value,
12969        style,
12970        ...elementProps
12971      } = componentProps;
12972      const listItem = useCompositeListItem({
12973        guess: true,
12974        label
12975      });
12976      const menuPositionerContext = useMenuPositionerContext(true);
12977      const id = useBaseUiId(idProp);
12978      const {
12979        store
12980      } = useMenuRootContext();
12981      const highlighted = store.useState("isActive", listItem.index);
12982      const itemProps = store.useState("itemProps");
12983      const {
12984        value: selectedValue,
12985        setValue: setSelectedValue,
12986        disabled: groupDisabled
12987      } = useMenuRadioGroupContext();
12988      const rootDisabled = store.useState("disabled");
12989      const disabled2 = disabledProp || groupDisabled || rootDisabled;
12990      const checked = selectedValue === value;
12991      const {
12992        getItemProps,
12993        itemRef
12994      } = useMenuItem({
12995        closeOnClick,
12996        disabled: disabled2,
12997        highlighted,
12998        id,
12999        store,
13000        nativeButton,
13001        nodeId: menuPositionerContext?.context.nodeId,
13002        itemMetadata: REGULAR_ITEM
13003      });
13004      const state = React76.useMemo(() => ({
13005        disabled: disabled2,
13006        highlighted,
13007        checked
13008      }), [disabled2, highlighted, checked]);
13009      function handleClick(event) {
13010        const details = createChangeEventDetails(reason_parts_exports.itemPress, event.nativeEvent, void 0, {
13011          preventUnmountOnClose: NOOP
13012        });
13013        setSelectedValue(value, details);
13014      }
13015      const element = useRenderElement("div", componentProps, {
13016        state,
13017        stateAttributesMapping: itemMapping,
13018        props: [itemProps, {
13019          role: "menuitemradio",
13020          "aria-checked": checked,
13021          onClick: handleClick
13022        }, elementProps, getItemProps],
13023        ref: [itemRef, forwardedRef, listItem.ref]
13024      });
13025      return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(MenuRadioItemContext.Provider, {
13026        value: state,
13027        children: element
13028      });
13029    });
13030    if (true) MenuRadioItem.displayName = "MenuRadioItem";
13031  
13032    // node_modules/@base-ui/react/menu/radio-item-indicator/MenuRadioItemIndicator.mjs
13033    var React77 = __toESM(require_react(), 1);
13034    var MenuRadioItemIndicator = /* @__PURE__ */ React77.forwardRef(function MenuRadioItemIndicator2(componentProps, forwardedRef) {
13035      const {
13036        render: render4,
13037        className,
13038        style,
13039        keepMounted = false,
13040        ...elementProps
13041      } = componentProps;
13042      const item = useMenuRadioItemContext();
13043      const indicatorRef = React77.useRef(null);
13044      const {
13045        transitionStatus,
13046        mounted,
13047        setMounted
13048      } = useTransitionStatus(item.checked);
13049      useOpenChangeComplete({
13050        open: item.checked,
13051        ref: indicatorRef,
13052        onComplete() {
13053          if (!item.checked) {
13054            setMounted(false);
13055          }
13056        }
13057      });
13058      const state = {
13059        checked: item.checked,
13060        disabled: item.disabled,
13061        highlighted: item.highlighted,
13062        transitionStatus
13063      };
13064      const element = useRenderElement("span", componentProps, {
13065        state,
13066        stateAttributesMapping: itemMapping,
13067        ref: [forwardedRef, indicatorRef],
13068        props: {
13069          "aria-hidden": true,
13070          ...elementProps
13071        },
13072        enabled: keepMounted || mounted
13073      });
13074      return element;
13075    });
13076    if (true) MenuRadioItemIndicator.displayName = "MenuRadioItemIndicator";
13077  
13078    // node_modules/@base-ui/react/menu/root/MenuRoot.mjs
13079    var React81 = __toESM(require_react(), 1);
13080  
13081    // node_modules/@base-ui/react/menubar/MenubarContext.mjs
13082    var React78 = __toESM(require_react(), 1);
13083    var MenubarContext = /* @__PURE__ */ React78.createContext(null);
13084    if (true) MenubarContext.displayName = "MenubarContext";
13085    function useMenubarContext(optional) {
13086      const context = React78.useContext(MenubarContext);
13087      if (context === null && !optional) {
13088        throw new Error(true ? "Base UI: MenubarContext is missing. Menubar parts must be placed within <Menubar>." : formatErrorMessage_default(5));
13089      }
13090      return context;
13091    }
13092  
13093    // node_modules/@base-ui/react/menu/store/MenuStore.mjs
13094    var React79 = __toESM(require_react(), 1);
13095    var selectors2 = {
13096      ...popupStoreSelectors,
13097      disabled: (state) => state.parent.type === "menubar" ? state.parent.context.disabled || state.disabled : state.disabled,
13098      modal: (state) => (state.parent.type === void 0 || state.parent.type === "context-menu") && (state.modal ?? true),
13099      openMethod: (state) => state.openMethod,
13100      allowMouseEnter: (state) => state.allowMouseEnter,
13101      highlightItemOnHover: (state) => state.highlightItemOnHover,
13102      parent: (state) => state.parent,
13103      rootId: (state) => {
13104        if (state.parent.type === "menu") {
13105          return state.parent.store.select("rootId");
13106        }
13107        return state.parent.type !== void 0 ? state.parent.context.rootId : state.rootId;
13108      },
13109      activeIndex: (state) => state.activeIndex,
13110      isActive: (state, itemIndex) => state.activeIndex === itemIndex,
13111      hoverEnabled: (state) => state.hoverEnabled,
13112      instantType: (state) => state.instantType,
13113      lastOpenChangeReason: (state) => state.openChangeReason,
13114      floatingTreeRoot: (state) => {
13115        if (state.parent.type === "menu") {
13116          return state.parent.store.select("floatingTreeRoot");
13117        }
13118        return state.floatingTreeRoot;
13119      },
13120      floatingNodeId: (state) => state.floatingNodeId,
13121      floatingParentNodeId: (state) => state.floatingParentNodeId,
13122      itemProps: (state) => state.itemProps,
13123      closeDelay: (state) => state.closeDelay,
13124      adaptiveOrigin: (state) => state.adaptiveOrigin,
13125      keyboardEventRelay: (state) => {
13126        if (state.keyboardEventRelay) {
13127          return state.keyboardEventRelay;
13128        }
13129        if (state.parent.type === "menu") {
13130          return state.parent.store.select("keyboardEventRelay");
13131        }
13132        return void 0;
13133      }
13134    };
13135    var MenuStore = class extends ReactStore {
13136      constructor(initialState) {
13137        super({
13138          ...createInitialState(),
13139          ...initialState
13140        }, createInitialContext(), selectors2);
13141        this.unsubscribeParentListener = this.observe("parent", (parent) => {
13142          this.unsubscribeParentListener?.();
13143          if (parent.type === "menu") {
13144            let rootId = parent.store.select("rootId");
13145            let floatingTreeRoot = parent.store.select("floatingTreeRoot");
13146            let keyboardEventRelay = parent.store.select("keyboardEventRelay");
13147            this.unsubscribeParentListener = parent.store.subscribe(() => {
13148              const nextRootId = parent.store.select("rootId");
13149              const nextFloatingTreeRoot = parent.store.select("floatingTreeRoot");
13150              const nextKeyboardEventRelay = parent.store.select("keyboardEventRelay");
13151              if (rootId === nextRootId && floatingTreeRoot === nextFloatingTreeRoot && keyboardEventRelay === nextKeyboardEventRelay) {
13152                return;
13153              }
13154              rootId = nextRootId;
13155              floatingTreeRoot = nextFloatingTreeRoot;
13156              keyboardEventRelay = nextKeyboardEventRelay;
13157              this.notifyAll();
13158            });
13159            this.context.allowMouseUpTriggerRef = parent.store.context.allowMouseUpTriggerRef;
13160            return;
13161          }
13162          if (parent.type !== void 0) {
13163            this.context.allowMouseUpTriggerRef = parent.context.allowMouseUpTriggerRef;
13164          }
13165          this.unsubscribeParentListener = null;
13166        });
13167      }
13168      setOpen(open, eventDetails) {
13169        this.state.floatingRootContext.context.events.emit("setOpen", {
13170          open,
13171          eventDetails
13172        });
13173      }
13174      unsubscribeParentListener = null;
13175    };
13176    function createNullMenuStore() {
13177      const store = new NullStore(Object.freeze(createInitialState()), Object.freeze(createInitialContext()), selectors2);
13178      return Object.assign(store, {
13179        setOpen: NOOP
13180      });
13181    }
13182    function createInitialContext() {
13183      return {
13184        positionerRef: /* @__PURE__ */ React79.createRef(),
13185        popupRef: /* @__PURE__ */ React79.createRef(),
13186        typingRef: {
13187          current: false
13188        },
13189        itemDomElements: {
13190          current: []
13191        },
13192        itemLabels: {
13193          current: []
13194        },
13195        allowMouseUpTriggerRef: {
13196          current: false
13197        },
13198        triggerFocusTargetRef: /* @__PURE__ */ React79.createRef(),
13199        beforeContentFocusGuardRef: /* @__PURE__ */ React79.createRef(),
13200        onOpenChangeComplete: void 0,
13201        triggerElements: new PopupTriggerMap()
13202      };
13203    }
13204    function createInitialState() {
13205      return {
13206        ...createInitialPopupStoreState(),
13207        disabled: false,
13208        modal: true,
13209        openMethod: null,
13210        allowMouseEnter: false,
13211        highlightItemOnHover: true,
13212        parent: {
13213          type: void 0
13214        },
13215        rootId: void 0,
13216        activeIndex: null,
13217        hoverEnabled: true,
13218        instantType: void 0,
13219        openChangeReason: null,
13220        floatingTreeRoot: new FloatingTreeStore(),
13221        floatingNodeId: void 0,
13222        floatingParentNodeId: null,
13223        itemProps: EMPTY_OBJECT,
13224        keyboardEventRelay: void 0,
13225        closeDelay: 0,
13226        adaptiveOrigin: void 0
13227      };
13228    }
13229  
13230    // node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRootContext.mjs
13231    var React80 = __toESM(require_react(), 1);
13232    var MenuSubmenuRootContext = /* @__PURE__ */ React80.createContext(void 0);
13233    if (true) MenuSubmenuRootContext.displayName = "MenuSubmenuRootContext";
13234    function useMenuSubmenuRootContext() {
13235      return React80.useContext(MenuSubmenuRootContext);
13236    }
13237  
13238    // node_modules/@base-ui/react/menu/root/MenuRoot.mjs
13239    var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
13240    var MenuRoot = fastComponent(function MenuRoot2(props) {
13241      const {
13242        children,
13243        open: openProp,
13244        onOpenChange,
13245        onOpenChangeComplete,
13246        defaultOpen = false,
13247        disabled: disabledProp = false,
13248        modal: modalProp,
13249        loopFocus = true,
13250        orientation = "vertical",
13251        actionsRef,
13252        closeParentOnEsc = false,
13253        handle,
13254        triggerId: triggerIdProp,
13255        defaultTriggerId: defaultTriggerIdProp = null,
13256        highlightItemOnHover = true
13257      } = props;
13258      const contextMenuContext = useContextMenuRootContext(true);
13259      const parentMenuRootContext = useMenuRootContext(true);
13260      const menubarContext = useMenubarContext(true);
13261      const isSubmenu = useMenuSubmenuRootContext();
13262      const parentFromContext = React81.useMemo(() => {
13263        if (isSubmenu && parentMenuRootContext) {
13264          return {
13265            type: "menu",
13266            store: parentMenuRootContext.store
13267          };
13268        }
13269        if (menubarContext) {
13270          return {
13271            type: "menubar",
13272            context: menubarContext
13273          };
13274        }
13275        if (contextMenuContext && !parentMenuRootContext) {
13276          return {
13277            type: "context-menu",
13278            context: contextMenuContext
13279          };
13280        }
13281        return {
13282          type: void 0
13283        };
13284      }, [contextMenuContext, parentMenuRootContext, menubarContext, isSubmenu]);
13285      const store = useMenuRootStore({
13286        open: defaultOpen,
13287        openProp,
13288        activeTriggerId: defaultTriggerIdProp,
13289        triggerIdProp,
13290        parent: parentFromContext
13291      });
13292      store.useControlledProp("openProp", openProp);
13293      store.useControlledProp("triggerIdProp", triggerIdProp);
13294      store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
13295      const rootId = useId();
13296      const floatingId = useId();
13297      const floatingTreeRoot = store.useState("floatingTreeRoot");
13298      const floatingNodeIdFromContext = useFloatingNodeId(floatingTreeRoot);
13299      const floatingParentNodeIdFromContext = useFloatingParentNodeId();
13300      const open = store.useState("open");
13301      const activeTriggerElement = store.useState("activeTriggerElement");
13302      const positionerElement = store.useState("positionerElement");
13303      const hoverEnabled = store.useState("hoverEnabled");
13304      const disabled2 = store.useState("disabled");
13305      const lastOpenChangeReason = store.useState("lastOpenChangeReason");
13306      const parent = store.useState("parent");
13307      const activeIndex = store.useState("activeIndex");
13308      const payload = store.useState("payload");
13309      const floatingParentNodeId = store.useState("floatingParentNodeId");
13310      const openEventRef = React81.useRef(null);
13311      const allowOutsidePressDismissalRef = React81.useRef(parent.type !== "context-menu");
13312      const allowOutsidePressDismissalTimeout = useTimeout();
13313      const allowTouchToCloseRef = React81.useRef(true);
13314      const allowTouchToCloseTimeout = useTimeout();
13315      const nested = floatingParentNodeId != null;
13316      if (true) {
13317        if (parent.type !== void 0 && modalProp !== void 0) {
13318          console.warn("Base UI: The `modal` prop is not supported on nested menus. It will be ignored.");
13319        }
13320      }
13321      const {
13322        openMethod,
13323        triggerProps: interactionTypeProps
13324      } = useOpenInteractionType(open);
13325      store.useSyncedValues({
13326        disabled: disabledProp,
13327        highlightItemOnHover,
13328        modal: parent.type === void 0 ? modalProp : void 0,
13329        openMethod,
13330        rootId
13331      });
13332      useImplicitActiveTrigger(store);
13333      const {
13334        forceUnmount
13335      } = useOpenStateTransitions(open, store, () => {
13336        store.set("allowMouseEnter", false);
13337      });
13338      useIsoLayoutEffect(() => {
13339        if (contextMenuContext && !parentMenuRootContext) {
13340          store.update({
13341            parent: {
13342              type: "context-menu",
13343              context: contextMenuContext
13344            },
13345            floatingNodeId: floatingNodeIdFromContext,
13346            floatingParentNodeId: floatingParentNodeIdFromContext
13347          });
13348        } else if (parentMenuRootContext) {
13349          store.update({
13350            floatingNodeId: floatingNodeIdFromContext,
13351            floatingParentNodeId: floatingParentNodeIdFromContext
13352          });
13353        }
13354      }, [contextMenuContext, parentMenuRootContext, floatingNodeIdFromContext, floatingParentNodeIdFromContext, store]);
13355      React81.useEffect(() => {
13356        if (!open) {
13357          openEventRef.current = null;
13358        }
13359        if (parent.type !== "context-menu") {
13360          return;
13361        }
13362        if (!open) {
13363          allowOutsidePressDismissalTimeout.clear();
13364          allowOutsidePressDismissalRef.current = false;
13365          return;
13366        }
13367        allowOutsidePressDismissalTimeout.start(500, () => {
13368          allowOutsidePressDismissalRef.current = true;
13369        });
13370      }, [allowOutsidePressDismissalTimeout, open, parent.type]);
13371      useIsoLayoutEffect(() => {
13372        if (!open && !hoverEnabled) {
13373          store.set("hoverEnabled", true);
13374        }
13375      }, [open, hoverEnabled, store]);
13376      const setOpen = useStableCallback((nextOpen, eventDetails) => {
13377        const reason = eventDetails.reason;
13378        if (!nextOpen && !store.select("open")) {
13379          return;
13380        }
13381        if (open === nextOpen && eventDetails.trigger === activeTriggerElement && lastOpenChangeReason === reason) {
13382          return;
13383        }
13384        const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);
13385        if (!nextOpen && eventDetails.trigger == null) {
13386          eventDetails.trigger = activeTriggerElement ?? void 0;
13387        }
13388        onOpenChange?.(nextOpen, eventDetails);
13389        if (eventDetails.isCanceled) {
13390          return;
13391        }
13392        store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);
13393        const nativeEvent = eventDetails.event;
13394        if (nextOpen === false && nativeEvent?.type === "click" && nativeEvent.pointerType === "touch" && !allowTouchToCloseRef.current) {
13395          return;
13396        }
13397        if (nextOpen && reason === reason_parts_exports.triggerFocus) {
13398          allowTouchToCloseRef.current = false;
13399          allowTouchToCloseTimeout.start(300, () => {
13400            allowTouchToCloseRef.current = true;
13401          });
13402        } else {
13403          allowTouchToCloseRef.current = true;
13404          allowTouchToCloseTimeout.clear();
13405        }
13406        const isKeyboardClick = (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.itemPress) && nativeEvent.detail === 0;
13407        const isDismissClose = !nextOpen && (reason === reason_parts_exports.escapeKey || reason == null);
13408        const updatedState = {
13409          open: nextOpen,
13410          openChangeReason: reason
13411        };
13412        openEventRef.current = eventDetails.event;
13413        setPopupOpenState(updatedState, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());
13414        store.update(updatedState);
13415        if (parent.type === "menubar" && (reason === reason_parts_exports.triggerFocus || reason === reason_parts_exports.focusOut || reason === reason_parts_exports.triggerHover || reason === reason_parts_exports.listNavigation || reason === reason_parts_exports.siblingOpen)) {
13416          store.set("instantType", "group");
13417        } else if (isKeyboardClick || isDismissClose) {
13418          store.set("instantType", isKeyboardClick ? "click" : "dismiss");
13419        } else {
13420          store.set("instantType", void 0);
13421        }
13422      });
13423      const floatingRootContext = useSyncedFloatingRootContext({
13424        popupStore: store,
13425        floatingId,
13426        nested: floatingParentNodeIdFromContext != null,
13427        onOpenChange: setOpen
13428      });
13429      const floatingEvents = floatingRootContext.context.events;
13430      useIsoLayoutEffect(() => {
13431        const handleSetOpenEvent = ({
13432          open: nextOpen,
13433          eventDetails
13434        }) => setOpen(nextOpen, eventDetails);
13435        floatingEvents.on("setOpen", handleSetOpenEvent);
13436        return () => {
13437          floatingEvents?.off("setOpen", handleSetOpenEvent);
13438        };
13439      }, [floatingEvents, setOpen]);
13440      const handleImperativeClose = React81.useCallback(() => {
13441        store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction));
13442      }, [store]);
13443      React81.useImperativeHandle(actionsRef, () => ({
13444        unmount: forceUnmount,
13445        close: handleImperativeClose
13446      }), [forceUnmount, handleImperativeClose]);
13447      let ctx8;
13448      if (parent.type === "context-menu") {
13449        ctx8 = parent.context;
13450      }
13451      React81.useImperativeHandle(ctx8?.positionerRef, () => positionerElement, [positionerElement]);
13452      React81.useImperativeHandle(ctx8?.actionsRef, () => ({
13453        setOpen
13454      }), [setOpen]);
13455      const dismiss = useDismiss(floatingRootContext, {
13456        enabled: !disabled2,
13457        bubbles: {
13458          escapeKey: closeParentOnEsc && parent.type === "menu"
13459        },
13460        outsidePress() {
13461          if (parent.type !== "context-menu" || openEventRef.current?.type === "contextmenu") {
13462            return true;
13463          }
13464          return allowOutsidePressDismissalRef.current;
13465        },
13466        externalTree: nested ? floatingTreeRoot : void 0
13467      });
13468      const direction = useDirection();
13469      const setActiveIndex = React81.useCallback((index2) => {
13470        if (store.select("activeIndex") === index2) {
13471          return;
13472        }
13473        store.set("activeIndex", index2);
13474      }, [store]);
13475      const listNavigation2 = useListNavigation(floatingRootContext, {
13476        enabled: !disabled2,
13477        listRef: store.context.itemDomElements,
13478        activeIndex,
13479        nested: parent.type !== void 0,
13480        loopFocus,
13481        orientation,
13482        parentOrientation: parent.type === "menubar" ? parent.context.orientation : void 0,
13483        rtl: direction === "rtl",
13484        disabledIndices: EMPTY_ARRAY,
13485        onNavigate: setActiveIndex,
13486        openOnArrowKeyDown: parent.type !== "context-menu",
13487        externalTree: nested ? floatingTreeRoot : void 0,
13488        focusItemOnHover: highlightItemOnHover
13489      });
13490      const onTyping = React81.useCallback((nextTyping) => {
13491        store.context.typingRef.current = nextTyping;
13492      }, [store]);
13493      const typeahead = useTypeahead(floatingRootContext, {
13494        enabled: !disabled2,
13495        listRef: store.context.itemLabels,
13496        elementsRef: store.context.itemDomElements,
13497        activeIndex,
13498        resetMs: TYPEAHEAD_RESET_MS,
13499        onMatch: (index2) => {
13500          if (open && index2 !== activeIndex) {
13501            store.set("activeIndex", index2);
13502          }
13503        },
13504        onTyping
13505      });
13506      const activeTriggerProps = React81.useMemo(() => {
13507        const mergedProps = mergeProps(typeahead.reference, listNavigation2.reference, dismiss.reference, {
13508          onMouseMove() {
13509            store.set("allowMouseEnter", true);
13510          }
13511        }, interactionTypeProps);
13512        mergedProps["aria-haspopup"] = "menu";
13513        mergedProps["aria-expanded"] = open;
13514        return mergedProps;
13515      }, [store, typeahead.reference, listNavigation2.reference, dismiss.reference, interactionTypeProps, open]);
13516      const inactiveTriggerProps = React81.useMemo(() => {
13517        const mergedProps = mergeProps(listNavigation2.trigger, dismiss.trigger, interactionTypeProps);
13518        mergedProps["aria-haspopup"] = "menu";
13519        mergedProps["aria-expanded"] = false;
13520        return mergedProps;
13521      }, [listNavigation2.trigger, dismiss.trigger, interactionTypeProps]);
13522      const popupProps = React81.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, {
13523        id: floatingId,
13524        role: "menu",
13525        "aria-labelledby": activeTriggerElement?.id,
13526        onMouseMove() {
13527          store.set("allowMouseEnter", true);
13528          if (parent.type === "menu") {
13529            store.set("hoverEnabled", false);
13530          }
13531        },
13532        onClick() {
13533          if (store.select("hoverEnabled")) {
13534            store.set("hoverEnabled", false);
13535          }
13536        },
13537        onKeyDown(event) {
13538          const relay = store.select("keyboardEventRelay");
13539          if (relay && !event.isPropagationStopped()) {
13540            relay(event);
13541          }
13542        }
13543      }, typeahead.floating, listNavigation2.floating, dismiss.floating), [activeTriggerElement, floatingId, parent.type, store, typeahead.floating, listNavigation2.floating, dismiss.floating]);
13544      const itemProps = listNavigation2.item ?? EMPTY_OBJECT;
13545      usePopupInteractionProps(store, {
13546        floatingRootContext,
13547        activeTriggerProps,
13548        inactiveTriggerProps,
13549        popupProps,
13550        itemProps
13551      });
13552      const context = React81.useMemo(() => ({
13553        store,
13554        parent: parentFromContext
13555      }), [store, parentFromContext]);
13556      const content = /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(MenuRootContext.Provider, {
13557        value: context,
13558        children: [handle && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PopupHandleAttachment, {
13559          handle,
13560          store
13561        }), typeof children === "function" ? children({
13562          payload
13563        }) : children]
13564      });
13565      if (parent.type === void 0 || parent.type === "context-menu") {
13566        return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(FloatingTree, {
13567          externalTree: floatingTreeRoot,
13568          children: content
13569        });
13570      }
13571      return content;
13572    });
13573    if (true) MenuRoot.displayName = "MenuRoot";
13574    function useMenuRootStore(initialState) {
13575      const store = useRefWithInit(() => new MenuStore(initialState)).current;
13576      return store;
13577    }
13578  
13579    // node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRoot.mjs
13580    var React82 = __toESM(require_react(), 1);
13581    var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
13582    function MenuSubmenuRoot(props) {
13583      const parentMenu = useMenuRootContext().store;
13584      const contextValue = React82.useMemo(() => ({
13585        parentMenu
13586      }), [parentMenu]);
13587      return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(MenuSubmenuRootContext.Provider, {
13588        value: contextValue,
13589        children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(MenuRoot, {
13590          ...props
13591        })
13592      });
13593    }
13594  
13595    // node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs
13596    var React86 = __toESM(require_react(), 1);
13597  
13598    // node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs
13599    var React83 = __toESM(require_react(), 1);
13600    function useCompositeItem(params = {}) {
13601      const {
13602        highlightItemOnHover,
13603        highlightedIndex,
13604        onHighlightedIndexChange
13605      } = useCompositeRootContext();
13606      const {
13607        ref,
13608        index: index2
13609      } = useCompositeListItem(params);
13610      const isHighlighted = highlightedIndex === index2;
13611      const itemRef = React83.useRef(null);
13612      const mergedRef = useMergedRefs(ref, itemRef);
13613      const compositeProps = {
13614        tabIndex: isHighlighted ? 0 : -1,
13615        onFocus() {
13616          onHighlightedIndexChange(index2);
13617        },
13618        onMouseMove() {
13619          const item = itemRef.current;
13620          if (!highlightItemOnHover || !item) {
13621            return;
13622          }
13623          const disabled2 = item.hasAttribute("disabled") || item.ariaDisabled === "true";
13624          if (!isHighlighted && !disabled2) {
13625            item.focus();
13626          }
13627        }
13628      };
13629      return {
13630        compositeProps,
13631        compositeRef: mergedRef,
13632        index: index2
13633      };
13634    }
13635  
13636    // node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs
13637    function CompositeItem(componentProps) {
13638      const {
13639        render: render4,
13640        className,
13641        style,
13642        state = EMPTY_OBJECT,
13643        props = EMPTY_ARRAY,
13644        refs = EMPTY_ARRAY,
13645        metadata,
13646        stateAttributesMapping: stateAttributesMapping2,
13647        tag = "div",
13648        ...elementProps
13649      } = componentProps;
13650      const {
13651        compositeProps,
13652        compositeRef
13653      } = useCompositeItem({
13654        metadata
13655      });
13656      return useRenderElement(tag, componentProps, {
13657        state,
13658        // The composite ref attaches first so an outer item wins when nested items share a DOM node.
13659        ref: [compositeRef, ...refs],
13660        props: [compositeProps, ...props, elementProps],
13661        stateAttributesMapping: stateAttributesMapping2
13662      });
13663    }
13664  
13665    // node_modules/@base-ui/react/menu/utils/findRootOwnerId.mjs
13666    function findRootOwnerId(node) {
13667      if (isHTMLElement(node) && node.hasAttribute("data-rootownerid")) {
13668        return node.getAttribute("data-rootownerid");
13669      }
13670      if (isLastTraversableNode(node)) {
13671        return void 0;
13672      }
13673      return findRootOwnerId(getParentNode(node));
13674    }
13675  
13676    // node_modules/@base-ui/react/utils/popups/useTriggerFocusGuards.mjs
13677    var React84 = __toESM(require_react(), 1);
13678    var ReactDOM6 = __toESM(require_react_dom(), 1);
13679    function useTriggerFocusGuards(store, triggerElementRef) {
13680      const preFocusGuardRef = React84.useRef(null);
13681      function handlePreFocusGuardFocus(event) {
13682        ReactDOM6.flushSync(() => {
13683          store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent, event.currentTarget));
13684        });
13685        const previousTabbable = getTabbableBeforeElement(preFocusGuardRef.current);
13686        previousTabbable?.focus();
13687      }
13688      function handleFocusTargetFocus(event) {
13689        const positionerElement = store.select("positionerElement");
13690        if (positionerElement && isOutsideEvent(event, positionerElement)) {
13691          store.context.beforeContentFocusGuardRef.current?.focus();
13692        } else {
13693          ReactDOM6.flushSync(() => {
13694            store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent, event.currentTarget));
13695          });
13696          let nextTabbable = getTabbableAfterElement(store.context.triggerFocusTargetRef.current || triggerElementRef.current);
13697          while (nextTabbable !== null && contains(positionerElement, nextTabbable)) {
13698            const prevTabbable = nextTabbable;
13699            nextTabbable = getNextTabbable(nextTabbable);
13700            if (nextTabbable === prevTabbable) {
13701              break;
13702            }
13703          }
13704          nextTabbable?.focus();
13705        }
13706      }
13707      return {
13708        preFocusGuardRef,
13709        handlePreFocusGuardFocus,
13710        handleFocusTargetFocus
13711      };
13712    }
13713  
13714    // node_modules/@base-ui/react/utils/useMixedToggleClickHandler.mjs
13715    var React85 = __toESM(require_react(), 1);
13716    function useMixedToggleClickHandler(params) {
13717      const {
13718        enabled = true,
13719        mouseDownAction,
13720        open
13721      } = params;
13722      const ignoreClickRef = React85.useRef(false);
13723      return React85.useMemo(() => {
13724        if (!enabled) {
13725          return EMPTY_OBJECT;
13726        }
13727        return {
13728          onMouseDown: (event) => {
13729            if (mouseDownAction === "open" && !open || mouseDownAction === "close" && open) {
13730              ignoreClickRef.current = true;
13731              ownerDocument(event.currentTarget).addEventListener("click", () => {
13732                ignoreClickRef.current = false;
13733              }, {
13734                once: true
13735              });
13736            }
13737          },
13738          onClick: (event) => {
13739            if (ignoreClickRef.current) {
13740              ignoreClickRef.current = false;
13741              event.preventBaseUIHandler();
13742            }
13743          }
13744        };
13745      }, [enabled, mouseDownAction, open]);
13746    }
13747  
13748    // node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs
13749    var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
13750    var MenuTrigger = fastComponentRef(function MenuTrigger2(componentProps, forwardedRef) {
13751      const {
13752        render: render4,
13753        className,
13754        style,
13755        disabled: disabledProp = false,
13756        nativeButton = true,
13757        id: idProp,
13758        openOnHover: openOnHoverProp,
13759        delay = 100,
13760        closeDelay = 0,
13761        handle,
13762        payload,
13763        ...elementProps
13764      } = componentProps;
13765      const rootContext = useMenuRootContext(true);
13766      const handleStore = usePopupHandleStore(handle);
13767      const store = handleStore ?? rootContext?.store;
13768      if (!store) {
13769        throw new Error(true ? "Base UI: <Menu.Trigger> must be either used within a <Menu.Root> component or provided with a handle." : formatErrorMessage_default(85));
13770      }
13771      const thisTriggerId = useBaseUiId(idProp);
13772      const isTriggerActive = store.useState("isTriggerActive", thisTriggerId);
13773      const floatingRootContext = store.useState("floatingRootContext");
13774      const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId);
13775      const popupId = store.useState("triggerPopupId", thisTriggerId);
13776      const triggerElementRef = React86.useRef(null);
13777      const parent = useMenuParent();
13778      const compositeRootContext = useCompositeRootContext(true);
13779      const floatingTreeRootFromContext = useFloatingTree();
13780      const floatingTreeRoot = React86.useMemo(() => {
13781        return floatingTreeRootFromContext ?? new FloatingTreeStore();
13782      }, [floatingTreeRootFromContext]);
13783      const floatingNodeId = useFloatingNodeId(floatingTreeRoot);
13784      const floatingParentNodeId = useFloatingParentNodeId();
13785      const {
13786        registerTrigger,
13787        isMountedByThisTrigger
13788      } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {
13789        payload,
13790        closeDelay,
13791        parent,
13792        floatingTreeRoot,
13793        floatingNodeId,
13794        floatingParentNodeId,
13795        keyboardEventRelay: compositeRootContext?.relayKeyboardEvent
13796      });
13797      const isInMenubar = parent.type === "menubar";
13798      const rootDisabled = store.useState("disabled");
13799      const disabled2 = disabledProp || rootDisabled || isInMenubar && parent.context.disabled;
13800      const {
13801        getButtonProps,
13802        buttonRef
13803      } = useButton({
13804        disabled: disabled2,
13805        native: nativeButton
13806      });
13807      React86.useEffect(() => {
13808        if (!isOpenedByThisTrigger && parent.type === void 0) {
13809          store.context.allowMouseUpTriggerRef.current = false;
13810        }
13811      }, [store, isOpenedByThisTrigger, parent.type]);
13812      const triggerRef = React86.useRef(null);
13813      const allowMouseUpTriggerTimeout = useTimeout();
13814      const handleDocumentMouseUp = useStableCallback((mouseEvent) => {
13815        if (!triggerRef.current) {
13816          return;
13817        }
13818        allowMouseUpTriggerTimeout.clear();
13819        store.context.allowMouseUpTriggerRef.current = false;
13820        const mouseUpTarget = mouseEvent.target;
13821        if (contains(triggerRef.current, mouseUpTarget) || contains(store.select("positionerElement"), mouseUpTarget) || mouseUpTarget === triggerRef.current) {
13822          return;
13823        }
13824        if (mouseUpTarget != null && findRootOwnerId(mouseUpTarget) === store.select("rootId")) {
13825          return;
13826        }
13827        if (isMouseWithinBounds(mouseEvent, triggerRef.current)) {
13828          return;
13829        }
13830        floatingTreeRoot.events.emit("close", {
13831          domEvent: mouseEvent,
13832          reason: reason_parts_exports.cancelOpen
13833        });
13834      });
13835      React86.useEffect(() => {
13836        if (isOpenedByThisTrigger && store.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) {
13837          const doc = ownerDocument(triggerRef.current);
13838          doc.addEventListener("mouseup", handleDocumentMouseUp, {
13839            once: true
13840          });
13841        }
13842      }, [isOpenedByThisTrigger, handleDocumentMouseUp, store]);
13843      const parentMenubarHasSubmenuOpen = isInMenubar && parent.context.hasSubmenuOpen;
13844      const openOnHover = openOnHoverProp ?? parentMenubarHasSubmenuOpen;
13845      const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
13846        enabled: openOnHover && !disabled2 && (!isInMenubar || parentMenubarHasSubmenuOpen && !isMountedByThisTrigger),
13847        handleClose: safePolygon({
13848          blockPointerEvents: !isInMenubar
13849        }),
13850        mouseOnly: true,
13851        move: false,
13852        restMs: parent.type === void 0 ? delay : void 0,
13853        delay: {
13854          close: closeDelay
13855        },
13856        triggerElementRef,
13857        externalTree: floatingTreeRoot,
13858        isActiveTrigger: isTriggerActive,
13859        isClosing: () => store.select("transitionStatus") === "ending"
13860      });
13861      const stickIfOpen = useStickIfOpen(isOpenedByThisTrigger, store.select("lastOpenChangeReason"));
13862      const click = useClick(floatingRootContext, {
13863        enabled: !disabled2,
13864        event: isOpenedByThisTrigger && isInMenubar ? "click" : "mousedown",
13865        toggle: true,
13866        ignoreMouse: false,
13867        stickIfOpen: parent.type === void 0 ? stickIfOpen : false
13868      });
13869      const focus = useFocus(floatingRootContext, {
13870        enabled: !disabled2 && parentMenubarHasSubmenuOpen
13871      });
13872      const mixedToggleHandlers = useMixedToggleClickHandler({
13873        open: isOpenedByThisTrigger,
13874        enabled: isInMenubar,
13875        mouseDownAction: "open"
13876      });
13877      const localInteractionProps = React86.useMemo(() => mergeProps(focus.reference, click.reference), [focus.reference, click.reference]);
13878      const rootTriggerProps = store.useState("triggerProps", isMountedByThisTrigger);
13879      const {
13880        preFocusGuardRef,
13881        handlePreFocusGuardFocus,
13882        handleFocusTargetFocus
13883      } = useTriggerFocusGuards(store, triggerElementRef);
13884      const state = {
13885        disabled: disabled2,
13886        open: isOpenedByThisTrigger
13887      };
13888      const ref = [triggerRef, forwardedRef, buttonRef, registerTrigger, triggerElementRef];
13889      const props = [localInteractionProps, hoverProps ?? EMPTY_OBJECT, rootTriggerProps, {
13890        "aria-haspopup": "menu",
13891        "aria-controls": popupId,
13892        id: thisTriggerId,
13893        onMouseDown: (event) => {
13894          if (store.select("open")) {
13895            return;
13896          }
13897          allowMouseUpTriggerTimeout.start(200, () => {
13898            store.context.allowMouseUpTriggerRef.current = true;
13899          });
13900          const doc = ownerDocument(event.currentTarget);
13901          doc.addEventListener("mouseup", handleDocumentMouseUp, {
13902            once: true
13903          });
13904        }
13905      }, isInMenubar ? {
13906        role: "menuitem"
13907      } : {}, mixedToggleHandlers, elementProps, getButtonProps];
13908      const element = useRenderElement("button", componentProps, {
13909        enabled: !isInMenubar,
13910        stateAttributesMapping: pressableTriggerOpenStateMapping,
13911        state,
13912        ref,
13913        props
13914      });
13915      if (isInMenubar) {
13916        return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(CompositeItem, {
13917          tag: "button",
13918          render: render4,
13919          className,
13920          style,
13921          state,
13922          refs: ref,
13923          props,
13924          stateAttributesMapping: pressableTriggerOpenStateMapping
13925        });
13926      }
13927      if (isOpenedByThisTrigger) {
13928        return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(React86.Fragment, {
13929          children: [/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(FocusGuard, {
13930            ref: preFocusGuardRef,
13931            onFocus: handlePreFocusGuardFocus
13932          }, `$thisTriggerId}-pre-focus-guard`), /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(React86.Fragment, {
13933            children: element
13934          }, thisTriggerId), /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(FocusGuard, {
13935            ref: store.context.triggerFocusTargetRef,
13936            onFocus: handleFocusTargetFocus
13937          }, `$thisTriggerId}-post-focus-guard`)]
13938        });
13939      }
13940      return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(React86.Fragment, {
13941        children: element
13942      }, thisTriggerId);
13943    });
13944    if (true) MenuTrigger.displayName = "MenuTrigger";
13945    function useStickIfOpen(open, openReason) {
13946      const stickIfOpenTimeout = useTimeout();
13947      const [stickIfOpen, setStickIfOpen] = React86.useState(false);
13948      useIsoLayoutEffect(() => {
13949        if (open && openReason === reason_parts_exports.triggerHover) {
13950          setStickIfOpen(true);
13951          stickIfOpenTimeout.start(PATIENT_CLICK_THRESHOLD, () => {
13952            setStickIfOpen(false);
13953          });
13954        } else if (!open) {
13955          stickIfOpenTimeout.clear();
13956          setStickIfOpen(false);
13957        }
13958      }, [open, openReason, stickIfOpenTimeout]);
13959      return stickIfOpen;
13960    }
13961    function useMenuParent() {
13962      const menubarContext = useMenubarContext(true);
13963      const parent = React86.useMemo(() => {
13964        if (menubarContext) {
13965          return {
13966            type: "menubar",
13967            context: menubarContext
13968          };
13969        }
13970        return {
13971          type: void 0
13972        };
13973      }, [menubarContext]);
13974      return parent;
13975    }
13976  
13977    // node_modules/@base-ui/react/menu/viewport/MenuViewport.mjs
13978    var React91 = __toESM(require_react(), 1);
13979  
13980    // node_modules/@base-ui/react/utils/usePopupViewport.mjs
13981    var React90 = __toESM(require_react(), 1);
13982    var ReactDOM7 = __toESM(require_react_dom(), 1);
13983  
13984    // node_modules/@base-ui/utils/usePreviousValue.mjs
13985    var React87 = __toESM(require_react(), 1);
13986    function usePreviousValue(value) {
13987      const [state, setState] = React87.useState({
13988        current: value,
13989        previous: null
13990      });
13991      if (!Object.is(value, state.current)) {
13992        setState({
13993          current: value,
13994          previous: state.current
13995        });
13996      }
13997      return state.previous;
13998    }
13999  
14000    // node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
14001    var React88 = __toESM(require_react(), 1);
14002  
14003    // node_modules/@base-ui/react/utils/getCssDimensions.mjs
14004    function getCssDimensions2(element) {
14005      const css = getComputedStyle2(element);
14006      let width = parseFloat(css.width) || 0;
14007      let height = parseFloat(css.height) || 0;
14008      const hasOffset = isHTMLElement(element);
14009      const offsetWidth = hasOffset ? element.offsetWidth : width;
14010      const offsetHeight = hasOffset ? element.offsetHeight : height;
14011      const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
14012      if (shouldFallback) {
14013        width = offsetWidth;
14014        height = offsetHeight;
14015      }
14016      return {
14017        width,
14018        height
14019      };
14020    }
14021  
14022    // node_modules/@base-ui/react/utils/usePopupAutoResize.mjs
14023    function usePopupAutoResize(parameters) {
14024      const {
14025        popupElement,
14026        positionerElement,
14027        content,
14028        mounted,
14029        onMeasureLayout: onMeasureLayoutParam,
14030        onMeasureLayoutComplete: onMeasureLayoutCompleteParam,
14031        side,
14032        direction
14033      } = parameters;
14034      const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true);
14035      const animationFrame = useAnimationFrame();
14036      const committedDimensionsRef = React88.useRef(null);
14037      const isInitialRenderRef = React88.useRef(true);
14038      const restoreAnchoringStylesRef = React88.useRef(NOOP);
14039      const onMeasureLayout = useStableCallback(onMeasureLayoutParam);
14040      const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam);
14041      const anchoringStyles = React88.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]);
14042      useIsoLayoutEffect(() => {
14043        if (!mounted) {
14044          restoreAnchoringStylesRef.current = NOOP;
14045          isInitialRenderRef.current = true;
14046          committedDimensionsRef.current = null;
14047          return void 0;
14048        }
14049        if (!popupElement || !positionerElement) {
14050          return void 0;
14051        }
14052        restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles);
14053        setPopupCssSize(popupElement, "auto");
14054        const restorePopupPosition = overrideElementStyle(popupElement, "position", "static");
14055        const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none");
14056        const restorePopupScale = overrideElementStyle(popupElement, "scale", "1");
14057        const restorePositionerAvailableSize = applyElementStyles(positionerElement, {
14058          "--available-width": "max-content",
14059          "--available-height": "max-content"
14060        });
14061        function restoreMeasurementOverrides() {
14062          restorePopupPosition();
14063          restorePopupTransform();
14064          restorePositionerAvailableSize();
14065        }
14066        function restoreMeasurementOverridesIncludingScale() {
14067          restoreMeasurementOverrides();
14068          restorePopupScale();
14069        }
14070        onMeasureLayout?.();
14071        if (isInitialRenderRef.current || committedDimensionsRef.current === null) {
14072          setPositionerCssSize(positionerElement, "max-content");
14073          const dimensions = getCssDimensions2(popupElement);
14074          committedDimensionsRef.current = dimensions;
14075          setPositionerCssSize(positionerElement, dimensions);
14076          restoreMeasurementOverridesIncludingScale();
14077          onMeasureLayoutComplete?.(null, dimensions);
14078          isInitialRenderRef.current = false;
14079          return () => {
14080            restoreAnchoringStylesRef.current();
14081            restoreAnchoringStylesRef.current = NOOP;
14082          };
14083        }
14084        setPositionerCssSize(positionerElement, "max-content");
14085        const previousDimensions = committedDimensionsRef.current;
14086        const newDimensions = getCssDimensions2(popupElement);
14087        committedDimensionsRef.current = newDimensions;
14088        setPopupCssSize(popupElement, previousDimensions);
14089        restoreMeasurementOverridesIncludingScale();
14090        onMeasureLayoutComplete?.(previousDimensions, newDimensions);
14091        setPositionerCssSize(positionerElement, newDimensions);
14092        const abortController = new AbortController();
14093        animationFrame.request(() => {
14094          setPopupCssSize(popupElement, newDimensions);
14095          runOnceAnimationsFinish(() => {
14096            popupElement.style.setProperty("--popup-width", "auto");
14097            popupElement.style.setProperty("--popup-height", "auto");
14098          }, abortController.signal);
14099        });
14100        return () => {
14101          abortController.abort();
14102          animationFrame.cancel();
14103          restoreAnchoringStylesRef.current();
14104          restoreAnchoringStylesRef.current = NOOP;
14105        };
14106      }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]);
14107    }
14108    function getPopupAnchoringStyles(side, direction) {
14109      const isPhysicalTop = side === "top";
14110      const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start");
14111      if (!isPhysicalTop && !isPhysicalLeft) {
14112        return EMPTY_OBJECT;
14113      }
14114      return {
14115        position: "absolute",
14116        [isPhysicalTop ? "bottom" : "top"]: "0",
14117        [isPhysicalLeft ? "right" : "left"]: "0"
14118      };
14119    }
14120    function overrideElementStyle(element, property, value) {
14121      const originalValue = element.style.getPropertyValue(property);
14122      element.style.setProperty(property, value);
14123      return () => {
14124        element.style.setProperty(property, originalValue);
14125      };
14126    }
14127    function applyElementStyles(element, styles) {
14128      const restorers = [];
14129      for (const [key, value] of Object.entries(styles)) {
14130        restorers.push(overrideElementStyle(element, key, value));
14131      }
14132      return restorers.length ? () => {
14133        restorers.forEach((restore) => restore());
14134      } : NOOP;
14135    }
14136    function setPopupCssSize(popupElement, size4) {
14137      const width = size4 === "auto" ? "auto" : `$size4.width}px`;
14138      const height = size4 === "auto" ? "auto" : `$size4.height}px`;
14139      popupElement.style.setProperty("--popup-width", width);
14140      popupElement.style.setProperty("--popup-height", height);
14141    }
14142    function setPositionerCssSize(positionerElement, size4) {
14143      const width = size4 === "max-content" ? "max-content" : `$size4.width}px`;
14144      const height = size4 === "max-content" ? "max-content" : `$size4.height}px`;
14145      positionerElement.style.setProperty("--positioner-width", width);
14146      positionerElement.style.setProperty("--positioner-height", height);
14147    }
14148  
14149    // node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs
14150    var React89 = __toESM(require_react(), 1);
14151    var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
14152    var DirectionProvider = function DirectionProvider2(props) {
14153      const {
14154        direction = "ltr"
14155      } = props;
14156      const contextValue = React89.useMemo(() => ({
14157        direction
14158      }), [direction]);
14159      return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DirectionContext.Provider, {
14160        value: contextValue,
14161        children: props.children
14162      });
14163    };
14164    if (true) DirectionProvider.displayName = "DirectionProvider";
14165  
14166    // node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs
14167    var adaptiveOrigin = {
14168      name: "adaptiveOrigin",
14169      async fn(state) {
14170        const {
14171          x: rawX,
14172          y: rawY,
14173          rects: {
14174            floating: floatRect
14175          },
14176          elements: {
14177            floating
14178          },
14179          platform: platform3,
14180          strategy,
14181          placement
14182        } = state;
14183        const win = getWindow(floating);
14184        const styles = win.getComputedStyle(floating);
14185        const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== "";
14186        if (!hasTransition) {
14187          return {
14188            x: rawX,
14189            y: rawY,
14190            data: DEFAULT_SIDES
14191          };
14192        }
14193        const offsetParent = await platform3.getOffsetParent?.(floating);
14194        let offsetDimensions = {
14195          width: 0,
14196          height: 0
14197        };
14198        if (strategy === "fixed" && win?.visualViewport) {
14199          offsetDimensions = {
14200            width: win.visualViewport.width,
14201            height: win.visualViewport.height
14202          };
14203        } else if (offsetParent === win) {
14204          const doc = ownerDocument(floating);
14205          offsetDimensions = {
14206            width: doc.documentElement.clientWidth,
14207            height: doc.documentElement.clientHeight
14208          };
14209        } else if (await platform3.isElement?.(offsetParent)) {
14210          offsetDimensions = await platform3.getDimensions(offsetParent);
14211        }
14212        const currentSide = getSide(placement);
14213        let x2 = rawX;
14214        let y2 = rawY;
14215        if (currentSide === "left") {
14216          x2 = offsetDimensions.width - (rawX + floatRect.width);
14217        }
14218        if (currentSide === "top") {
14219          y2 = offsetDimensions.height - (rawY + floatRect.height);
14220        }
14221        const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX;
14222        const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY;
14223        return {
14224          x: x2,
14225          y: y2,
14226          data: {
14227            sideX,
14228            sideY
14229          }
14230        };
14231      }
14232    };
14233  
14234    // node_modules/@base-ui/react/utils/usePopupViewport.mjs
14235    var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
14236    var popupViewportStateMapping = {
14237      activationDirection: (value) => value ? {
14238        "data-activation-direction": value
14239      } : null
14240    };
14241    function usePopupViewport(parameters) {
14242      const {
14243        store,
14244        side,
14245        children
14246      } = parameters;
14247      const direction = useDirection();
14248      const activeTrigger = store.useState("activeTriggerElement");
14249      const activeTriggerId = store.useState("activeTriggerId");
14250      const open = store.useState("open");
14251      const payload = store.useState("payload");
14252      const mounted = store.useState("mounted");
14253      const popupElement = store.useState("popupElement");
14254      const positionerElement = store.useState("positionerElement");
14255      const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null);
14256      const currentContentKey = usePopupContentKey(activeTriggerId, payload);
14257      const capturedNodeRef = React90.useRef(null);
14258      const [previousContentNode, setPreviousContentNode] = React90.useState(null);
14259      const [newTriggerOffset, setNewTriggerOffset] = React90.useState(null);
14260      const currentContainerRef = React90.useRef(null);
14261      const previousContainerRef = React90.useRef(null);
14262      const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true);
14263      const cleanupFrame = useAnimationFrame();
14264      const cleanupControllerRef = React90.useRef(null);
14265      const [previousContentDimensions, setPreviousContentDimensions] = React90.useState(null);
14266      const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React90.useState(false);
14267      useIsoLayoutEffect(() => {
14268        store.set("adaptiveOrigin", adaptiveOrigin);
14269        return () => {
14270          store.set("adaptiveOrigin", void 0);
14271        };
14272      }, [store]);
14273      const handleMeasureLayout = useStableCallback(() => {
14274        currentContainerRef.current?.style.setProperty("animation", "none");
14275        currentContainerRef.current?.style.setProperty("transition", "none");
14276        previousContainerRef.current?.style.setProperty("display", "none");
14277      });
14278      const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => {
14279        currentContainerRef.current?.style.removeProperty("animation");
14280        currentContainerRef.current?.style.removeProperty("transition");
14281        previousContainerRef.current?.style.removeProperty("display");
14282        if (previousDimensions) {
14283          setPreviousContentDimensions(previousDimensions);
14284        }
14285      });
14286      const armViewportCleanup = useStableCallback(() => {
14287        cleanupControllerRef.current?.abort();
14288        const controller = new AbortController();
14289        cleanupControllerRef.current = controller;
14290        onAnimationsFinished(() => {
14291          setPreviousContentNode(null);
14292          setPreviousContentDimensions(null);
14293          capturedNodeRef.current = null;
14294        }, controller.signal);
14295      });
14296      const lastHandledTriggerRef = React90.useRef(null);
14297      useIsoLayoutEffect(() => {
14298        if (!open || !mounted) {
14299          lastHandledTriggerRef.current = null;
14300        }
14301      }, [open, mounted]);
14302      useIsoLayoutEffect(() => {
14303        if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) {
14304          setPreviousContentNode(capturedNodeRef.current);
14305          setShowStartingStyleAttribute(true);
14306          const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger);
14307          setNewTriggerOffset(offset4);
14308          lastHandledTriggerRef.current = activeTrigger;
14309        }
14310      }, [activeTrigger, previousActiveTrigger]);
14311      useIsoLayoutEffect(() => {
14312        if (previousContentNode == null) {
14313          return;
14314        }
14315        cleanupControllerRef.current?.abort();
14316        setShowStartingStyleAttribute(true);
14317        cleanupFrame.request(() => {
14318          ReactDOM7.flushSync(() => {
14319            setShowStartingStyleAttribute(false);
14320          });
14321          armViewportCleanup();
14322        });
14323      }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]);
14324      useIsoLayoutEffect(() => {
14325        const source = currentContainerRef.current;
14326        if (!source) {
14327          return;
14328        }
14329        const wrapper = ownerDocument(source).createElement("div");
14330        for (const child of Array.from(source.childNodes)) {
14331          wrapper.appendChild(child.cloneNode(true));
14332        }
14333        capturedNodeRef.current = wrapper;
14334      });
14335      const isTransitioning = previousContentNode != null;
14336      let childrenToRender;
14337      if (!isTransitioning) {
14338        childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
14339          "data-current": true,
14340          ref: currentContainerRef,
14341          children
14342        }, currentContentKey);
14343      } else {
14344        childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(React90.Fragment, {
14345          children: [/* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
14346            "data-previous": true,
14347            inert: inertValue(true),
14348            ref: previousContainerRef,
14349            style: {
14350              ...previousContentDimensions ? {
14351                "--popup-width": `$previousContentDimensions.width}px`,
14352                "--popup-height": `$previousContentDimensions.height}px`
14353              } : null,
14354              position: "absolute"
14355            },
14356            "data-ending-style": showStartingStyleAttribute ? void 0 : ""
14357          }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", {
14358            "data-current": true,
14359            ref: currentContainerRef,
14360            "data-starting-style": showStartingStyleAttribute ? "" : void 0,
14361            children
14362          }, currentContentKey)]
14363        });
14364      }
14365      useIsoLayoutEffect(() => {
14366        const container = previousContainerRef.current;
14367        if (!container || !previousContentNode) {
14368          return;
14369        }
14370        container.replaceChildren(...Array.from(previousContentNode.childNodes));
14371      }, [previousContentNode]);
14372      usePopupAutoResize({
14373        popupElement,
14374        positionerElement,
14375        mounted,
14376        content: payload,
14377        onMeasureLayout: handleMeasureLayout,
14378        onMeasureLayoutComplete: handleMeasureLayoutComplete,
14379        side,
14380        direction
14381      });
14382      const state = {
14383        activationDirection: getActivationDirection(newTriggerOffset),
14384        transitioning: isTransitioning
14385      };
14386      return {
14387        children: childrenToRender,
14388        state
14389      };
14390    }
14391    function getActivationDirection(offset4) {
14392      if (!offset4) {
14393        return void 0;
14394      }
14395      return `$getValueWithTolerance(offset4.horizontal, 5, "right", "left")} $getValueWithTolerance(offset4.vertical, 5, "down", "up")}`;
14396    }
14397    function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) {
14398      if (value > tolerance) {
14399        return positiveLabel;
14400      }
14401      if (value < -tolerance) {
14402        return negativeLabel;
14403      }
14404      return "";
14405    }
14406    function calculateRelativePosition(from, to) {
14407      const fromRect = from.getBoundingClientRect();
14408      const toRect = to.getBoundingClientRect();
14409      const fromCenter = {
14410        x: fromRect.left + fromRect.width / 2,
14411        y: fromRect.top + fromRect.height / 2
14412      };
14413      const toCenter = {
14414        x: toRect.left + toRect.width / 2,
14415        y: toRect.top + toRect.height / 2
14416      };
14417      return {
14418        horizontal: toCenter.x - fromCenter.x,
14419        vertical: toCenter.y - fromCenter.y
14420      };
14421    }
14422    function usePopupContentKey(activeTriggerId, payload) {
14423      const [contentKey, setContentKey] = React90.useState(0);
14424      const previousActiveTriggerIdRef = React90.useRef(activeTriggerId);
14425      const previousPayloadRef = React90.useRef(payload);
14426      const pendingPayloadUpdateRef = React90.useRef(false);
14427      useIsoLayoutEffect(() => {
14428        const previousActiveTriggerId = previousActiveTriggerIdRef.current;
14429        const previousPayload = previousPayloadRef.current;
14430        const triggerIdChanged = activeTriggerId !== previousActiveTriggerId;
14431        const payloadChanged = payload !== previousPayload;
14432        if (triggerIdChanged) {
14433          setContentKey((value) => value + 1);
14434          pendingPayloadUpdateRef.current = !payloadChanged;
14435        } else if (pendingPayloadUpdateRef.current && payloadChanged) {
14436          setContentKey((value) => value + 1);
14437          pendingPayloadUpdateRef.current = false;
14438        }
14439        previousActiveTriggerIdRef.current = activeTriggerId;
14440        previousPayloadRef.current = payload;
14441      }, [activeTriggerId, payload]);
14442      return `$activeTriggerId ?? "current"}-$contentKey}`;
14443    }
14444  
14445    // node_modules/@base-ui/react/menu/viewport/MenuViewport.mjs
14446    var MenuViewport = /* @__PURE__ */ React91.forwardRef(function MenuViewport2(componentProps, forwardedRef) {
14447      const {
14448        render: render4,
14449        className,
14450        style,
14451        children,
14452        ...elementProps
14453      } = componentProps;
14454      const {
14455        store
14456      } = useMenuRootContext();
14457      const {
14458        side
14459      } = useMenuPositionerContext();
14460      const instantType = store.useState("instantType");
14461      const {
14462        children: childrenToRender,
14463        state: viewportState
14464      } = usePopupViewport({
14465        store,
14466        side,
14467        children
14468      });
14469      const state = {
14470        activationDirection: viewportState.activationDirection,
14471        transitioning: viewportState.transitioning,
14472        instant: instantType
14473      };
14474      return useRenderElement("div", componentProps, {
14475        state,
14476        ref: forwardedRef,
14477        props: [elementProps, {
14478          children: childrenToRender
14479        }],
14480        stateAttributesMapping: popupViewportStateMapping
14481      });
14482    });
14483    if (true) MenuViewport.displayName = "MenuViewport";
14484  
14485    // node_modules/@base-ui/react/separator/Separator.mjs
14486    var React92 = __toESM(require_react(), 1);
14487    var Separator = /* @__PURE__ */ React92.forwardRef(function SeparatorComponent(componentProps, forwardedRef) {
14488      const {
14489        className,
14490        render: render4,
14491        orientation = "horizontal",
14492        style,
14493        ...elementProps
14494      } = componentProps;
14495      const state = {
14496        orientation
14497      };
14498      const element = useRenderElement("div", componentProps, {
14499        state,
14500        ref: forwardedRef,
14501        props: [{
14502          role: "separator",
14503          "aria-orientation": orientation
14504        }, elementProps]
14505      });
14506      return element;
14507    });
14508    if (true) Separator.displayName = "Separator";
14509  
14510    // node_modules/@base-ui/react/menu/submenu-trigger/MenuSubmenuTrigger.mjs
14511    var React93 = __toESM(require_react(), 1);
14512  
14513    // node_modules/@base-ui/utils/isElementDisabled.mjs
14514    function isElementDisabled(element) {
14515      return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true";
14516    }
14517  
14518    // node_modules/@base-ui/react/menu/submenu-trigger/MenuSubmenuTrigger.mjs
14519    var VOICE_OVER_EXPANDED_PROPS = {
14520      "aria-expanded": void 0
14521    };
14522    var MenuSubmenuTrigger = /* @__PURE__ */ React93.forwardRef(function MenuSubmenuTrigger2(componentProps, forwardedRef) {
14523      const {
14524        render: render4,
14525        className,
14526        style,
14527        label,
14528        id: idProp,
14529        nativeButton = false,
14530        openOnHover = true,
14531        delay = 100,
14532        closeDelay = 0,
14533        disabled: disabledProp = false,
14534        ...elementProps
14535      } = componentProps;
14536      const submenuRootContext = useMenuSubmenuRootContext();
14537      if (!submenuRootContext?.parentMenu) {
14538        throw new Error(true ? "Base UI: <Menu.SubmenuTrigger> must be placed in <Menu.SubmenuRoot>." : formatErrorMessage_default(37));
14539      }
14540      const listItem = useCompositeListItem({
14541        guess: true,
14542        label
14543      });
14544      const menuPositionerContext = useMenuPositionerContext();
14545      const {
14546        store
14547      } = useMenuRootContext();
14548      const thisTriggerId = useBaseUiId(idProp);
14549      const open = store.useState("open");
14550      const floatingRootContext = store.useState("floatingRootContext");
14551      const floatingTreeRoot = store.useState("floatingTreeRoot");
14552      const popupId = store.useState("triggerPopupId", thisTriggerId);
14553      const baseRegisterTrigger = useTriggerRegistration(thisTriggerId, store);
14554      const registerTrigger = React93.useCallback((element2) => {
14555        const cleanup = baseRegisterTrigger(element2);
14556        if (element2 !== null && store.select("open") && store.select("activeTriggerId") == null) {
14557          store.update({
14558            activeTriggerId: thisTriggerId,
14559            activeTriggerElement: element2,
14560            closeDelay
14561          });
14562        }
14563        return cleanup;
14564      }, [baseRegisterTrigger, closeDelay, store, thisTriggerId]);
14565      const triggerElementRef = React93.useRef(null);
14566      const handleTriggerElementRef = React93.useCallback((el) => {
14567        triggerElementRef.current = el;
14568        store.set("activeTriggerElement", el);
14569      }, [store]);
14570      store.useSyncedValue("closeDelay", closeDelay);
14571      const parentMenuStore = submenuRootContext.parentMenu;
14572      const rootDisabled = store.useState("disabled");
14573      const parentDisabled = parentMenuStore.useState("disabled");
14574      const disabled2 = disabledProp || rootDisabled || parentDisabled;
14575      if (true) {
14576        React93.useEffect(() => {
14577          const element2 = triggerElementRef.current;
14578          if (element2 && isElementDisabled(element2) && !disabled2) {
14579            const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
14580            warn(`A disabled element was detected on <Menu.SubmenuTrigger>. To properly disable the trigger, use the \`disabled\` prop on the component instead of setting it on the rendered element.$ownerStackMessage}`);
14581          }
14582        });
14583      }
14584      const itemProps = parentMenuStore.useState("itemProps");
14585      const highlighted = parentMenuStore.useState("isActive", listItem.index);
14586      const itemMetadata = React93.useMemo(() => ({
14587        type: "submenu-trigger",
14588        setActive() {
14589          if (parentMenuStore.select("highlightItemOnHover")) {
14590            parentMenuStore.set("activeIndex", listItem.index);
14591          }
14592        }
14593      }), [parentMenuStore, listItem.index]);
14594      const {
14595        getItemProps,
14596        itemRef
14597      } = useMenuItem({
14598        closeOnClick: false,
14599        disabled: disabled2,
14600        highlighted,
14601        id: thisTriggerId,
14602        store,
14603        typingRef: parentMenuStore.context.typingRef,
14604        nativeButton,
14605        itemMetadata,
14606        nodeId: menuPositionerContext?.context.nodeId
14607      });
14608      const hoverEnabled = store.useState("hoverEnabled");
14609      const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
14610        enabled: hoverEnabled && openOnHover && !disabled2,
14611        handleClose: safePolygon({
14612          blockPointerEvents: true
14613        }),
14614        mouseOnly: true,
14615        move: true,
14616        restMs: delay,
14617        delay: {
14618          open: delay,
14619          close: closeDelay
14620        },
14621        shouldOpen: delay > 0 ? () => parentMenuStore.select("allowMouseEnter") : void 0,
14622        triggerElementRef,
14623        externalTree: floatingTreeRoot,
14624        isClosing: () => store.select("transitionStatus") === "ending",
14625        // Chrome can drop the trigger's `mouseleave` during a fast pointer sweep,
14626        // leaving a stale submenu open (see #5152) — cancel from `mouseout` too.
14627        guardStaleOpen: true
14628      });
14629      const click = useClick(floatingRootContext, {
14630        enabled: !disabled2,
14631        event: "mousedown",
14632        toggle: !openOnHover,
14633        ignoreMouse: openOnHover,
14634        stickIfOpen: false
14635      });
14636      const localInteractionProps = click.reference ?? EMPTY_OBJECT;
14637      const rootTriggerProps = store.useState("triggerProps", true);
14638      delete rootTriggerProps.id;
14639      const state = {
14640        disabled: disabled2,
14641        highlighted,
14642        open
14643      };
14644      const openMethod = store.useState("openMethod");
14645      const lastOpenChangeReason = store.useState("lastOpenChangeReason");
14646      const openedByKeyboard = lastOpenChangeReason === reason_parts_exports.listNavigation || openMethod === "keyboard";
14647      const shouldOmitExpanded = open && openedByKeyboard && parts_exports.screenReader.voiceOver;
14648      const element = useRenderElement("div", componentProps, {
14649        state,
14650        stateAttributesMapping: triggerOpenStateMapping,
14651        props: [
14652          localInteractionProps,
14653          hoverProps,
14654          rootTriggerProps,
14655          itemProps,
14656          // Opening a submenu changes the trigger's expanded state while the trigger still holds
14657          // focus, and VoiceOver announces that state change instead of the submenu item that focus
14658          // moves to a moment later, so the first item is never announced. Dropping the state while
14659          // the submenu is open avoids the announcement without claiming the submenu is collapsed;
14660          // `aria-haspopup` still conveys that the item opens a submenu.
14661          shouldOmitExpanded ? VOICE_OVER_EXPANDED_PROPS : void 0,
14662          {
14663            "aria-controls": popupId,
14664            tabIndex: open || highlighted ? 0 : -1,
14665            onBlur() {
14666              if (highlighted) {
14667                parentMenuStore.set("activeIndex", null);
14668              }
14669            }
14670          },
14671          elementProps,
14672          getItemProps
14673        ],
14674        ref: [forwardedRef, listItem.ref, itemRef, registerTrigger, handleTriggerElementRef]
14675      });
14676      return element;
14677    });
14678    if (true) MenuSubmenuTrigger.displayName = "MenuSubmenuTrigger";
14679  
14680    // node_modules/@base-ui/react/menu/store/MenuHandle.mjs
14681    var MenuHandle = class extends BasePopupHandle {
14682      constructor() {
14683        super(createNullMenuStore(), "Menu");
14684      }
14685      /**
14686       * Opens the menu and associates it with the trigger with the given id.
14687       *
14688       * This method should only be called in an event handler or an effect (not during rendering).
14689       *
14690       * @param triggerId ID of the trigger to associate with the menu. The trigger must be a matching
14691       * `Menu.Trigger` with this handle passed as a prop.
14692       */
14693      open(triggerId) {
14694        this.openByTrigger(triggerId);
14695      }
14696      /**
14697       * Closes the menu.
14698       *
14699       * This method should only be called in an event handler or an effect (not during rendering).
14700       */
14701      close() {
14702        this.closePopup();
14703      }
14704      /**
14705       * Whether the menu is currently open. Returns `false` while no root is attached to the handle.
14706       */
14707      get isOpen() {
14708        return this.attachedStore?.select("open") ?? false;
14709      }
14710    };
14711    function createMenuHandle() {
14712      return new MenuHandle();
14713    }
14714  
14715    // node_modules/@base-ui/react/field/index.parts.mjs
14716    var index_parts_exports2 = {};
14717    __export(index_parts_exports2, {
14718      Control: () => FieldControl,
14719      Description: () => FieldDescription,
14720      Error: () => FieldError,
14721      Item: () => FieldItem,
14722      Label: () => FieldLabel,
14723      Root: () => FieldRoot,
14724      Validity: () => FieldValidity
14725    });
14726  
14727    // node_modules/@base-ui/react/field/root/FieldRoot.mjs
14728    var React97 = __toESM(require_react(), 1);
14729  
14730    // node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs
14731    var React94 = __toESM(require_react(), 1);
14732    var FieldsetRootContext = /* @__PURE__ */ React94.createContext(void 0);
14733    if (true) FieldsetRootContext.displayName = "FieldsetRootContext";
14734    function useFieldsetRootContext(optional = false) {
14735      const context = React94.useContext(FieldsetRootContext);
14736      if (!context && !optional) {
14737        throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>." : formatErrorMessage_default(86));
14738      }
14739      return context;
14740    }
14741  
14742    // node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs
14743    var React95 = __toESM(require_react(), 1);
14744    var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
14745    var LabelableProvider = function LabelableProvider2(props) {
14746      const defaultId = useBaseUiId();
14747      const initialControlId = props.controlId === void 0 ? defaultId : props.controlId;
14748      const [controlId, setControlIdState] = React95.useState(initialControlId);
14749      const [labelId, setLabelId] = React95.useState(props.labelId);
14750      const [messageIds, setMessageIds] = React95.useState([]);
14751      const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map());
14752      const {
14753        messageIds: parentMessageIds
14754      } = useLabelableContext();
14755      const registerControlId = useStableCallback((source, nextId) => {
14756        const registrations = registrationsRef.current;
14757        if (nextId === void 0) {
14758          registrations.delete(source);
14759          return;
14760        }
14761        registrations.set(source, nextId);
14762        setControlIdState((prev) => {
14763          if (registrations.size === 0) {
14764            return void 0;
14765          }
14766          let nextControlId;
14767          for (const id of registrations.values()) {
14768            if (prev !== void 0 && id === prev) {
14769              return prev;
14770            }
14771            if (nextControlId === void 0) {
14772              nextControlId = id;
14773            }
14774          }
14775          return nextControlId;
14776        });
14777      });
14778      const getDescriptionProps = React95.useCallback((externalProps) => {
14779        const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : [];
14780        ids.push(...parentMessageIds, ...messageIds);
14781        return {
14782          ...externalProps,
14783          "aria-describedby": Array.from(new Set(ids)).join(" ") || void 0
14784        };
14785      }, [parentMessageIds, messageIds]);
14786      const contextValue = React95.useMemo(() => ({
14787        controlId,
14788        registerControlId,
14789        labelId,
14790        setLabelId,
14791        messageIds,
14792        setMessageIds,
14793        getDescriptionProps
14794      }), [controlId, registerControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]);
14795      return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(LabelableContext.Provider, {
14796        value: contextValue,
14797        children: props.children
14798      });
14799    };
14800    if (true) LabelableProvider.displayName = "LabelableProvider";
14801  
14802    // node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs
14803    var React96 = __toESM(require_react(), 1);
14804    function useFieldControlRegistration(params) {
14805      const {
14806        commit,
14807        invalid,
14808        markedDirtyRef,
14809        name,
14810        setRegisteredFieldName,
14811        registeredFieldIdRef,
14812        setValidityData,
14813        validityData
14814      } = params;
14815      const {
14816        formRef
14817      } = useFormContext();
14818      const activeFieldControlSourceRef = React96.useRef(null);
14819      const registrationRef = React96.useRef(null);
14820      const initialValueCapturedRef = React96.useRef(false);
14821      const getValueForForm = useStableCallback(() => {
14822        const registration = registrationRef.current;
14823        if (!registration) {
14824          return void 0;
14825        }
14826        if (registration.getValue) {
14827          return registration.getValue();
14828        }
14829        return registration.value;
14830      });
14831      function getRegistrationValue(registration) {
14832        return registration.value === void 0 ? getValueForForm() : registration.value;
14833      }
14834      const validate = useStableCallback(() => {
14835        const registration = registrationRef.current;
14836        markedDirtyRef.current = true;
14837        if (!registration) {
14838          commit(validityData.value);
14839          return;
14840        }
14841        commit(getRegistrationValue(registration));
14842      });
14843      function refreshRegistration() {
14844        const registration = registrationRef.current;
14845        if (!registration || !registration.id) {
14846          return;
14847        }
14848        formRef.current.fields.set(registration.id, {
14849          getValue: getValueForForm,
14850          name: name ?? registration.name,
14851          controlRef: registration.controlRef,
14852          validityData: getCombinedFieldValidityData(validityData, invalid),
14853          validate
14854        });
14855      }
14856      function deleteRegistration(id = registrationRef.current?.id) {
14857        if (id) {
14858          formRef.current.fields.delete(id);
14859        }
14860      }
14861      function captureInitialValue(registration) {
14862        if (initialValueCapturedRef.current) {
14863          return;
14864        }
14865        initialValueCapturedRef.current = true;
14866        const initialValue = getRegistrationValue(registration);
14867        setValidityData((prev) => prev.initialValue === initialValue ? prev : {
14868          ...prev,
14869          initialValue
14870        });
14871      }
14872      useIsoLayoutEffect(() => {
14873        const registration = registrationRef.current;
14874        if (!registration || !registration.id) {
14875          return;
14876        }
14877        setRegisteredFieldName(name ? void 0 : registration.name);
14878        formRef.current.fields.set(registration.id, {
14879          getValue: getValueForForm,
14880          name: name ?? registration.name,
14881          controlRef: registration.controlRef,
14882          validityData: getCombinedFieldValidityData(validityData, invalid),
14883          validate
14884        });
14885      }, [formRef, getValueForForm, invalid, name, setRegisteredFieldName, validate, validityData]);
14886      useIsoLayoutEffect(() => {
14887        const fields = formRef.current.fields;
14888        return () => {
14889          const id = registrationRef.current?.id;
14890          if (id) {
14891            fields.delete(id);
14892          }
14893        };
14894      }, [formRef]);
14895      const register2 = useStableCallback((source, registration) => {
14896        if (!registration) {
14897          if (activeFieldControlSourceRef.current === source) {
14898            activeFieldControlSourceRef.current = null;
14899            deleteRegistration();
14900            registrationRef.current = null;
14901            setRegisteredFieldName(void 0);
14902            registeredFieldIdRef.current = void 0;
14903          }
14904          return;
14905        }
14906        const previousId = registrationRef.current?.id;
14907        activeFieldControlSourceRef.current = source;
14908        registrationRef.current = registration;
14909        if (!name) {
14910          setRegisteredFieldName(registration.name);
14911        }
14912        registeredFieldIdRef.current = registration.id;
14913        if (previousId && previousId !== registration.id) {
14914          deleteRegistration(previousId);
14915        }
14916        captureInitialValue(registration);
14917        refreshRegistration();
14918      });
14919      return [validate, register2];
14920    }
14921  
14922    // node_modules/@base-ui/react/field/root/FieldRoot.mjs
14923    var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
14924    var FieldRootInner = /* @__PURE__ */ React97.forwardRef(function FieldRootInner2(componentProps, forwardedRef) {
14925      const {
14926        errors,
14927        validationMode: formValidationMode,
14928        submitAttemptedRef
14929      } = useFormContext();
14930      const {
14931        render: render4,
14932        className,
14933        validate: validateProp,
14934        validationDebounceTime = 0,
14935        validationMode = formValidationMode,
14936        name,
14937        disabled: disabledProp = false,
14938        invalid: invalidProp,
14939        dirty: dirtyProp,
14940        touched: touchedProp,
14941        actionsRef,
14942        style,
14943        ...elementProps
14944      } = componentProps;
14945      const disabledFieldset = useFieldsetRootContext(true)?.disabled;
14946      const validate = useStableCallback(validateProp || (() => null));
14947      const disabled2 = disabledFieldset || disabledProp;
14948      const [touchedState, setTouchedUnwrapped] = React97.useState(false);
14949      const [dirtyState, setDirtyUnwrapped] = React97.useState(false);
14950      const [filled, setFilled] = React97.useState(false);
14951      const [focused, setFocused] = React97.useState(false);
14952      const dirty = dirtyProp ?? dirtyState;
14953      const touched = touchedProp ?? touchedState;
14954      const markedDirtyRef = React97.useRef(dirty);
14955      const registeredFieldIdRef = React97.useRef(void 0);
14956      const [registeredFieldName, setRegisteredFieldName] = React97.useState();
14957      const effectiveName = name ?? registeredFieldName;
14958      useIsoLayoutEffect(() => {
14959        if (dirtyProp !== void 0) {
14960          markedDirtyRef.current = dirtyProp;
14961        }
14962      }, [dirtyProp]);
14963      const setDirty = useStableCallback((value) => {
14964        if (dirtyProp !== void 0) {
14965          return;
14966        }
14967        if (value) {
14968          markedDirtyRef.current = true;
14969        }
14970        setDirtyUnwrapped(value);
14971      });
14972      const setTouched = useStableCallback((value) => {
14973        if (touchedProp !== void 0) {
14974          return;
14975        }
14976        setTouchedUnwrapped(value);
14977      });
14978      const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitAttemptedRef.current);
14979      const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null;
14980      const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);
14981      const invalid = invalidProp === true || hasFormError;
14982      const [validityData, setValidityData] = React97.useState({
14983        state: DEFAULT_VALIDITY_STATE,
14984        error: "",
14985        errors: [],
14986        value: null,
14987        initialValue: null
14988      });
14989      const valid = !invalid && (disabled2 ? null : validityData.state.valid);
14990      const state = React97.useMemo(() => ({
14991        disabled: disabled2,
14992        touched,
14993        dirty,
14994        valid,
14995        filled,
14996        focused
14997      }), [disabled2, touched, dirty, valid, filled, focused]);
14998      const validation = useFieldValidation({
14999        setValidityData,
15000        validate,
15001        validityData,
15002        validationDebounceTime,
15003        invalid,
15004        markedDirtyRef,
15005        state,
15006        shouldValidateOnChange,
15007        registeredFieldIdRef
15008      });
15009      const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({
15010        commit: validation.commit,
15011        invalid,
15012        markedDirtyRef,
15013        name,
15014        setRegisteredFieldName,
15015        registeredFieldIdRef,
15016        setValidityData,
15017        validityData
15018      });
15019      React97.useImperativeHandle(actionsRef, () => ({
15020        validate: validateFieldControl
15021      }), [validateFieldControl]);
15022      const contextValue = React97.useMemo(() => ({
15023        invalid,
15024        name: effectiveName,
15025        validityData,
15026        setValidityData,
15027        disabled: disabled2,
15028        setTouched,
15029        setDirty,
15030        setFilled,
15031        setFocused,
15032        validationMode,
15033        shouldValidateOnChange,
15034        state,
15035        registerFieldControl,
15036        validation
15037      }), [invalid, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]);
15038      const element = useRenderElement("div", componentProps, {
15039        ref: forwardedRef,
15040        state,
15041        props: elementProps,
15042        stateAttributesMapping: fieldValidityMapping
15043      });
15044      return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FieldRootContext.Provider, {
15045        value: contextValue,
15046        children: element
15047      });
15048    });
15049    if (true) FieldRootInner.displayName = "FieldRootInner";
15050    var FieldRoot = /* @__PURE__ */ React97.forwardRef(function FieldRoot2(componentProps, forwardedRef) {
15051      return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(LabelableProvider, {
15052        children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(FieldRootInner, {
15053          ...componentProps,
15054          ref: forwardedRef
15055        })
15056      });
15057    });
15058    if (true) FieldRoot.displayName = "FieldRoot";
15059  
15060    // node_modules/@base-ui/react/field/label/FieldLabel.mjs
15061    var React98 = __toESM(require_react(), 1);
15062    var FieldLabel = /* @__PURE__ */ React98.forwardRef(function FieldLabel2(componentProps, forwardedRef) {
15063      const {
15064        render: render4,
15065        className,
15066        style,
15067        id: idProp,
15068        nativeLabel = true,
15069        ...elementProps
15070      } = componentProps;
15071      const fieldRootContext = useFieldRootContext(false);
15072      const fieldItemContext = useFieldItemContext();
15073      const {
15074        labelId
15075      } = useLabelableContext();
15076      const state = {
15077        ...fieldRootContext.state,
15078        disabled: fieldRootContext.disabled || fieldItemContext.disabled
15079      };
15080      const labelRef = React98.useRef(null);
15081      const labelProps = useLabel({
15082        id: labelId ?? idProp,
15083        native: nativeLabel
15084      });
15085      if (true) {
15086        React98.useEffect(() => {
15087          if (!labelRef.current) {
15088            return;
15089          }
15090          const isLabelTag = labelRef.current.tagName === "LABEL";
15091          if (nativeLabel) {
15092            if (!isLabelTag) {
15093              const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
15094              const message2 = "<Field.Label> expected a <label> element because the `nativeLabel` prop is true. Rendering a non-<label> disables native label association, so `htmlFor` will not work. Use a real <label> in the `render` prop, or set `nativeLabel` to `false`.";
15095              error(`$message2}$ownerStackMessage}`);
15096            }
15097          } else if (isLabelTag) {
15098            const ownerStackMessage = SafeReact.captureOwnerStack?.() || "";
15099            const message2 = "<Field.Label> expected a non-<label> element because the `nativeLabel` prop is false. Rendering a <label> assumes native label behavior while Base UI treats it as non-native, which can cause unexpected pointer behavior. Use a non-<label> in the `render` prop, or set `nativeLabel` to `true`.";
15100            error(`$message2}$ownerStackMessage}`);
15101          }
15102        }, [nativeLabel]);
15103      }
15104      const element = useRenderElement("label", componentProps, {
15105        ref: [forwardedRef, labelRef],
15106        state,
15107        props: [labelProps, elementProps],
15108        stateAttributesMapping: fieldValidityMapping
15109      });
15110      return element;
15111    });
15112    if (true) FieldLabel.displayName = "FieldLabel";
15113  
15114    // node_modules/@base-ui/react/field/error/FieldError.mjs
15115    var React99 = __toESM(require_react(), 1);
15116    var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
15117    var stateAttributesMapping = {
15118      ...fieldValidityMapping,
15119      ...transitionStatusMapping
15120    };
15121    var FieldError = /* @__PURE__ */ React99.forwardRef(function FieldError2(componentProps, forwardedRef) {
15122      const {
15123        render: render4,
15124        id: idProp,
15125        className,
15126        match: match2,
15127        style,
15128        ...elementProps
15129      } = componentProps;
15130      const id = useBaseUiId(idProp);
15131      const {
15132        validityData,
15133        state: fieldState,
15134        name
15135      } = useFieldRootContext(false);
15136      const {
15137        setMessageIds
15138      } = useLabelableContext();
15139      const {
15140        errors
15141      } = useFormContext();
15142      const formError = name && Object.hasOwn(errors, name) ? errors[name] : null;
15143      const hasFormError = !!(Array.isArray(formError) ? formError.length : formError);
15144      const hasSpecificMatch = typeof match2 === "string";
15145      let rendered = false;
15146      if (match2 === true) {
15147        rendered = true;
15148      } else if (fieldState.disabled) {
15149        rendered = false;
15150      } else if (hasSpecificMatch) {
15151        rendered = Boolean(validityData.state[match2]);
15152      } else {
15153        rendered = hasFormError || validityData.state.valid === false;
15154      }
15155      const {
15156        mounted,
15157        transitionStatus,
15158        setMounted
15159      } = useTransitionStatus(rendered);
15160      useIsoLayoutEffect(() => {
15161        if (!rendered || !id) {
15162          return void 0;
15163        }
15164        setMessageIds((v2) => v2.concat(id));
15165        return () => {
15166          setMessageIds((v2) => v2.filter((item) => item !== id));
15167        };
15168      }, [rendered, id, setMessageIds]);
15169      const errorRef = React99.useRef(null);
15170      const [lastRenderedMessage, setLastRenderedMessage] = React99.useState(null);
15171      const [lastRenderedMessageKey, setLastRenderedMessageKey] = React99.useState(null);
15172      let error2 = validityData.error;
15173      if (!hasSpecificMatch && hasFormError) {
15174        error2 = formError;
15175      } else if (validityData.errors.length > 1) {
15176        error2 = validityData.errors;
15177      }
15178      let errorMessage = error2;
15179      if (Array.isArray(error2)) {
15180        errorMessage = error2.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("ul", {
15181          children: error2.map((message2) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("li", {
15182            children: message2
15183          }, message2))
15184        }) : error2[0];
15185      }
15186      const errorKey = Array.isArray(error2) ? JSON.stringify(error2) : error2;
15187      if (rendered && errorKey !== lastRenderedMessageKey) {
15188        setLastRenderedMessageKey(errorKey);
15189        setLastRenderedMessage(errorMessage);
15190      }
15191      useOpenChangeComplete({
15192        open: rendered,
15193        ref: errorRef,
15194        onComplete() {
15195          if (!rendered) {
15196            setMounted(false);
15197          }
15198        }
15199      });
15200      const state = {
15201        ...fieldState,
15202        transitionStatus
15203      };
15204      const element = useRenderElement("div", componentProps, {
15205        ref: [forwardedRef, errorRef],
15206        state,
15207        props: [{
15208          id,
15209          children: rendered ? errorMessage : lastRenderedMessage
15210        }, elementProps],
15211        stateAttributesMapping,
15212        enabled: mounted
15213      });
15214      if (!mounted) {
15215        return null;
15216      }
15217      return element;
15218    });
15219    if (true) FieldError.displayName = "FieldError";
15220  
15221    // node_modules/@base-ui/react/field/description/FieldDescription.mjs
15222    var React100 = __toESM(require_react(), 1);
15223    var FieldDescription = /* @__PURE__ */ React100.forwardRef(function FieldDescription2(componentProps, forwardedRef) {
15224      const {
15225        render: render4,
15226        id: idProp,
15227        className,
15228        style,
15229        ...elementProps
15230      } = componentProps;
15231      const id = useBaseUiId(idProp);
15232      const fieldRootContext = useFieldRootContext(false);
15233      const fieldItemContext = useFieldItemContext();
15234      const {
15235        setMessageIds
15236      } = useLabelableContext();
15237      const state = {
15238        ...fieldRootContext.state,
15239        disabled: fieldRootContext.disabled || fieldItemContext.disabled
15240      };
15241      useIsoLayoutEffect(() => {
15242        if (!id) {
15243          return void 0;
15244        }
15245        setMessageIds((v2) => v2.concat(id));
15246        return () => {
15247          setMessageIds((v2) => v2.filter((item) => item !== id));
15248        };
15249      }, [id, setMessageIds]);
15250      const element = useRenderElement("p", componentProps, {
15251        ref: forwardedRef,
15252        state,
15253        props: [{
15254          id
15255        }, elementProps],
15256        stateAttributesMapping: fieldValidityMapping
15257      });
15258      return element;
15259    });
15260    if (true) FieldDescription.displayName = "FieldDescription";
15261  
15262    // node_modules/@base-ui/react/field/control/FieldControl.mjs
15263    var React101 = __toESM(require_react(), 1);
15264    var FieldControl = /* @__PURE__ */ React101.forwardRef(function FieldControl2(componentProps, forwardedRef) {
15265      const {
15266        render: render4,
15267        className,
15268        id: idProp,
15269        name: nameProp,
15270        value: valueProp,
15271        disabled: disabledProp = false,
15272        onValueChange,
15273        defaultValue: defaultValue2,
15274        autoFocus = false,
15275        style,
15276        ...elementProps
15277      } = componentProps;
15278      const {
15279        state: fieldState,
15280        name: fieldName,
15281        disabled: fieldDisabled,
15282        setTouched,
15283        setDirty,
15284        validityData,
15285        setFocused,
15286        setFilled,
15287        validationMode,
15288        validation
15289      } = useFieldRootContext();
15290      const {
15291        clearErrors
15292      } = useFormContext();
15293      const disabled2 = fieldDisabled || disabledProp;
15294      const name = fieldName ?? nameProp;
15295      const state = {
15296        ...fieldState,
15297        disabled: disabled2
15298      };
15299      const {
15300        labelId
15301      } = useLabelableContext();
15302      const id = useLabelableId({
15303        id: idProp
15304      });
15305      useIsoLayoutEffect(() => {
15306        const hasExternalValue = valueProp != null;
15307        if (validation.inputRef.current?.value || hasExternalValue && valueProp !== "") {
15308          setFilled(true);
15309        } else if (hasExternalValue && valueProp === "") {
15310          setFilled(false);
15311        }
15312      }, [validation.inputRef, setFilled, valueProp]);
15313      const inputRef = React101.useRef(null);
15314      useIsoLayoutEffect(() => {
15315        if (autoFocus && inputRef.current === activeElement(ownerDocument(inputRef.current))) {
15316          setFocused(true);
15317        }
15318      }, [autoFocus, setFocused]);
15319      const [valueUnwrapped] = useControlled({
15320        controlled: valueProp,
15321        default: defaultValue2,
15322        name: "FieldControl",
15323        state: "value"
15324      });
15325      const isControlled = valueProp !== void 0;
15326      const value = isControlled ? valueUnwrapped : void 0;
15327      const getValueFromInput = useStableCallback(() => validation.inputRef.current?.value);
15328      useRegisterFieldControl(validation.inputRef, id, value, getValueFromInput, !disabled2, nameProp);
15329      const element = useRenderElement("input", componentProps, {
15330        ref: [forwardedRef, inputRef],
15331        state,
15332        props: [{
15333          id,
15334          disabled: disabled2,
15335          name,
15336          ref: validation.inputRef,
15337          "aria-labelledby": labelId,
15338          autoFocus,
15339          ...isControlled ? {
15340            value
15341          } : {
15342            defaultValue: defaultValue2
15343          },
15344          onChange(event) {
15345            const inputValue = event.currentTarget.value;
15346            onValueChange?.(inputValue, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent));
15347            setDirty(inputValue !== (validityData.initialValue ?? ""));
15348            setFilled(inputValue !== "");
15349            if (!event.nativeEvent.defaultPrevented) {
15350              clearErrors(name);
15351              validation.change(inputValue);
15352            }
15353          },
15354          onFocus() {
15355            setFocused(true);
15356          },
15357          onBlur(event) {
15358            setTouched(true);
15359            setFocused(false);
15360            if (validationMode === "onBlur") {
15361              validation.commit(event.currentTarget.value);
15362            }
15363          },
15364          onKeyDown(event) {
15365            if (event.currentTarget.tagName === "INPUT" && event.key === "Enter") {
15366              setTouched(true);
15367              validation.commit(event.currentTarget.value);
15368            }
15369          }
15370        }, elementProps, (props) => validation.getValidationProps(disabled2, props)],
15371        stateAttributesMapping: fieldValidityMapping
15372      });
15373      return element;
15374    });
15375    if (true) FieldControl.displayName = "FieldControl";
15376  
15377    // node_modules/@base-ui/react/field/validity/FieldValidity.mjs
15378    var React102 = __toESM(require_react(), 1);
15379    var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
15380    var FieldValidity = function FieldValidity2(props) {
15381      const {
15382        children
15383      } = props;
15384      const {
15385        validityData,
15386        invalid
15387      } = useFieldRootContext(false);
15388      const combinedFieldValidityData = React102.useMemo(() => getCombinedFieldValidityData(validityData, invalid), [validityData, invalid]);
15389      const isInvalid = combinedFieldValidityData.state.valid === false;
15390      const {
15391        transitionStatus
15392      } = useTransitionStatus(isInvalid);
15393      const fieldValidityState = React102.useMemo(() => {
15394        return {
15395          ...combinedFieldValidityData,
15396          validity: combinedFieldValidityData.state,
15397          transitionStatus
15398        };
15399      }, [combinedFieldValidityData, transitionStatus]);
15400      return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(React102.Fragment, {
15401        children: children(fieldValidityState)
15402      });
15403    };
15404    if (true) FieldValidity.displayName = "FieldValidity";
15405  
15406    // node_modules/@base-ui/react/field/item/FieldItem.mjs
15407    var React103 = __toESM(require_react(), 1);
15408    var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
15409    var FieldItem = /* @__PURE__ */ React103.forwardRef(function FieldItem2(componentProps, forwardedRef) {
15410      const {
15411        render: render4,
15412        className,
15413        style,
15414        disabled: disabledProp = false,
15415        ...elementProps
15416      } = componentProps;
15417      const {
15418        state: fieldState,
15419        disabled: rootDisabled
15420      } = useFieldRootContext(false);
15421      const disabled2 = rootDisabled || disabledProp;
15422      const state = {
15423        ...fieldState,
15424        disabled: disabled2
15425      };
15426      const fieldItemContext = React103.useMemo(() => ({
15427        disabled: disabled2
15428      }), [disabled2]);
15429      const element = useRenderElement("div", componentProps, {
15430        ref: forwardedRef,
15431        state,
15432        props: elementProps,
15433        stateAttributesMapping: fieldValidityMapping
15434      });
15435      return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(LabelableProvider, {
15436        children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(FieldItemContext.Provider, {
15437          value: fieldItemContext,
15438          children: element
15439        })
15440      });
15441    });
15442    if (true) FieldItem.displayName = "FieldItem";
15443  
15444    // node_modules/@base-ui/react/input/Input.mjs
15445    var React104 = __toESM(require_react(), 1);
15446    var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
15447    var Input = /* @__PURE__ */ React104.forwardRef(function Input2(props, forwardedRef) {
15448      return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(index_parts_exports2.Control, {
15449        ref: forwardedRef,
15450        ...props
15451      });
15452    });
15453    if (true) Input.displayName = "Input";
15454  
15455    // node_modules/@base-ui/react/utils/FloatingPortalLite.mjs
15456    var React105 = __toESM(require_react(), 1);
15457    var ReactDOM8 = __toESM(require_react_dom(), 1);
15458    var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
15459    var FloatingPortalLite = /* @__PURE__ */ React105.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) {
15460      const {
15461        children,
15462        container,
15463        className,
15464        render: render4,
15465        style,
15466        ...elementProps
15467      } = componentProps;
15468      const {
15469        node: portalNode,
15470        subtree: portalSubtree
15471      } = useFloatingPortalNode({
15472        container,
15473        ref: forwardedRef,
15474        componentProps,
15475        elementProps
15476      });
15477      if (!portalSubtree && !portalNode) {
15478        return null;
15479      }
15480      return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(React105.Fragment, {
15481        children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM8.createPortal(children, portalNode)]
15482      });
15483    });
15484    if (true) FloatingPortalLite.displayName = "FloatingPortalLite";
15485  
15486    // node_modules/@base-ui/react/tooltip/index.parts.mjs
15487    var index_parts_exports3 = {};
15488    __export(index_parts_exports3, {
15489      Arrow: () => TooltipArrow,
15490      Handle: () => TooltipHandle,
15491      Popup: () => TooltipPopup,
15492      Portal: () => TooltipPortal,
15493      Positioner: () => TooltipPositioner,
15494      Provider: () => TooltipProvider,
15495      Root: () => TooltipRoot,
15496      Trigger: () => TooltipTrigger,
15497      Viewport: () => TooltipViewport,
15498      createHandle: () => createTooltipHandle
15499    });
15500  
15501    // node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs
15502    var React108 = __toESM(require_react(), 1);
15503  
15504    // node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs
15505    var React106 = __toESM(require_react(), 1);
15506    var TooltipRootContext = /* @__PURE__ */ React106.createContext(void 0);
15507    if (true) TooltipRootContext.displayName = "TooltipRootContext";
15508    function useTooltipRootContext(optional) {
15509      const context = React106.useContext(TooltipRootContext);
15510      if (context === void 0 && !optional) {
15511        throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72));
15512      }
15513      return context;
15514    }
15515  
15516    // node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs
15517    var React107 = __toESM(require_react(), 1);
15518    var selectors3 = {
15519      ...popupStoreSelectors,
15520      disabled: (state) => state.disabled,
15521      instantType: (state) => state.instantType,
15522      isInstantPhase: (state) => state.isInstantPhase,
15523      trackCursorAxis: (state) => state.trackCursorAxis,
15524      disableHoverablePopup: (state) => state.disableHoverablePopup,
15525      lastOpenChangeReason: (state) => state.openChangeReason,
15526      closeOnClick: (state) => state.closeOnClick,
15527      closeDelay: (state) => state.closeDelay,
15528      adaptiveOrigin: (state) => state.adaptiveOrigin
15529    };
15530    var TooltipStore = class extends ReactStore {
15531      constructor(initialState, floatingId, nested) {
15532        const triggerElements = new PopupTriggerMap();
15533        super(createInitialState2(initialState, triggerElements, floatingId, nested), createInitialContext2(triggerElements), selectors3);
15534      }
15535      setOpen = (nextOpen, eventDetails) => {
15536        applyPopupOpenChange(this, nextOpen, eventDetails, {
15537          extraState: {
15538            openChangeReason: eventDetails.reason
15539          }
15540        });
15541      };
15542      // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change.
15543      cancelPendingOpen(event) {
15544        this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event));
15545      }
15546    };
15547    function createNullTooltipStore() {
15548      const triggerElements = new PopupTriggerMap();
15549      const store = new NullStore(Object.freeze(createInitialState2(void 0, triggerElements)), Object.freeze(createInitialContext2(triggerElements)), selectors3);
15550      return Object.assign(store, {
15551        setOpen: NOOP,
15552        cancelPendingOpen: NOOP
15553      });
15554    }
15555    function createInitialState2(initialState, triggerElements, floatingId, nested = false) {
15556      const state = {
15557        ...createInitialPopupStoreState(),
15558        disabled: false,
15559        instantType: void 0,
15560        isInstantPhase: false,
15561        trackCursorAxis: "none",
15562        disableHoverablePopup: false,
15563        openChangeReason: null,
15564        closeOnClick: true,
15565        closeDelay: 0,
15566        adaptiveOrigin: void 0,
15567        ...initialState
15568      };
15569      state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);
15570      return state;
15571    }
15572    function createInitialContext2(triggerElements) {
15573      return {
15574        popupRef: /* @__PURE__ */ React107.createRef(),
15575        onOpenChange: void 0,
15576        onOpenChangeComplete: void 0,
15577        triggerElements
15578      };
15579    }
15580  
15581    // node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs
15582    var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
15583    var TooltipRoot = fastComponent(function TooltipRoot2(props) {
15584      const {
15585        disabled: disabled2 = false,
15586        defaultOpen = false,
15587        open: openProp,
15588        disableHoverablePopup = false,
15589        trackCursorAxis = "none",
15590        actionsRef,
15591        onOpenChange,
15592        onOpenChangeComplete,
15593        handle,
15594        triggerId: triggerIdProp,
15595        defaultTriggerId: defaultTriggerIdProp = null,
15596        children
15597      } = props;
15598      const store = usePopupRootStore((floatingId, nested) => new TooltipStore({
15599        open: defaultOpen,
15600        openProp,
15601        activeTriggerId: defaultTriggerIdProp,
15602        triggerIdProp
15603      }, floatingId, nested));
15604      store.useControlledProp("openProp", openProp);
15605      store.useControlledProp("triggerIdProp", triggerIdProp);
15606      store.useContextCallback("onOpenChange", onOpenChange);
15607      store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete);
15608      const openState = store.useState("open");
15609      const open = !disabled2 && openState;
15610      const activeTriggerId = store.useState("activeTriggerId");
15611      const mounted = store.useState("mounted");
15612      const payload = store.useState("payload");
15613      store.useSyncedValues({
15614        trackCursorAxis,
15615        disableHoverablePopup,
15616        disabled: disabled2
15617      });
15618      useImplicitActiveTrigger(store, {
15619        closeOnActiveTriggerUnmount: true
15620      });
15621      const {
15622        forceUnmount,
15623        transitionStatus
15624      } = useOpenStateTransitions(open, store);
15625      const isInstantPhase = store.useState("isInstantPhase");
15626      const instantType = store.useState("instantType");
15627      const lastOpenChangeReason = store.useState("lastOpenChangeReason");
15628      const previousInstantTypeRef = React108.useRef(null);
15629      useIsoLayoutEffect(() => {
15630        if (openState && disabled2) {
15631          store.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled));
15632        }
15633      }, [openState, disabled2, store]);
15634      useIsoLayoutEffect(() => {
15635        if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) {
15636          if (instantType !== "delay") {
15637            previousInstantTypeRef.current = instantType;
15638          }
15639          store.set("instantType", "delay");
15640        } else if (previousInstantTypeRef.current !== null) {
15641          store.set("instantType", previousInstantTypeRef.current);
15642          previousInstantTypeRef.current = null;
15643        }
15644      }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store]);
15645      useIsoLayoutEffect(() => {
15646        if (open) {
15647          if (activeTriggerId == null) {
15648            store.set("payload", void 0);
15649          }
15650        }
15651      }, [store, activeTriggerId, open]);
15652      React108.useImperativeHandle(actionsRef, () => ({
15653        unmount: forceUnmount,
15654        close: () => store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction))
15655      }), [forceUnmount, store]);
15656      const shouldRenderInteractions = open || mounted || !disabled2 && trackCursorAxis !== "none";
15657      return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(TooltipRootContext.Provider, {
15658        value: store,
15659        children: [handle && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(PopupHandleAttachment, {
15660          handle,
15661          store
15662        }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TooltipInteractions, {
15663          store,
15664          disabled: disabled2,
15665          trackCursorAxis
15666        }), typeof children === "function" ? children({
15667          payload
15668        }) : children]
15669      });
15670    });
15671    if (true) TooltipRoot.displayName = "TooltipRoot";
15672    function TooltipInteractions({
15673      store,
15674      disabled: disabled2,
15675      trackCursorAxis
15676    }) {
15677      const floatingRootContext = store.useState("floatingRootContext");
15678      const dismiss = useDismiss(floatingRootContext, {
15679        enabled: !disabled2,
15680        referencePress: () => store.select("closeOnClick")
15681      });
15682      const clientPoint = useClientPoint(floatingRootContext, {
15683        enabled: !disabled2 && trackCursorAxis !== "none",
15684        axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis
15685      });
15686      const triggerProps = React108.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]);
15687      usePopupInteractionProps(store, {
15688        activeTriggerProps: triggerProps,
15689        inactiveTriggerProps: triggerProps,
15690        popupProps: dismiss.floating ?? EMPTY_OBJECT
15691      });
15692      return null;
15693    }
15694  
15695    // node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs
15696    var React110 = __toESM(require_react(), 1);
15697  
15698    // node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs
15699    var React109 = __toESM(require_react(), 1);
15700    var TooltipProviderContext = /* @__PURE__ */ React109.createContext(void 0);
15701    if (true) TooltipProviderContext.displayName = "TooltipProviderContext";
15702    function useTooltipProviderContext() {
15703      return React109.useContext(TooltipProviderContext);
15704    }
15705  
15706    // node_modules/@base-ui/react/tooltip/utils/constants.mjs
15707    var OPEN_DELAY = 600;
15708  
15709    // node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs
15710    var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger";
15711    function getTargetElement(event) {
15712      if ("composedPath" in event) {
15713        const path = event.composedPath();
15714        for (let i2 = 0; i2 < path.length; i2 += 1) {
15715          const element = path[i2];
15716          if (isElement(element)) {
15717            return element;
15718          }
15719        }
15720      }
15721      const target = event.target;
15722      if (isElement(target)) {
15723        return target;
15724      }
15725      return null;
15726    }
15727    function closestEnabledTooltipTrigger(element) {
15728      let current = element;
15729      while (current) {
15730        const trigger = current.closest(`[$TOOLTIP_TRIGGER_IDENTIFIER}]`);
15731        if (trigger) {
15732          return trigger;
15733        }
15734        const root = current.getRootNode();
15735        current = "host" in root && isElement(root.host) ? root.host : null;
15736      }
15737      return null;
15738    }
15739    var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) {
15740      const {
15741        render: render4,
15742        className,
15743        style,
15744        handle,
15745        payload,
15746        disabled: disabledProp,
15747        delay,
15748        closeOnClick = true,
15749        closeDelay,
15750        id: idProp,
15751        ...elementProps
15752      } = componentProps;
15753      const rootContext = useTooltipRootContext(true);
15754      const handleStore = usePopupHandleStore(handle);
15755      const store = handleStore ?? rootContext;
15756      if (!store) {
15757        throw new Error(true ? "Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle." : formatErrorMessage_default(82));
15758      }
15759      const thisTriggerId = useBaseUiId(idProp);
15760      const isTriggerActive = store.useState("isTriggerActive", thisTriggerId);
15761      const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId);
15762      const floatingRootContext = store.useState("floatingRootContext");
15763      const triggerElementRef = React110.useRef(null);
15764      const delayWithDefault = delay ?? OPEN_DELAY;
15765      const closeDelayWithDefault = closeDelay ?? 0;
15766      const {
15767        registerTrigger,
15768        isMountedByThisTrigger
15769      } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {
15770        payload,
15771        closeOnClick,
15772        closeDelay: closeDelayWithDefault
15773      });
15774      const providerDelay = useTooltipProviderContext();
15775      const {
15776        delayRef,
15777        isInstantPhase,
15778        hasProvider
15779      } = useDelayGroup(floatingRootContext, {
15780        open: isOpenedByThisTrigger
15781      });
15782      const hoverInteraction = useHoverInteractionSharedState(floatingRootContext);
15783      store.useSyncedValue("isInstantPhase", isInstantPhase);
15784      const rootDisabled = store.useState("disabled");
15785      const disabled2 = disabledProp ?? rootDisabled;
15786      const disabledRef = useValueAsRef(disabled2);
15787      const trackCursorAxis = store.useState("trackCursorAxis");
15788      const disableHoverablePopup = store.useState("disableHoverablePopup");
15789      const isNestedTriggerHoveredRef = React110.useRef(false);
15790      const nestedTriggerOpenTimeout = useTimeout();
15791      const pointerTypeRef = React110.useRef(void 0);
15792      function getOpenDelay() {
15793        if (!hasProvider) {
15794          return delayWithDefault;
15795        }
15796        return getDelay(delayRef.current, "open") === 0 ? 0 : delay ?? providerDelay ?? OPEN_DELAY;
15797      }
15798      function isEnabledNestedTriggerTarget(target) {
15799        const triggerEl = triggerElementRef.current;
15800        if (!triggerEl || !target) {
15801          return false;
15802        }
15803        const nearestTrigger = closestEnabledTooltipTrigger(target);
15804        return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger);
15805      }
15806      function detectNestedTriggerHover(target) {
15807        const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);
15808        isNestedTriggerHoveredRef.current = nestedTriggerHovered;
15809        if (nestedTriggerHovered) {
15810          hoverInteraction.openChangeTimeout.clear();
15811          hoverInteraction.restTimeout.clear();
15812          hoverInteraction.restTimeoutPending = false;
15813          nestedTriggerOpenTimeout.clear();
15814        }
15815        return nestedTriggerHovered;
15816      }
15817      const hoverProps = useHoverReferenceInteraction(floatingRootContext, {
15818        enabled: !disabled2,
15819        mouseOnly: true,
15820        move: false,
15821        handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null,
15822        restMs: getOpenDelay,
15823        delay() {
15824          if (closeDelay == null && hasProvider) {
15825            return {
15826              close: getDelay(delayRef.current, "close")
15827            };
15828          }
15829          return {
15830            close: closeDelayWithDefault
15831          };
15832        },
15833        triggerElementRef,
15834        isActiveTrigger: isTriggerActive,
15835        isClosing: () => store.select("transitionStatus") === "ending",
15836        shouldOpen() {
15837          return !isNestedTriggerHoveredRef.current;
15838        }
15839      });
15840      const focusProps = useFocus(floatingRootContext, {
15841        enabled: !disabled2
15842      }).reference;
15843      const handleNestedTriggerHover = (event) => {
15844        const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;
15845        const target = getTargetElement(event);
15846        const nestedTriggerHovered = detectNestedTriggerHover(target);
15847        const triggerEl = triggerElementRef.current;
15848        const targetInsideTrigger = triggerEl && target && contains(triggerEl, target);
15849        if (nestedTriggerHovered && store.select("open") && store.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) {
15850          store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event));
15851          return;
15852        }
15853        if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences.
15854        isMouseLikePointerType(pointerTypeRef.current)) {
15855          const open = () => {
15856            if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select("open")) {
15857              store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl));
15858            }
15859          };
15860          const openDelay = getOpenDelay();
15861          if (openDelay === 0) {
15862            nestedTriggerOpenTimeout.clear();
15863            open();
15864          } else {
15865            nestedTriggerOpenTimeout.start(openDelay, open);
15866          }
15867        }
15868      };
15869      const rootTriggerProps = store.useState("triggerProps", isMountedByThisTrigger);
15870      const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== "none";
15871      const state = {
15872        open: isOpenedByThisTrigger
15873      };
15874      const element = useRenderElement("button", componentProps, {
15875        state,
15876        ref: [forwardedRef, registerTrigger, triggerElementRef],
15877        props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : void 0, {
15878          onMouseOver(event) {
15879            handleNestedTriggerHover(event.nativeEvent);
15880          },
15881          onFocus(event) {
15882            if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) {
15883              event.preventBaseUIHandler();
15884            }
15885          },
15886          onMouseLeave() {
15887            isNestedTriggerHoveredRef.current = false;
15888            nestedTriggerOpenTimeout.clear();
15889            pointerTypeRef.current = void 0;
15890          },
15891          onPointerEnter(event) {
15892            pointerTypeRef.current = event.pointerType;
15893          },
15894          onPointerDown(event) {
15895            pointerTypeRef.current = event.pointerType;
15896            store.set("closeOnClick", closeOnClick);
15897            if (closeOnClick && !store.select("open")) {
15898              store.cancelPendingOpen(event.nativeEvent);
15899            }
15900          },
15901          onClick(event) {
15902            if (closeOnClick && !store.select("open")) {
15903              store.cancelPendingOpen(event.nativeEvent);
15904            }
15905          },
15906          id: thisTriggerId,
15907          "data-trigger-disabled": disabled2 ? "" : void 0,
15908          [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : ""
15909        }, elementProps],
15910        stateAttributesMapping: triggerOpenStateMapping
15911      });
15912      return element;
15913    });
15914    if (true) TooltipTrigger.displayName = "TooltipTrigger";
15915  
15916    // node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs
15917    var React112 = __toESM(require_react(), 1);
15918  
15919    // node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs
15920    var React111 = __toESM(require_react(), 1);
15921    var TooltipPortalContext = /* @__PURE__ */ React111.createContext(void 0);
15922    if (true) TooltipPortalContext.displayName = "TooltipPortalContext";
15923    function useTooltipPortalContext() {
15924      const value = React111.useContext(TooltipPortalContext);
15925      if (value === void 0) {
15926        throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70));
15927      }
15928      return value;
15929    }
15930  
15931    // node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs
15932    var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
15933    var TooltipPortal = /* @__PURE__ */ React112.forwardRef(function TooltipPortal2(props, forwardedRef) {
15934      const {
15935        keepMounted = false,
15936        ...portalProps
15937      } = props;
15938      const store = useTooltipRootContext();
15939      const mounted = store.useState("mounted");
15940      const shouldRender = mounted || keepMounted;
15941      if (!shouldRender) {
15942        return null;
15943      }
15944      return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TooltipPortalContext.Provider, {
15945        value: keepMounted,
15946        children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(FloatingPortalLite, {
15947          ref: forwardedRef,
15948          ...portalProps
15949        })
15950      });
15951    });
15952    if (true) TooltipPortal.displayName = "TooltipPortal";
15953  
15954    // node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs
15955    var React114 = __toESM(require_react(), 1);
15956  
15957    // node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs
15958    var React113 = __toESM(require_react(), 1);
15959    var TooltipPositionerContext = /* @__PURE__ */ React113.createContext(void 0);
15960    if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext";
15961    function useTooltipPositionerContext() {
15962      const context = React113.useContext(TooltipPositionerContext);
15963      if (context === void 0) {
15964        throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71));
15965      }
15966      return context;
15967    }
15968  
15969    // node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs
15970    var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);
15971    var TooltipPositioner = /* @__PURE__ */ React114.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) {
15972      const {
15973        render: render4,
15974        className,
15975        anchor,
15976        positionMethod = "absolute",
15977        side = "top",
15978        align = "center",
15979        sideOffset = 0,
15980        alignOffset = 0,
15981        collisionBoundary = "clipping-ancestors",
15982        collisionPadding = 5,
15983        arrowPadding = 5,
15984        sticky = false,
15985        disableAnchorTracking = false,
15986        collisionAvoidance = POPUP_COLLISION_AVOIDANCE,
15987        style,
15988        ...elementProps
15989      } = componentProps;
15990      const store = useTooltipRootContext();
15991      const keepMounted = useTooltipPortalContext();
15992      const open = store.useState("open");
15993      const mounted = store.useState("mounted");
15994      const trackCursorAxis = store.useState("trackCursorAxis");
15995      const disableHoverablePopup = store.useState("disableHoverablePopup");
15996      const floatingRootContext = store.useState("floatingRootContext");
15997      const instantType = store.useState("instantType");
15998      const transitionStatus = store.useState("transitionStatus");
15999      const adaptiveOrigin2 = store.useState("adaptiveOrigin");
16000      const positioning = useAnchorPositioning({
16001        anchor,
16002        positionMethod,
16003        floatingRootContext,
16004        mounted,
16005        side,
16006        sideOffset,
16007        align,
16008        alignOffset,
16009        collisionBoundary,
16010        collisionPadding,
16011        sticky,
16012        arrowPadding,
16013        disableAnchorTracking,
16014        keepMounted,
16015        collisionAvoidance,
16016        adaptiveOrigin: adaptiveOrigin2
16017      });
16018      const state = React114.useMemo(() => ({
16019        open,
16020        side: positioning.side,
16021        align: positioning.align,
16022        anchorHidden: positioning.anchorHidden,
16023        instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType
16024      }), [open, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]);
16025      const element = usePositioner(componentProps, state, {
16026        styles: positioning.positionerStyles,
16027        transitionStatus,
16028        props: elementProps,
16029        refs: [forwardedRef, store.useStateSetter("positionerElement")],
16030        hidden: !mounted,
16031        inert: !open || trackCursorAxis === "both" || disableHoverablePopup
16032      });
16033      return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TooltipPositionerContext.Provider, {
16034        value: positioning,
16035        children: element
16036      });
16037    });
16038    if (true) TooltipPositioner.displayName = "TooltipPositioner";
16039  
16040    // node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs
16041    var React115 = __toESM(require_react(), 1);
16042    var TooltipPopup = /* @__PURE__ */ React115.forwardRef(function TooltipPopup2(componentProps, forwardedRef) {
16043      const {
16044        render: render4,
16045        className,
16046        style,
16047        ...elementProps
16048      } = componentProps;
16049      const store = useTooltipRootContext();
16050      const {
16051        side,
16052        align
16053      } = useTooltipPositionerContext();
16054      const open = store.useState("open");
16055      const instantType = store.useState("instantType");
16056      const transitionStatus = store.useState("transitionStatus");
16057      const popupProps = store.useState("popupProps");
16058      const floatingContext = store.useState("floatingRootContext");
16059      const disabled2 = store.useState("disabled");
16060      const closeDelay = store.useState("closeDelay");
16061      useOpenChangeComplete({
16062        open,
16063        ref: store.context.popupRef,
16064        onComplete() {
16065          if (open) {
16066            store.context.onOpenChangeComplete?.(true);
16067          }
16068        }
16069      });
16070      useHoverFloatingInteraction(floatingContext, {
16071        enabled: !disabled2,
16072        closeDelay
16073      });
16074      const setPopupElement = store.useStateSetter("popupElement");
16075      const state = {
16076        open,
16077        side,
16078        align,
16079        instant: instantType,
16080        transitionStatus
16081      };
16082      const element = useRenderElement("div", componentProps, {
16083        state,
16084        ref: [forwardedRef, store.context.popupRef, setPopupElement],
16085        props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps],
16086        stateAttributesMapping: popupTransitionStateMapping
16087      });
16088      return element;
16089    });
16090    if (true) TooltipPopup.displayName = "TooltipPopup";
16091  
16092    // node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs
16093    var React116 = __toESM(require_react(), 1);
16094    var TooltipArrow = /* @__PURE__ */ React116.forwardRef(function TooltipArrow2(componentProps, forwardedRef) {
16095      const {
16096        render: render4,
16097        className,
16098        style,
16099        ...elementProps
16100      } = componentProps;
16101      const store = useTooltipRootContext();
16102      const {
16103        arrowRef,
16104        side,
16105        align,
16106        arrowUncentered,
16107        arrowStyles
16108      } = useTooltipPositionerContext();
16109      const open = store.useState("open");
16110      const instantType = store.useState("instantType");
16111      const state = {
16112        open,
16113        side,
16114        align,
16115        uncentered: arrowUncentered,
16116        instant: instantType
16117      };
16118      const element = useRenderElement("div", componentProps, {
16119        state,
16120        ref: [forwardedRef, arrowRef],
16121        props: [{
16122          style: arrowStyles,
16123          "aria-hidden": true
16124        }, elementProps],
16125        stateAttributesMapping: popupStateMapping
16126      });
16127      return element;
16128    });
16129    if (true) TooltipArrow.displayName = "TooltipArrow";
16130  
16131    // node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs
16132    var React117 = __toESM(require_react(), 1);
16133    var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);
16134    var TooltipProvider = function TooltipProvider2(props) {
16135      const {
16136        delay,
16137        closeDelay,
16138        timeout = 400
16139      } = props;
16140      const delayValue = React117.useMemo(() => ({
16141        open: delay,
16142        close: closeDelay
16143      }), [delay, closeDelay]);
16144      return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(TooltipProviderContext.Provider, {
16145        value: delay,
16146        children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(FloatingDelayGroup, {
16147          delay: delayValue,
16148          timeoutMs: timeout,
16149          children: props.children
16150        })
16151      });
16152    };
16153    if (true) TooltipProvider.displayName = "TooltipProvider";
16154  
16155    // node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs
16156    var React118 = __toESM(require_react(), 1);
16157    var TooltipViewport = /* @__PURE__ */ React118.forwardRef(function TooltipViewport2(componentProps, forwardedRef) {
16158      const {
16159        render: render4,
16160        className,
16161        style,
16162        children,
16163        ...elementProps
16164      } = componentProps;
16165      const store = useTooltipRootContext();
16166      const positioner = useTooltipPositionerContext();
16167      const instantType = store.useState("instantType");
16168      const {
16169        children: childrenToRender,
16170        state: viewportState
16171      } = usePopupViewport({
16172        store,
16173        side: positioner.side,
16174        children
16175      });
16176      const state = {
16177        activationDirection: viewportState.activationDirection,
16178        transitioning: viewportState.transitioning,
16179        instant: instantType
16180      };
16181      return useRenderElement("div", componentProps, {
16182        state,
16183        ref: forwardedRef,
16184        props: [elementProps, {
16185          children: childrenToRender
16186        }],
16187        stateAttributesMapping: popupViewportStateMapping
16188      });
16189    });
16190    if (true) TooltipViewport.displayName = "TooltipViewport";
16191  
16192    // node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs
16193    var TooltipHandle = class extends BasePopupHandle {
16194      constructor() {
16195        super(createNullTooltipStore(), "Tooltip");
16196      }
16197      /**
16198       * Opens the tooltip and associates it with the trigger with the given id.
16199       *
16200       * This method should only be called in an event handler or an effect (not during rendering).
16201       *
16202       * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching
16203       * `Tooltip.Trigger` with this handle passed as a prop.
16204       */
16205      open(triggerId) {
16206        this.openByTrigger(triggerId);
16207      }
16208      /**
16209       * Closes the tooltip.
16210       *
16211       * This method should only be called in an event handler or an effect (not during rendering).
16212       */
16213      close() {
16214        this.closePopup();
16215      }
16216      /**
16217       * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle.
16218       */
16219      get isOpen() {
16220        return this.attachedStore?.select("open") ?? false;
16221      }
16222    };
16223    function createTooltipHandle() {
16224      return new TooltipHandle();
16225    }
16226  
16227    // node_modules/@base-ui/react/use-render/useRender.mjs
16228    function useRender(params) {
16229      return useRenderElement(params.defaultTagName ?? "div", params, params);
16230    }
16231  
16232    // packages/ui/build-module/text/text.mjs
16233    var import_element15 = __toESM(require_element(), 1);
16234    var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
16235    function getRuntime() {
16236      const globalScope = globalThis;
16237      if (globalScope.__wpStyleRuntime) {
16238        return globalScope.__wpStyleRuntime;
16239      }
16240      globalScope.__wpStyleRuntime = {
16241        documents: /* @__PURE__ */ new Map(),
16242        styles: /* @__PURE__ */ new Map(),
16243        injectedStyles: /* @__PURE__ */ new WeakMap()
16244      };
16245      if (typeof document !== "undefined") {
16246        registerDocument(document);
16247      }
16248      return globalScope.__wpStyleRuntime;
16249    }
16250    function documentContainsStyleHash(targetDocument, hash) {
16251      if (!targetDocument.head) {
16252        return false;
16253      }
16254      for (const style of targetDocument.head.querySelectorAll(
16255        `style[$STYLE_HASH_ATTRIBUTE}]`
16256      )) {
16257        if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) {
16258          return true;
16259        }
16260      }
16261      return false;
16262    }
16263    function injectStyle(targetDocument, hash, css) {
16264      if (!targetDocument.head) {
16265        return;
16266      }
16267      const runtime = getRuntime();
16268      let injectedStyles = runtime.injectedStyles.get(targetDocument);
16269      if (!injectedStyles) {
16270        injectedStyles = /* @__PURE__ */ new Set();
16271        runtime.injectedStyles.set(targetDocument, injectedStyles);
16272      }
16273      if (injectedStyles.has(hash)) {
16274        return;
16275      }
16276      if (documentContainsStyleHash(targetDocument, hash)) {
16277        injectedStyles.add(hash);
16278        return;
16279      }
16280      const style = targetDocument.createElement("style");
16281      style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
16282      style.appendChild(targetDocument.createTextNode(css));
16283      targetDocument.head.appendChild(style);
16284      injectedStyles.add(hash);
16285    }
16286    function registerDocument(targetDocument) {
16287      const runtime = getRuntime();
16288      runtime.documents.set(
16289        targetDocument,
16290        (runtime.documents.get(targetDocument) ?? 0) + 1
16291      );
16292      for (const [hash, css] of runtime.styles) {
16293        injectStyle(targetDocument, hash, css);
16294      }
16295      return () => {
16296        const count = runtime.documents.get(targetDocument);
16297        if (count === void 0) {
16298          return;
16299        }
16300        if (count <= 1) {
16301          runtime.documents.delete(targetDocument);
16302          return;
16303        }
16304        runtime.documents.set(targetDocument, count - 1);
16305      };
16306    }
16307    function registerStyle(hash, css) {
16308      const runtime = getRuntime();
16309      runtime.styles.set(hash, css);
16310      for (const targetDocument of runtime.documents.keys()) {
16311        injectStyle(targetDocument, hash, css);
16312      }
16313    }
16314    if (typeof process === "undefined" || true) {
16315      registerStyle("3167e7d116", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{text-wrap:pretty;margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
16316    }
16317    var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" };
16318    if (typeof process === "undefined" || true) {
16319      registerStyle("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
16320    }
16321    var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
16322    var Text = (0, import_element15.forwardRef)(function Text2({ variant = "body-md", render: render4, className, ...props }, ref) {
16323      const element = useRender({
16324        render: render4,
16325        defaultTagName: "span",
16326        ref,
16327        props: mergeProps(props, {
16328          className: clsx_default(
16329            style_default.text,
16330            global_css_defense_default.heading,
16331            global_css_defense_default.p,
16332            style_default[variant],
16333            className
16334          )
16335        })
16336      });
16337      return element;
16338    });
16339  
16340    // packages/ui/build-module/badge/badge.mjs
16341    var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);
16342    var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash";
16343    function getRuntime2() {
16344      const globalScope = globalThis;
16345      if (globalScope.__wpStyleRuntime) {
16346        return globalScope.__wpStyleRuntime;
16347      }
16348      globalScope.__wpStyleRuntime = {
16349        documents: /* @__PURE__ */ new Map(),
16350        styles: /* @__PURE__ */ new Map(),
16351        injectedStyles: /* @__PURE__ */ new WeakMap()
16352      };
16353      if (typeof document !== "undefined") {
16354        registerDocument2(document);
16355      }
16356      return globalScope.__wpStyleRuntime;
16357    }
16358    function documentContainsStyleHash2(targetDocument, hash) {
16359      if (!targetDocument.head) {
16360        return false;
16361      }
16362      for (const style of targetDocument.head.querySelectorAll(
16363        `style[$STYLE_HASH_ATTRIBUTE2}]`
16364      )) {
16365        if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) {
16366          return true;
16367        }
16368      }
16369      return false;
16370    }
16371    function injectStyle2(targetDocument, hash, css) {
16372      if (!targetDocument.head) {
16373        return;
16374      }
16375      const runtime = getRuntime2();
16376      let injectedStyles = runtime.injectedStyles.get(targetDocument);
16377      if (!injectedStyles) {
16378        injectedStyles = /* @__PURE__ */ new Set();
16379        runtime.injectedStyles.set(targetDocument, injectedStyles);
16380      }
16381      if (injectedStyles.has(hash)) {
16382        return;
16383      }
16384      if (documentContainsStyleHash2(targetDocument, hash)) {
16385        injectedStyles.add(hash);
16386        return;
16387      }
16388      const style = targetDocument.createElement("style");
16389      style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash);
16390      style.appendChild(targetDocument.createTextNode(css));
16391      targetDocument.head.appendChild(style);
16392      injectedStyles.add(hash);
16393    }
16394    function registerDocument2(targetDocument) {
16395      const runtime = getRuntime2();
16396      runtime.documents.set(
16397        targetDocument,
16398        (runtime.documents.get(targetDocument) ?? 0) + 1
16399      );
16400      for (const [hash, css] of runtime.styles) {
16401        injectStyle2(targetDocument, hash, css);
16402      }
16403      return () => {
16404        const count = runtime.documents.get(targetDocument);
16405        if (count === void 0) {
16406          return;
16407        }
16408        if (count <= 1) {
16409          runtime.documents.delete(targetDocument);
16410          return;
16411        }
16412        runtime.documents.set(targetDocument, count - 1);
16413      };
16414    }
16415    function registerStyle2(hash, css) {
16416      const runtime = getRuntime2();
16417      runtime.styles.set(hash, css);
16418      for (const targetDocument of runtime.documents.keys()) {
16419        injectStyle2(targetDocument, hash, css);
16420      }
16421    }
16422    if (typeof process === "undefined" || true) {
16423      registerStyle2("59353631d1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-background-surface-error,#f7e6e3);color:var(--wpds-color-foreground-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-background-surface-warning,#fae8c8);color:var(--wpds-color-foreground-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-background-surface-caution,#ffea8f);color:var(--wpds-color-foreground-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-background-surface-success,#ccf4d2);color:var(--wpds-color-foreground-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-background-surface-info,#e0ebf8);color:var(--wpds-color-foreground-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}}");
16424    }
16425    var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" };
16426    var Badge = (0, import_element16.forwardRef)(function Badge2({ intent = "none", className, ...props }, ref) {
16427      return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
16428        Text,
16429        {
16430          ref,
16431          className: clsx_default(
16432            style_default2.badge,
16433            style_default2[`is-$intent}-intent`],
16434            className
16435          ),
16436          ...props,
16437          variant: "body-sm"
16438        }
16439      );
16440    });
16441  
16442    // packages/ui/build-module/tooltip/index.mjs
16443    var tooltip_exports = {};
16444    __export(tooltip_exports, {
16445      Popup: () => Popup,
16446      Portal: () => Portal,
16447      Positioner: () => Positioner,
16448      Provider: () => Provider,
16449      Root: () => Root,
16450      Trigger: () => Trigger
16451    });
16452  
16453    // packages/ui/build-module/tooltip/popup.mjs
16454    var import_element20 = __toESM(require_element(), 1);
16455  
16456    // packages/ui/build-module/tooltip/portal.mjs
16457    var import_element17 = __toESM(require_element(), 1);
16458  
16459    // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs
16460    var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash";
16461    function getRuntime3() {
16462      const globalScope = globalThis;
16463      if (globalScope.__wpStyleRuntime) {
16464        return globalScope.__wpStyleRuntime;
16465      }
16466      globalScope.__wpStyleRuntime = {
16467        documents: /* @__PURE__ */ new Map(),
16468        styles: /* @__PURE__ */ new Map(),
16469        injectedStyles: /* @__PURE__ */ new WeakMap()
16470      };
16471      if (typeof document !== "undefined") {
16472        registerDocument3(document);
16473      }
16474      return globalScope.__wpStyleRuntime;
16475    }
16476    function documentContainsStyleHash3(targetDocument, hash) {
16477      if (!targetDocument.head) {
16478        return false;
16479      }
16480      for (const style of targetDocument.head.querySelectorAll(
16481        `style[$STYLE_HASH_ATTRIBUTE3}]`
16482      )) {
16483        if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) {
16484          return true;
16485        }
16486      }
16487      return false;
16488    }
16489    function injectStyle3(targetDocument, hash, css) {
16490      if (!targetDocument.head) {
16491        return;
16492      }
16493      const runtime = getRuntime3();
16494      let injectedStyles = runtime.injectedStyles.get(targetDocument);
16495      if (!injectedStyles) {
16496        injectedStyles = /* @__PURE__ */ new Set();
16497        runtime.injectedStyles.set(targetDocument, injectedStyles);
16498      }
16499      if (injectedStyles.has(hash)) {
16500        return;
16501      }
16502      if (documentContainsStyleHash3(targetDocument, hash)) {
16503        injectedStyles.add(hash);
16504        return;
16505      }
16506      const style = targetDocument.createElement("style");
16507      style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash);
16508      style.appendChild(targetDocument.createTextNode(css));
16509      targetDocument.head.appendChild(style);
16510      injectedStyles.add(hash);
16511    }
16512    function registerDocument3(targetDocument) {
16513      const runtime = getRuntime3();
16514      runtime.documents.set(
16515        targetDocument,
16516        (runtime.documents.get(targetDocument) ?? 0) + 1
16517      );
16518      for (const [hash, css] of runtime.styles) {
16519        injectStyle3(targetDocument, hash, css);
16520      }
16521      return () => {
16522        const count = runtime.documents.get(targetDocument);
16523        if (count === void 0) {
16524          return;
16525        }
16526        if (count <= 1) {
16527          runtime.documents.delete(targetDocument);
16528          return;
16529        }
16530        runtime.documents.set(targetDocument, count - 1);
16531      };
16532    }
16533    function registerStyle3(hash, css) {
16534      const runtime = getRuntime3();
16535      runtime.styles.set(hash, css);
16536      for (const targetDocument of runtime.documents.keys()) {
16537        injectStyle3(targetDocument, hash, css);
16538      }
16539    }
16540    if (typeof process === "undefined" || true) {
16541      registerStyle3("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}");
16542    }
16543    var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" };
16544    var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot";
16545    function resolveOwnerDocument() {
16546      return typeof document === "undefined" ? null : document;
16547    }
16548    function isInWordPressEnvironment() {
16549      let topWp;
16550      try {
16551        topWp = window.top?.wp;
16552      } catch {
16553      }
16554      const wp = topWp ?? window.wp;
16555      return typeof wp?.components === "object" && wp.components !== null;
16556    }
16557    var cachedSlot = null;
16558    function ensureSlotIsAccessible(element) {
16559      element.setAttribute("aria-hidden", "false");
16560      return element;
16561    }
16562    function createSlot(ownerDocument2) {
16563      const element = ownerDocument2.createElement("div");
16564      element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, "");
16565      if (wp_compat_overlay_slot_default.slot) {
16566        element.classList.add(wp_compat_overlay_slot_default.slot);
16567      }
16568      ownerDocument2.body.appendChild(element);
16569      return element;
16570    }
16571    function getWpCompatOverlaySlot() {
16572      if (typeof window === "undefined") {
16573        return void 0;
16574      }
16575      if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) {
16576        return void 0;
16577      }
16578      const ownerDocument2 = resolveOwnerDocument();
16579      if (!ownerDocument2 || !ownerDocument2.body) {
16580        return void 0;
16581      }
16582      if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) {
16583        return ensureSlotIsAccessible(cachedSlot);
16584      }
16585      const existing = ownerDocument2.querySelector(
16586        `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]`
16587      );
16588      if (existing instanceof HTMLDivElement) {
16589        cachedSlot = ensureSlotIsAccessible(existing);
16590        return cachedSlot;
16591      }
16592      if (cachedSlot?.isConnected) {
16593        cachedSlot.remove();
16594      }
16595      cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2));
16596      return cachedSlot;
16597    }
16598  
16599    // packages/ui/build-module/tooltip/portal.mjs
16600    var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);
16601    var Portal = (0, import_element17.forwardRef)(
16602      function TooltipPortal3({ container, ...restProps }, ref) {
16603        return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
16604          index_parts_exports3.Portal,
16605          {
16606            container: container ?? getWpCompatOverlaySlot(),
16607            ...restProps,
16608            ref
16609          }
16610        );
16611      }
16612    );
16613  
16614    // packages/ui/build-module/tooltip/positioner.mjs
16615    var import_element18 = __toESM(require_element(), 1);
16616    var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);
16617    var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash";
16618    function getRuntime4() {
16619      const globalScope = globalThis;
16620      if (globalScope.__wpStyleRuntime) {
16621        return globalScope.__wpStyleRuntime;
16622      }
16623      globalScope.__wpStyleRuntime = {
16624        documents: /* @__PURE__ */ new Map(),
16625        styles: /* @__PURE__ */ new Map(),
16626        injectedStyles: /* @__PURE__ */ new WeakMap()
16627      };
16628      if (typeof document !== "undefined") {
16629        registerDocument4(document);
16630      }
16631      return globalScope.__wpStyleRuntime;
16632    }
16633    function documentContainsStyleHash4(targetDocument, hash) {
16634      if (!targetDocument.head) {
16635        return false;
16636      }
16637      for (const style of targetDocument.head.querySelectorAll(
16638        `style[$STYLE_HASH_ATTRIBUTE4}]`
16639      )) {
16640        if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) {
16641          return true;
16642        }
16643      }
16644      return false;
16645    }
16646    function injectStyle4(targetDocument, hash, css) {
16647      if (!targetDocument.head) {
16648        return;
16649      }
16650      const runtime = getRuntime4();
16651      let injectedStyles = runtime.injectedStyles.get(targetDocument);
16652      if (!injectedStyles) {
16653        injectedStyles = /* @__PURE__ */ new Set();
16654        runtime.injectedStyles.set(targetDocument, injectedStyles);
16655      }
16656      if (injectedStyles.has(hash)) {
16657        return;
16658      }
16659      if (documentContainsStyleHash4(targetDocument, hash)) {
16660        injectedStyles.add(hash);
16661        return;
16662      }
16663      const style = targetDocument.createElement("style");
16664      style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash);
16665      style.appendChild(targetDocument.createTextNode(css));
16666      targetDocument.head.appendChild(style);
16667      injectedStyles.add(hash);
16668    }
16669    function registerDocument4(targetDocument) {
16670      const runtime = getRuntime4();
16671      runtime.documents.set(
16672        targetDocument,
16673        (runtime.documents.get(targetDocument) ?? 0) + 1
16674      );
16675      for (const [hash, css] of runtime.styles) {
16676        injectStyle4(targetDocument, hash, css);
16677      }
16678      return () => {
16679        const count = runtime.documents.get(targetDocument);
16680        if (count === void 0) {
16681          return;
16682        }
16683        if (count <= 1) {
16684          runtime.documents.delete(targetDocument);
16685          return;
16686        }
16687        runtime.documents.set(targetDocument, count - 1);
16688      };
16689    }
16690    function registerStyle4(hash, css) {
16691      const runtime = getRuntime4();
16692      runtime.styles.set(hash, css);
16693      for (const targetDocument of runtime.documents.keys()) {
16694        injectStyle4(targetDocument, hash, css);
16695      }
16696    }
16697    if (typeof process === "undefined" || true) {
16698      registerStyle4("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
16699    }
16700    var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
16701    if (typeof process === "undefined" || true) {
16702      registerStyle4("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');
16703    }
16704    var style_default3 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" };
16705    var Positioner = (0, import_element18.forwardRef)(
16706      function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) {
16707        return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
16708          index_parts_exports3.Positioner,
16709          {
16710            ref,
16711            align,
16712            side,
16713            sideOffset,
16714            ...props,
16715            className: clsx_default(
16716              resets_default["box-sizing"],
16717              style_default3.positioner,
16718              className
16719            )
16720          }
16721        );
16722      }
16723    );
16724  
16725    // packages/ui/build-module/utils/render-slot-with-children.mjs
16726    var import_element19 = __toESM(require_element(), 1);
16727    function renderSlotWithChildren(slot, defaultSlot, children) {
16728      return (0, import_element19.cloneElement)(slot ?? defaultSlot, { children });
16729    }
16730  
16731    // packages/ui/build-module/utils/theme-provider.mjs
16732    var theme = __toESM(require_theme(), 1);
16733  
16734    // packages/ui/build-module/lock-unlock.mjs
16735    var import_private_apis = __toESM(require_private_apis(), 1);
16736    var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
16737      "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
16738      "@wordpress/ui"
16739    );
16740  
16741    // packages/ui/build-module/utils/theme-provider.mjs
16742    function getThemeProvider() {
16743      const themePackage = theme;
16744      if (themePackage.ThemeProvider) {
16745        return themePackage.ThemeProvider;
16746      }
16747      if (!themePackage.privateApis) {
16748        throw new Error(
16749          "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`."
16750        );
16751      }
16752      return unlock(
16753        themePackage.privateApis
16754      ).ThemeProvider;
16755    }
16756    var ThemeProvider = getThemeProvider();
16757  
16758    // packages/ui/build-module/tooltip/popup.mjs
16759    var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);
16760    var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash";
16761    function getRuntime5() {
16762      const globalScope = globalThis;
16763      if (globalScope.__wpStyleRuntime) {
16764        return globalScope.__wpStyleRuntime;
16765      }
16766      globalScope.__wpStyleRuntime = {
16767        documents: /* @__PURE__ */ new Map(),
16768        styles: /* @__PURE__ */ new Map(),
16769        injectedStyles: /* @__PURE__ */ new WeakMap()
16770      };
16771      if (typeof document !== "undefined") {
16772        registerDocument5(document);
16773      }
16774      return globalScope.__wpStyleRuntime;
16775    }
16776    function documentContainsStyleHash5(targetDocument, hash) {
16777      if (!targetDocument.head) {
16778        return false;
16779      }
16780      for (const style of targetDocument.head.querySelectorAll(
16781        `style[$STYLE_HASH_ATTRIBUTE5}]`
16782      )) {
16783        if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) {
16784          return true;
16785        }
16786      }
16787      return false;
16788    }
16789    function injectStyle5(targetDocument, hash, css) {
16790      if (!targetDocument.head) {
16791        return;
16792      }
16793      const runtime = getRuntime5();
16794      let injectedStyles = runtime.injectedStyles.get(targetDocument);
16795      if (!injectedStyles) {
16796        injectedStyles = /* @__PURE__ */ new Set();
16797        runtime.injectedStyles.set(targetDocument, injectedStyles);
16798      }
16799      if (injectedStyles.has(hash)) {
16800        return;
16801      }
16802      if (documentContainsStyleHash5(targetDocument, hash)) {
16803        injectedStyles.add(hash);
16804        return;
16805      }
16806      const style = targetDocument.createElement("style");
16807      style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash);
16808      style.appendChild(targetDocument.createTextNode(css));
16809      targetDocument.head.appendChild(style);
16810      injectedStyles.add(hash);
16811    }
16812    function registerDocument5(targetDocument) {
16813      const runtime = getRuntime5();
16814      runtime.documents.set(
16815        targetDocument,
16816        (runtime.documents.get(targetDocument) ?? 0) + 1
16817      );
16818      for (const [hash, css] of runtime.styles) {
16819        injectStyle5(targetDocument, hash, css);
16820      }
16821      return () => {
16822        const count = runtime.documents.get(targetDocument);
16823        if (count === void 0) {
16824          return;
16825        }
16826        if (count <= 1) {
16827          runtime.documents.delete(targetDocument);
16828          return;
16829        }
16830        runtime.documents.set(targetDocument, count - 1);
16831      };
16832    }
16833    function registerStyle5(hash, css) {
16834      const runtime = getRuntime5();
16835      runtime.styles.set(hash, css);
16836      for (const targetDocument of runtime.documents.keys()) {
16837        injectStyle5(targetDocument, hash, css);
16838      }
16839    }
16840    if (typeof process === "undefined" || true) {
16841      registerStyle5("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}');
16842    }
16843    var style_default4 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" };
16844    var POPUP_COLOR = { background: "#1e1e1e" };
16845    var Popup = (0, import_element20.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) {
16846      const popupContent = /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
16847        index_parts_exports3.Popup,
16848        {
16849          ref,
16850          className: clsx_default(style_default4.popup, className),
16851          ...props,
16852          children
16853        }
16854      ) });
16855      const positionedPopup = renderSlotWithChildren(
16856        positioner,
16857        /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Positioner, {}),
16858        popupContent
16859      );
16860      return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Portal, {}), positionedPopup);
16861    });
16862  
16863    // packages/ui/build-module/tooltip/trigger.mjs
16864    var import_element21 = __toESM(require_element(), 1);
16865    var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);
16866    var Trigger = (0, import_element21.forwardRef)(
16867      function TooltipTrigger3(props, ref) {
16868        return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(index_parts_exports3.Trigger, { ref, ...props });
16869      }
16870    );
16871  
16872    // packages/ui/build-module/utils/direction-provider.mjs
16873    var import_i18n7 = __toESM(require_i18n(), 1);
16874    var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);
16875    function DirectionProvider3({ children }) {
16876      return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(DirectionProvider, { direction: (0, import_i18n7.isRTL)() ? "rtl" : "ltr", children });
16877    }
16878  
16879    // packages/ui/build-module/tooltip/root.mjs
16880    var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);
16881    function Root(props) {
16882      return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(index_parts_exports3.Root, { ...props }) });
16883    }
16884  
16885    // packages/ui/build-module/tooltip/provider.mjs
16886    var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
16887    function Provider({ ...props }) {
16888      return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(index_parts_exports3.Provider, { ...props });
16889    }
16890  
16891    // packages/ui/build-module/link/link.mjs
16892    var import_element22 = __toESM(require_element(), 1);
16893    var import_i18n8 = __toESM(require_i18n(), 1);
16894    var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1);
16895    var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash";
16896    function getRuntime6() {
16897      const globalScope = globalThis;
16898      if (globalScope.__wpStyleRuntime) {
16899        return globalScope.__wpStyleRuntime;
16900      }
16901      globalScope.__wpStyleRuntime = {
16902        documents: /* @__PURE__ */ new Map(),
16903        styles: /* @__PURE__ */ new Map(),
16904        injectedStyles: /* @__PURE__ */ new WeakMap()
16905      };
16906      if (typeof document !== "undefined") {
16907        registerDocument6(document);
16908      }
16909      return globalScope.__wpStyleRuntime;
16910    }
16911    function documentContainsStyleHash6(targetDocument, hash) {
16912      if (!targetDocument.head) {
16913        return false;
16914      }
16915      for (const style of targetDocument.head.querySelectorAll(
16916        `style[$STYLE_HASH_ATTRIBUTE6}]`
16917      )) {
16918        if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) {
16919          return true;
16920        }
16921      }
16922      return false;
16923    }
16924    function injectStyle6(targetDocument, hash, css) {
16925      if (!targetDocument.head) {
16926        return;
16927      }
16928      const runtime = getRuntime6();
16929      let injectedStyles = runtime.injectedStyles.get(targetDocument);
16930      if (!injectedStyles) {
16931        injectedStyles = /* @__PURE__ */ new Set();
16932        runtime.injectedStyles.set(targetDocument, injectedStyles);
16933      }
16934      if (injectedStyles.has(hash)) {
16935        return;
16936      }
16937      if (documentContainsStyleHash6(targetDocument, hash)) {
16938        injectedStyles.add(hash);
16939        return;
16940      }
16941      const style = targetDocument.createElement("style");
16942      style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash);
16943      style.appendChild(targetDocument.createTextNode(css));
16944      targetDocument.head.appendChild(style);
16945      injectedStyles.add(hash);
16946    }
16947    function registerDocument6(targetDocument) {
16948      const runtime = getRuntime6();
16949      runtime.documents.set(
16950        targetDocument,
16951        (runtime.documents.get(targetDocument) ?? 0) + 1
16952      );
16953      for (const [hash, css] of runtime.styles) {
16954        injectStyle6(targetDocument, hash, css);
16955      }
16956      return () => {
16957        const count = runtime.documents.get(targetDocument);
16958        if (count === void 0) {
16959          return;
16960        }
16961        if (count <= 1) {
16962          runtime.documents.delete(targetDocument);
16963          return;
16964        }
16965        runtime.documents.set(targetDocument, count - 1);
16966      };
16967    }
16968    function registerStyle6(hash, css) {
16969      const runtime = getRuntime6();
16970      runtime.styles.set(hash, css);
16971      for (const targetDocument of runtime.documents.keys()) {
16972        injectStyle6(targetDocument, hash, css);
16973      }
16974    }
16975    if (typeof process === "undefined" || true) {
16976      registerStyle6("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
16977    }
16978    var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
16979    if (typeof process === "undefined" || true) {
16980      registerStyle6("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
16981    }
16982    var focus_module_default = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
16983    if (typeof process === "undefined" || true) {
16984      registerStyle6("e8e6a9be37", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__link{text-decoration-thickness:from-font;text-underline-offset:.2em}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2196"}}}');
16985    }
16986    var style_default5 = { "link": "d4250949359b05ce__link", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" };
16987    if (typeof process === "undefined" || true) {
16988      registerStyle6("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
16989    }
16990    var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
16991    var Link = (0, import_element22.forwardRef)(function Link2({
16992      children,
16993      variant = "default",
16994      tone = "brand",
16995      openInNewTab = false,
16996      target,
16997      render: render4,
16998      className,
16999      ...props
17000    }, ref) {
17001      const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? "");
17002      const element = useRender({
17003        render: render4,
17004        defaultTagName: "a",
17005        ref,
17006        props: mergeProps(props, {
17007          className: clsx_default(
17008            global_css_defense_default2.a,
17009            resets_default2["box-sizing"],
17010            focus_module_default["outset-ring--focus-except-active"],
17011            variant !== "unstyled" && style_default5.link,
17012            variant !== "unstyled" && style_default5[`is-$tone}`],
17013            variant === "unstyled" && style_default5["is-unstyled"],
17014            className
17015          ),
17016          target: target ?? (openInNewTab ? "_blank" : void 0),
17017          children: /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
17018            children,
17019            shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
17020              "span",
17021              {
17022                className: style_default5["link-icon"],
17023                role: "img",
17024                "aria-label": (
17025                  /* translators: accessibility text appended to link text */
17026                  (0, import_i18n8.__)("(opens in a new tab)")
17027                )
17028              }
17029            )
17030          ] })
17031        })
17032      });
17033      return element;
17034    });
17035  
17036    // packages/ui/build-module/menu/index.mjs
17037    var menu_exports = {};
17038    __export(menu_exports, {
17039      CheckboxItem: () => CheckboxItem,
17040      Group: () => Group,
17041      GroupLabel: () => GroupLabel,
17042      Item: () => Item,
17043      ItemDescription: () => ItemDescription,
17044      ItemLabel: () => ItemLabel,
17045      LinkItem: () => LinkItem,
17046      Popup: () => Popup2,
17047      Portal: () => Portal2,
17048      Positioner: () => Positioner2,
17049      PrefixIcon: () => PrefixIcon,
17050      RadioGroup: () => RadioGroup,
17051      RadioItem: () => RadioItem,
17052      Root: () => Root2,
17053      Separator: () => Separator2,
17054      SubmenuRoot: () => SubmenuRoot,
17055      SubmenuTrigger: () => SubmenuTrigger,
17056      Trigger: () => Trigger2
17057    });
17058  
17059    // packages/ui/build-module/menu/checkbox-item.mjs
17060    var import_element30 = __toESM(require_element(), 1);
17061  
17062    // packages/ui/build-module/icon/icon.mjs
17063    var import_element23 = __toESM(require_element(), 1);
17064    var import_primitives35 = __toESM(require_primitives(), 1);
17065    var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1);
17066    var Icon = (0, import_element23.forwardRef)(function Icon2({ icon, size: size4 = 24, style, ...restProps }, ref) {
17067      const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0;
17068      return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
17069        import_primitives35.SVG,
17070        {
17071          ref,
17072          ...icon.props,
17073          ...restProps,
17074          ...mergedStyle ? { style: mergedStyle } : {},
17075          width: size4,
17076          height: size4
17077        }
17078      );
17079    });
17080  
17081    // packages/ui/build-module/menu/context.mjs
17082    var import_element24 = __toESM(require_element(), 1);
17083    var MenuContext = (0, import_element24.createContext)({
17084      isSubmenu: false
17085    });
17086    var useMenuContext = () => (0, import_element24.useContext)(MenuContext);
17087    var MenuItemContentContext = (0, import_element24.createContext)(null);
17088    var useMenuItemContentContext = () => (0, import_element24.useContext)(MenuItemContentContext);
17089  
17090    // packages/ui/build-module/menu/item.mjs
17091    var import_element29 = __toESM(require_element(), 1);
17092  
17093    // packages/ui/build-module/utils/keyboard-shortcut.mjs
17094    var import_element26 = __toESM(require_element(), 1);
17095    var import_i18n9 = __toESM(require_i18n(), 1);
17096  
17097    // packages/ui/build-module/visually-hidden/visually-hidden.mjs
17098    var import_element25 = __toESM(require_element(), 1);
17099    var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash";
17100    function getRuntime7() {
17101      const globalScope = globalThis;
17102      if (globalScope.__wpStyleRuntime) {
17103        return globalScope.__wpStyleRuntime;
17104      }
17105      globalScope.__wpStyleRuntime = {
17106        documents: /* @__PURE__ */ new Map(),
17107        styles: /* @__PURE__ */ new Map(),
17108        injectedStyles: /* @__PURE__ */ new WeakMap()
17109      };
17110      if (typeof document !== "undefined") {
17111        registerDocument7(document);
17112      }
17113      return globalScope.__wpStyleRuntime;
17114    }
17115    function documentContainsStyleHash7(targetDocument, hash) {
17116      if (!targetDocument.head) {
17117        return false;
17118      }
17119      for (const style of targetDocument.head.querySelectorAll(
17120        `style[$STYLE_HASH_ATTRIBUTE7}]`
17121      )) {
17122        if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) {
17123          return true;
17124        }
17125      }
17126      return false;
17127    }
17128    function injectStyle7(targetDocument, hash, css) {
17129      if (!targetDocument.head) {
17130        return;
17131      }
17132      const runtime = getRuntime7();
17133      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17134      if (!injectedStyles) {
17135        injectedStyles = /* @__PURE__ */ new Set();
17136        runtime.injectedStyles.set(targetDocument, injectedStyles);
17137      }
17138      if (injectedStyles.has(hash)) {
17139        return;
17140      }
17141      if (documentContainsStyleHash7(targetDocument, hash)) {
17142        injectedStyles.add(hash);
17143        return;
17144      }
17145      const style = targetDocument.createElement("style");
17146      style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash);
17147      style.appendChild(targetDocument.createTextNode(css));
17148      targetDocument.head.appendChild(style);
17149      injectedStyles.add(hash);
17150    }
17151    function registerDocument7(targetDocument) {
17152      const runtime = getRuntime7();
17153      runtime.documents.set(
17154        targetDocument,
17155        (runtime.documents.get(targetDocument) ?? 0) + 1
17156      );
17157      for (const [hash, css] of runtime.styles) {
17158        injectStyle7(targetDocument, hash, css);
17159      }
17160      return () => {
17161        const count = runtime.documents.get(targetDocument);
17162        if (count === void 0) {
17163          return;
17164        }
17165        if (count <= 1) {
17166          runtime.documents.delete(targetDocument);
17167          return;
17168        }
17169        runtime.documents.set(targetDocument, count - 1);
17170      };
17171    }
17172    function registerStyle7(hash, css) {
17173      const runtime = getRuntime7();
17174      runtime.styles.set(hash, css);
17175      for (const targetDocument of runtime.documents.keys()) {
17176        injectStyle7(targetDocument, hash, css);
17177      }
17178    }
17179    if (typeof process === "undefined" || true) {
17180      registerStyle7("fa606a57ae", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.f37b9e2e191ebd66__visually-hidden{word-wrap:normal;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal}}}");
17181    }
17182    var style_default6 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" };
17183    var VisuallyHidden = (0, import_element25.forwardRef)(
17184      function VisuallyHidden2({ render: render4, ...restProps }, ref) {
17185        const element = useRender({
17186          render: render4,
17187          ref,
17188          props: mergeProps(
17189            { className: style_default6["visually-hidden"] },
17190            restProps,
17191            {
17192              // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it.
17193              "data-visually-hidden": ""
17194            }
17195          )
17196        });
17197        return element;
17198      }
17199    );
17200  
17201    // packages/ui/build-module/utils/keyboard-shortcut.mjs
17202    var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1);
17203    function useKeyboardShortcutProps({
17204      "aria-describedby": ariaDescribedBy,
17205      "aria-keyshortcuts": ariaKeyShortcuts,
17206      shortcut
17207    }) {
17208      const generatedDescriptionId = (0, import_element26.useId)();
17209      const descriptionId = shortcut ? generatedDescriptionId : void 0;
17210      const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ");
17211      return {
17212        descriptionId,
17213        targetProps: {
17214          "aria-describedby": describedBy || void 0,
17215          "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts
17216        }
17217      };
17218    }
17219    var KeyboardShortcutDescription = (0, import_element26.forwardRef)(function KeyboardShortcutDescription2({ descriptionId, shortcut }, ref) {
17220      return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
17221        VisuallyHidden,
17222        {
17223          id: descriptionId,
17224          "aria-hidden": "true",
17225          render: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { ref }),
17226          children: (0, import_i18n9.sprintf)(
17227            /* translators: %s: keyboard shortcut. */
17228            (0, import_i18n9.__)("Keyboard shortcut: %s"),
17229            shortcut.label ?? shortcut.ariaKeyShortcut
17230          )
17231        }
17232      );
17233    });
17234    var KeyboardShortcutDisplay = (0, import_element26.forwardRef)(function KeyboardShortcutDisplay2({ className, shortcut }, ref) {
17235      return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut });
17236    });
17237  
17238    // packages/ui/build-module/menu/item-description.mjs
17239    var import_element27 = __toESM(require_element(), 1);
17240    var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1);
17241    var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash";
17242    function getRuntime8() {
17243      const globalScope = globalThis;
17244      if (globalScope.__wpStyleRuntime) {
17245        return globalScope.__wpStyleRuntime;
17246      }
17247      globalScope.__wpStyleRuntime = {
17248        documents: /* @__PURE__ */ new Map(),
17249        styles: /* @__PURE__ */ new Map(),
17250        injectedStyles: /* @__PURE__ */ new WeakMap()
17251      };
17252      if (typeof document !== "undefined") {
17253        registerDocument8(document);
17254      }
17255      return globalScope.__wpStyleRuntime;
17256    }
17257    function documentContainsStyleHash8(targetDocument, hash) {
17258      if (!targetDocument.head) {
17259        return false;
17260      }
17261      for (const style of targetDocument.head.querySelectorAll(
17262        `style[$STYLE_HASH_ATTRIBUTE8}]`
17263      )) {
17264        if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) {
17265          return true;
17266        }
17267      }
17268      return false;
17269    }
17270    function injectStyle8(targetDocument, hash, css) {
17271      if (!targetDocument.head) {
17272        return;
17273      }
17274      const runtime = getRuntime8();
17275      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17276      if (!injectedStyles) {
17277        injectedStyles = /* @__PURE__ */ new Set();
17278        runtime.injectedStyles.set(targetDocument, injectedStyles);
17279      }
17280      if (injectedStyles.has(hash)) {
17281        return;
17282      }
17283      if (documentContainsStyleHash8(targetDocument, hash)) {
17284        injectedStyles.add(hash);
17285        return;
17286      }
17287      const style = targetDocument.createElement("style");
17288      style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash);
17289      style.appendChild(targetDocument.createTextNode(css));
17290      targetDocument.head.appendChild(style);
17291      injectedStyles.add(hash);
17292    }
17293    function registerDocument8(targetDocument) {
17294      const runtime = getRuntime8();
17295      runtime.documents.set(
17296        targetDocument,
17297        (runtime.documents.get(targetDocument) ?? 0) + 1
17298      );
17299      for (const [hash, css] of runtime.styles) {
17300        injectStyle8(targetDocument, hash, css);
17301      }
17302      return () => {
17303        const count = runtime.documents.get(targetDocument);
17304        if (count === void 0) {
17305          return;
17306        }
17307        if (count <= 1) {
17308          runtime.documents.delete(targetDocument);
17309          return;
17310        }
17311        runtime.documents.set(targetDocument, count - 1);
17312      };
17313    }
17314    function registerStyle8(hash, css) {
17315      const runtime = getRuntime8();
17316      runtime.styles.set(hash, css);
17317      for (const targetDocument of runtime.documents.keys()) {
17318        injectStyle8(targetDocument, hash, css);
17319      }
17320    }
17321    if (typeof process === "undefined" || true) {
17322      registerStyle8("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
17323    }
17324    var style_default7 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
17325    var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol();
17326    var ItemDescription = (0, import_element27.forwardRef)(
17327      function MenuItemDescription(props, ref) {
17328        const { className, id, validationToken, ...restProps } = props;
17329        if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) {
17330          throw new Error(
17331            "Menu.ItemDescription: Missing direct menu item parent. Render <Menu.ItemDescription> as a direct child of a menu item."
17332          );
17333        }
17334        return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
17335          Text,
17336          {
17337            ref,
17338            variant: "body-sm",
17339            ...restProps,
17340            id,
17341            className: clsx_default(style_default7["item-description"], className)
17342          }
17343        );
17344      }
17345    );
17346  
17347    // packages/ui/build-module/menu/item-label.mjs
17348    var import_element28 = __toESM(require_element(), 1);
17349    var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1);
17350    var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash";
17351    function getRuntime9() {
17352      const globalScope = globalThis;
17353      if (globalScope.__wpStyleRuntime) {
17354        return globalScope.__wpStyleRuntime;
17355      }
17356      globalScope.__wpStyleRuntime = {
17357        documents: /* @__PURE__ */ new Map(),
17358        styles: /* @__PURE__ */ new Map(),
17359        injectedStyles: /* @__PURE__ */ new WeakMap()
17360      };
17361      if (typeof document !== "undefined") {
17362        registerDocument9(document);
17363      }
17364      return globalScope.__wpStyleRuntime;
17365    }
17366    function documentContainsStyleHash9(targetDocument, hash) {
17367      if (!targetDocument.head) {
17368        return false;
17369      }
17370      for (const style of targetDocument.head.querySelectorAll(
17371        `style[$STYLE_HASH_ATTRIBUTE9}]`
17372      )) {
17373        if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) {
17374          return true;
17375        }
17376      }
17377      return false;
17378    }
17379    function injectStyle9(targetDocument, hash, css) {
17380      if (!targetDocument.head) {
17381        return;
17382      }
17383      const runtime = getRuntime9();
17384      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17385      if (!injectedStyles) {
17386        injectedStyles = /* @__PURE__ */ new Set();
17387        runtime.injectedStyles.set(targetDocument, injectedStyles);
17388      }
17389      if (injectedStyles.has(hash)) {
17390        return;
17391      }
17392      if (documentContainsStyleHash9(targetDocument, hash)) {
17393        injectedStyles.add(hash);
17394        return;
17395      }
17396      const style = targetDocument.createElement("style");
17397      style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash);
17398      style.appendChild(targetDocument.createTextNode(css));
17399      targetDocument.head.appendChild(style);
17400      injectedStyles.add(hash);
17401    }
17402    function registerDocument9(targetDocument) {
17403      const runtime = getRuntime9();
17404      runtime.documents.set(
17405        targetDocument,
17406        (runtime.documents.get(targetDocument) ?? 0) + 1
17407      );
17408      for (const [hash, css] of runtime.styles) {
17409        injectStyle9(targetDocument, hash, css);
17410      }
17411      return () => {
17412        const count = runtime.documents.get(targetDocument);
17413        if (count === void 0) {
17414          return;
17415        }
17416        if (count <= 1) {
17417          runtime.documents.delete(targetDocument);
17418          return;
17419        }
17420        runtime.documents.set(targetDocument, count - 1);
17421      };
17422    }
17423    function registerStyle9(hash, css) {
17424      const runtime = getRuntime9();
17425      runtime.styles.set(hash, css);
17426      for (const targetDocument of runtime.documents.keys()) {
17427        injectStyle9(targetDocument, hash, css);
17428      }
17429    }
17430    if (typeof process === "undefined" || true) {
17431      registerStyle9("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
17432    }
17433    var style_default8 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
17434    var ItemLabel = (0, import_element28.forwardRef)(
17435      function MenuItemLabel({ children, className, id, ...props }, ref) {
17436        const itemContentContext = useMenuItemContentContext();
17437        return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(
17438          Text,
17439          {
17440            ref,
17441            variant: "body-md",
17442            ...props,
17443            id: id ?? itemContentContext?.labelId,
17444            className: clsx_default(style_default8["item-label"], className),
17445            children: [
17446              children,
17447              itemContentContext?.labelTrailing
17448            ]
17449          }
17450        );
17451      }
17452    );
17453  
17454    // packages/ui/build-module/menu/item.mjs
17455    var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1);
17456    var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash";
17457    function getRuntime10() {
17458      const globalScope = globalThis;
17459      if (globalScope.__wpStyleRuntime) {
17460        return globalScope.__wpStyleRuntime;
17461      }
17462      globalScope.__wpStyleRuntime = {
17463        documents: /* @__PURE__ */ new Map(),
17464        styles: /* @__PURE__ */ new Map(),
17465        injectedStyles: /* @__PURE__ */ new WeakMap()
17466      };
17467      if (typeof document !== "undefined") {
17468        registerDocument10(document);
17469      }
17470      return globalScope.__wpStyleRuntime;
17471    }
17472    function documentContainsStyleHash10(targetDocument, hash) {
17473      if (!targetDocument.head) {
17474        return false;
17475      }
17476      for (const style of targetDocument.head.querySelectorAll(
17477        `style[$STYLE_HASH_ATTRIBUTE10}]`
17478      )) {
17479        if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) {
17480          return true;
17481        }
17482      }
17483      return false;
17484    }
17485    function injectStyle10(targetDocument, hash, css) {
17486      if (!targetDocument.head) {
17487        return;
17488      }
17489      const runtime = getRuntime10();
17490      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17491      if (!injectedStyles) {
17492        injectedStyles = /* @__PURE__ */ new Set();
17493        runtime.injectedStyles.set(targetDocument, injectedStyles);
17494      }
17495      if (injectedStyles.has(hash)) {
17496        return;
17497      }
17498      if (documentContainsStyleHash10(targetDocument, hash)) {
17499        injectedStyles.add(hash);
17500        return;
17501      }
17502      const style = targetDocument.createElement("style");
17503      style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash);
17504      style.appendChild(targetDocument.createTextNode(css));
17505      targetDocument.head.appendChild(style);
17506      injectedStyles.add(hash);
17507    }
17508    function registerDocument10(targetDocument) {
17509      const runtime = getRuntime10();
17510      runtime.documents.set(
17511        targetDocument,
17512        (runtime.documents.get(targetDocument) ?? 0) + 1
17513      );
17514      for (const [hash, css] of runtime.styles) {
17515        injectStyle10(targetDocument, hash, css);
17516      }
17517      return () => {
17518        const count = runtime.documents.get(targetDocument);
17519        if (count === void 0) {
17520          return;
17521        }
17522        if (count <= 1) {
17523          runtime.documents.delete(targetDocument);
17524          return;
17525        }
17526        runtime.documents.set(targetDocument, count - 1);
17527      };
17528    }
17529    function registerStyle10(hash, css) {
17530      const runtime = getRuntime10();
17531      runtime.styles.set(hash, css);
17532      for (const targetDocument of runtime.documents.keys()) {
17533        injectStyle10(targetDocument, hash, css);
17534      }
17535    }
17536    if (typeof process === "undefined" || true) {
17537      registerStyle10("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
17538    }
17539    var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
17540    if (typeof process === "undefined" || true) {
17541      registerStyle10("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
17542    }
17543    var style_default9 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
17544    var VALIDATION_ENABLED = true;
17545    function getItemContent(children) {
17546      const childArray = import_element29.Children.toArray(children);
17547      const [label, ...descriptions] = childArray;
17548      const hasLabel = (0, import_element29.isValidElement)(label) && label.type === ItemLabel;
17549      const descriptionElements = descriptions.filter(
17550        (description) => (0, import_element29.isValidElement)(description) && description.type === ItemDescription
17551      );
17552      if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) {
17553        throw new Error(
17554          "Menu.ItemLabel must be the first direct child of every menu item, followed only by Menu.ItemDescription components."
17555        );
17556      }
17557      return {
17558        descriptionIds: descriptionElements.map(
17559          (description) => description.props.id
17560        ),
17561        hasLabel,
17562        labelId: hasLabel ? label.props.id : void 0
17563      };
17564    }
17565    function useItemContent(children, {
17566      "aria-describedby": ariaDescribedBy,
17567      "aria-keyshortcuts": ariaKeyShortcuts,
17568      "aria-label": ariaLabel,
17569      "aria-labelledby": ariaLabelledBy,
17570      labelTrailing,
17571      shortcut
17572    }) {
17573      const generatedLabelId = (0, import_element29.useId)();
17574      const generatedDescriptionId = (0, import_element29.useId)();
17575      const { descriptionIds, hasLabel, labelId } = getItemContent(children);
17576      const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0;
17577      const resolvedDescriptionIds = descriptionIds.map(
17578        (descriptionId, index2) => descriptionId ?? `$generatedDescriptionId}-$index2}`
17579      );
17580      const itemDescribedBy = Array.from(
17581        /* @__PURE__ */ new Set([
17582          ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [],
17583          ...resolvedDescriptionIds
17584        ])
17585      ).join(" ");
17586      let descriptionIndex = 0;
17587      const contentChildren = import_element29.Children.map(children, (child) => {
17588        if (!(0, import_element29.isValidElement)(child) || child.type !== ItemDescription) {
17589          return child;
17590        }
17591        const descriptionId = resolvedDescriptionIds[descriptionIndex++];
17592        const descriptionProps = {
17593          id: descriptionId,
17594          validationToken: ITEM_DESCRIPTION_DIRECT_CHILD
17595        };
17596        return (0, import_element29.cloneElement)(child, descriptionProps);
17597      });
17598      const {
17599        descriptionId: shortcutDescriptionId,
17600        targetProps: shortcutAriaProps
17601      } = useKeyboardShortcutProps({
17602        "aria-describedby": itemDescribedBy || void 0,
17603        "aria-keyshortcuts": ariaKeyShortcuts,
17604        shortcut
17605      });
17606      const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId);
17607      return {
17608        contentChildren,
17609        contentContextValue: {
17610          labelId: resolvedLabelId,
17611          labelTrailing
17612        },
17613        itemAriaProps: {
17614          ...shortcutAriaProps,
17615          "aria-label": ariaLabel,
17616          "aria-labelledby": labelledBy
17617        },
17618        shortcutDescriptionId
17619      };
17620    }
17621    function ItemContent({
17622      children,
17623      prefix,
17624      shortcut,
17625      shortcutDescriptionId,
17626      suffix,
17627      trailing
17628    }) {
17629      const hasPrefix = import_element29.Children.toArray(prefix).some(
17630        (child) => child !== ""
17631      );
17632      const hasSuffix = import_element29.Children.toArray(suffix).some(
17633        (child) => child !== ""
17634      );
17635      const hasTrailing = import_element29.Children.toArray(trailing).some(
17636        (child) => child !== ""
17637      );
17638      return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
17639        /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("span", { className: style_default9["item-content"], children: [
17640          /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: style_default9["item-children"], children }),
17641          hasSuffix && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: style_default9["item-suffix"], children: suffix }),
17642          shortcut && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: style_default9["item-shortcut"], children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(KeyboardShortcutDisplay, { shortcut }) }),
17643          hasTrailing && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: style_default9["item-trailing"], children: trailing })
17644        ] }),
17645        hasPrefix && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { "aria-hidden": "true", className: style_default9["item-prefix"], children: prefix }),
17646        shortcut && shortcutDescriptionId && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
17647          KeyboardShortcutDescription,
17648          {
17649            descriptionId: shortcutDescriptionId,
17650            shortcut
17651          }
17652        )
17653      ] });
17654    }
17655    var Item = (0, import_element29.forwardRef)(function MenuItem3({
17656      children,
17657      className,
17658      prefix,
17659      shortcut,
17660      suffix,
17661      "aria-describedby": ariaDescribedBy,
17662      "aria-keyshortcuts": ariaKeyShortcuts,
17663      "aria-label": ariaLabel,
17664      "aria-labelledby": ariaLabelledBy,
17665      ...props
17666    }, ref) {
17667      const {
17668        contentChildren,
17669        contentContextValue,
17670        itemAriaProps,
17671        shortcutDescriptionId
17672      } = useItemContent(children, {
17673        "aria-describedby": ariaDescribedBy,
17674        "aria-keyshortcuts": ariaKeyShortcuts,
17675        "aria-label": ariaLabel,
17676        "aria-labelledby": ariaLabelledBy,
17677        shortcut
17678      });
17679      return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
17680        index_parts_exports.Item,
17681        {
17682          ref,
17683          ...itemAriaProps,
17684          className: clsx_default(
17685            resets_default3["box-sizing"],
17686            style_default9.item,
17687            className
17688          ),
17689          ...props,
17690          children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
17691            ItemContent,
17692            {
17693              prefix,
17694              shortcut,
17695              shortcutDescriptionId,
17696              suffix,
17697              children: contentChildren
17698            }
17699          ) })
17700        }
17701      );
17702    });
17703  
17704    // packages/ui/build-module/menu/checkbox-item.mjs
17705    var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1);
17706    var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash";
17707    function getRuntime11() {
17708      const globalScope = globalThis;
17709      if (globalScope.__wpStyleRuntime) {
17710        return globalScope.__wpStyleRuntime;
17711      }
17712      globalScope.__wpStyleRuntime = {
17713        documents: /* @__PURE__ */ new Map(),
17714        styles: /* @__PURE__ */ new Map(),
17715        injectedStyles: /* @__PURE__ */ new WeakMap()
17716      };
17717      if (typeof document !== "undefined") {
17718        registerDocument11(document);
17719      }
17720      return globalScope.__wpStyleRuntime;
17721    }
17722    function documentContainsStyleHash11(targetDocument, hash) {
17723      if (!targetDocument.head) {
17724        return false;
17725      }
17726      for (const style of targetDocument.head.querySelectorAll(
17727        `style[$STYLE_HASH_ATTRIBUTE11}]`
17728      )) {
17729        if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) {
17730          return true;
17731        }
17732      }
17733      return false;
17734    }
17735    function injectStyle11(targetDocument, hash, css) {
17736      if (!targetDocument.head) {
17737        return;
17738      }
17739      const runtime = getRuntime11();
17740      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17741      if (!injectedStyles) {
17742        injectedStyles = /* @__PURE__ */ new Set();
17743        runtime.injectedStyles.set(targetDocument, injectedStyles);
17744      }
17745      if (injectedStyles.has(hash)) {
17746        return;
17747      }
17748      if (documentContainsStyleHash11(targetDocument, hash)) {
17749        injectedStyles.add(hash);
17750        return;
17751      }
17752      const style = targetDocument.createElement("style");
17753      style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash);
17754      style.appendChild(targetDocument.createTextNode(css));
17755      targetDocument.head.appendChild(style);
17756      injectedStyles.add(hash);
17757    }
17758    function registerDocument11(targetDocument) {
17759      const runtime = getRuntime11();
17760      runtime.documents.set(
17761        targetDocument,
17762        (runtime.documents.get(targetDocument) ?? 0) + 1
17763      );
17764      for (const [hash, css] of runtime.styles) {
17765        injectStyle11(targetDocument, hash, css);
17766      }
17767      return () => {
17768        const count = runtime.documents.get(targetDocument);
17769        if (count === void 0) {
17770          return;
17771        }
17772        if (count <= 1) {
17773          runtime.documents.delete(targetDocument);
17774          return;
17775        }
17776        runtime.documents.set(targetDocument, count - 1);
17777      };
17778    }
17779    function registerStyle11(hash, css) {
17780      const runtime = getRuntime11();
17781      runtime.styles.set(hash, css);
17782      for (const targetDocument of runtime.documents.keys()) {
17783        injectStyle11(targetDocument, hash, css);
17784      }
17785    }
17786    if (typeof process === "undefined" || true) {
17787      registerStyle11("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
17788    }
17789    var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
17790    if (typeof process === "undefined" || true) {
17791      registerStyle11("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
17792    }
17793    var style_default10 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
17794    var CheckboxItem = (0, import_element30.forwardRef)(
17795      function MenuCheckboxItem3({
17796        children,
17797        className,
17798        prefix,
17799        shortcut,
17800        suffix,
17801        "aria-describedby": ariaDescribedBy,
17802        "aria-keyshortcuts": ariaKeyShortcuts,
17803        "aria-label": ariaLabel,
17804        "aria-labelledby": ariaLabelledBy,
17805        ...props
17806      }, ref) {
17807        const {
17808          contentChildren,
17809          contentContextValue,
17810          itemAriaProps,
17811          shortcutDescriptionId
17812        } = useItemContent(children, {
17813          "aria-describedby": ariaDescribedBy,
17814          "aria-keyshortcuts": ariaKeyShortcuts,
17815          "aria-label": ariaLabel,
17816          "aria-labelledby": ariaLabelledBy,
17817          shortcut
17818        });
17819        return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
17820          index_parts_exports.CheckboxItem,
17821          {
17822            ref,
17823            ...itemAriaProps,
17824            className: clsx_default(
17825              resets_default4["box-sizing"],
17826              style_default10.item,
17827              className
17828            ),
17829            ...props,
17830            children: [
17831              /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
17832                index_parts_exports.CheckboxItemIndicator,
17833                {
17834                  keepMounted: true,
17835                  className: style_default10["item-selection-indicator"],
17836                  children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
17837                    Icon,
17838                    {
17839                      icon: check_default,
17840                      size: 24,
17841                      className: style_default10["checkbox-selection-icon"],
17842                      "aria-hidden": "true"
17843                    }
17844                  )
17845                }
17846              ),
17847              /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
17848                ItemContent,
17849                {
17850                  prefix,
17851                  shortcut,
17852                  shortcutDescriptionId,
17853                  suffix,
17854                  children: contentChildren
17855                }
17856              ) })
17857            ]
17858          }
17859        );
17860      }
17861    );
17862  
17863    // packages/ui/build-module/menu/group.mjs
17864    var import_element31 = __toESM(require_element(), 1);
17865    var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1);
17866    var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash";
17867    function getRuntime12() {
17868      const globalScope = globalThis;
17869      if (globalScope.__wpStyleRuntime) {
17870        return globalScope.__wpStyleRuntime;
17871      }
17872      globalScope.__wpStyleRuntime = {
17873        documents: /* @__PURE__ */ new Map(),
17874        styles: /* @__PURE__ */ new Map(),
17875        injectedStyles: /* @__PURE__ */ new WeakMap()
17876      };
17877      if (typeof document !== "undefined") {
17878        registerDocument12(document);
17879      }
17880      return globalScope.__wpStyleRuntime;
17881    }
17882    function documentContainsStyleHash12(targetDocument, hash) {
17883      if (!targetDocument.head) {
17884        return false;
17885      }
17886      for (const style of targetDocument.head.querySelectorAll(
17887        `style[$STYLE_HASH_ATTRIBUTE12}]`
17888      )) {
17889        if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) {
17890          return true;
17891        }
17892      }
17893      return false;
17894    }
17895    function injectStyle12(targetDocument, hash, css) {
17896      if (!targetDocument.head) {
17897        return;
17898      }
17899      const runtime = getRuntime12();
17900      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17901      if (!injectedStyles) {
17902        injectedStyles = /* @__PURE__ */ new Set();
17903        runtime.injectedStyles.set(targetDocument, injectedStyles);
17904      }
17905      if (injectedStyles.has(hash)) {
17906        return;
17907      }
17908      if (documentContainsStyleHash12(targetDocument, hash)) {
17909        injectedStyles.add(hash);
17910        return;
17911      }
17912      const style = targetDocument.createElement("style");
17913      style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash);
17914      style.appendChild(targetDocument.createTextNode(css));
17915      targetDocument.head.appendChild(style);
17916      injectedStyles.add(hash);
17917    }
17918    function registerDocument12(targetDocument) {
17919      const runtime = getRuntime12();
17920      runtime.documents.set(
17921        targetDocument,
17922        (runtime.documents.get(targetDocument) ?? 0) + 1
17923      );
17924      for (const [hash, css] of runtime.styles) {
17925        injectStyle12(targetDocument, hash, css);
17926      }
17927      return () => {
17928        const count = runtime.documents.get(targetDocument);
17929        if (count === void 0) {
17930          return;
17931        }
17932        if (count <= 1) {
17933          runtime.documents.delete(targetDocument);
17934          return;
17935        }
17936        runtime.documents.set(targetDocument, count - 1);
17937      };
17938    }
17939    function registerStyle12(hash, css) {
17940      const runtime = getRuntime12();
17941      runtime.styles.set(hash, css);
17942      for (const targetDocument of runtime.documents.keys()) {
17943        injectStyle12(targetDocument, hash, css);
17944      }
17945    }
17946    if (typeof process === "undefined" || true) {
17947      registerStyle12("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
17948    }
17949    var style_default11 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
17950    var Group = (0, import_element31.forwardRef)(function MenuGroup3({ className, ...props }, ref) {
17951      return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
17952        index_parts_exports.Group,
17953        {
17954          ref,
17955          className: clsx_default(style_default11.group, className),
17956          ...props
17957        }
17958      );
17959    });
17960  
17961    // packages/ui/build-module/menu/group-label.mjs
17962    var import_element32 = __toESM(require_element(), 1);
17963    var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1);
17964    var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash";
17965    function getRuntime13() {
17966      const globalScope = globalThis;
17967      if (globalScope.__wpStyleRuntime) {
17968        return globalScope.__wpStyleRuntime;
17969      }
17970      globalScope.__wpStyleRuntime = {
17971        documents: /* @__PURE__ */ new Map(),
17972        styles: /* @__PURE__ */ new Map(),
17973        injectedStyles: /* @__PURE__ */ new WeakMap()
17974      };
17975      if (typeof document !== "undefined") {
17976        registerDocument13(document);
17977      }
17978      return globalScope.__wpStyleRuntime;
17979    }
17980    function documentContainsStyleHash13(targetDocument, hash) {
17981      if (!targetDocument.head) {
17982        return false;
17983      }
17984      for (const style of targetDocument.head.querySelectorAll(
17985        `style[$STYLE_HASH_ATTRIBUTE13}]`
17986      )) {
17987        if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) {
17988          return true;
17989        }
17990      }
17991      return false;
17992    }
17993    function injectStyle13(targetDocument, hash, css) {
17994      if (!targetDocument.head) {
17995        return;
17996      }
17997      const runtime = getRuntime13();
17998      let injectedStyles = runtime.injectedStyles.get(targetDocument);
17999      if (!injectedStyles) {
18000        injectedStyles = /* @__PURE__ */ new Set();
18001        runtime.injectedStyles.set(targetDocument, injectedStyles);
18002      }
18003      if (injectedStyles.has(hash)) {
18004        return;
18005      }
18006      if (documentContainsStyleHash13(targetDocument, hash)) {
18007        injectedStyles.add(hash);
18008        return;
18009      }
18010      const style = targetDocument.createElement("style");
18011      style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash);
18012      style.appendChild(targetDocument.createTextNode(css));
18013      targetDocument.head.appendChild(style);
18014      injectedStyles.add(hash);
18015    }
18016    function registerDocument13(targetDocument) {
18017      const runtime = getRuntime13();
18018      runtime.documents.set(
18019        targetDocument,
18020        (runtime.documents.get(targetDocument) ?? 0) + 1
18021      );
18022      for (const [hash, css] of runtime.styles) {
18023        injectStyle13(targetDocument, hash, css);
18024      }
18025      return () => {
18026        const count = runtime.documents.get(targetDocument);
18027        if (count === void 0) {
18028          return;
18029        }
18030        if (count <= 1) {
18031          runtime.documents.delete(targetDocument);
18032          return;
18033        }
18034        runtime.documents.set(targetDocument, count - 1);
18035      };
18036    }
18037    function registerStyle13(hash, css) {
18038      const runtime = getRuntime13();
18039      runtime.styles.set(hash, css);
18040      for (const targetDocument of runtime.documents.keys()) {
18041        injectStyle13(targetDocument, hash, css);
18042      }
18043    }
18044    if (typeof process === "undefined" || true) {
18045      registerStyle13("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18046    }
18047    var style_default12 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18048    var GroupLabel = (0, import_element32.forwardRef)(
18049      function MenuGroupLabel3({ className, ...props }, ref) {
18050        return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
18051          index_parts_exports.GroupLabel,
18052          {
18053            ref,
18054            className: clsx_default(style_default12["group-label"], className),
18055            ...props
18056          }
18057        );
18058      }
18059    );
18060  
18061    // packages/ui/build-module/menu/link-item.mjs
18062    var import_element33 = __toESM(require_element(), 1);
18063    var import_i18n10 = __toESM(require_i18n(), 1);
18064    var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1);
18065    var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash";
18066    function getRuntime14() {
18067      const globalScope = globalThis;
18068      if (globalScope.__wpStyleRuntime) {
18069        return globalScope.__wpStyleRuntime;
18070      }
18071      globalScope.__wpStyleRuntime = {
18072        documents: /* @__PURE__ */ new Map(),
18073        styles: /* @__PURE__ */ new Map(),
18074        injectedStyles: /* @__PURE__ */ new WeakMap()
18075      };
18076      if (typeof document !== "undefined") {
18077        registerDocument14(document);
18078      }
18079      return globalScope.__wpStyleRuntime;
18080    }
18081    function documentContainsStyleHash14(targetDocument, hash) {
18082      if (!targetDocument.head) {
18083        return false;
18084      }
18085      for (const style of targetDocument.head.querySelectorAll(
18086        `style[$STYLE_HASH_ATTRIBUTE14}]`
18087      )) {
18088        if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) {
18089          return true;
18090        }
18091      }
18092      return false;
18093    }
18094    function injectStyle14(targetDocument, hash, css) {
18095      if (!targetDocument.head) {
18096        return;
18097      }
18098      const runtime = getRuntime14();
18099      let injectedStyles = runtime.injectedStyles.get(targetDocument);
18100      if (!injectedStyles) {
18101        injectedStyles = /* @__PURE__ */ new Set();
18102        runtime.injectedStyles.set(targetDocument, injectedStyles);
18103      }
18104      if (injectedStyles.has(hash)) {
18105        return;
18106      }
18107      if (documentContainsStyleHash14(targetDocument, hash)) {
18108        injectedStyles.add(hash);
18109        return;
18110      }
18111      const style = targetDocument.createElement("style");
18112      style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash);
18113      style.appendChild(targetDocument.createTextNode(css));
18114      targetDocument.head.appendChild(style);
18115      injectedStyles.add(hash);
18116    }
18117    function registerDocument14(targetDocument) {
18118      const runtime = getRuntime14();
18119      runtime.documents.set(
18120        targetDocument,
18121        (runtime.documents.get(targetDocument) ?? 0) + 1
18122      );
18123      for (const [hash, css] of runtime.styles) {
18124        injectStyle14(targetDocument, hash, css);
18125      }
18126      return () => {
18127        const count = runtime.documents.get(targetDocument);
18128        if (count === void 0) {
18129          return;
18130        }
18131        if (count <= 1) {
18132          runtime.documents.delete(targetDocument);
18133          return;
18134        }
18135        runtime.documents.set(targetDocument, count - 1);
18136      };
18137    }
18138    function registerStyle14(hash, css) {
18139      const runtime = getRuntime14();
18140      runtime.styles.set(hash, css);
18141      for (const targetDocument of runtime.documents.keys()) {
18142        injectStyle14(targetDocument, hash, css);
18143      }
18144    }
18145    if (typeof process === "undefined" || true) {
18146      registerStyle14("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
18147    }
18148    var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
18149    if (typeof process === "undefined" || true) {
18150      registerStyle14("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
18151    }
18152    var resets_default5 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
18153    if (typeof process === "undefined" || true) {
18154      registerStyle14("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18155    }
18156    var style_default13 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18157    var LinkItem = (0, import_element33.forwardRef)(function MenuLinkItem3({
18158      children,
18159      className,
18160      openInNewTab = false,
18161      target,
18162      prefix,
18163      shortcut,
18164      suffix,
18165      "aria-describedby": ariaDescribedBy,
18166      "aria-keyshortcuts": ariaKeyShortcuts,
18167      "aria-label": ariaLabel,
18168      "aria-labelledby": ariaLabelledBy,
18169      rel,
18170      ...props
18171    }, ref) {
18172      const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? "");
18173      const externalLinkIndicator = shouldShowNewTabIndicator ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
18174        "span",
18175        {
18176          className: style_default13["external-link-indicator"],
18177          role: "img",
18178          "aria-label": (
18179            /* translators: accessibility text appended to link text */
18180            (0, import_i18n10.__)("(opens in a new tab)")
18181          )
18182        }
18183      ) : null;
18184      const {
18185        contentChildren,
18186        contentContextValue,
18187        itemAriaProps,
18188        shortcutDescriptionId
18189      } = useItemContent(children, {
18190        "aria-describedby": ariaDescribedBy,
18191        "aria-keyshortcuts": ariaKeyShortcuts,
18192        "aria-label": ariaLabel,
18193        "aria-labelledby": ariaLabelledBy,
18194        labelTrailing: externalLinkIndicator,
18195        shortcut
18196      });
18197      return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
18198        index_parts_exports.LinkItem,
18199        {
18200          ref,
18201          ...props,
18202          ...itemAriaProps,
18203          rel,
18204          target: target ?? (openInNewTab ? "_blank" : void 0),
18205          className: clsx_default(
18206            global_css_defense_default3.a,
18207            resets_default5["box-sizing"],
18208            style_default13.item,
18209            className
18210          ),
18211          children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
18212            ItemContent,
18213            {
18214              prefix,
18215              shortcut,
18216              shortcutDescriptionId,
18217              suffix,
18218              children: contentChildren
18219            }
18220          ) })
18221        }
18222      );
18223    });
18224  
18225    // packages/ui/build-module/menu/popup.mjs
18226    var import_element36 = __toESM(require_element(), 1);
18227  
18228    // packages/ui/build-module/menu/portal.mjs
18229    var import_element34 = __toESM(require_element(), 1);
18230    var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1);
18231    var Portal2 = (0, import_element34.forwardRef)(function MenuPortal3({ container, ...props }, ref) {
18232      return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
18233        index_parts_exports.Portal,
18234        {
18235          ref,
18236          container: container ?? getWpCompatOverlaySlot(),
18237          ...props
18238        }
18239      );
18240    });
18241  
18242    // packages/ui/build-module/menu/positioner.mjs
18243    var import_element35 = __toESM(require_element(), 1);
18244  
18245    // packages/ui/build-module/form/primitives/constants.mjs
18246    var ITEM_POPUP_POSITIONER_PROPS = {
18247      align: "start",
18248      sideOffset: 8,
18249      collisionPadding: 12
18250    };
18251  
18252    // packages/ui/build-module/menu/positioner.mjs
18253    var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1);
18254    var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash";
18255    function getRuntime15() {
18256      const globalScope = globalThis;
18257      if (globalScope.__wpStyleRuntime) {
18258        return globalScope.__wpStyleRuntime;
18259      }
18260      globalScope.__wpStyleRuntime = {
18261        documents: /* @__PURE__ */ new Map(),
18262        styles: /* @__PURE__ */ new Map(),
18263        injectedStyles: /* @__PURE__ */ new WeakMap()
18264      };
18265      if (typeof document !== "undefined") {
18266        registerDocument15(document);
18267      }
18268      return globalScope.__wpStyleRuntime;
18269    }
18270    function documentContainsStyleHash15(targetDocument, hash) {
18271      if (!targetDocument.head) {
18272        return false;
18273      }
18274      for (const style of targetDocument.head.querySelectorAll(
18275        `style[$STYLE_HASH_ATTRIBUTE15}]`
18276      )) {
18277        if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) {
18278          return true;
18279        }
18280      }
18281      return false;
18282    }
18283    function injectStyle15(targetDocument, hash, css) {
18284      if (!targetDocument.head) {
18285        return;
18286      }
18287      const runtime = getRuntime15();
18288      let injectedStyles = runtime.injectedStyles.get(targetDocument);
18289      if (!injectedStyles) {
18290        injectedStyles = /* @__PURE__ */ new Set();
18291        runtime.injectedStyles.set(targetDocument, injectedStyles);
18292      }
18293      if (injectedStyles.has(hash)) {
18294        return;
18295      }
18296      if (documentContainsStyleHash15(targetDocument, hash)) {
18297        injectedStyles.add(hash);
18298        return;
18299      }
18300      const style = targetDocument.createElement("style");
18301      style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash);
18302      style.appendChild(targetDocument.createTextNode(css));
18303      targetDocument.head.appendChild(style);
18304      injectedStyles.add(hash);
18305    }
18306    function registerDocument15(targetDocument) {
18307      const runtime = getRuntime15();
18308      runtime.documents.set(
18309        targetDocument,
18310        (runtime.documents.get(targetDocument) ?? 0) + 1
18311      );
18312      for (const [hash, css] of runtime.styles) {
18313        injectStyle15(targetDocument, hash, css);
18314      }
18315      return () => {
18316        const count = runtime.documents.get(targetDocument);
18317        if (count === void 0) {
18318          return;
18319        }
18320        if (count <= 1) {
18321          runtime.documents.delete(targetDocument);
18322          return;
18323        }
18324        runtime.documents.set(targetDocument, count - 1);
18325      };
18326    }
18327    function registerStyle15(hash, css) {
18328      const runtime = getRuntime15();
18329      runtime.styles.set(hash, css);
18330      for (const targetDocument of runtime.documents.keys()) {
18331        injectStyle15(targetDocument, hash, css);
18332      }
18333    }
18334    if (typeof process === "undefined" || true) {
18335      registerStyle15("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
18336    }
18337    var resets_default6 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
18338    if (typeof process === "undefined" || true) {
18339      registerStyle15("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18340    }
18341    var style_default14 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18342    var MENU_SUBMENU_POPUP_POSITIONER_PROPS = {
18343      side: "inline-end",
18344      align: "start",
18345      sideOffset: -4,
18346      collisionPadding: 12
18347    };
18348    var Positioner2 = (0, import_element35.forwardRef)(
18349      function MenuPositioner3({ className, ...props }, ref) {
18350        const { isSubmenu } = useMenuContext();
18351        const defaultProps = isSubmenu ? MENU_SUBMENU_POPUP_POSITIONER_PROPS : ITEM_POPUP_POSITIONER_PROPS;
18352        return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
18353          index_parts_exports.Positioner,
18354          {
18355            ...defaultProps,
18356            ...props,
18357            ref,
18358            className: clsx_default(
18359              resets_default6["box-sizing"],
18360              style_default14.positioner,
18361              className
18362            )
18363          }
18364        );
18365      }
18366    );
18367  
18368    // packages/ui/build-module/menu/popup.mjs
18369    var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1);
18370    var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash";
18371    function getRuntime16() {
18372      const globalScope = globalThis;
18373      if (globalScope.__wpStyleRuntime) {
18374        return globalScope.__wpStyleRuntime;
18375      }
18376      globalScope.__wpStyleRuntime = {
18377        documents: /* @__PURE__ */ new Map(),
18378        styles: /* @__PURE__ */ new Map(),
18379        injectedStyles: /* @__PURE__ */ new WeakMap()
18380      };
18381      if (typeof document !== "undefined") {
18382        registerDocument16(document);
18383      }
18384      return globalScope.__wpStyleRuntime;
18385    }
18386    function documentContainsStyleHash16(targetDocument, hash) {
18387      if (!targetDocument.head) {
18388        return false;
18389      }
18390      for (const style of targetDocument.head.querySelectorAll(
18391        `style[$STYLE_HASH_ATTRIBUTE16}]`
18392      )) {
18393        if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) {
18394          return true;
18395        }
18396      }
18397      return false;
18398    }
18399    function injectStyle16(targetDocument, hash, css) {
18400      if (!targetDocument.head) {
18401        return;
18402      }
18403      const runtime = getRuntime16();
18404      let injectedStyles = runtime.injectedStyles.get(targetDocument);
18405      if (!injectedStyles) {
18406        injectedStyles = /* @__PURE__ */ new Set();
18407        runtime.injectedStyles.set(targetDocument, injectedStyles);
18408      }
18409      if (injectedStyles.has(hash)) {
18410        return;
18411      }
18412      if (documentContainsStyleHash16(targetDocument, hash)) {
18413        injectedStyles.add(hash);
18414        return;
18415      }
18416      const style = targetDocument.createElement("style");
18417      style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash);
18418      style.appendChild(targetDocument.createTextNode(css));
18419      targetDocument.head.appendChild(style);
18420      injectedStyles.add(hash);
18421    }
18422    function registerDocument16(targetDocument) {
18423      const runtime = getRuntime16();
18424      runtime.documents.set(
18425        targetDocument,
18426        (runtime.documents.get(targetDocument) ?? 0) + 1
18427      );
18428      for (const [hash, css] of runtime.styles) {
18429        injectStyle16(targetDocument, hash, css);
18430      }
18431      return () => {
18432        const count = runtime.documents.get(targetDocument);
18433        if (count === void 0) {
18434          return;
18435        }
18436        if (count <= 1) {
18437          runtime.documents.delete(targetDocument);
18438          return;
18439        }
18440        runtime.documents.set(targetDocument, count - 1);
18441      };
18442    }
18443    function registerStyle16(hash, css) {
18444      const runtime = getRuntime16();
18445      runtime.styles.set(hash, css);
18446      for (const targetDocument of runtime.documents.keys()) {
18447        injectStyle16(targetDocument, hash, css);
18448      }
18449    }
18450    if (typeof process === "undefined" || true) {
18451      registerStyle16("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18452    }
18453    var style_default15 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18454    var Popup2 = (0, import_element36.forwardRef)(function MenuPopup3({ children, className, portal, positioner, ...props }, ref) {
18455      const { isSubmenu } = useMenuContext();
18456      const popupContent = /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
18457        index_parts_exports.Popup,
18458        {
18459          ref,
18460          className: clsx_default(
18461            style_default15.popup,
18462            isSubmenu ? style_default15["is-submenu"] : style_default15["is-root"],
18463            className
18464          ),
18465          ...props,
18466          children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
18467            "div",
18468            {
18469              className: style_default15.list,
18470              children
18471            }
18472          )
18473        }
18474      );
18475      const positionedPopup = renderSlotWithChildren(
18476        positioner,
18477        /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Positioner2, {}),
18478        popupContent
18479      );
18480      return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Portal2, {}), positionedPopup);
18481    });
18482  
18483    // packages/ui/build-module/menu/prefix-icon.mjs
18484    var import_element37 = __toESM(require_element(), 1);
18485    var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1);
18486    var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash";
18487    function getRuntime17() {
18488      const globalScope = globalThis;
18489      if (globalScope.__wpStyleRuntime) {
18490        return globalScope.__wpStyleRuntime;
18491      }
18492      globalScope.__wpStyleRuntime = {
18493        documents: /* @__PURE__ */ new Map(),
18494        styles: /* @__PURE__ */ new Map(),
18495        injectedStyles: /* @__PURE__ */ new WeakMap()
18496      };
18497      if (typeof document !== "undefined") {
18498        registerDocument17(document);
18499      }
18500      return globalScope.__wpStyleRuntime;
18501    }
18502    function documentContainsStyleHash17(targetDocument, hash) {
18503      if (!targetDocument.head) {
18504        return false;
18505      }
18506      for (const style of targetDocument.head.querySelectorAll(
18507        `style[$STYLE_HASH_ATTRIBUTE17}]`
18508      )) {
18509        if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) {
18510          return true;
18511        }
18512      }
18513      return false;
18514    }
18515    function injectStyle17(targetDocument, hash, css) {
18516      if (!targetDocument.head) {
18517        return;
18518      }
18519      const runtime = getRuntime17();
18520      let injectedStyles = runtime.injectedStyles.get(targetDocument);
18521      if (!injectedStyles) {
18522        injectedStyles = /* @__PURE__ */ new Set();
18523        runtime.injectedStyles.set(targetDocument, injectedStyles);
18524      }
18525      if (injectedStyles.has(hash)) {
18526        return;
18527      }
18528      if (documentContainsStyleHash17(targetDocument, hash)) {
18529        injectedStyles.add(hash);
18530        return;
18531      }
18532      const style = targetDocument.createElement("style");
18533      style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash);
18534      style.appendChild(targetDocument.createTextNode(css));
18535      targetDocument.head.appendChild(style);
18536      injectedStyles.add(hash);
18537    }
18538    function registerDocument17(targetDocument) {
18539      const runtime = getRuntime17();
18540      runtime.documents.set(
18541        targetDocument,
18542        (runtime.documents.get(targetDocument) ?? 0) + 1
18543      );
18544      for (const [hash, css] of runtime.styles) {
18545        injectStyle17(targetDocument, hash, css);
18546      }
18547      return () => {
18548        const count = runtime.documents.get(targetDocument);
18549        if (count === void 0) {
18550          return;
18551        }
18552        if (count <= 1) {
18553          runtime.documents.delete(targetDocument);
18554          return;
18555        }
18556        runtime.documents.set(targetDocument, count - 1);
18557      };
18558    }
18559    function registerStyle17(hash, css) {
18560      const runtime = getRuntime17();
18561      runtime.styles.set(hash, css);
18562      for (const targetDocument of runtime.documents.keys()) {
18563        injectStyle17(targetDocument, hash, css);
18564      }
18565    }
18566    if (typeof process === "undefined" || true) {
18567      registerStyle17("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18568    }
18569    var style_default16 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18570    var PrefixIcon = (0, import_element37.forwardRef)(
18571      function MenuPrefixIcon({ className, size: size4 = 24, style, ...props }, ref) {
18572        return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
18573          Icon,
18574          {
18575            ...props,
18576            ref,
18577            size: size4,
18578            className: clsx_default(style_default16["prefix-icon"], className),
18579            style: {
18580              ...style,
18581              "--_wp-ui-menu-prefix-icon-size": `$size4}px`
18582            }
18583          }
18584        );
18585      }
18586    );
18587    PrefixIcon.displayName = "Menu.PrefixIcon";
18588  
18589    // packages/ui/build-module/menu/radio-group.mjs
18590    var import_element38 = __toESM(require_element(), 1);
18591    var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1);
18592    var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash";
18593    function getRuntime18() {
18594      const globalScope = globalThis;
18595      if (globalScope.__wpStyleRuntime) {
18596        return globalScope.__wpStyleRuntime;
18597      }
18598      globalScope.__wpStyleRuntime = {
18599        documents: /* @__PURE__ */ new Map(),
18600        styles: /* @__PURE__ */ new Map(),
18601        injectedStyles: /* @__PURE__ */ new WeakMap()
18602      };
18603      if (typeof document !== "undefined") {
18604        registerDocument18(document);
18605      }
18606      return globalScope.__wpStyleRuntime;
18607    }
18608    function documentContainsStyleHash18(targetDocument, hash) {
18609      if (!targetDocument.head) {
18610        return false;
18611      }
18612      for (const style of targetDocument.head.querySelectorAll(
18613        `style[$STYLE_HASH_ATTRIBUTE18}]`
18614      )) {
18615        if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) {
18616          return true;
18617        }
18618      }
18619      return false;
18620    }
18621    function injectStyle18(targetDocument, hash, css) {
18622      if (!targetDocument.head) {
18623        return;
18624      }
18625      const runtime = getRuntime18();
18626      let injectedStyles = runtime.injectedStyles.get(targetDocument);
18627      if (!injectedStyles) {
18628        injectedStyles = /* @__PURE__ */ new Set();
18629        runtime.injectedStyles.set(targetDocument, injectedStyles);
18630      }
18631      if (injectedStyles.has(hash)) {
18632        return;
18633      }
18634      if (documentContainsStyleHash18(targetDocument, hash)) {
18635        injectedStyles.add(hash);
18636        return;
18637      }
18638      const style = targetDocument.createElement("style");
18639      style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash);
18640      style.appendChild(targetDocument.createTextNode(css));
18641      targetDocument.head.appendChild(style);
18642      injectedStyles.add(hash);
18643    }
18644    function registerDocument18(targetDocument) {
18645      const runtime = getRuntime18();
18646      runtime.documents.set(
18647        targetDocument,
18648        (runtime.documents.get(targetDocument) ?? 0) + 1
18649      );
18650      for (const [hash, css] of runtime.styles) {
18651        injectStyle18(targetDocument, hash, css);
18652      }
18653      return () => {
18654        const count = runtime.documents.get(targetDocument);
18655        if (count === void 0) {
18656          return;
18657        }
18658        if (count <= 1) {
18659          runtime.documents.delete(targetDocument);
18660          return;
18661        }
18662        runtime.documents.set(targetDocument, count - 1);
18663      };
18664    }
18665    function registerStyle18(hash, css) {
18666      const runtime = getRuntime18();
18667      runtime.styles.set(hash, css);
18668      for (const targetDocument of runtime.documents.keys()) {
18669        injectStyle18(targetDocument, hash, css);
18670      }
18671    }
18672    if (typeof process === "undefined" || true) {
18673      registerStyle18("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18674    }
18675    var style_default17 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18676    var RadioGroup = (0, import_element38.forwardRef)(
18677      function MenuRadioGroup3({ className, ...props }, ref) {
18678        return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
18679          index_parts_exports.RadioGroup,
18680          {
18681            ref,
18682            className: clsx_default(style_default17["radio-group"], className),
18683            ...props
18684          }
18685        );
18686      }
18687    );
18688  
18689    // packages/ui/build-module/menu/radio-item.mjs
18690    var import_element39 = __toESM(require_element(), 1);
18691    var import_primitives36 = __toESM(require_primitives(), 1);
18692    var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1);
18693    var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash";
18694    function getRuntime19() {
18695      const globalScope = globalThis;
18696      if (globalScope.__wpStyleRuntime) {
18697        return globalScope.__wpStyleRuntime;
18698      }
18699      globalScope.__wpStyleRuntime = {
18700        documents: /* @__PURE__ */ new Map(),
18701        styles: /* @__PURE__ */ new Map(),
18702        injectedStyles: /* @__PURE__ */ new WeakMap()
18703      };
18704      if (typeof document !== "undefined") {
18705        registerDocument19(document);
18706      }
18707      return globalScope.__wpStyleRuntime;
18708    }
18709    function documentContainsStyleHash19(targetDocument, hash) {
18710      if (!targetDocument.head) {
18711        return false;
18712      }
18713      for (const style of targetDocument.head.querySelectorAll(
18714        `style[$STYLE_HASH_ATTRIBUTE19}]`
18715      )) {
18716        if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) {
18717          return true;
18718        }
18719      }
18720      return false;
18721    }
18722    function injectStyle19(targetDocument, hash, css) {
18723      if (!targetDocument.head) {
18724        return;
18725      }
18726      const runtime = getRuntime19();
18727      let injectedStyles = runtime.injectedStyles.get(targetDocument);
18728      if (!injectedStyles) {
18729        injectedStyles = /* @__PURE__ */ new Set();
18730        runtime.injectedStyles.set(targetDocument, injectedStyles);
18731      }
18732      if (injectedStyles.has(hash)) {
18733        return;
18734      }
18735      if (documentContainsStyleHash19(targetDocument, hash)) {
18736        injectedStyles.add(hash);
18737        return;
18738      }
18739      const style = targetDocument.createElement("style");
18740      style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash);
18741      style.appendChild(targetDocument.createTextNode(css));
18742      targetDocument.head.appendChild(style);
18743      injectedStyles.add(hash);
18744    }
18745    function registerDocument19(targetDocument) {
18746      const runtime = getRuntime19();
18747      runtime.documents.set(
18748        targetDocument,
18749        (runtime.documents.get(targetDocument) ?? 0) + 1
18750      );
18751      for (const [hash, css] of runtime.styles) {
18752        injectStyle19(targetDocument, hash, css);
18753      }
18754      return () => {
18755        const count = runtime.documents.get(targetDocument);
18756        if (count === void 0) {
18757          return;
18758        }
18759        if (count <= 1) {
18760          runtime.documents.delete(targetDocument);
18761          return;
18762        }
18763        runtime.documents.set(targetDocument, count - 1);
18764      };
18765    }
18766    function registerStyle19(hash, css) {
18767      const runtime = getRuntime19();
18768      runtime.styles.set(hash, css);
18769      for (const targetDocument of runtime.documents.keys()) {
18770        injectStyle19(targetDocument, hash, css);
18771      }
18772    }
18773    if (typeof process === "undefined" || true) {
18774      registerStyle19("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
18775    }
18776    var resets_default7 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
18777    if (typeof process === "undefined" || true) {
18778      registerStyle19("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
18779    }
18780    var style_default18 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
18781    var radioCheck = /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_primitives36.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_primitives36.Circle, { cx: 12, cy: 12, r: 3 }) });
18782    var RadioItem = (0, import_element39.forwardRef)(
18783      function MenuRadioItem3({
18784        children,
18785        className,
18786        prefix,
18787        shortcut,
18788        suffix,
18789        "aria-describedby": ariaDescribedBy,
18790        "aria-keyshortcuts": ariaKeyShortcuts,
18791        "aria-label": ariaLabel,
18792        "aria-labelledby": ariaLabelledBy,
18793        ...props
18794      }, ref) {
18795        const {
18796          contentChildren,
18797          contentContextValue,
18798          itemAriaProps,
18799          shortcutDescriptionId
18800        } = useItemContent(children, {
18801          "aria-describedby": ariaDescribedBy,
18802          "aria-keyshortcuts": ariaKeyShortcuts,
18803          "aria-label": ariaLabel,
18804          "aria-labelledby": ariaLabelledBy,
18805          shortcut
18806        });
18807        return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(
18808          index_parts_exports.RadioItem,
18809          {
18810            ref,
18811            ...itemAriaProps,
18812            className: clsx_default(
18813              resets_default7["box-sizing"],
18814              style_default18.item,
18815              className
18816            ),
18817            ...props,
18818            children: [
18819              /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
18820                index_parts_exports.RadioItemIndicator,
18821                {
18822                  keepMounted: true,
18823                  className: style_default18["item-selection-indicator"],
18824                  children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
18825                    Icon,
18826                    {
18827                      icon: radioCheck,
18828                      className: style_default18["radio-selection-icon"],
18829                      "aria-hidden": "true"
18830                    }
18831                  )
18832                }
18833              ),
18834              /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
18835                ItemContent,
18836                {
18837                  prefix,
18838                  shortcut,
18839                  shortcutDescriptionId,
18840                  suffix,
18841                  children: contentChildren
18842                }
18843              ) })
18844            ]
18845          }
18846        );
18847      }
18848    );
18849  
18850    // packages/ui/build-module/menu/use-iframe-dismissal-bridge.mjs
18851    var import_element40 = __toESM(require_element(), 1);
18852    function getIframeDocument(iframe) {
18853      try {
18854        return iframe.contentDocument;
18855      } catch {
18856        return null;
18857      }
18858    }
18859    function forEachIframe(node, callback) {
18860      if (node.nodeType !== Node.ELEMENT_NODE) {
18861        return;
18862      }
18863      const element = node;
18864      if (element.tagName === "IFRAME") {
18865        callback(element);
18866      }
18867      element.querySelectorAll("iframe").forEach(callback);
18868    }
18869    function isInsideCurrentMenu(event, trigger) {
18870      const target = event.target;
18871      const targetElement = target?.nodeType === Node.ELEMENT_NODE ? target : target?.parentElement;
18872      const popupId = trigger.getAttribute("aria-controls");
18873      if (!targetElement || !popupId) {
18874        return false;
18875      }
18876      const popup = targetElement.ownerDocument.getElementById(popupId);
18877      if (!popup) {
18878        return false;
18879      }
18880      const rootOwnerId = popup.getAttribute("data-rootownerid");
18881      if (!rootOwnerId) {
18882        return popup.contains(targetElement);
18883      }
18884      return targetElement.closest("[data-rootownerid]")?.getAttribute("data-rootownerid") === rootOwnerId;
18885    }
18886    function useCloseOnIframePointerDown({
18887      enabled,
18888      onPointerDown,
18889      ownerDocument: ownerDocument2
18890    }) {
18891      (0, import_element40.useEffect)(() => {
18892        if (!enabled || !ownerDocument2) {
18893          return;
18894        }
18895        const observeDocument = (document2, listenForPointerDown) => {
18896          if (listenForPointerDown) {
18897            document2.addEventListener("pointerdown", onPointerDown, true);
18898          }
18899          const iframeCleanups = /* @__PURE__ */ new Map();
18900          const addIframe = (iframe) => {
18901            if (iframeCleanups.has(iframe)) {
18902              return;
18903            }
18904            let iframeDocument = null;
18905            let iframeDocumentCleanup;
18906            const updateIframeDocument = () => {
18907              const nextIframeDocument = getIframeDocument(iframe);
18908              if (nextIframeDocument === iframeDocument) {
18909                return;
18910              }
18911              iframeDocumentCleanup?.();
18912              iframeDocument = nextIframeDocument;
18913              iframeDocumentCleanup = iframeDocument ? observeDocument(iframeDocument, true) : void 0;
18914            };
18915            iframe.addEventListener("load", updateIframeDocument);
18916            updateIframeDocument();
18917            iframeCleanups.set(iframe, () => {
18918              iframe.removeEventListener("load", updateIframeDocument);
18919              iframeDocumentCleanup?.();
18920            });
18921          };
18922          const removeIframe = (iframe) => {
18923            iframeCleanups.get(iframe)?.();
18924            iframeCleanups.delete(iframe);
18925          };
18926          document2.querySelectorAll("iframe").forEach(addIframe);
18927          const MutationObserverConstructor = document2.defaultView?.MutationObserver;
18928          const observer = MutationObserverConstructor ? new MutationObserverConstructor((records) => {
18929            records.forEach((record) => {
18930              record.removedNodes.forEach(
18931                (node) => forEachIframe(node, removeIframe)
18932              );
18933              record.addedNodes.forEach(
18934                (node) => forEachIframe(node, addIframe)
18935              );
18936            });
18937          }) : null;
18938          observer?.observe(document2.documentElement, {
18939            childList: true,
18940            subtree: true
18941          });
18942          return () => {
18943            observer?.disconnect();
18944            iframeCleanups.forEach((cleanup) => cleanup());
18945            if (listenForPointerDown) {
18946              document2.removeEventListener(
18947                "pointerdown",
18948                onPointerDown,
18949                true
18950              );
18951            }
18952          };
18953        };
18954        return observeDocument(ownerDocument2, false);
18955      }, [enabled, onPointerDown, ownerDocument2]);
18956    }
18957    function useIframeDismissalBridge({
18958      actionsRef,
18959      defaultOpen,
18960      disabled: disabled2,
18961      modal,
18962      onOpenChange,
18963      open: openProp
18964    }) {
18965      const fallbackActionsRef = (0, import_element40.useRef)(null);
18966      const resolvedActionsRef = actionsRef ?? fallbackActionsRef;
18967      const [uncontrolledOpen, setUncontrolledOpen] = (0, import_element40.useState)(
18968        defaultOpen ?? false
18969      );
18970      const [trigger, setTrigger] = (0, import_element40.useState)(null);
18971      const open = openProp ?? uncontrolledOpen;
18972      const handleIframePointerDown = (0, import_element40.useCallback)(
18973        (event) => {
18974          if (trigger && !isInsideCurrentMenu(event, trigger)) {
18975            resolvedActionsRef.current?.close();
18976          }
18977        },
18978        [resolvedActionsRef, trigger]
18979      );
18980      useCloseOnIframePointerDown({
18981        enabled: open && modal === false && !disabled2 && trigger !== null,
18982        onPointerDown: handleIframePointerDown,
18983        ownerDocument: trigger?.ownerDocument ?? null
18984      });
18985      const handleOpenChange = (nextOpen, eventDetails) => {
18986        onOpenChange(nextOpen, eventDetails);
18987        if (eventDetails.isCanceled) {
18988          return;
18989        }
18990        setUncontrolledOpen(nextOpen);
18991        setTrigger(nextOpen ? eventDetails.trigger ?? null : null);
18992      };
18993      return {
18994        actionsRef: resolvedActionsRef,
18995        onOpenChange: handleOpenChange
18996      };
18997    }
18998  
18999    // packages/ui/build-module/menu/root.mjs
19000    var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1);
19001    function Root2(props) {
19002      const { onOpenChange } = props;
19003      const handleOpenChange = (nextOpen, eventDetails) => {
19004        const trigger = eventDetails.trigger;
19005        const TriggerElement = trigger?.ownerDocument.defaultView?.HTMLElement;
19006        const EventTargetElement = trigger?.ownerDocument.defaultView?.Element;
19007        const activeElementBeforeOpenChange = trigger?.ownerDocument.activeElement;
19008        const eventTarget = eventDetails.event.target;
19009        const menuElement = EventTargetElement && eventTarget instanceof EventTargetElement ? eventTarget.closest('[role="menu"]') : null;
19010        onOpenChange?.(nextOpen, eventDetails);
19011        if (!nextOpen && eventDetails.reason === "item-press" && !eventDetails.isCanceled && TriggerElement && trigger instanceof TriggerElement && menuElement?.contains(activeElementBeforeOpenChange ?? null) && trigger.ownerDocument.activeElement === activeElementBeforeOpenChange) {
19012          trigger.focus();
19013        }
19014      };
19015      const iframeDismissalProps = useIframeDismissalBridge({
19016        actionsRef: props.actionsRef,
19017        defaultOpen: props.defaultOpen,
19018        disabled: props.disabled,
19019        modal: props.modal,
19020        onOpenChange: handleOpenChange,
19021        open: props.open
19022      });
19023      return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(MenuContext.Provider, { value: { isSubmenu: false }, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(index_parts_exports.Root, { ...props, ...iframeDismissalProps }) }) });
19024    }
19025  
19026    // packages/ui/build-module/menu/separator.mjs
19027    var import_element41 = __toESM(require_element(), 1);
19028    var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1);
19029    var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash";
19030    function getRuntime20() {
19031      const globalScope = globalThis;
19032      if (globalScope.__wpStyleRuntime) {
19033        return globalScope.__wpStyleRuntime;
19034      }
19035      globalScope.__wpStyleRuntime = {
19036        documents: /* @__PURE__ */ new Map(),
19037        styles: /* @__PURE__ */ new Map(),
19038        injectedStyles: /* @__PURE__ */ new WeakMap()
19039      };
19040      if (typeof document !== "undefined") {
19041        registerDocument20(document);
19042      }
19043      return globalScope.__wpStyleRuntime;
19044    }
19045    function documentContainsStyleHash20(targetDocument, hash) {
19046      if (!targetDocument.head) {
19047        return false;
19048      }
19049      for (const style of targetDocument.head.querySelectorAll(
19050        `style[$STYLE_HASH_ATTRIBUTE20}]`
19051      )) {
19052        if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) {
19053          return true;
19054        }
19055      }
19056      return false;
19057    }
19058    function injectStyle20(targetDocument, hash, css) {
19059      if (!targetDocument.head) {
19060        return;
19061      }
19062      const runtime = getRuntime20();
19063      let injectedStyles = runtime.injectedStyles.get(targetDocument);
19064      if (!injectedStyles) {
19065        injectedStyles = /* @__PURE__ */ new Set();
19066        runtime.injectedStyles.set(targetDocument, injectedStyles);
19067      }
19068      if (injectedStyles.has(hash)) {
19069        return;
19070      }
19071      if (documentContainsStyleHash20(targetDocument, hash)) {
19072        injectedStyles.add(hash);
19073        return;
19074      }
19075      const style = targetDocument.createElement("style");
19076      style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash);
19077      style.appendChild(targetDocument.createTextNode(css));
19078      targetDocument.head.appendChild(style);
19079      injectedStyles.add(hash);
19080    }
19081    function registerDocument20(targetDocument) {
19082      const runtime = getRuntime20();
19083      runtime.documents.set(
19084        targetDocument,
19085        (runtime.documents.get(targetDocument) ?? 0) + 1
19086      );
19087      for (const [hash, css] of runtime.styles) {
19088        injectStyle20(targetDocument, hash, css);
19089      }
19090      return () => {
19091        const count = runtime.documents.get(targetDocument);
19092        if (count === void 0) {
19093          return;
19094        }
19095        if (count <= 1) {
19096          runtime.documents.delete(targetDocument);
19097          return;
19098        }
19099        runtime.documents.set(targetDocument, count - 1);
19100      };
19101    }
19102    function registerStyle20(hash, css) {
19103      const runtime = getRuntime20();
19104      runtime.styles.set(hash, css);
19105      for (const targetDocument of runtime.documents.keys()) {
19106        injectStyle20(targetDocument, hash, css);
19107      }
19108    }
19109    if (typeof process === "undefined" || true) {
19110      registerStyle20("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
19111    }
19112    var style_default19 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
19113    var Separator2 = (0, import_element41.forwardRef)(
19114      function MenuSeparator({ className, ...props }, ref) {
19115        return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
19116          index_parts_exports.Separator,
19117          {
19118            ref,
19119            className: clsx_default(style_default19.separator, className),
19120            ...props
19121          }
19122        );
19123      }
19124    );
19125  
19126    // packages/ui/build-module/menu/submenu-root.mjs
19127    var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1);
19128    function SubmenuRoot(props) {
19129      return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(MenuContext.Provider, { value: { isSubmenu: true }, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(index_parts_exports.SubmenuRoot, { ...props }) });
19130    }
19131  
19132    // packages/ui/build-module/menu/submenu-trigger.mjs
19133    var import_element42 = __toESM(require_element(), 1);
19134    var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1);
19135    var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash";
19136    function getRuntime21() {
19137      const globalScope = globalThis;
19138      if (globalScope.__wpStyleRuntime) {
19139        return globalScope.__wpStyleRuntime;
19140      }
19141      globalScope.__wpStyleRuntime = {
19142        documents: /* @__PURE__ */ new Map(),
19143        styles: /* @__PURE__ */ new Map(),
19144        injectedStyles: /* @__PURE__ */ new WeakMap()
19145      };
19146      if (typeof document !== "undefined") {
19147        registerDocument21(document);
19148      }
19149      return globalScope.__wpStyleRuntime;
19150    }
19151    function documentContainsStyleHash21(targetDocument, hash) {
19152      if (!targetDocument.head) {
19153        return false;
19154      }
19155      for (const style of targetDocument.head.querySelectorAll(
19156        `style[$STYLE_HASH_ATTRIBUTE21}]`
19157      )) {
19158        if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) {
19159          return true;
19160        }
19161      }
19162      return false;
19163    }
19164    function injectStyle21(targetDocument, hash, css) {
19165      if (!targetDocument.head) {
19166        return;
19167      }
19168      const runtime = getRuntime21();
19169      let injectedStyles = runtime.injectedStyles.get(targetDocument);
19170      if (!injectedStyles) {
19171        injectedStyles = /* @__PURE__ */ new Set();
19172        runtime.injectedStyles.set(targetDocument, injectedStyles);
19173      }
19174      if (injectedStyles.has(hash)) {
19175        return;
19176      }
19177      if (documentContainsStyleHash21(targetDocument, hash)) {
19178        injectedStyles.add(hash);
19179        return;
19180      }
19181      const style = targetDocument.createElement("style");
19182      style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash);
19183      style.appendChild(targetDocument.createTextNode(css));
19184      targetDocument.head.appendChild(style);
19185      injectedStyles.add(hash);
19186    }
19187    function registerDocument21(targetDocument) {
19188      const runtime = getRuntime21();
19189      runtime.documents.set(
19190        targetDocument,
19191        (runtime.documents.get(targetDocument) ?? 0) + 1
19192      );
19193      for (const [hash, css] of runtime.styles) {
19194        injectStyle21(targetDocument, hash, css);
19195      }
19196      return () => {
19197        const count = runtime.documents.get(targetDocument);
19198        if (count === void 0) {
19199          return;
19200        }
19201        if (count <= 1) {
19202          runtime.documents.delete(targetDocument);
19203          return;
19204        }
19205        runtime.documents.set(targetDocument, count - 1);
19206      };
19207    }
19208    function registerStyle21(hash, css) {
19209      const runtime = getRuntime21();
19210      runtime.styles.set(hash, css);
19211      for (const targetDocument of runtime.documents.keys()) {
19212        injectStyle21(targetDocument, hash, css);
19213      }
19214    }
19215    if (typeof process === "undefined" || true) {
19216      registerStyle21("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
19217    }
19218    var resets_default8 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
19219    if (typeof process === "undefined" || true) {
19220      registerStyle21("dce31c541c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-md,400px);--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-group-head-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-sm,24px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--wp-ui-menu-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:var(--wpds-dimension-gap-sm,8px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:1/-1;line-height:var(--wpds-typography-line-height-xs,16px);min-height:var(--wpds-dimension-size-md,32px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wp-ui-menu-group-head-padding-inline);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:1/-1;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:var(--wp-ui-menu-group-head-padding-inline);@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-xs,20px);width:var(--wpds-dimension-size-xs,20px)}._64924ecabf65a5d6__item-prefix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;box-sizing:border-box;display:grid;grid-column:content-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none}._943a932d9f81c78c__item-children{align-self:start;display:inline-flex;flex-direction:column;gap:2px;grid-column:label-start/label-end;min-width:0}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere;padding-block-end:var(--wpds-dimension-padding-xs,4px)}._091406749ed93e6e__item-suffix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end}._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:trailing-start/trailing-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}._943a932d9f81c78c__item-children+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item[aria-disabled=true] ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[aria-disabled=true] ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[aria-disabled=true] ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[aria-disabled=true] ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[aria-disabled=true] ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[aria-disabled=true] .fa88c9f1a96a4c5a__item-description,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._06be17a91bf434a0__item-trailing,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._091406749ed93e6e__item-suffix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._23630f40071a29ff__item-shortcut,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) ._64924ecabf65a5d6__item-prefix,._5c913bce0d8bb0d6__item[data-highlighted]:not([aria-disabled=true]) .fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:currentColor;color:inherit}}}');
19221    }
19222    var style_default20 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "item-children": "_943a932d9f81c78c__item-children", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" };
19223    var SubmenuTrigger = (0, import_element42.forwardRef)(
19224      function MenuSubmenuTrigger3({
19225        children,
19226        className,
19227        prefix,
19228        shortcut,
19229        suffix,
19230        "aria-describedby": ariaDescribedBy,
19231        "aria-keyshortcuts": ariaKeyShortcuts,
19232        "aria-label": ariaLabel,
19233        "aria-labelledby": ariaLabelledBy,
19234        ...props
19235      }, ref) {
19236        const {
19237          contentChildren,
19238          contentContextValue,
19239          itemAriaProps,
19240          shortcutDescriptionId
19241        } = useItemContent(children, {
19242          "aria-describedby": ariaDescribedBy,
19243          "aria-keyshortcuts": ariaKeyShortcuts,
19244          "aria-label": ariaLabel,
19245          "aria-labelledby": ariaLabelledBy,
19246          shortcut
19247        });
19248        return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
19249          index_parts_exports.SubmenuTrigger,
19250          {
19251            ref,
19252            ...itemAriaProps,
19253            className: clsx_default(
19254              resets_default8["box-sizing"],
19255              style_default20.item,
19256              className
19257            ),
19258            ...props,
19259            children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
19260              ItemContent,
19261              {
19262                prefix,
19263                shortcut,
19264                shortcutDescriptionId,
19265                suffix,
19266                trailing: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
19267                  Icon,
19268                  {
19269                    className: style_default20["submenu-chevron"],
19270                    icon: chevron_right_small_default,
19271                    size: 24,
19272                    "aria-hidden": "true"
19273                  }
19274                ),
19275                children: contentChildren
19276              }
19277            ) })
19278          }
19279        );
19280      }
19281    );
19282  
19283    // packages/ui/build-module/menu/trigger.mjs
19284    var import_element43 = __toESM(require_element(), 1);
19285    var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1);
19286    var Trigger2 = (0, import_element43.forwardRef)(
19287      function MenuTrigger3(props, ref) {
19288        return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(index_parts_exports.Trigger, { ref, ...props });
19289      }
19290    );
19291  
19292    // packages/ui/build-module/button/button.mjs
19293    var import_a11y = __toESM(require_a11y(), 1);
19294    var import_element44 = __toESM(require_element(), 1);
19295    var import_i18n11 = __toESM(require_i18n(), 1);
19296    var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1);
19297    var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash";
19298    function getRuntime22() {
19299      const globalScope = globalThis;
19300      if (globalScope.__wpStyleRuntime) {
19301        return globalScope.__wpStyleRuntime;
19302      }
19303      globalScope.__wpStyleRuntime = {
19304        documents: /* @__PURE__ */ new Map(),
19305        styles: /* @__PURE__ */ new Map(),
19306        injectedStyles: /* @__PURE__ */ new WeakMap()
19307      };
19308      if (typeof document !== "undefined") {
19309        registerDocument22(document);
19310      }
19311      return globalScope.__wpStyleRuntime;
19312    }
19313    function documentContainsStyleHash22(targetDocument, hash) {
19314      if (!targetDocument.head) {
19315        return false;
19316      }
19317      for (const style of targetDocument.head.querySelectorAll(
19318        `style[$STYLE_HASH_ATTRIBUTE22}]`
19319      )) {
19320        if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) {
19321          return true;
19322        }
19323      }
19324      return false;
19325    }
19326    function injectStyle22(targetDocument, hash, css) {
19327      if (!targetDocument.head) {
19328        return;
19329      }
19330      const runtime = getRuntime22();
19331      let injectedStyles = runtime.injectedStyles.get(targetDocument);
19332      if (!injectedStyles) {
19333        injectedStyles = /* @__PURE__ */ new Set();
19334        runtime.injectedStyles.set(targetDocument, injectedStyles);
19335      }
19336      if (injectedStyles.has(hash)) {
19337        return;
19338      }
19339      if (documentContainsStyleHash22(targetDocument, hash)) {
19340        injectedStyles.add(hash);
19341        return;
19342      }
19343      const style = targetDocument.createElement("style");
19344      style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash);
19345      style.appendChild(targetDocument.createTextNode(css));
19346      targetDocument.head.appendChild(style);
19347      injectedStyles.add(hash);
19348    }
19349    function registerDocument22(targetDocument) {
19350      const runtime = getRuntime22();
19351      runtime.documents.set(
19352        targetDocument,
19353        (runtime.documents.get(targetDocument) ?? 0) + 1
19354      );
19355      for (const [hash, css] of runtime.styles) {
19356        injectStyle22(targetDocument, hash, css);
19357      }
19358      return () => {
19359        const count = runtime.documents.get(targetDocument);
19360        if (count === void 0) {
19361          return;
19362        }
19363        if (count <= 1) {
19364          runtime.documents.delete(targetDocument);
19365          return;
19366        }
19367        runtime.documents.set(targetDocument, count - 1);
19368      };
19369    }
19370    function registerStyle22(hash, css) {
19371      const runtime = getRuntime22();
19372      runtime.styles.set(hash, css);
19373      for (const targetDocument of runtime.documents.keys()) {
19374        injectStyle22(targetDocument, hash, css);
19375      }
19376    }
19377    if (typeof process === "undefined" || true) {
19378      registerStyle22("effc4e3032", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}@media (forced-colors:active){border-block-end-style:none;border-bottom-color:ButtonText;border-inline-start-style:none;border-left-color:ButtonText;border-right-color:ButtonText;border-top-color:ButtonText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}');
19379    }
19380    var style_default21 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" };
19381    if (typeof process === "undefined" || true) {
19382      registerStyle22("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
19383    }
19384    var resets_default9 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
19385    if (typeof process === "undefined" || true) {
19386      registerStyle22("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
19387    }
19388    var focus_module_default2 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
19389    if (typeof process === "undefined" || true) {
19390      registerStyle22("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
19391    }
19392    var global_css_defense_default4 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
19393    var Button3 = (0, import_element44.forwardRef)(
19394      function Button22({
19395        tone = "brand",
19396        variant = "solid",
19397        size: size4 = "default",
19398        className,
19399        focusableWhenDisabled = true,
19400        disabled: disabled2,
19401        loading,
19402        loadingAnnouncement = (0, import_i18n11.__)("Loading"),
19403        children,
19404        ...props
19405      }, ref) {
19406        const mergedClassName = clsx_default(
19407          global_css_defense_default4.button,
19408          resets_default9["box-sizing"],
19409          focus_module_default2["outset-ring--focus-except-active"],
19410          variant !== "unstyled" && style_default21.button,
19411          style_default21[`is-$tone}`],
19412          style_default21[`is-$variant}`],
19413          style_default21[`is-$size4}`],
19414          loading && style_default21["is-loading"],
19415          className
19416        );
19417        (0, import_element44.useEffect)(() => {
19418          if (loading && loadingAnnouncement) {
19419            (0, import_a11y.speak)(loadingAnnouncement);
19420          }
19421        }, [loading, loadingAnnouncement]);
19422        return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
19423          Button,
19424          {
19425            ref,
19426            className: mergedClassName,
19427            focusableWhenDisabled,
19428            disabled: disabled2 ?? loading,
19429            ...props,
19430            children
19431          }
19432        );
19433      }
19434    );
19435  
19436    // packages/ui/build-module/button/icon.mjs
19437    var import_element45 = __toESM(require_element(), 1);
19438    var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);
19439    var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash";
19440    function getRuntime23() {
19441      const globalScope = globalThis;
19442      if (globalScope.__wpStyleRuntime) {
19443        return globalScope.__wpStyleRuntime;
19444      }
19445      globalScope.__wpStyleRuntime = {
19446        documents: /* @__PURE__ */ new Map(),
19447        styles: /* @__PURE__ */ new Map(),
19448        injectedStyles: /* @__PURE__ */ new WeakMap()
19449      };
19450      if (typeof document !== "undefined") {
19451        registerDocument23(document);
19452      }
19453      return globalScope.__wpStyleRuntime;
19454    }
19455    function documentContainsStyleHash23(targetDocument, hash) {
19456      if (!targetDocument.head) {
19457        return false;
19458      }
19459      for (const style of targetDocument.head.querySelectorAll(
19460        `style[$STYLE_HASH_ATTRIBUTE23}]`
19461      )) {
19462        if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) {
19463          return true;
19464        }
19465      }
19466      return false;
19467    }
19468    function injectStyle23(targetDocument, hash, css) {
19469      if (!targetDocument.head) {
19470        return;
19471      }
19472      const runtime = getRuntime23();
19473      let injectedStyles = runtime.injectedStyles.get(targetDocument);
19474      if (!injectedStyles) {
19475        injectedStyles = /* @__PURE__ */ new Set();
19476        runtime.injectedStyles.set(targetDocument, injectedStyles);
19477      }
19478      if (injectedStyles.has(hash)) {
19479        return;
19480      }
19481      if (documentContainsStyleHash23(targetDocument, hash)) {
19482        injectedStyles.add(hash);
19483        return;
19484      }
19485      const style = targetDocument.createElement("style");
19486      style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash);
19487      style.appendChild(targetDocument.createTextNode(css));
19488      targetDocument.head.appendChild(style);
19489      injectedStyles.add(hash);
19490    }
19491    function registerDocument23(targetDocument) {
19492      const runtime = getRuntime23();
19493      runtime.documents.set(
19494        targetDocument,
19495        (runtime.documents.get(targetDocument) ?? 0) + 1
19496      );
19497      for (const [hash, css] of runtime.styles) {
19498        injectStyle23(targetDocument, hash, css);
19499      }
19500      return () => {
19501        const count = runtime.documents.get(targetDocument);
19502        if (count === void 0) {
19503          return;
19504        }
19505        if (count <= 1) {
19506          runtime.documents.delete(targetDocument);
19507          return;
19508        }
19509        runtime.documents.set(targetDocument, count - 1);
19510      };
19511    }
19512    function registerStyle23(hash, css) {
19513      const runtime = getRuntime23();
19514      runtime.styles.set(hash, css);
19515      for (const targetDocument of runtime.documents.keys()) {
19516        injectStyle23(targetDocument, hash, css);
19517      }
19518    }
19519    if (typeof process === "undefined" || true) {
19520      registerStyle23("effc4e3032", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}&:before{aspect-ratio:1;border:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid;border-block-end-color:transparent;border-block-start-color:var(--wp-ui-button-foreground-color);border-inline-end-color:var(--wp-ui-button-foreground-color);border-inline-start-color:transparent;border-radius:50%;box-sizing:border-box;content:"";display:block;height:var(--wp-ui-button-font-size);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);@media not (prefers-reduced-motion){transition:opacity .1s ease-out}@media (forced-colors:active){border-block-end-style:none;border-bottom-color:ButtonText;border-inline-start-style:none;border-left-color:ButtonText;border-right-color:ButtonText;border-top-color:ButtonText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}*{opacity:0}&:before{opacity:1;transition-delay:.05s;@media not (prefers-reduced-motion){animation:_5a1d53da6f830c8d__loading-animation 1s linear infinite}}}}@keyframes _5a1d53da6f830c8d__loading-animation{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}}');
19521    }
19522    var style_default22 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "loading-animation": "_5a1d53da6f830c8d__loading-animation" };
19523    var ButtonIcon = (0, import_element45.forwardRef)(
19524      function ButtonIcon2({ className, icon, ...props }, ref) {
19525        return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
19526          Icon,
19527          {
19528            ref,
19529            icon,
19530            className: clsx_default(style_default22.icon, className),
19531            size: 24,
19532            ...props
19533          }
19534        );
19535      }
19536    );
19537  
19538    // packages/ui/build-module/button/index.mjs
19539    ButtonIcon.displayName = "Button.Icon";
19540    var Button4 = Object.assign(Button3, {
19541      /**
19542       * An icon component specifically designed to work well when rendered inside
19543       * a `Button` component.
19544       */
19545      Icon: ButtonIcon
19546    });
19547  
19548    // node_modules/@date-fns/tz/tzName/index.js
19549    function tzName(timeZone, date, format7 = "long") {
19550      return new Intl.DateTimeFormat("en-US", {
19551        // Enforces engine to render the time. Without the option JavaScriptCore omits it.
19552        hour: "numeric",
19553        timeZone,
19554        timeZoneName: format7
19555      }).format(date).split(/\s/g).slice(2).join(" ");
19556    }
19557  
19558    // node_modules/@date-fns/tz/tzOffset/index.js
19559    var offsetFormatCache = {};
19560    var offsetCache = {};
19561    function tzOffset(timeZone, date) {
19562      try {
19563        const format7 = offsetFormatCache[timeZone] ||= new Intl.DateTimeFormat("en-US", {
19564          timeZone,
19565          timeZoneName: "longOffset"
19566        }).format;
19567        const offsetStr = format7(date).split("GMT")[1];
19568        if (offsetStr in offsetCache) return offsetCache[offsetStr];
19569        return calcOffset(offsetStr, offsetStr.split(":"));
19570      } catch {
19571        if (timeZone in offsetCache) return offsetCache[timeZone];
19572        const captures = timeZone?.match(offsetRe);
19573        if (captures) return calcOffset(timeZone, captures.slice(1));
19574        return NaN;
19575      }
19576    }
19577    var offsetRe = /([+-]\d\d):?(\d\d)?/;
19578    function calcOffset(cacheStr, values) {
19579      const hours = +(values[0] || 0);
19580      const minutes = +(values[1] || 0);
19581      const seconds = +(values[2] || 0) / 60;
19582      return offsetCache[cacheStr] = hours * 60 + minutes > 0 ? hours * 60 + minutes + seconds : hours * 60 - minutes - seconds;
19583    }
19584  
19585    // node_modules/@date-fns/tz/date/mini.js
19586    var TZDateMini = class _TZDateMini extends Date {
19587      //#region static
19588      constructor(...args) {
19589        super();
19590        if (args.length > 1 && typeof args[args.length - 1] === "string") {
19591          this.timeZone = args.pop();
19592        }
19593        this.internal = /* @__PURE__ */ new Date();
19594        if (isNaN(tzOffset(this.timeZone, this))) {
19595          this.setTime(NaN);
19596        } else {
19597          if (!args.length) {
19598            this.setTime(Date.now());
19599          } else if (typeof args[0] === "number" && (args.length === 1 || args.length === 2 && typeof args[1] !== "number")) {
19600            this.setTime(args[0]);
19601          } else if (typeof args[0] === "string") {
19602            this.setTime(+new Date(args[0]));
19603          } else if (args[0] instanceof Date) {
19604            this.setTime(+args[0]);
19605          } else {
19606            this.setTime(+new Date(...args));
19607            adjustToSystemTZ(this, args);
19608          }
19609        }
19610      }
19611      static tz(tz, ...args) {
19612        return args.length ? new _TZDateMini(...args, tz) : new _TZDateMini(Date.now(), tz);
19613      }
19614      //#endregion
19615      //#region time zone
19616      withTimeZone(timeZone) {
19617        return new _TZDateMini(+this, timeZone);
19618      }
19619      getTimezoneOffset() {
19620        const offset4 = -tzOffset(this.timeZone, this);
19621        return offset4 > 0 ? Math.floor(offset4) : Math.ceil(offset4);
19622      }
19623      //#endregion
19624      //#region time
19625      setTime(_time) {
19626        Date.prototype.setTime.apply(this, arguments);
19627        syncToInternal(this);
19628        return +this;
19629      }
19630      //#endregion
19631      //#region date-fns integration
19632      [/* @__PURE__ */ Symbol.for("constructDateFrom")](date) {
19633        return new _TZDateMini(+new Date(date), this.timeZone);
19634      }
19635      //#endregion
19636    };
19637    var re = /^(get|set)(?!UTC)/;
19638    Object.getOwnPropertyNames(Date.prototype).forEach((method) => {
19639      if (!re.test(method)) return;
19640      const utcMethod = method.replace(re, "$1UTC");
19641      if (!TZDateMini.prototype[utcMethod]) return;
19642      if (method.startsWith("get")) {
19643        TZDateMini.prototype[method] = function() {
19644          return this.internal[utcMethod]();
19645        };
19646      } else {
19647        TZDateMini.prototype[method] = function() {
19648          Date.prototype[utcMethod].apply(this.internal, arguments);
19649          syncFromInternal(this);
19650          return +this;
19651        };
19652        TZDateMini.prototype[utcMethod] = function() {
19653          Date.prototype[utcMethod].apply(this, arguments);
19654          syncToInternal(this);
19655          return +this;
19656        };
19657      }
19658    });
19659    function syncToInternal(date) {
19660      date.internal.setTime(+date);
19661      date.internal.setUTCSeconds(date.internal.getUTCSeconds() - // Round after converting minutes to seconds to avoid fractional offset
19662      // precision errors from historical offsets.
19663      Math.round(-tzOffset(date.timeZone, date) * 60));
19664    }
19665    function syncFromInternal(date) {
19666      Date.prototype.setFullYear.call(date, date.internal.getUTCFullYear(), date.internal.getUTCMonth(), date.internal.getUTCDate());
19667      Date.prototype.setHours.call(date, date.internal.getUTCHours(), date.internal.getUTCMinutes(), date.internal.getUTCSeconds(), date.internal.getUTCMilliseconds());
19668      adjustToSystemTZ(date);
19669    }
19670    function adjustToSystemTZ(date, constructorArgs) {
19671      const expectedInternalTime = Array.isArray(constructorArgs) ? constructorArgsToInternalTime(constructorArgs) : +date.internal;
19672      const offsetWithSeconds = tzOffset(date.timeZone, date);
19673      const offset4 = offsetWithSeconds > 0 ? Math.floor(offsetWithSeconds) : Math.ceil(offsetWithSeconds);
19674      const prevHour = /* @__PURE__ */ new Date(+date);
19675      prevHour.setUTCHours(prevHour.getUTCHours() - 1);
19676      const systemOffset = -(/* @__PURE__ */ new Date(+date)).getTimezoneOffset();
19677      const prevHourSystemOffset = -(/* @__PURE__ */ new Date(+prevHour)).getTimezoneOffset();
19678      const systemDSTChange = systemOffset - prevHourSystemOffset;
19679      let systemOffsetForDiff = systemOffset;
19680      if (systemDSTChange && systemOffset !== offset4) {
19681        const systemHour = Date.prototype.getHours.apply(date);
19682        const expectedHour = Array.isArray(constructorArgs) ? constructorArgs[3] || 0 : date.internal.getUTCHours();
19683        if (systemHour !== expectedHour) {
19684          const testDate = /* @__PURE__ */ new Date(+date);
19685          const testOffsetDiff = systemOffset - offset4;
19686          if (testOffsetDiff) testDate.setUTCMinutes(testDate.getUTCMinutes() + testOffsetDiff);
19687          const testOffsetWithSeconds = tzOffset(date.timeZone, testDate);
19688          const testOffset = testOffsetWithSeconds > 0 ? Math.floor(testOffsetWithSeconds) : Math.ceil(testOffsetWithSeconds);
19689          if (testOffset === offset4) systemOffsetForDiff = prevHourSystemOffset;
19690        }
19691      }
19692      const offsetDiff = systemOffsetForDiff - offset4;
19693      if (offsetDiff)
19694        Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetDiff);
19695      const systemDate = /* @__PURE__ */ new Date(+date);
19696      systemDate.setUTCSeconds(0);
19697      const systemSecondsOffset = systemOffset > 0 ? systemDate.getSeconds() : (systemDate.getSeconds() - 60) % 60;
19698      const secondsOffset = Math.round(-(tzOffset(date.timeZone, date) * 60)) % 60;
19699      if (secondsOffset || systemSecondsOffset)
19700        Date.prototype.setUTCSeconds.call(date, Date.prototype.getUTCSeconds.call(date) + secondsOffset + systemSecondsOffset);
19701      const postOffsetWithSeconds = tzOffset(date.timeZone, date);
19702      const postOffset = postOffsetWithSeconds > 0 ? Math.floor(postOffsetWithSeconds) : Math.ceil(postOffsetWithSeconds);
19703      const postSystemOffset = -(/* @__PURE__ */ new Date(+date)).getTimezoneOffset();
19704      const postOffsetDiff = postSystemOffset - postOffset;
19705      const offsetChanged = postOffset !== offset4;
19706      const postDiff = postOffsetDiff - offsetDiff;
19707      const targetDSTShift = postOffset - offset4;
19708      const postOffsetCandidate = expectedInternalTime - postOffset * 60 * 1e3;
19709      const normalizedTargetDSTGap = targetDSTShift > 0 && targetInternalTime(date) - expectedInternalTime === targetDSTShift * 60 * 1e3 && targetInternalTime(date, postOffsetCandidate) !== expectedInternalTime;
19710      if (offsetChanged && postDiff && !normalizedTargetDSTGap) {
19711        Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + postDiff);
19712        const newOffsetWithSeconds = tzOffset(date.timeZone, date);
19713        const newOffset = newOffsetWithSeconds > 0 ? Math.floor(newOffsetWithSeconds) : Math.ceil(newOffsetWithSeconds);
19714        const offsetChange = postOffset - newOffset;
19715        if (offsetChange && postDiff < 0) {
19716          Date.prototype.setUTCMinutes.call(date, Date.prototype.getUTCMinutes.call(date) + offsetChange);
19717        }
19718      }
19719      syncToInternal(date);
19720      const expectedTime = constructorArgs ? expectedInternalTime : expectedInternalTime + secondsOffset * 1e3;
19721      const drift = expectedTime - +date.internal;
19722      if (drift && Math.abs(drift) < 30 * 60 * 1e3) {
19723        Date.prototype.setTime.call(date, +date + drift);
19724        syncToInternal(date);
19725      }
19726    }
19727    function constructorArgsToInternalTime(args) {
19728      return Date.UTC(args[0], args.length > 1 ? args[1] : 0, args.length > 2 ? args[2] : 1, ...args.slice(3));
19729    }
19730    function targetInternalTime(date, time) {
19731      const internal = new Date(time ?? +date);
19732      internal.setUTCSeconds(internal.getUTCSeconds() - Math.round(-tzOffset(date.timeZone, internal) * 60));
19733      return +internal;
19734    }
19735  
19736    // node_modules/@date-fns/tz/date/index.js
19737    var TZDate = class _TZDate extends TZDateMini {
19738      //#region static
19739      static tz(tz, ...args) {
19740        return args.length ? new _TZDate(...args, tz) : new _TZDate(Date.now(), tz);
19741      }
19742      //#endregion
19743      //#region representation
19744      toISOString() {
19745        const [sign, hours, minutes] = this.tzComponents();
19746        const tz = `$sign}$hours}:$minutes}`;
19747        return this.internal.toISOString().slice(0, -1) + tz;
19748      }
19749      toString() {
19750        return `$this.toDateString()} $this.toTimeString()}`;
19751      }
19752      toDateString() {
19753        const [day, date, month, year] = this.internal.toUTCString().split(" ");
19754        return `$day?.slice(0, -1)} $month} $date} $year}`;
19755      }
19756      toTimeString() {
19757        const time = this.internal.toUTCString().split(" ")[4];
19758        const [sign, hours, minutes] = this.tzComponents();
19759        return `$time} GMT$sign}$hours}$minutes} ($tzName(this.timeZone, this)})`;
19760      }
19761      toLocaleString(locales, options) {
19762        return Date.prototype.toLocaleString.call(this, locales, {
19763          ...options,
19764          timeZone: options?.timeZone || this.timeZone
19765        });
19766      }
19767      toLocaleDateString(locales, options) {
19768        return Date.prototype.toLocaleDateString.call(this, locales, {
19769          ...options,
19770          timeZone: options?.timeZone || this.timeZone
19771        });
19772      }
19773      toLocaleTimeString(locales, options) {
19774        return Date.prototype.toLocaleTimeString.call(this, locales, {
19775          ...options,
19776          timeZone: options?.timeZone || this.timeZone
19777        });
19778      }
19779      //#endregion
19780      //#region private
19781      tzComponents() {
19782        const offset4 = this.getTimezoneOffset();
19783        const sign = offset4 > 0 ? "-" : "+";
19784        const hours = String(Math.floor(Math.abs(offset4) / 60)).padStart(2, "0");
19785        const minutes = String(Math.abs(offset4) % 60).padStart(2, "0");
19786        return [sign, hours, minutes];
19787      }
19788      //#endregion
19789      withTimeZone(timeZone) {
19790        return new _TZDate(+this, timeZone);
19791      }
19792      //#region date-fns integration
19793      [/* @__PURE__ */ Symbol.for("constructDateFrom")](date) {
19794        return new _TZDate(+new Date(date), this.timeZone);
19795      }
19796      //#endregion
19797    };
19798  
19799    // node_modules/date-fns/constants.js
19800    var daysInYear = 365.2425;
19801    var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3;
19802    var minTime = -maxTime;
19803    var millisecondsInWeek = 6048e5;
19804    var millisecondsInDay = 864e5;
19805    var millisecondsInMinute = 6e4;
19806    var millisecondsInHour = 36e5;
19807    var millisecondsInSecond = 1e3;
19808    var secondsInHour = 3600;
19809    var secondsInDay = secondsInHour * 24;
19810    var secondsInWeek = secondsInDay * 7;
19811    var secondsInYear = secondsInDay * daysInYear;
19812    var secondsInMonth = secondsInYear / 12;
19813    var secondsInQuarter = secondsInMonth * 3;
19814    var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom");
19815  
19816    // node_modules/date-fns/constructFrom.js
19817    function constructFrom(date, value) {
19818      if (typeof date === "function") return date(value);
19819      if (date && typeof date === "object" && constructFromSymbol in date)
19820        return date[constructFromSymbol](value);
19821      if (date instanceof Date) return new date.constructor(value);
19822      return new Date(value);
19823    }
19824  
19825    // node_modules/date-fns/toDate.js
19826    function toDate(argument, context) {
19827      return constructFrom(context || argument, argument);
19828    }
19829  
19830    // node_modules/date-fns/addDays.js
19831    function addDays(date, amount, options) {
19832      const _date = toDate(date, options?.in);
19833      if (isNaN(amount)) return constructFrom(options?.in || date, NaN);
19834      if (!amount) return _date;
19835      _date.setDate(_date.getDate() + amount);
19836      return _date;
19837    }
19838  
19839    // node_modules/date-fns/addMonths.js
19840    function addMonths(date, amount, options) {
19841      const _date = toDate(date, options?.in);
19842      if (isNaN(amount)) return constructFrom(options?.in || date, NaN);
19843      if (!amount) {
19844        return _date;
19845      }
19846      const dayOfMonth = _date.getDate();
19847      const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());
19848      endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);
19849      const daysInMonth = endOfDesiredMonth.getDate();
19850      if (dayOfMonth >= daysInMonth) {
19851        return endOfDesiredMonth;
19852      } else {
19853        _date.setFullYear(
19854          endOfDesiredMonth.getFullYear(),
19855          endOfDesiredMonth.getMonth(),
19856          dayOfMonth
19857        );
19858        return _date;
19859      }
19860    }
19861  
19862    // node_modules/date-fns/_lib/defaultOptions.js
19863    var defaultOptions = {};
19864    function getDefaultOptions() {
19865      return defaultOptions;
19866    }
19867  
19868    // node_modules/date-fns/startOfWeek.js
19869    function startOfWeek(date, options) {
19870      const defaultOptions2 = getDefaultOptions();
19871      const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
19872      const _date = toDate(date, options?.in);
19873      const day = _date.getDay();
19874      const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
19875      _date.setDate(_date.getDate() - diff);
19876      _date.setHours(0, 0, 0, 0);
19877      return _date;
19878    }
19879  
19880    // node_modules/date-fns/startOfISOWeek.js
19881    function startOfISOWeek(date, options) {
19882      return startOfWeek(date, { ...options, weekStartsOn: 1 });
19883    }
19884  
19885    // node_modules/date-fns/getISOWeekYear.js
19886    function getISOWeekYear(date, options) {
19887      const _date = toDate(date, options?.in);
19888      const year = _date.getFullYear();
19889      const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);
19890      fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);
19891      fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);
19892      const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);
19893      const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);
19894      fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);
19895      fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);
19896      const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);
19897      if (_date.getTime() >= startOfNextYear.getTime()) {
19898        return year + 1;
19899      } else if (_date.getTime() >= startOfThisYear.getTime()) {
19900        return year;
19901      } else {
19902        return year - 1;
19903      }
19904    }
19905  
19906    // node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js
19907    function getTimezoneOffsetInMilliseconds(date) {
19908      const _date = toDate(date);
19909      const utcDate = new Date(
19910        Date.UTC(
19911          _date.getFullYear(),
19912          _date.getMonth(),
19913          _date.getDate(),
19914          _date.getHours(),
19915          _date.getMinutes(),
19916          _date.getSeconds(),
19917          _date.getMilliseconds()
19918        )
19919      );
19920      utcDate.setUTCFullYear(_date.getFullYear());
19921      return +date - +utcDate;
19922    }
19923  
19924    // node_modules/date-fns/_lib/normalizeDates.js
19925    function normalizeDates(context, ...dates) {
19926      const normalize = constructFrom.bind(
19927        null,
19928        context || dates.find((date) => typeof date === "object")
19929      );
19930      return dates.map(normalize);
19931    }
19932  
19933    // node_modules/date-fns/startOfDay.js
19934    function startOfDay(date, options) {
19935      const _date = toDate(date, options?.in);
19936      _date.setHours(0, 0, 0, 0);
19937      return _date;
19938    }
19939  
19940    // node_modules/date-fns/differenceInCalendarDays.js
19941    function differenceInCalendarDays(laterDate, earlierDate, options) {
19942      const [laterDate_, earlierDate_] = normalizeDates(
19943        options?.in,
19944        laterDate,
19945        earlierDate
19946      );
19947      const laterStartOfDay = startOfDay(laterDate_);
19948      const earlierStartOfDay = startOfDay(earlierDate_);
19949      const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);
19950      const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);
19951      return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);
19952    }
19953  
19954    // node_modules/date-fns/startOfISOWeekYear.js
19955    function startOfISOWeekYear(date, options) {
19956      const year = getISOWeekYear(date, options);
19957      const fourthOfJanuary = constructFrom(options?.in || date, 0);
19958      fourthOfJanuary.setFullYear(year, 0, 4);
19959      fourthOfJanuary.setHours(0, 0, 0, 0);
19960      return startOfISOWeek(fourthOfJanuary);
19961    }
19962  
19963    // node_modules/date-fns/addWeeks.js
19964    function addWeeks(date, amount, options) {
19965      return addDays(date, amount * 7, options);
19966    }
19967  
19968    // node_modules/date-fns/addYears.js
19969    function addYears(date, amount, options) {
19970      return addMonths(date, amount * 12, options);
19971    }
19972  
19973    // node_modules/date-fns/areIntervalsOverlapping.js
19974    function areIntervalsOverlapping(intervalLeft, intervalRight, options) {
19975      const [leftStartTime, leftEndTime] = [
19976        +toDate(intervalLeft.start, options?.in),
19977        +toDate(intervalLeft.end, options?.in)
19978      ].sort((a2, b2) => a2 - b2);
19979      const [rightStartTime, rightEndTime] = [
19980        +toDate(intervalRight.start, options?.in),
19981        +toDate(intervalRight.end, options?.in)
19982      ].sort((a2, b2) => a2 - b2);
19983      if (options?.inclusive)
19984        return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;
19985      return leftStartTime < rightEndTime && rightStartTime < leftEndTime;
19986    }
19987  
19988    // node_modules/date-fns/max.js
19989    function max2(dates, options) {
19990      let result;
19991      let context = options?.in;
19992      dates.forEach((date) => {
19993        if (!context && typeof date === "object")
19994          context = constructFrom.bind(null, date);
19995        const date_ = toDate(date, context);
19996        if (!result || result < date_ || isNaN(+date_)) result = date_;
19997      });
19998      return constructFrom(context, result || NaN);
19999    }
20000  
20001    // node_modules/date-fns/min.js
20002    function min2(dates, options) {
20003      let result;
20004      let context = options?.in;
20005      dates.forEach((date) => {
20006        if (!context && typeof date === "object")
20007          context = constructFrom.bind(null, date);
20008        const date_ = toDate(date, context);
20009        if (!result || result > date_ || isNaN(+date_)) result = date_;
20010      });
20011      return constructFrom(context, result || NaN);
20012    }
20013  
20014    // node_modules/date-fns/isSameDay.js
20015    function isSameDay(laterDate, earlierDate, options) {
20016      const [dateLeft_, dateRight_] = normalizeDates(
20017        options?.in,
20018        laterDate,
20019        earlierDate
20020      );
20021      return +startOfDay(dateLeft_) === +startOfDay(dateRight_);
20022    }
20023  
20024    // node_modules/date-fns/isDate.js
20025    function isDate(value) {
20026      return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]";
20027    }
20028  
20029    // node_modules/date-fns/isValid.js
20030    function isValid(date) {
20031      return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date)));
20032    }
20033  
20034    // node_modules/date-fns/differenceInCalendarMonths.js
20035    function differenceInCalendarMonths(laterDate, earlierDate, options) {
20036      const [laterDate_, earlierDate_] = normalizeDates(
20037        options?.in,
20038        laterDate,
20039        earlierDate
20040      );
20041      const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();
20042      const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();
20043      return yearsDiff * 12 + monthsDiff;
20044    }
20045  
20046    // node_modules/date-fns/endOfMonth.js
20047    function endOfMonth(date, options) {
20048      const _date = toDate(date, options?.in);
20049      const month = _date.getMonth();
20050      _date.setFullYear(_date.getFullYear(), month + 1, 0);
20051      _date.setHours(23, 59, 59, 999);
20052      return _date;
20053    }
20054  
20055    // node_modules/date-fns/_lib/normalizeInterval.js
20056    function normalizeInterval(context, interval) {
20057      const [start, end] = normalizeDates(context, interval.start, interval.end);
20058      return { start, end };
20059    }
20060  
20061    // node_modules/date-fns/eachMonthOfInterval.js
20062    function eachMonthOfInterval(interval, options) {
20063      const { start, end } = normalizeInterval(options?.in, interval);
20064      let reversed = +start > +end;
20065      const endTime = reversed ? +start : +end;
20066      const date = reversed ? end : start;
20067      date.setHours(0, 0, 0, 0);
20068      date.setDate(1);
20069      let step = options?.step ?? 1;
20070      if (!step) return [];
20071      if (step < 0) {
20072        step = -step;
20073        reversed = !reversed;
20074      }
20075      const dates = [];
20076      while (+date <= endTime) {
20077        dates.push(constructFrom(start, date));
20078        date.setMonth(date.getMonth() + step);
20079      }
20080      return reversed ? dates.reverse() : dates;
20081    }
20082  
20083    // node_modules/date-fns/startOfMonth.js
20084    function startOfMonth(date, options) {
20085      const _date = toDate(date, options?.in);
20086      _date.setDate(1);
20087      _date.setHours(0, 0, 0, 0);
20088      return _date;
20089    }
20090  
20091    // node_modules/date-fns/endOfYear.js
20092    function endOfYear(date, options) {
20093      const _date = toDate(date, options?.in);
20094      const year = _date.getFullYear();
20095      _date.setFullYear(year + 1, 0, 0);
20096      _date.setHours(23, 59, 59, 999);
20097      return _date;
20098    }
20099  
20100    // node_modules/date-fns/startOfYear.js
20101    function startOfYear(date, options) {
20102      const date_ = toDate(date, options?.in);
20103      date_.setFullYear(date_.getFullYear(), 0, 1);
20104      date_.setHours(0, 0, 0, 0);
20105      return date_;
20106    }
20107  
20108    // node_modules/date-fns/eachYearOfInterval.js
20109    function eachYearOfInterval(interval, options) {
20110      const { start, end } = normalizeInterval(options?.in, interval);
20111      let reversed = +start > +end;
20112      const endTime = reversed ? +start : +end;
20113      const date = reversed ? end : start;
20114      date.setHours(0, 0, 0, 0);
20115      date.setMonth(0, 1);
20116      let step = options?.step ?? 1;
20117      if (!step) return [];
20118      if (step < 0) {
20119        step = -step;
20120        reversed = !reversed;
20121      }
20122      const dates = [];
20123      while (+date <= endTime) {
20124        dates.push(constructFrom(start, date));
20125        date.setFullYear(date.getFullYear() + step);
20126      }
20127      return reversed ? dates.reverse() : dates;
20128    }
20129  
20130    // node_modules/date-fns/endOfWeek.js
20131    function endOfWeek(date, options) {
20132      const defaultOptions2 = getDefaultOptions();
20133      const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
20134      const _date = toDate(date, options?.in);
20135      const day = _date.getDay();
20136      const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);
20137      _date.setDate(_date.getDate() + diff);
20138      _date.setHours(23, 59, 59, 999);
20139      return _date;
20140    }
20141  
20142    // node_modules/date-fns/endOfISOWeek.js
20143    function endOfISOWeek(date, options) {
20144      return endOfWeek(date, { ...options, weekStartsOn: 1 });
20145    }
20146  
20147    // node_modules/date-fns/locale/en-US/_lib/formatDistance.js
20148    var formatDistanceLocale = {
20149      lessThanXSeconds: {
20150        one: "less than a second",
20151        other: "less than {{count}} seconds"
20152      },
20153      xSeconds: {
20154        one: "1 second",
20155        other: "{{count}} seconds"
20156      },
20157      halfAMinute: "half a minute",
20158      lessThanXMinutes: {
20159        one: "less than a minute",
20160        other: "less than {{count}} minutes"
20161      },
20162      xMinutes: {
20163        one: "1 minute",
20164        other: "{{count}} minutes"
20165      },
20166      aboutXHours: {
20167        one: "about 1 hour",
20168        other: "about {{count}} hours"
20169      },
20170      xHours: {
20171        one: "1 hour",
20172        other: "{{count}} hours"
20173      },
20174      xDays: {
20175        one: "1 day",
20176        other: "{{count}} days"
20177      },
20178      aboutXWeeks: {
20179        one: "about 1 week",
20180        other: "about {{count}} weeks"
20181      },
20182      xWeeks: {
20183        one: "1 week",
20184        other: "{{count}} weeks"
20185      },
20186      aboutXMonths: {
20187        one: "about 1 month",
20188        other: "about {{count}} months"
20189      },
20190      xMonths: {
20191        one: "1 month",
20192        other: "{{count}} months"
20193      },
20194      aboutXYears: {
20195        one: "about 1 year",
20196        other: "about {{count}} years"
20197      },
20198      xYears: {
20199        one: "1 year",
20200        other: "{{count}} years"
20201      },
20202      overXYears: {
20203        one: "over 1 year",
20204        other: "over {{count}} years"
20205      },
20206      almostXYears: {
20207        one: "almost 1 year",
20208        other: "almost {{count}} years"
20209      }
20210    };
20211    var formatDistance = (token, count, options) => {
20212      let result;
20213      const tokenValue = formatDistanceLocale[token];
20214      if (typeof tokenValue === "string") {
20215        result = tokenValue;
20216      } else if (count === 1) {
20217        result = tokenValue.one;
20218      } else {
20219        result = tokenValue.other.replace("{{count}}", count.toString());
20220      }
20221      if (options?.addSuffix) {
20222        if (options.comparison && options.comparison > 0) {
20223          return "in " + result;
20224        } else {
20225          return result + " ago";
20226        }
20227      }
20228      return result;
20229    };
20230  
20231    // node_modules/date-fns/locale/_lib/buildFormatLongFn.js
20232    function buildFormatLongFn(args) {
20233      return (options = {}) => {
20234        const width = options.width ? String(options.width) : args.defaultWidth;
20235        const format7 = args.formats[width] || args.formats[args.defaultWidth];
20236        return format7;
20237      };
20238    }
20239  
20240    // node_modules/date-fns/locale/en-US/_lib/formatLong.js
20241    var dateFormats = {
20242      full: "EEEE, MMMM do, y",
20243      long: "MMMM do, y",
20244      medium: "MMM d, y",
20245      short: "MM/dd/yyyy"
20246    };
20247    var timeFormats = {
20248      full: "h:mm:ss a zzzz",
20249      long: "h:mm:ss a z",
20250      medium: "h:mm:ss a",
20251      short: "h:mm a"
20252    };
20253    var dateTimeFormats = {
20254      full: "{{date}} 'at' {{time}}",
20255      long: "{{date}} 'at' {{time}}",
20256      medium: "{{date}}, {{time}}",
20257      short: "{{date}}, {{time}}"
20258    };
20259    var formatLong = {
20260      date: buildFormatLongFn({
20261        formats: dateFormats,
20262        defaultWidth: "full"
20263      }),
20264      time: buildFormatLongFn({
20265        formats: timeFormats,
20266        defaultWidth: "full"
20267      }),
20268      dateTime: buildFormatLongFn({
20269        formats: dateTimeFormats,
20270        defaultWidth: "full"
20271      })
20272    };
20273  
20274    // node_modules/date-fns/locale/en-US/_lib/formatRelative.js
20275    var formatRelativeLocale = {
20276      lastWeek: "'last' eeee 'at' p",
20277      yesterday: "'yesterday at' p",
20278      today: "'today at' p",
20279      tomorrow: "'tomorrow at' p",
20280      nextWeek: "eeee 'at' p",
20281      other: "P"
20282    };
20283    var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token];
20284  
20285    // node_modules/date-fns/locale/_lib/buildLocalizeFn.js
20286    function buildLocalizeFn(args) {
20287      return (value, options) => {
20288        const context = options?.context ? String(options.context) : "standalone";
20289        let valuesArray;
20290        if (context === "formatting" && args.formattingValues) {
20291          const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;
20292          const width = options?.width ? String(options.width) : defaultWidth;
20293          valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];
20294        } else {
20295          const defaultWidth = args.defaultWidth;
20296          const width = options?.width ? String(options.width) : args.defaultWidth;
20297          valuesArray = args.values[width] || args.values[defaultWidth];
20298        }
20299        const index2 = args.argumentCallback ? args.argumentCallback(value) : value;
20300        return valuesArray[index2];
20301      };
20302    }
20303  
20304    // node_modules/date-fns/locale/en-US/_lib/localize.js
20305    var eraValues = {
20306      narrow: ["B", "A"],
20307      abbreviated: ["BC", "AD"],
20308      wide: ["Before Christ", "Anno Domini"]
20309    };
20310    var quarterValues = {
20311      narrow: ["1", "2", "3", "4"],
20312      abbreviated: ["Q1", "Q2", "Q3", "Q4"],
20313      wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
20314    };
20315    var monthValues = {
20316      narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
20317      abbreviated: [
20318        "Jan",
20319        "Feb",
20320        "Mar",
20321        "Apr",
20322        "May",
20323        "Jun",
20324        "Jul",
20325        "Aug",
20326        "Sep",
20327        "Oct",
20328        "Nov",
20329        "Dec"
20330      ],
20331      wide: [
20332        "January",
20333        "February",
20334        "March",
20335        "April",
20336        "May",
20337        "June",
20338        "July",
20339        "August",
20340        "September",
20341        "October",
20342        "November",
20343        "December"
20344      ]
20345    };
20346    var dayValues = {
20347      narrow: ["S", "M", "T", "W", "T", "F", "S"],
20348      short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
20349      abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
20350      wide: [
20351        "Sunday",
20352        "Monday",
20353        "Tuesday",
20354        "Wednesday",
20355        "Thursday",
20356        "Friday",
20357        "Saturday"
20358      ]
20359    };
20360    var dayPeriodValues = {
20361      narrow: {
20362        am: "a",
20363        pm: "p",
20364        midnight: "mi",
20365        noon: "n",
20366        morning: "morning",
20367        afternoon: "afternoon",
20368        evening: "evening",
20369        night: "night"
20370      },
20371      abbreviated: {
20372        am: "AM",
20373        pm: "PM",
20374        midnight: "midnight",
20375        noon: "noon",
20376        morning: "morning",
20377        afternoon: "afternoon",
20378        evening: "evening",
20379        night: "night"
20380      },
20381      wide: {
20382        am: "a.m.",
20383        pm: "p.m.",
20384        midnight: "midnight",
20385        noon: "noon",
20386        morning: "morning",
20387        afternoon: "afternoon",
20388        evening: "evening",
20389        night: "night"
20390      }
20391    };
20392    var formattingDayPeriodValues = {
20393      narrow: {
20394        am: "a",
20395        pm: "p",
20396        midnight: "mi",
20397        noon: "n",
20398        morning: "in the morning",
20399        afternoon: "in the afternoon",
20400        evening: "in the evening",
20401        night: "at night"
20402      },
20403      abbreviated: {
20404        am: "AM",
20405        pm: "PM",
20406        midnight: "midnight",
20407        noon: "noon",
20408        morning: "in the morning",
20409        afternoon: "in the afternoon",
20410        evening: "in the evening",
20411        night: "at night"
20412      },
20413      wide: {
20414        am: "a.m.",
20415        pm: "p.m.",
20416        midnight: "midnight",
20417        noon: "noon",
20418        morning: "in the morning",
20419        afternoon: "in the afternoon",
20420        evening: "in the evening",
20421        night: "at night"
20422      }
20423    };
20424    var ordinalNumber = (dirtyNumber, _options) => {
20425      const number = Number(dirtyNumber);
20426      const rem100 = number % 100;
20427      if (rem100 > 20 || rem100 < 10) {
20428        switch (rem100 % 10) {
20429          case 1:
20430            return number + "st";
20431          case 2:
20432            return number + "nd";
20433          case 3:
20434            return number + "rd";
20435        }
20436      }
20437      return number + "th";
20438    };
20439    var localize = {
20440      ordinalNumber,
20441      era: buildLocalizeFn({
20442        values: eraValues,
20443        defaultWidth: "wide"
20444      }),
20445      quarter: buildLocalizeFn({
20446        values: quarterValues,
20447        defaultWidth: "wide",
20448        argumentCallback: (quarter) => quarter - 1
20449      }),
20450      month: buildLocalizeFn({
20451        values: monthValues,
20452        defaultWidth: "wide"
20453      }),
20454      day: buildLocalizeFn({
20455        values: dayValues,
20456        defaultWidth: "wide"
20457      }),
20458      dayPeriod: buildLocalizeFn({
20459        values: dayPeriodValues,
20460        defaultWidth: "wide",
20461        formattingValues: formattingDayPeriodValues,
20462        defaultFormattingWidth: "wide"
20463      })
20464    };
20465  
20466    // node_modules/date-fns/locale/_lib/buildMatchFn.js
20467    function buildMatchFn(args) {
20468      return (string, options = {}) => {
20469        const width = options.width;
20470        const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
20471        const matchResult = string.match(matchPattern);
20472        if (!matchResult) {
20473          return null;
20474        }
20475        const matchedString = matchResult[0];
20476        const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
20477        const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : (
20478          // [TODO] -- I challenge you to fix the type
20479          findKey(parsePatterns, (pattern) => pattern.test(matchedString))
20480        );
20481        let value;
20482        value = args.valueCallback ? args.valueCallback(key) : key;
20483        value = options.valueCallback ? (
20484          // [TODO] -- I challenge you to fix the type
20485          options.valueCallback(value)
20486        ) : value;
20487        const rest = string.slice(matchedString.length);
20488        return { value, rest };
20489      };
20490    }
20491    function findKey(object, predicate) {
20492      for (const key in object) {
20493        if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) {
20494          return key;
20495        }
20496      }
20497      return void 0;
20498    }
20499    function findIndex(array, predicate) {
20500      for (let key = 0; key < array.length; key++) {
20501        if (predicate(array[key])) {
20502          return key;
20503        }
20504      }
20505      return void 0;
20506    }
20507  
20508    // node_modules/date-fns/locale/_lib/buildMatchPatternFn.js
20509    function buildMatchPatternFn(args) {
20510      return (string, options = {}) => {
20511        const matchResult = string.match(args.matchPattern);
20512        if (!matchResult) return null;
20513        const matchedString = matchResult[0];
20514        const parseResult = string.match(args.parsePattern);
20515        if (!parseResult) return null;
20516        let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
20517        value = options.valueCallback ? options.valueCallback(value) : value;
20518        const rest = string.slice(matchedString.length);
20519        return { value, rest };
20520      };
20521    }
20522  
20523    // node_modules/date-fns/locale/en-US/_lib/match.js
20524    var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
20525    var parseOrdinalNumberPattern = /\d+/i;
20526    var matchEraPatterns = {
20527      narrow: /^(b|a)/i,
20528      abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
20529      wide: /^(before christ|before common era|anno domini|common era)/i
20530    };
20531    var parseEraPatterns = {
20532      any: [/^b/i, /^(a|c)/i]
20533    };
20534    var matchQuarterPatterns = {
20535      narrow: /^[1234]/i,
20536      abbreviated: /^q[1234]/i,
20537      wide: /^[1234](th|st|nd|rd)? quarter/i
20538    };
20539    var parseQuarterPatterns = {
20540      any: [/1/i, /2/i, /3/i, /4/i]
20541    };
20542    var matchMonthPatterns = {
20543      narrow: /^[jfmasond]/i,
20544      abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
20545      wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
20546    };
20547    var parseMonthPatterns = {
20548      narrow: [
20549        /^j/i,
20550        /^f/i,
20551        /^m/i,
20552        /^a/i,
20553        /^m/i,
20554        /^j/i,
20555        /^j/i,
20556        /^a/i,
20557        /^s/i,
20558        /^o/i,
20559        /^n/i,
20560        /^d/i
20561      ],
20562      any: [
20563        /^ja/i,
20564        /^f/i,
20565        /^mar/i,
20566        /^ap/i,
20567        /^may/i,
20568        /^jun/i,
20569        /^jul/i,
20570        /^au/i,
20571        /^s/i,
20572        /^o/i,
20573        /^n/i,
20574        /^d/i
20575      ]
20576    };
20577    var matchDayPatterns = {
20578      narrow: /^[smtwf]/i,
20579      short: /^(su|mo|tu|we|th|fr|sa)/i,
20580      abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
20581      wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
20582    };
20583    var parseDayPatterns = {
20584      narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
20585      any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
20586    };
20587    var matchDayPeriodPatterns = {
20588      narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
20589      any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
20590    };
20591    var parseDayPeriodPatterns = {
20592      any: {
20593        am: /^a/i,
20594        pm: /^p/i,
20595        midnight: /^mi/i,
20596        noon: /^no/i,
20597        morning: /morning/i,
20598        afternoon: /afternoon/i,
20599        evening: /evening/i,
20600        night: /night/i
20601      }
20602    };
20603    var match = {
20604      ordinalNumber: buildMatchPatternFn({
20605        matchPattern: matchOrdinalNumberPattern,
20606        parsePattern: parseOrdinalNumberPattern,
20607        valueCallback: (value) => parseInt(value, 10)
20608      }),
20609      era: buildMatchFn({
20610        matchPatterns: matchEraPatterns,
20611        defaultMatchWidth: "wide",
20612        parsePatterns: parseEraPatterns,
20613        defaultParseWidth: "any"
20614      }),
20615      quarter: buildMatchFn({
20616        matchPatterns: matchQuarterPatterns,
20617        defaultMatchWidth: "wide",
20618        parsePatterns: parseQuarterPatterns,
20619        defaultParseWidth: "any",
20620        valueCallback: (index2) => index2 + 1
20621      }),
20622      month: buildMatchFn({
20623        matchPatterns: matchMonthPatterns,
20624        defaultMatchWidth: "wide",
20625        parsePatterns: parseMonthPatterns,
20626        defaultParseWidth: "any"
20627      }),
20628      day: buildMatchFn({
20629        matchPatterns: matchDayPatterns,
20630        defaultMatchWidth: "wide",
20631        parsePatterns: parseDayPatterns,
20632        defaultParseWidth: "any"
20633      }),
20634      dayPeriod: buildMatchFn({
20635        matchPatterns: matchDayPeriodPatterns,
20636        defaultMatchWidth: "any",
20637        parsePatterns: parseDayPeriodPatterns,
20638        defaultParseWidth: "any"
20639      })
20640    };
20641  
20642    // node_modules/date-fns/locale/en-US.js
20643    var enUS = {
20644      code: "en-US",
20645      formatDistance,
20646      formatLong,
20647      formatRelative,
20648      localize,
20649      match,
20650      options: {
20651        weekStartsOn: 0,
20652        firstWeekContainsDate: 1
20653      }
20654    };
20655  
20656    // node_modules/date-fns/getDayOfYear.js
20657    function getDayOfYear(date, options) {
20658      const _date = toDate(date, options?.in);
20659      const diff = differenceInCalendarDays(_date, startOfYear(_date));
20660      const dayOfYear = diff + 1;
20661      return dayOfYear;
20662    }
20663  
20664    // node_modules/date-fns/getISOWeek.js
20665    function getISOWeek(date, options) {
20666      const _date = toDate(date, options?.in);
20667      const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);
20668      return Math.round(diff / millisecondsInWeek) + 1;
20669    }
20670  
20671    // node_modules/date-fns/getWeekYear.js
20672    function getWeekYear(date, options) {
20673      const _date = toDate(date, options?.in);
20674      const year = _date.getFullYear();
20675      const defaultOptions2 = getDefaultOptions();
20676      const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
20677      const firstWeekOfNextYear = constructFrom(options?.in || date, 0);
20678      firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);
20679      firstWeekOfNextYear.setHours(0, 0, 0, 0);
20680      const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);
20681      const firstWeekOfThisYear = constructFrom(options?.in || date, 0);
20682      firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);
20683      firstWeekOfThisYear.setHours(0, 0, 0, 0);
20684      const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);
20685      if (+_date >= +startOfNextYear) {
20686        return year + 1;
20687      } else if (+_date >= +startOfThisYear) {
20688        return year;
20689      } else {
20690        return year - 1;
20691      }
20692    }
20693  
20694    // node_modules/date-fns/startOfWeekYear.js
20695    function startOfWeekYear(date, options) {
20696      const defaultOptions2 = getDefaultOptions();
20697      const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
20698      const year = getWeekYear(date, options);
20699      const firstWeek = constructFrom(options?.in || date, 0);
20700      firstWeek.setFullYear(year, 0, firstWeekContainsDate);
20701      firstWeek.setHours(0, 0, 0, 0);
20702      const _date = startOfWeek(firstWeek, options);
20703      return _date;
20704    }
20705  
20706    // node_modules/date-fns/getWeek.js
20707    function getWeek(date, options) {
20708      const _date = toDate(date, options?.in);
20709      const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);
20710      return Math.round(diff / millisecondsInWeek) + 1;
20711    }
20712  
20713    // node_modules/date-fns/_lib/addLeadingZeros.js
20714    function addLeadingZeros(number, targetLength) {
20715      const sign = number < 0 ? "-" : "";
20716      const output = Math.abs(number).toString().padStart(targetLength, "0");
20717      return sign + output;
20718    }
20719  
20720    // node_modules/date-fns/_lib/format/lightFormatters.js
20721    var lightFormatters = {
20722      // Year
20723      y(date, token) {
20724        const signedYear = date.getFullYear();
20725        const year = signedYear > 0 ? signedYear : 1 - signedYear;
20726        return addLeadingZeros(token === "yy" ? year % 100 : year, token.length);
20727      },
20728      // Month
20729      M(date, token) {
20730        const month = date.getMonth();
20731        return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2);
20732      },
20733      // Day of the month
20734      d(date, token) {
20735        return addLeadingZeros(date.getDate(), token.length);
20736      },
20737      // AM or PM
20738      a(date, token) {
20739        const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am";
20740        switch (token) {
20741          case "a":
20742          case "aa":
20743            return dayPeriodEnumValue.toUpperCase();
20744          case "aaa":
20745            return dayPeriodEnumValue;
20746          case "aaaaa":
20747            return dayPeriodEnumValue[0];
20748          case "aaaa":
20749          default:
20750            return dayPeriodEnumValue === "am" ? "a.m." : "p.m.";
20751        }
20752      },
20753      // Hour [1-12]
20754      h(date, token) {
20755        return addLeadingZeros(date.getHours() % 12 || 12, token.length);
20756      },
20757      // Hour [0-23]
20758      H(date, token) {
20759        return addLeadingZeros(date.getHours(), token.length);
20760      },
20761      // Minute
20762      m(date, token) {
20763        return addLeadingZeros(date.getMinutes(), token.length);
20764      },
20765      // Second
20766      s(date, token) {
20767        return addLeadingZeros(date.getSeconds(), token.length);
20768      },
20769      // Fraction of second
20770      S(date, token) {
20771        const numberOfDigits = token.length;
20772        const milliseconds = date.getMilliseconds();
20773        const fractionalSeconds = Math.trunc(
20774          milliseconds * Math.pow(10, numberOfDigits - 3)
20775        );
20776        return addLeadingZeros(fractionalSeconds, token.length);
20777      }
20778    };
20779  
20780    // node_modules/date-fns/_lib/format/formatters.js
20781    var dayPeriodEnum = {
20782      am: "am",
20783      pm: "pm",
20784      midnight: "midnight",
20785      noon: "noon",
20786      morning: "morning",
20787      afternoon: "afternoon",
20788      evening: "evening",
20789      night: "night"
20790    };
20791    var formatters = {
20792      // Era
20793      G: function(date, token, localize2) {
20794        const era = date.getFullYear() > 0 ? 1 : 0;
20795        switch (token) {
20796          // AD, BC
20797          case "G":
20798          case "GG":
20799          case "GGG":
20800            return localize2.era(era, { width: "abbreviated" });
20801          // A, B
20802          case "GGGGG":
20803            return localize2.era(era, { width: "narrow" });
20804          // Anno Domini, Before Christ
20805          case "GGGG":
20806          default:
20807            return localize2.era(era, { width: "wide" });
20808        }
20809      },
20810      // Year
20811      y: function(date, token, localize2) {
20812        if (token === "yo") {
20813          const signedYear = date.getFullYear();
20814          const year = signedYear > 0 ? signedYear : 1 - signedYear;
20815          return localize2.ordinalNumber(year, { unit: "year" });
20816        }
20817        return lightFormatters.y(date, token);
20818      },
20819      // Local week-numbering year
20820      Y: function(date, token, localize2, options) {
20821        const signedWeekYear = getWeekYear(date, options);
20822        const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;
20823        if (token === "YY") {
20824          const twoDigitYear = weekYear % 100;
20825          return addLeadingZeros(twoDigitYear, 2);
20826        }
20827        if (token === "Yo") {
20828          return localize2.ordinalNumber(weekYear, { unit: "year" });
20829        }
20830        return addLeadingZeros(weekYear, token.length);
20831      },
20832      // ISO week-numbering year
20833      R: function(date, token) {
20834        const isoWeekYear = getISOWeekYear(date);
20835        return addLeadingZeros(isoWeekYear, token.length);
20836      },
20837      // Extended year. This is a single number designating the year of this calendar system.
20838      // The main difference between `y` and `u` localizers are B.C. years:
20839      // | Year | `y` | `u` |
20840      // |------|-----|-----|
20841      // | AC 1 |   1 |   1 |
20842      // | BC 1 |   1 |   0 |
20843      // | BC 2 |   2 |  -1 |
20844      // Also `yy` always returns the last two digits of a year,
20845      // while `uu` pads single digit years to 2 characters and returns other years unchanged.
20846      u: function(date, token) {
20847        const year = date.getFullYear();
20848        return addLeadingZeros(year, token.length);
20849      },
20850      // Quarter
20851      Q: function(date, token, localize2) {
20852        const quarter = Math.ceil((date.getMonth() + 1) / 3);
20853        switch (token) {
20854          // 1, 2, 3, 4
20855          case "Q":
20856            return String(quarter);
20857          // 01, 02, 03, 04
20858          case "QQ":
20859            return addLeadingZeros(quarter, 2);
20860          // 1st, 2nd, 3rd, 4th
20861          case "Qo":
20862            return localize2.ordinalNumber(quarter, { unit: "quarter" });
20863          // Q1, Q2, Q3, Q4
20864          case "QQQ":
20865            return localize2.quarter(quarter, {
20866              width: "abbreviated",
20867              context: "formatting"
20868            });
20869          // 1, 2, 3, 4 (narrow quarter; could be not numerical)
20870          case "QQQQQ":
20871            return localize2.quarter(quarter, {
20872              width: "narrow",
20873              context: "formatting"
20874            });
20875          // 1st quarter, 2nd quarter, ...
20876          case "QQQQ":
20877          default:
20878            return localize2.quarter(quarter, {
20879              width: "wide",
20880              context: "formatting"
20881            });
20882        }
20883      },
20884      // Stand-alone quarter
20885      q: function(date, token, localize2) {
20886        const quarter = Math.ceil((date.getMonth() + 1) / 3);
20887        switch (token) {
20888          // 1, 2, 3, 4
20889          case "q":
20890            return String(quarter);
20891          // 01, 02, 03, 04
20892          case "qq":
20893            return addLeadingZeros(quarter, 2);
20894          // 1st, 2nd, 3rd, 4th
20895          case "qo":
20896            return localize2.ordinalNumber(quarter, { unit: "quarter" });
20897          // Q1, Q2, Q3, Q4
20898          case "qqq":
20899            return localize2.quarter(quarter, {
20900              width: "abbreviated",
20901              context: "standalone"
20902            });
20903          // 1, 2, 3, 4 (narrow quarter; could be not numerical)
20904          case "qqqqq":
20905            return localize2.quarter(quarter, {
20906              width: "narrow",
20907              context: "standalone"
20908            });
20909          // 1st quarter, 2nd quarter, ...
20910          case "qqqq":
20911          default:
20912            return localize2.quarter(quarter, {
20913              width: "wide",
20914              context: "standalone"
20915            });
20916        }
20917      },
20918      // Month
20919      M: function(date, token, localize2) {
20920        const month = date.getMonth();
20921        switch (token) {
20922          case "M":
20923          case "MM":
20924            return lightFormatters.M(date, token);
20925          // 1st, 2nd, ..., 12th
20926          case "Mo":
20927            return localize2.ordinalNumber(month + 1, { unit: "month" });
20928          // Jan, Feb, ..., Dec
20929          case "MMM":
20930            return localize2.month(month, {
20931              width: "abbreviated",
20932              context: "formatting"
20933            });
20934          // J, F, ..., D
20935          case "MMMMM":
20936            return localize2.month(month, {
20937              width: "narrow",
20938              context: "formatting"
20939            });
20940          // January, February, ..., December
20941          case "MMMM":
20942          default:
20943            return localize2.month(month, { width: "wide", context: "formatting" });
20944        }
20945      },
20946      // Stand-alone month
20947      L: function(date, token, localize2) {
20948        const month = date.getMonth();
20949        switch (token) {
20950          // 1, 2, ..., 12
20951          case "L":
20952            return String(month + 1);
20953          // 01, 02, ..., 12
20954          case "LL":
20955            return addLeadingZeros(month + 1, 2);
20956          // 1st, 2nd, ..., 12th
20957          case "Lo":
20958            return localize2.ordinalNumber(month + 1, { unit: "month" });
20959          // Jan, Feb, ..., Dec
20960          case "LLL":
20961            return localize2.month(month, {
20962              width: "abbreviated",
20963              context: "standalone"
20964            });
20965          // J, F, ..., D
20966          case "LLLLL":
20967            return localize2.month(month, {
20968              width: "narrow",
20969              context: "standalone"
20970            });
20971          // January, February, ..., December
20972          case "LLLL":
20973          default:
20974            return localize2.month(month, { width: "wide", context: "standalone" });
20975        }
20976      },
20977      // Local week of year
20978      w: function(date, token, localize2, options) {
20979        const week = getWeek(date, options);
20980        if (token === "wo") {
20981          return localize2.ordinalNumber(week, { unit: "week" });
20982        }
20983        return addLeadingZeros(week, token.length);
20984      },
20985      // ISO week of year
20986      I: function(date, token, localize2) {
20987        const isoWeek = getISOWeek(date);
20988        if (token === "Io") {
20989          return localize2.ordinalNumber(isoWeek, { unit: "week" });
20990        }
20991        return addLeadingZeros(isoWeek, token.length);
20992      },
20993      // Day of the month
20994      d: function(date, token, localize2) {
20995        if (token === "do") {
20996          return localize2.ordinalNumber(date.getDate(), { unit: "date" });
20997        }
20998        return lightFormatters.d(date, token);
20999      },
21000      // Day of year
21001      D: function(date, token, localize2) {
21002        const dayOfYear = getDayOfYear(date);
21003        if (token === "Do") {
21004          return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" });
21005        }
21006        return addLeadingZeros(dayOfYear, token.length);
21007      },
21008      // Day of week
21009      E: function(date, token, localize2) {
21010        const dayOfWeek = date.getDay();
21011        switch (token) {
21012          // Tue
21013          case "E":
21014          case "EE":
21015          case "EEE":
21016            return localize2.day(dayOfWeek, {
21017              width: "abbreviated",
21018              context: "formatting"
21019            });
21020          // T
21021          case "EEEEE":
21022            return localize2.day(dayOfWeek, {
21023              width: "narrow",
21024              context: "formatting"
21025            });
21026          // Tu
21027          case "EEEEEE":
21028            return localize2.day(dayOfWeek, {
21029              width: "short",
21030              context: "formatting"
21031            });
21032          // Tuesday
21033          case "EEEE":
21034          default:
21035            return localize2.day(dayOfWeek, {
21036              width: "wide",
21037              context: "formatting"
21038            });
21039        }
21040      },
21041      // Local day of week
21042      e: function(date, token, localize2, options) {
21043        const dayOfWeek = date.getDay();
21044        const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
21045        switch (token) {
21046          // Numerical value (Nth day of week with current locale or weekStartsOn)
21047          case "e":
21048            return String(localDayOfWeek);
21049          // Padded numerical value
21050          case "ee":
21051            return addLeadingZeros(localDayOfWeek, 2);
21052          // 1st, 2nd, ..., 7th
21053          case "eo":
21054            return localize2.ordinalNumber(localDayOfWeek, { unit: "day" });
21055          case "eee":
21056            return localize2.day(dayOfWeek, {
21057              width: "abbreviated",
21058              context: "formatting"
21059            });
21060          // T
21061          case "eeeee":
21062            return localize2.day(dayOfWeek, {
21063              width: "narrow",
21064              context: "formatting"
21065            });
21066          // Tu
21067          case "eeeeee":
21068            return localize2.day(dayOfWeek, {
21069              width: "short",
21070              context: "formatting"
21071            });
21072          // Tuesday
21073          case "eeee":
21074          default:
21075            return localize2.day(dayOfWeek, {
21076              width: "wide",
21077              context: "formatting"
21078            });
21079        }
21080      },
21081      // Stand-alone local day of week
21082      c: function(date, token, localize2, options) {
21083        const dayOfWeek = date.getDay();
21084        const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;
21085        switch (token) {
21086          // Numerical value (same as in `e`)
21087          case "c":
21088            return String(localDayOfWeek);
21089          // Padded numerical value
21090          case "cc":
21091            return addLeadingZeros(localDayOfWeek, token.length);
21092          // 1st, 2nd, ..., 7th
21093          case "co":
21094            return localize2.ordinalNumber(localDayOfWeek, { unit: "day" });
21095          case "ccc":
21096            return localize2.day(dayOfWeek, {
21097              width: "abbreviated",
21098              context: "standalone"
21099            });
21100          // T
21101          case "ccccc":
21102            return localize2.day(dayOfWeek, {
21103              width: "narrow",
21104              context: "standalone"
21105            });
21106          // Tu
21107          case "cccccc":
21108            return localize2.day(dayOfWeek, {
21109              width: "short",
21110              context: "standalone"
21111            });
21112          // Tuesday
21113          case "cccc":
21114          default:
21115            return localize2.day(dayOfWeek, {
21116              width: "wide",
21117              context: "standalone"
21118            });
21119        }
21120      },
21121      // ISO day of week
21122      i: function(date, token, localize2) {
21123        const dayOfWeek = date.getDay();
21124        const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;
21125        switch (token) {
21126          // 2
21127          case "i":
21128            return String(isoDayOfWeek);
21129          // 02
21130          case "ii":
21131            return addLeadingZeros(isoDayOfWeek, token.length);
21132          // 2nd
21133          case "io":
21134            return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" });
21135          // Tue
21136          case "iii":
21137            return localize2.day(dayOfWeek, {
21138              width: "abbreviated",
21139              context: "formatting"
21140            });
21141          // T
21142          case "iiiii":
21143            return localize2.day(dayOfWeek, {
21144              width: "narrow",
21145              context: "formatting"
21146            });
21147          // Tu
21148          case "iiiiii":
21149            return localize2.day(dayOfWeek, {
21150              width: "short",
21151              context: "formatting"
21152            });
21153          // Tuesday
21154          case "iiii":
21155          default:
21156            return localize2.day(dayOfWeek, {
21157              width: "wide",
21158              context: "formatting"
21159            });
21160        }
21161      },
21162      // AM or PM
21163      a: function(date, token, localize2) {
21164        const hours = date.getHours();
21165        const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am";
21166        switch (token) {
21167          case "a":
21168          case "aa":
21169            return localize2.dayPeriod(dayPeriodEnumValue, {
21170              width: "abbreviated",
21171              context: "formatting"
21172            });
21173          case "aaa":
21174            return localize2.dayPeriod(dayPeriodEnumValue, {
21175              width: "abbreviated",
21176              context: "formatting"
21177            }).toLowerCase();
21178          case "aaaaa":
21179            return localize2.dayPeriod(dayPeriodEnumValue, {
21180              width: "narrow",
21181              context: "formatting"
21182            });
21183          case "aaaa":
21184          default:
21185            return localize2.dayPeriod(dayPeriodEnumValue, {
21186              width: "wide",
21187              context: "formatting"
21188            });
21189        }
21190      },
21191      // AM, PM, midnight, noon
21192      b: function(date, token, localize2) {
21193        const hours = date.getHours();
21194        let dayPeriodEnumValue;
21195        if (hours === 12) {
21196          dayPeriodEnumValue = dayPeriodEnum.noon;
21197        } else if (hours === 0) {
21198          dayPeriodEnumValue = dayPeriodEnum.midnight;
21199        } else {
21200          dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am";
21201        }
21202        switch (token) {
21203          case "b":
21204          case "bb":
21205            return localize2.dayPeriod(dayPeriodEnumValue, {
21206              width: "abbreviated",
21207              context: "formatting"
21208            });
21209          case "bbb":
21210            return localize2.dayPeriod(dayPeriodEnumValue, {
21211              width: "abbreviated",
21212              context: "formatting"
21213            }).toLowerCase();
21214          case "bbbbb":
21215            return localize2.dayPeriod(dayPeriodEnumValue, {
21216              width: "narrow",
21217              context: "formatting"
21218            });
21219          case "bbbb":
21220          default:
21221            return localize2.dayPeriod(dayPeriodEnumValue, {
21222              width: "wide",
21223              context: "formatting"
21224            });
21225        }
21226      },
21227      // in the morning, in the afternoon, in the evening, at night
21228      B: function(date, token, localize2) {
21229        const hours = date.getHours();
21230        let dayPeriodEnumValue;
21231        if (hours >= 17) {
21232          dayPeriodEnumValue = dayPeriodEnum.evening;
21233        } else if (hours >= 12) {
21234          dayPeriodEnumValue = dayPeriodEnum.afternoon;
21235        } else if (hours >= 4) {
21236          dayPeriodEnumValue = dayPeriodEnum.morning;
21237        } else {
21238          dayPeriodEnumValue = dayPeriodEnum.night;
21239        }
21240        switch (token) {
21241          case "B":
21242          case "BB":
21243          case "BBB":
21244            return localize2.dayPeriod(dayPeriodEnumValue, {
21245              width: "abbreviated",
21246              context: "formatting"
21247            });
21248          case "BBBBB":
21249            return localize2.dayPeriod(dayPeriodEnumValue, {
21250              width: "narrow",
21251              context: "formatting"
21252            });
21253          case "BBBB":
21254          default:
21255            return localize2.dayPeriod(dayPeriodEnumValue, {
21256              width: "wide",
21257              context: "formatting"
21258            });
21259        }
21260      },
21261      // Hour [1-12]
21262      h: function(date, token, localize2) {
21263        if (token === "ho") {
21264          let hours = date.getHours() % 12;
21265          if (hours === 0) hours = 12;
21266          return localize2.ordinalNumber(hours, { unit: "hour" });
21267        }
21268        return lightFormatters.h(date, token);
21269      },
21270      // Hour [0-23]
21271      H: function(date, token, localize2) {
21272        if (token === "Ho") {
21273          return localize2.ordinalNumber(date.getHours(), { unit: "hour" });
21274        }
21275        return lightFormatters.H(date, token);
21276      },
21277      // Hour [0-11]
21278      K: function(date, token, localize2) {
21279        const hours = date.getHours() % 12;
21280        if (token === "Ko") {
21281          return localize2.ordinalNumber(hours, { unit: "hour" });
21282        }
21283        return addLeadingZeros(hours, token.length);
21284      },
21285      // Hour [1-24]
21286      k: function(date, token, localize2) {
21287        let hours = date.getHours();
21288        if (hours === 0) hours = 24;
21289        if (token === "ko") {
21290          return localize2.ordinalNumber(hours, { unit: "hour" });
21291        }
21292        return addLeadingZeros(hours, token.length);
21293      },
21294      // Minute
21295      m: function(date, token, localize2) {
21296        if (token === "mo") {
21297          return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" });
21298        }
21299        return lightFormatters.m(date, token);
21300      },
21301      // Second
21302      s: function(date, token, localize2) {
21303        if (token === "so") {
21304          return localize2.ordinalNumber(date.getSeconds(), { unit: "second" });
21305        }
21306        return lightFormatters.s(date, token);
21307      },
21308      // Fraction of second
21309      S: function(date, token) {
21310        return lightFormatters.S(date, token);
21311      },
21312      // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
21313      X: function(date, token, _localize) {
21314        const timezoneOffset = date.getTimezoneOffset();
21315        if (timezoneOffset === 0) {
21316          return "Z";
21317        }
21318        switch (token) {
21319          // Hours and optional minutes
21320          case "X":
21321            return formatTimezoneWithOptionalMinutes(timezoneOffset);
21322          // Hours, minutes and optional seconds without `:` delimiter
21323          // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
21324          // so this token always has the same output as `XX`
21325          case "XXXX":
21326          case "XX":
21327            return formatTimezone(timezoneOffset);
21328          // Hours, minutes and optional seconds with `:` delimiter
21329          // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
21330          // so this token always has the same output as `XXX`
21331          case "XXXXX":
21332          case "XXX":
21333          // Hours and minutes with `:` delimiter
21334          default:
21335            return formatTimezone(timezoneOffset, ":");
21336        }
21337      },
21338      // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
21339      x: function(date, token, _localize) {
21340        const timezoneOffset = date.getTimezoneOffset();
21341        switch (token) {
21342          // Hours and optional minutes
21343          case "x":
21344            return formatTimezoneWithOptionalMinutes(timezoneOffset);
21345          // Hours, minutes and optional seconds without `:` delimiter
21346          // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
21347          // so this token always has the same output as `xx`
21348          case "xxxx":
21349          case "xx":
21350            return formatTimezone(timezoneOffset);
21351          // Hours, minutes and optional seconds with `:` delimiter
21352          // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
21353          // so this token always has the same output as `xxx`
21354          case "xxxxx":
21355          case "xxx":
21356          // Hours and minutes with `:` delimiter
21357          default:
21358            return formatTimezone(timezoneOffset, ":");
21359        }
21360      },
21361      // Timezone (GMT)
21362      O: function(date, token, _localize) {
21363        const timezoneOffset = date.getTimezoneOffset();
21364        switch (token) {
21365          // Short
21366          case "O":
21367          case "OO":
21368          case "OOO":
21369            return "GMT" + formatTimezoneShort(timezoneOffset, ":");
21370          // Long
21371          case "OOOO":
21372          default:
21373            return "GMT" + formatTimezone(timezoneOffset, ":");
21374        }
21375      },
21376      // Timezone (specific non-location)
21377      z: function(date, token, _localize) {
21378        const timezoneOffset = date.getTimezoneOffset();
21379        switch (token) {
21380          // Short
21381          case "z":
21382          case "zz":
21383          case "zzz":
21384            return "GMT" + formatTimezoneShort(timezoneOffset, ":");
21385          // Long
21386          case "zzzz":
21387          default:
21388            return "GMT" + formatTimezone(timezoneOffset, ":");
21389        }
21390      },
21391      // Seconds timestamp
21392      t: function(date, token, _localize) {
21393        const timestamp = Math.trunc(+date / 1e3);
21394        return addLeadingZeros(timestamp, token.length);
21395      },
21396      // Milliseconds timestamp
21397      T: function(date, token, _localize) {
21398        return addLeadingZeros(+date, token.length);
21399      }
21400    };
21401    function formatTimezoneShort(offset4, delimiter = "") {
21402      const sign = offset4 > 0 ? "-" : "+";
21403      const absOffset = Math.abs(offset4);
21404      const hours = Math.trunc(absOffset / 60);
21405      const minutes = absOffset % 60;
21406      if (minutes === 0) {
21407        return sign + String(hours);
21408      }
21409      return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);
21410    }
21411    function formatTimezoneWithOptionalMinutes(offset4, delimiter) {
21412      if (offset4 % 60 === 0) {
21413        const sign = offset4 > 0 ? "-" : "+";
21414        return sign + addLeadingZeros(Math.abs(offset4) / 60, 2);
21415      }
21416      return formatTimezone(offset4, delimiter);
21417    }
21418    function formatTimezone(offset4, delimiter = "") {
21419      const sign = offset4 > 0 ? "-" : "+";
21420      const absOffset = Math.abs(offset4);
21421      const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);
21422      const minutes = addLeadingZeros(absOffset % 60, 2);
21423      return sign + hours + delimiter + minutes;
21424    }
21425  
21426    // node_modules/date-fns/_lib/format/longFormatters.js
21427    var dateLongFormatter = (pattern, formatLong2) => {
21428      switch (pattern) {
21429        case "P":
21430          return formatLong2.date({ width: "short" });
21431        case "PP":
21432          return formatLong2.date({ width: "medium" });
21433        case "PPP":
21434          return formatLong2.date({ width: "long" });
21435        case "PPPP":
21436        default:
21437          return formatLong2.date({ width: "full" });
21438      }
21439    };
21440    var timeLongFormatter = (pattern, formatLong2) => {
21441      switch (pattern) {
21442        case "p":
21443          return formatLong2.time({ width: "short" });
21444        case "pp":
21445          return formatLong2.time({ width: "medium" });
21446        case "ppp":
21447          return formatLong2.time({ width: "long" });
21448        case "pppp":
21449        default:
21450          return formatLong2.time({ width: "full" });
21451      }
21452    };
21453    var dateTimeLongFormatter = (pattern, formatLong2) => {
21454      const matchResult = pattern.match(/(P+)(p+)?/) || [];
21455      const datePattern = matchResult[1];
21456      const timePattern = matchResult[2];
21457      if (!timePattern) {
21458        return dateLongFormatter(pattern, formatLong2);
21459      }
21460      let dateTimeFormat;
21461      switch (datePattern) {
21462        case "P":
21463          dateTimeFormat = formatLong2.dateTime({ width: "short" });
21464          break;
21465        case "PP":
21466          dateTimeFormat = formatLong2.dateTime({ width: "medium" });
21467          break;
21468        case "PPP":
21469          dateTimeFormat = formatLong2.dateTime({ width: "long" });
21470          break;
21471        case "PPPP":
21472        default:
21473          dateTimeFormat = formatLong2.dateTime({ width: "full" });
21474          break;
21475      }
21476      return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2));
21477    };
21478    var longFormatters = {
21479      p: timeLongFormatter,
21480      P: dateTimeLongFormatter
21481    };
21482  
21483    // node_modules/date-fns/_lib/protectedTokens.js
21484    var dayOfYearTokenRE = /^D+$/;
21485    var weekYearTokenRE = /^Y+$/;
21486    var throwTokens = ["D", "DD", "YY", "YYYY"];
21487    function isProtectedDayOfYearToken(token) {
21488      return dayOfYearTokenRE.test(token);
21489    }
21490    function isProtectedWeekYearToken(token) {
21491      return weekYearTokenRE.test(token);
21492    }
21493    function warnOrThrowProtectedError(token, format7, input) {
21494      const _message = message(token, format7, input);
21495      console.warn(_message);
21496      if (throwTokens.includes(token)) throw new RangeError(_message);
21497    }
21498    function message(token, format7, input) {
21499      const subject = token[0] === "Y" ? "years" : "days of the month";
21500      return `Use \`$token.toLowerCase()}\` instead of \`$token}\` (in \`$format7}\`) for formatting $subject} to the input \`$input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;
21501    }
21502  
21503    // node_modules/date-fns/format.js
21504    var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
21505    var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
21506    var escapedStringRegExp = /^'([^]*?)'?$/;
21507    var doubleQuoteRegExp = /''/g;
21508    var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
21509    function format(date, formatStr, options) {
21510      const defaultOptions2 = getDefaultOptions();
21511      const locale = options?.locale ?? defaultOptions2.locale ?? enUS;
21512      const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
21513      const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
21514      const originalDate = toDate(date, options?.in);
21515      if (!isValid(originalDate)) {
21516        throw new RangeError("Invalid time value");
21517      }
21518      let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => {
21519        const firstCharacter = substring[0];
21520        if (firstCharacter === "p" || firstCharacter === "P") {
21521          const longFormatter = longFormatters[firstCharacter];
21522          return longFormatter(substring, locale.formatLong);
21523        }
21524        return substring;
21525      }).join("").match(formattingTokensRegExp).map((substring) => {
21526        if (substring === "''") {
21527          return { isToken: false, value: "'" };
21528        }
21529        const firstCharacter = substring[0];
21530        if (firstCharacter === "'") {
21531          return { isToken: false, value: cleanEscapedString(substring) };
21532        }
21533        if (formatters[firstCharacter]) {
21534          return { isToken: true, value: substring };
21535        }
21536        if (firstCharacter.match(unescapedLatinCharacterRegExp)) {
21537          throw new RangeError(
21538            "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"
21539          );
21540        }
21541        return { isToken: false, value: substring };
21542      });
21543      if (locale.localize.preprocessor) {
21544        parts = locale.localize.preprocessor(originalDate, parts);
21545      }
21546      const formatterOptions = {
21547        firstWeekContainsDate,
21548        weekStartsOn,
21549        locale
21550      };
21551      return parts.map((part) => {
21552        if (!part.isToken) return part.value;
21553        const token = part.value;
21554        if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
21555          warnOrThrowProtectedError(token, formatStr, String(date));
21556        }
21557        const formatter = formatters[token[0]];
21558        return formatter(originalDate, token, locale.localize, formatterOptions);
21559      }).join("");
21560    }
21561    function cleanEscapedString(input) {
21562      const matched = input.match(escapedStringRegExp);
21563      if (!matched) {
21564        return input;
21565      }
21566      return matched[1].replace(doubleQuoteRegExp, "'");
21567    }
21568  
21569    // node_modules/date-fns/getDaysInMonth.js
21570    function getDaysInMonth(date, options) {
21571      const _date = toDate(date, options?.in);
21572      const year = _date.getFullYear();
21573      const monthIndex = _date.getMonth();
21574      const lastDayOfMonth = constructFrom(_date, 0);
21575      lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);
21576      lastDayOfMonth.setHours(0, 0, 0, 0);
21577      return lastDayOfMonth.getDate();
21578    }
21579  
21580    // node_modules/date-fns/getDefaultOptions.js
21581    function getDefaultOptions2() {
21582      return Object.assign({}, getDefaultOptions());
21583    }
21584  
21585    // node_modules/date-fns/getISODay.js
21586    function getISODay(date, options) {
21587      const day = toDate(date, options?.in).getDay();
21588      return day === 0 ? 7 : day;
21589    }
21590  
21591    // node_modules/date-fns/getMonth.js
21592    function getMonth(date, options) {
21593      return toDate(date, options?.in).getMonth();
21594    }
21595  
21596    // node_modules/date-fns/getYear.js
21597    function getYear(date, options) {
21598      return toDate(date, options?.in).getFullYear();
21599    }
21600  
21601    // node_modules/date-fns/isAfter.js
21602    function isAfter(date, dateToCompare) {
21603      return +toDate(date) > +toDate(dateToCompare);
21604    }
21605  
21606    // node_modules/date-fns/isBefore.js
21607    function isBefore(date, dateToCompare) {
21608      return +toDate(date) < +toDate(dateToCompare);
21609    }
21610  
21611    // node_modules/date-fns/transpose.js
21612    function transpose(date, constructor) {
21613      const date_ = isConstructor(constructor) ? new constructor(0) : constructFrom(constructor, 0);
21614      date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
21615      date_.setHours(
21616        date.getHours(),
21617        date.getMinutes(),
21618        date.getSeconds(),
21619        date.getMilliseconds()
21620      );
21621      return date_;
21622    }
21623    function isConstructor(constructor) {
21624      return typeof constructor === "function" && constructor.prototype?.constructor === constructor;
21625    }
21626  
21627    // node_modules/date-fns/parse/_lib/Setter.js
21628    var TIMEZONE_UNIT_PRIORITY = 10;
21629    var Setter = class {
21630      subPriority = 0;
21631      validate(_utcDate, _options) {
21632        return true;
21633      }
21634    };
21635    var ValueSetter = class extends Setter {
21636      constructor(value, validateValue, setValue, priority, subPriority) {
21637        super();
21638        this.value = value;
21639        this.validateValue = validateValue;
21640        this.setValue = setValue;
21641        this.priority = priority;
21642        if (subPriority) {
21643          this.subPriority = subPriority;
21644        }
21645      }
21646      validate(date, options) {
21647        return this.validateValue(date, this.value, options);
21648      }
21649      set(date, flags, options) {
21650        return this.setValue(date, flags, this.value, options);
21651      }
21652    };
21653    var DateTimezoneSetter = class extends Setter {
21654      priority = TIMEZONE_UNIT_PRIORITY;
21655      subPriority = -1;
21656      constructor(context, reference) {
21657        super();
21658        this.context = context || ((date) => constructFrom(reference, date));
21659      }
21660      set(date, flags) {
21661        if (flags.timestampIsSet) return date;
21662        return constructFrom(date, transpose(date, this.context));
21663      }
21664    };
21665  
21666    // node_modules/date-fns/parse/_lib/Parser.js
21667    var Parser = class {
21668      run(dateString, token, match2, options) {
21669        const result = this.parse(dateString, token, match2, options);
21670        if (!result) {
21671          return null;
21672        }
21673        return {
21674          setter: new ValueSetter(
21675            result.value,
21676            this.validate,
21677            this.set,
21678            this.priority,
21679            this.subPriority
21680          ),
21681          rest: result.rest
21682        };
21683      }
21684      validate(_utcDate, _value, _options) {
21685        return true;
21686      }
21687    };
21688  
21689    // node_modules/date-fns/parse/_lib/parsers/EraParser.js
21690    var EraParser = class extends Parser {
21691      priority = 140;
21692      parse(dateString, token, match2) {
21693        switch (token) {
21694          // AD, BC
21695          case "G":
21696          case "GG":
21697          case "GGG":
21698            return match2.era(dateString, { width: "abbreviated" }) || match2.era(dateString, { width: "narrow" });
21699          // A, B
21700          case "GGGGG":
21701            return match2.era(dateString, { width: "narrow" });
21702          // Anno Domini, Before Christ
21703          case "GGGG":
21704          default:
21705            return match2.era(dateString, { width: "wide" }) || match2.era(dateString, { width: "abbreviated" }) || match2.era(dateString, { width: "narrow" });
21706        }
21707      }
21708      set(date, flags, value) {
21709        flags.era = value;
21710        date.setFullYear(value, 0, 1);
21711        date.setHours(0, 0, 0, 0);
21712        return date;
21713      }
21714      incompatibleTokens = ["R", "u", "t", "T"];
21715    };
21716  
21717    // node_modules/date-fns/parse/_lib/constants.js
21718    var numericPatterns = {
21719      month: /^(1[0-2]|0?\d)/,
21720      // 0 to 12
21721      date: /^(3[0-1]|[0-2]?\d)/,
21722      // 0 to 31
21723      dayOfYear: /^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,
21724      // 0 to 366
21725      week: /^(5[0-3]|[0-4]?\d)/,
21726      // 0 to 53
21727      hour23h: /^(2[0-3]|[0-1]?\d)/,
21728      // 0 to 23
21729      hour24h: /^(2[0-4]|[0-1]?\d)/,
21730      // 0 to 24
21731      hour11h: /^(1[0-1]|0?\d)/,
21732      // 0 to 11
21733      hour12h: /^(1[0-2]|0?\d)/,
21734      // 0 to 12
21735      minute: /^[0-5]?\d/,
21736      // 0 to 59
21737      second: /^[0-5]?\d/,
21738      // 0 to 59
21739      singleDigit: /^\d/,
21740      // 0 to 9
21741      twoDigits: /^\d{1,2}/,
21742      // 0 to 99
21743      threeDigits: /^\d{1,3}/,
21744      // 0 to 999
21745      fourDigits: /^\d{1,4}/,
21746      // 0 to 9999
21747      anyDigitsSigned: /^-?\d+/,
21748      singleDigitSigned: /^-?\d/,
21749      // 0 to 9, -0 to -9
21750      twoDigitsSigned: /^-?\d{1,2}/,
21751      // 0 to 99, -0 to -99
21752      threeDigitsSigned: /^-?\d{1,3}/,
21753      // 0 to 999, -0 to -999
21754      fourDigitsSigned: /^-?\d{1,4}/
21755      // 0 to 9999, -0 to -9999
21756    };
21757    var timezonePatterns = {
21758      basicOptionalMinutes: /^([+-])(\d{2})(\d{2})?|Z/,
21759      basic: /^([+-])(\d{2})(\d{2})|Z/,
21760      basicOptionalSeconds: /^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,
21761      extended: /^([+-])(\d{2}):(\d{2})|Z/,
21762      extendedOptionalSeconds: /^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/
21763    };
21764  
21765    // node_modules/date-fns/parse/_lib/utils.js
21766    function mapValue(parseFnResult, mapFn) {
21767      if (!parseFnResult) {
21768        return parseFnResult;
21769      }
21770      return {
21771        value: mapFn(parseFnResult.value),
21772        rest: parseFnResult.rest
21773      };
21774    }
21775    function parseNumericPattern(pattern, dateString) {
21776      const matchResult = dateString.match(pattern);
21777      if (!matchResult) {
21778        return null;
21779      }
21780      return {
21781        value: parseInt(matchResult[0], 10),
21782        rest: dateString.slice(matchResult[0].length)
21783      };
21784    }
21785    function parseTimezonePattern(pattern, dateString) {
21786      const matchResult = dateString.match(pattern);
21787      if (!matchResult) {
21788        return null;
21789      }
21790      if (matchResult[0] === "Z") {
21791        return {
21792          value: 0,
21793          rest: dateString.slice(1)
21794        };
21795      }
21796      const sign = matchResult[1] === "+" ? 1 : -1;
21797      const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;
21798      const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;
21799      const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;
21800      return {
21801        value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),
21802        rest: dateString.slice(matchResult[0].length)
21803      };
21804    }
21805    function parseAnyDigitsSigned(dateString) {
21806      return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);
21807    }
21808    function parseNDigits(n2, dateString) {
21809      switch (n2) {
21810        case 1:
21811          return parseNumericPattern(numericPatterns.singleDigit, dateString);
21812        case 2:
21813          return parseNumericPattern(numericPatterns.twoDigits, dateString);
21814        case 3:
21815          return parseNumericPattern(numericPatterns.threeDigits, dateString);
21816        case 4:
21817          return parseNumericPattern(numericPatterns.fourDigits, dateString);
21818        default:
21819          return parseNumericPattern(new RegExp("^\\d{1," + n2 + "}"), dateString);
21820      }
21821    }
21822    function parseNDigitsSigned(n2, dateString) {
21823      switch (n2) {
21824        case 1:
21825          return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);
21826        case 2:
21827          return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);
21828        case 3:
21829          return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);
21830        case 4:
21831          return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);
21832        default:
21833          return parseNumericPattern(new RegExp("^-?\\d{1," + n2 + "}"), dateString);
21834      }
21835    }
21836    function dayPeriodEnumToHours(dayPeriod) {
21837      switch (dayPeriod) {
21838        case "morning":
21839          return 4;
21840        case "evening":
21841          return 17;
21842        case "pm":
21843        case "noon":
21844        case "afternoon":
21845          return 12;
21846        case "am":
21847        case "midnight":
21848        case "night":
21849        default:
21850          return 0;
21851      }
21852    }
21853    function normalizeTwoDigitYear(twoDigitYear, currentYear) {
21854      const isCommonEra = currentYear > 0;
21855      const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;
21856      let result;
21857      if (absCurrentYear <= 50) {
21858        result = twoDigitYear || 100;
21859      } else {
21860        const rangeEnd = absCurrentYear + 50;
21861        const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;
21862        const isPreviousCentury = twoDigitYear >= rangeEnd % 100;
21863        result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);
21864      }
21865      return isCommonEra ? result : 1 - result;
21866    }
21867    function isLeapYearIndex(year) {
21868      return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
21869    }
21870  
21871    // node_modules/date-fns/parse/_lib/parsers/YearParser.js
21872    var YearParser = class extends Parser {
21873      priority = 130;
21874      incompatibleTokens = ["Y", "R", "u", "w", "I", "i", "e", "c", "t", "T"];
21875      parse(dateString, token, match2) {
21876        const valueCallback = (year) => ({
21877          year,
21878          isTwoDigitYear: token === "yy"
21879        });
21880        switch (token) {
21881          case "y":
21882            return mapValue(parseNDigits(4, dateString), valueCallback);
21883          case "yo":
21884            return mapValue(
21885              match2.ordinalNumber(dateString, {
21886                unit: "year"
21887              }),
21888              valueCallback
21889            );
21890          default:
21891            return mapValue(parseNDigits(token.length, dateString), valueCallback);
21892        }
21893      }
21894      validate(_date, value) {
21895        return value.isTwoDigitYear || value.year > 0;
21896      }
21897      set(date, flags, value) {
21898        const currentYear = date.getFullYear();
21899        if (value.isTwoDigitYear) {
21900          const normalizedTwoDigitYear = normalizeTwoDigitYear(
21901            value.year,
21902            currentYear
21903          );
21904          date.setFullYear(normalizedTwoDigitYear, 0, 1);
21905          date.setHours(0, 0, 0, 0);
21906          return date;
21907        }
21908        const year = !("era" in flags) || flags.era === 1 ? value.year : 1 - value.year;
21909        date.setFullYear(year, 0, 1);
21910        date.setHours(0, 0, 0, 0);
21911        return date;
21912      }
21913    };
21914  
21915    // node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js
21916    var LocalWeekYearParser = class extends Parser {
21917      priority = 130;
21918      parse(dateString, token, match2) {
21919        const valueCallback = (year) => ({
21920          year,
21921          isTwoDigitYear: token === "YY"
21922        });
21923        switch (token) {
21924          case "Y":
21925            return mapValue(parseNDigits(4, dateString), valueCallback);
21926          case "Yo":
21927            return mapValue(
21928              match2.ordinalNumber(dateString, {
21929                unit: "year"
21930              }),
21931              valueCallback
21932            );
21933          default:
21934            return mapValue(parseNDigits(token.length, dateString), valueCallback);
21935        }
21936      }
21937      validate(_date, value) {
21938        return value.isTwoDigitYear || value.year > 0;
21939      }
21940      set(date, flags, value, options) {
21941        const currentYear = getWeekYear(date, options);
21942        if (value.isTwoDigitYear) {
21943          const normalizedTwoDigitYear = normalizeTwoDigitYear(
21944            value.year,
21945            currentYear
21946          );
21947          date.setFullYear(
21948            normalizedTwoDigitYear,
21949            0,
21950            options.firstWeekContainsDate
21951          );
21952          date.setHours(0, 0, 0, 0);
21953          return startOfWeek(date, options);
21954        }
21955        const year = !("era" in flags) || flags.era === 1 ? value.year : 1 - value.year;
21956        date.setFullYear(year, 0, options.firstWeekContainsDate);
21957        date.setHours(0, 0, 0, 0);
21958        return startOfWeek(date, options);
21959      }
21960      incompatibleTokens = [
21961        "y",
21962        "R",
21963        "u",
21964        "Q",
21965        "q",
21966        "M",
21967        "L",
21968        "I",
21969        "d",
21970        "D",
21971        "i",
21972        "t",
21973        "T"
21974      ];
21975    };
21976  
21977    // node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js
21978    var ISOWeekYearParser = class extends Parser {
21979      priority = 130;
21980      parse(dateString, token) {
21981        if (token === "R") {
21982          return parseNDigitsSigned(4, dateString);
21983        }
21984        return parseNDigitsSigned(token.length, dateString);
21985      }
21986      set(date, _flags, value) {
21987        const firstWeekOfYear = constructFrom(date, 0);
21988        firstWeekOfYear.setFullYear(value, 0, 4);
21989        firstWeekOfYear.setHours(0, 0, 0, 0);
21990        return startOfISOWeek(firstWeekOfYear);
21991      }
21992      incompatibleTokens = [
21993        "G",
21994        "y",
21995        "Y",
21996        "u",
21997        "Q",
21998        "q",
21999        "M",
22000        "L",
22001        "w",
22002        "d",
22003        "D",
22004        "e",
22005        "c",
22006        "t",
22007        "T"
22008      ];
22009    };
22010  
22011    // node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js
22012    var ExtendedYearParser = class extends Parser {
22013      priority = 130;
22014      parse(dateString, token) {
22015        if (token === "u") {
22016          return parseNDigitsSigned(4, dateString);
22017        }
22018        return parseNDigitsSigned(token.length, dateString);
22019      }
22020      set(date, _flags, value) {
22021        date.setFullYear(value, 0, 1);
22022        date.setHours(0, 0, 0, 0);
22023        return date;
22024      }
22025      incompatibleTokens = ["G", "y", "Y", "R", "w", "I", "i", "e", "c", "t", "T"];
22026    };
22027  
22028    // node_modules/date-fns/parse/_lib/parsers/QuarterParser.js
22029    var QuarterParser = class extends Parser {
22030      priority = 120;
22031      parse(dateString, token, match2) {
22032        switch (token) {
22033          // 1, 2, 3, 4
22034          case "Q":
22035          case "QQ":
22036            return parseNDigits(token.length, dateString);
22037          // 1st, 2nd, 3rd, 4th
22038          case "Qo":
22039            return match2.ordinalNumber(dateString, { unit: "quarter" });
22040          // Q1, Q2, Q3, Q4
22041          case "QQQ":
22042            return match2.quarter(dateString, {
22043              width: "abbreviated",
22044              context: "formatting"
22045            }) || match2.quarter(dateString, {
22046              width: "narrow",
22047              context: "formatting"
22048            });
22049          // 1, 2, 3, 4 (narrow quarter; could be not numerical)
22050          case "QQQQQ":
22051            return match2.quarter(dateString, {
22052              width: "narrow",
22053              context: "formatting"
22054            });
22055          // 1st quarter, 2nd quarter, ...
22056          case "QQQQ":
22057          default:
22058            return match2.quarter(dateString, {
22059              width: "wide",
22060              context: "formatting"
22061            }) || match2.quarter(dateString, {
22062              width: "abbreviated",
22063              context: "formatting"
22064            }) || match2.quarter(dateString, {
22065              width: "narrow",
22066              context: "formatting"
22067            });
22068        }
22069      }
22070      validate(_date, value) {
22071        return value >= 1 && value <= 4;
22072      }
22073      set(date, _flags, value) {
22074        date.setMonth((value - 1) * 3, 1);
22075        date.setHours(0, 0, 0, 0);
22076        return date;
22077      }
22078      incompatibleTokens = [
22079        "Y",
22080        "R",
22081        "q",
22082        "M",
22083        "L",
22084        "w",
22085        "I",
22086        "d",
22087        "D",
22088        "i",
22089        "e",
22090        "c",
22091        "t",
22092        "T"
22093      ];
22094    };
22095  
22096    // node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js
22097    var StandAloneQuarterParser = class extends Parser {
22098      priority = 120;
22099      parse(dateString, token, match2) {
22100        switch (token) {
22101          // 1, 2, 3, 4
22102          case "q":
22103          case "qq":
22104            return parseNDigits(token.length, dateString);
22105          // 1st, 2nd, 3rd, 4th
22106          case "qo":
22107            return match2.ordinalNumber(dateString, { unit: "quarter" });
22108          // Q1, Q2, Q3, Q4
22109          case "qqq":
22110            return match2.quarter(dateString, {
22111              width: "abbreviated",
22112              context: "standalone"
22113            }) || match2.quarter(dateString, {
22114              width: "narrow",
22115              context: "standalone"
22116            });
22117          // 1, 2, 3, 4 (narrow quarter; could be not numerical)
22118          case "qqqqq":
22119            return match2.quarter(dateString, {
22120              width: "narrow",
22121              context: "standalone"
22122            });
22123          // 1st quarter, 2nd quarter, ...
22124          case "qqqq":
22125          default:
22126            return match2.quarter(dateString, {
22127              width: "wide",
22128              context: "standalone"
22129            }) || match2.quarter(dateString, {
22130              width: "abbreviated",
22131              context: "standalone"
22132            }) || match2.quarter(dateString, {
22133              width: "narrow",
22134              context: "standalone"
22135            });
22136        }
22137      }
22138      validate(_date, value) {
22139        return value >= 1 && value <= 4;
22140      }
22141      set(date, _flags, value) {
22142        date.setMonth((value - 1) * 3, 1);
22143        date.setHours(0, 0, 0, 0);
22144        return date;
22145      }
22146      incompatibleTokens = [
22147        "Y",
22148        "R",
22149        "Q",
22150        "M",
22151        "L",
22152        "w",
22153        "I",
22154        "d",
22155        "D",
22156        "i",
22157        "e",
22158        "c",
22159        "t",
22160        "T"
22161      ];
22162    };
22163  
22164    // node_modules/date-fns/parse/_lib/parsers/MonthParser.js
22165    var MonthParser = class extends Parser {
22166      incompatibleTokens = [
22167        "Y",
22168        "R",
22169        "q",
22170        "Q",
22171        "L",
22172        "w",
22173        "I",
22174        "D",
22175        "i",
22176        "e",
22177        "c",
22178        "t",
22179        "T"
22180      ];
22181      priority = 110;
22182      parse(dateString, token, match2) {
22183        const valueCallback = (value) => value - 1;
22184        switch (token) {
22185          // 1, 2, ..., 12
22186          case "M":
22187            return mapValue(
22188              parseNumericPattern(numericPatterns.month, dateString),
22189              valueCallback
22190            );
22191          // 01, 02, ..., 12
22192          case "MM":
22193            return mapValue(parseNDigits(2, dateString), valueCallback);
22194          // 1st, 2nd, ..., 12th
22195          case "Mo":
22196            return mapValue(
22197              match2.ordinalNumber(dateString, {
22198                unit: "month"
22199              }),
22200              valueCallback
22201            );
22202          // Jan, Feb, ..., Dec
22203          case "MMM":
22204            return match2.month(dateString, {
22205              width: "abbreviated",
22206              context: "formatting"
22207            }) || match2.month(dateString, { width: "narrow", context: "formatting" });
22208          // J, F, ..., D
22209          case "MMMMM":
22210            return match2.month(dateString, {
22211              width: "narrow",
22212              context: "formatting"
22213            });
22214          // January, February, ..., December
22215          case "MMMM":
22216          default:
22217            return match2.month(dateString, { width: "wide", context: "formatting" }) || match2.month(dateString, {
22218              width: "abbreviated",
22219              context: "formatting"
22220            }) || match2.month(dateString, { width: "narrow", context: "formatting" });
22221        }
22222      }
22223      validate(_date, value) {
22224        return value >= 0 && value <= 11;
22225      }
22226      set(date, _flags, value) {
22227        date.setMonth(value, 1);
22228        date.setHours(0, 0, 0, 0);
22229        return date;
22230      }
22231    };
22232  
22233    // node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js
22234    var StandAloneMonthParser = class extends Parser {
22235      priority = 110;
22236      parse(dateString, token, match2) {
22237        const valueCallback = (value) => value - 1;
22238        switch (token) {
22239          // 1, 2, ..., 12
22240          case "L":
22241            return mapValue(
22242              parseNumericPattern(numericPatterns.month, dateString),
22243              valueCallback
22244            );
22245          // 01, 02, ..., 12
22246          case "LL":
22247            return mapValue(parseNDigits(2, dateString), valueCallback);
22248          // 1st, 2nd, ..., 12th
22249          case "Lo":
22250            return mapValue(
22251              match2.ordinalNumber(dateString, {
22252                unit: "month"
22253              }),
22254              valueCallback
22255            );
22256          // Jan, Feb, ..., Dec
22257          case "LLL":
22258            return match2.month(dateString, {
22259              width: "abbreviated",
22260              context: "standalone"
22261            }) || match2.month(dateString, { width: "narrow", context: "standalone" });
22262          // J, F, ..., D
22263          case "LLLLL":
22264            return match2.month(dateString, {
22265              width: "narrow",
22266              context: "standalone"
22267            });
22268          // January, February, ..., December
22269          case "LLLL":
22270          default:
22271            return match2.month(dateString, { width: "wide", context: "standalone" }) || match2.month(dateString, {
22272              width: "abbreviated",
22273              context: "standalone"
22274            }) || match2.month(dateString, { width: "narrow", context: "standalone" });
22275        }
22276      }
22277      validate(_date, value) {
22278        return value >= 0 && value <= 11;
22279      }
22280      set(date, _flags, value) {
22281        date.setMonth(value, 1);
22282        date.setHours(0, 0, 0, 0);
22283        return date;
22284      }
22285      incompatibleTokens = [
22286        "Y",
22287        "R",
22288        "q",
22289        "Q",
22290        "M",
22291        "w",
22292        "I",
22293        "D",
22294        "i",
22295        "e",
22296        "c",
22297        "t",
22298        "T"
22299      ];
22300    };
22301  
22302    // node_modules/date-fns/setWeek.js
22303    function setWeek(date, week, options) {
22304      const date_ = toDate(date, options?.in);
22305      const diff = getWeek(date_, options) - week;
22306      date_.setDate(date_.getDate() - diff * 7);
22307      return toDate(date_, options?.in);
22308    }
22309  
22310    // node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js
22311    var LocalWeekParser = class extends Parser {
22312      priority = 100;
22313      parse(dateString, token, match2) {
22314        switch (token) {
22315          case "w":
22316            return parseNumericPattern(numericPatterns.week, dateString);
22317          case "wo":
22318            return match2.ordinalNumber(dateString, { unit: "week" });
22319          default:
22320            return parseNDigits(token.length, dateString);
22321        }
22322      }
22323      validate(_date, value) {
22324        return value >= 1 && value <= 53;
22325      }
22326      set(date, _flags, value, options) {
22327        return startOfWeek(setWeek(date, value, options), options);
22328      }
22329      incompatibleTokens = [
22330        "y",
22331        "R",
22332        "u",
22333        "q",
22334        "Q",
22335        "M",
22336        "L",
22337        "I",
22338        "d",
22339        "D",
22340        "i",
22341        "t",
22342        "T"
22343      ];
22344    };
22345  
22346    // node_modules/date-fns/setISOWeek.js
22347    function setISOWeek(date, week, options) {
22348      const _date = toDate(date, options?.in);
22349      const diff = getISOWeek(_date, options) - week;
22350      _date.setDate(_date.getDate() - diff * 7);
22351      return _date;
22352    }
22353  
22354    // node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js
22355    var ISOWeekParser = class extends Parser {
22356      priority = 100;
22357      parse(dateString, token, match2) {
22358        switch (token) {
22359          case "I":
22360            return parseNumericPattern(numericPatterns.week, dateString);
22361          case "Io":
22362            return match2.ordinalNumber(dateString, { unit: "week" });
22363          default:
22364            return parseNDigits(token.length, dateString);
22365        }
22366      }
22367      validate(_date, value) {
22368        return value >= 1 && value <= 53;
22369      }
22370      set(date, _flags, value) {
22371        return startOfISOWeek(setISOWeek(date, value));
22372      }
22373      incompatibleTokens = [
22374        "y",
22375        "Y",
22376        "u",
22377        "q",
22378        "Q",
22379        "M",
22380        "L",
22381        "w",
22382        "d",
22383        "D",
22384        "e",
22385        "c",
22386        "t",
22387        "T"
22388      ];
22389    };
22390  
22391    // node_modules/date-fns/parse/_lib/parsers/DateParser.js
22392    var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
22393    var DAYS_IN_MONTH_LEAP_YEAR = [
22394      31,
22395      29,
22396      31,
22397      30,
22398      31,
22399      30,
22400      31,
22401      31,
22402      30,
22403      31,
22404      30,
22405      31
22406    ];
22407    var DateParser = class extends Parser {
22408      priority = 90;
22409      subPriority = 1;
22410      parse(dateString, token, match2) {
22411        switch (token) {
22412          case "d":
22413            return parseNumericPattern(numericPatterns.date, dateString);
22414          case "do":
22415            return match2.ordinalNumber(dateString, { unit: "date" });
22416          default:
22417            return parseNDigits(token.length, dateString);
22418        }
22419      }
22420      validate(date, value) {
22421        const year = date.getFullYear();
22422        const isLeapYear = isLeapYearIndex(year);
22423        const month = date.getMonth();
22424        if (isLeapYear) {
22425          return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];
22426        } else {
22427          return value >= 1 && value <= DAYS_IN_MONTH[month];
22428        }
22429      }
22430      set(date, _flags, value) {
22431        date.setDate(value);
22432        date.setHours(0, 0, 0, 0);
22433        return date;
22434      }
22435      incompatibleTokens = [
22436        "Y",
22437        "R",
22438        "q",
22439        "Q",
22440        "w",
22441        "I",
22442        "D",
22443        "i",
22444        "e",
22445        "c",
22446        "t",
22447        "T"
22448      ];
22449    };
22450  
22451    // node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js
22452    var DayOfYearParser = class extends Parser {
22453      priority = 90;
22454      subpriority = 1;
22455      parse(dateString, token, match2) {
22456        switch (token) {
22457          case "D":
22458          case "DD":
22459            return parseNumericPattern(numericPatterns.dayOfYear, dateString);
22460          case "Do":
22461            return match2.ordinalNumber(dateString, { unit: "date" });
22462          default:
22463            return parseNDigits(token.length, dateString);
22464        }
22465      }
22466      validate(date, value) {
22467        const year = date.getFullYear();
22468        const isLeapYear = isLeapYearIndex(year);
22469        if (isLeapYear) {
22470          return value >= 1 && value <= 366;
22471        } else {
22472          return value >= 1 && value <= 365;
22473        }
22474      }
22475      set(date, _flags, value) {
22476        date.setMonth(0, value);
22477        date.setHours(0, 0, 0, 0);
22478        return date;
22479      }
22480      incompatibleTokens = [
22481        "Y",
22482        "R",
22483        "q",
22484        "Q",
22485        "M",
22486        "L",
22487        "w",
22488        "I",
22489        "d",
22490        "E",
22491        "i",
22492        "e",
22493        "c",
22494        "t",
22495        "T"
22496      ];
22497    };
22498  
22499    // node_modules/date-fns/setDay.js
22500    function setDay(date, day, options) {
22501      const defaultOptions2 = getDefaultOptions();
22502      const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
22503      const date_ = toDate(date, options?.in);
22504      const currentDay = date_.getDay();
22505      const remainder = day % 7;
22506      const dayIndex = (remainder + 7) % 7;
22507      const delta = 7 - weekStartsOn;
22508      const diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;
22509      return addDays(date_, diff, options);
22510    }
22511  
22512    // node_modules/date-fns/parse/_lib/parsers/DayParser.js
22513    var DayParser = class extends Parser {
22514      priority = 90;
22515      parse(dateString, token, match2) {
22516        switch (token) {
22517          // Tue
22518          case "E":
22519          case "EE":
22520          case "EEE":
22521            return match2.day(dateString, {
22522              width: "abbreviated",
22523              context: "formatting"
22524            }) || match2.day(dateString, { width: "short", context: "formatting" }) || match2.day(dateString, { width: "narrow", context: "formatting" });
22525          // T
22526          case "EEEEE":
22527            return match2.day(dateString, {
22528              width: "narrow",
22529              context: "formatting"
22530            });
22531          // Tu
22532          case "EEEEEE":
22533            return match2.day(dateString, { width: "short", context: "formatting" }) || match2.day(dateString, { width: "narrow", context: "formatting" });
22534          // Tuesday
22535          case "EEEE":
22536          default:
22537            return match2.day(dateString, { width: "wide", context: "formatting" }) || match2.day(dateString, {
22538              width: "abbreviated",
22539              context: "formatting"
22540            }) || match2.day(dateString, { width: "short", context: "formatting" }) || match2.day(dateString, { width: "narrow", context: "formatting" });
22541        }
22542      }
22543      validate(_date, value) {
22544        return value >= 0 && value <= 6;
22545      }
22546      set(date, _flags, value, options) {
22547        date = setDay(date, value, options);
22548        date.setHours(0, 0, 0, 0);
22549        return date;
22550      }
22551      incompatibleTokens = ["D", "i", "e", "c", "t", "T"];
22552    };
22553  
22554    // node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js
22555    var LocalDayParser = class extends Parser {
22556      priority = 90;
22557      parse(dateString, token, match2, options) {
22558        const valueCallback = (value) => {
22559          const wholeWeekDays = Math.floor((value - 1) / 7) * 7;
22560          return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;
22561        };
22562        switch (token) {
22563          // 3
22564          case "e":
22565          case "ee":
22566            return mapValue(parseNDigits(token.length, dateString), valueCallback);
22567          // 3rd
22568          case "eo":
22569            return mapValue(
22570              match2.ordinalNumber(dateString, {
22571                unit: "day"
22572              }),
22573              valueCallback
22574            );
22575          // Tue
22576          case "eee":
22577            return match2.day(dateString, {
22578              width: "abbreviated",
22579              context: "formatting"
22580            }) || match2.day(dateString, { width: "short", context: "formatting" }) || match2.day(dateString, { width: "narrow", context: "formatting" });
22581          // T
22582          case "eeeee":
22583            return match2.day(dateString, {
22584              width: "narrow",
22585              context: "formatting"
22586            });
22587          // Tu
22588          case "eeeeee":
22589            return match2.day(dateString, { width: "short", context: "formatting" }) || match2.day(dateString, { width: "narrow", context: "formatting" });
22590          // Tuesday
22591          case "eeee":
22592          default:
22593            return match2.day(dateString, { width: "wide", context: "formatting" }) || match2.day(dateString, {
22594              width: "abbreviated",
22595              context: "formatting"
22596            }) || match2.day(dateString, { width: "short", context: "formatting" }) || match2.day(dateString, { width: "narrow", context: "formatting" });
22597        }
22598      }
22599      validate(_date, value) {
22600        return value >= 0 && value <= 6;
22601      }
22602      set(date, _flags, value, options) {
22603        date = setDay(date, value, options);
22604        date.setHours(0, 0, 0, 0);
22605        return date;
22606      }
22607      incompatibleTokens = [
22608        "y",
22609        "R",
22610        "u",
22611        "q",
22612        "Q",
22613        "M",
22614        "L",
22615        "I",
22616        "d",
22617        "D",
22618        "E",
22619        "i",
22620        "c",
22621        "t",
22622        "T"
22623      ];
22624    };
22625  
22626    // node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js
22627    var StandAloneLocalDayParser = class extends Parser {
22628      priority = 90;
22629      parse(dateString, token, match2, options) {
22630        const valueCallback = (value) => {
22631          const wholeWeekDays = Math.floor((value - 1) / 7) * 7;
22632          return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;
22633        };
22634        switch (token) {
22635          // 3
22636          case "c":
22637          case "cc":
22638            return mapValue(parseNDigits(token.length, dateString), valueCallback);
22639          // 3rd
22640          case "co":
22641            return mapValue(
22642              match2.ordinalNumber(dateString, {
22643                unit: "day"
22644              }),
22645              valueCallback
22646            );
22647          // Tue
22648          case "ccc":
22649            return match2.day(dateString, {
22650              width: "abbreviated",
22651              context: "standalone"
22652            }) || match2.day(dateString, { width: "short", context: "standalone" }) || match2.day(dateString, { width: "narrow", context: "standalone" });
22653          // T
22654          case "ccccc":
22655            return match2.day(dateString, {
22656              width: "narrow",
22657              context: "standalone"
22658            });
22659          // Tu
22660          case "cccccc":
22661            return match2.day(dateString, { width: "short", context: "standalone" }) || match2.day(dateString, { width: "narrow", context: "standalone" });
22662          // Tuesday
22663          case "cccc":
22664          default:
22665            return match2.day(dateString, { width: "wide", context: "standalone" }) || match2.day(dateString, {
22666              width: "abbreviated",
22667              context: "standalone"
22668            }) || match2.day(dateString, { width: "short", context: "standalone" }) || match2.day(dateString, { width: "narrow", context: "standalone" });
22669        }
22670      }
22671      validate(_date, value) {
22672        return value >= 0 && value <= 6;
22673      }
22674      set(date, _flags, value, options) {
22675        date = setDay(date, value, options);
22676        date.setHours(0, 0, 0, 0);
22677        return date;
22678      }
22679      incompatibleTokens = [
22680        "y",
22681        "R",
22682        "u",
22683        "q",
22684        "Q",
22685        "M",
22686        "L",
22687        "I",
22688        "d",
22689        "D",
22690        "E",
22691        "i",
22692        "e",
22693        "t",
22694        "T"
22695      ];
22696    };
22697  
22698    // node_modules/date-fns/setISODay.js
22699    function setISODay(date, day, options) {
22700      const date_ = toDate(date, options?.in);
22701      const currentDay = getISODay(date_, options);
22702      const diff = day - currentDay;
22703      return addDays(date_, diff, options);
22704    }
22705  
22706    // node_modules/date-fns/parse/_lib/parsers/ISODayParser.js
22707    var ISODayParser = class extends Parser {
22708      priority = 90;
22709      parse(dateString, token, match2) {
22710        const valueCallback = (value) => {
22711          if (value === 0) {
22712            return 7;
22713          }
22714          return value;
22715        };
22716        switch (token) {
22717          // 2
22718          case "i":
22719          case "ii":
22720            return parseNDigits(token.length, dateString);
22721          // 2nd
22722          case "io":
22723            return match2.ordinalNumber(dateString, { unit: "day" });
22724          // Tue
22725          case "iii":
22726            return mapValue(
22727              match2.day(dateString, {
22728                width: "abbreviated",
22729                context: "formatting"
22730              }) || match2.day(dateString, {
22731                width: "short",
22732                context: "formatting"
22733              }) || match2.day(dateString, {
22734                width: "narrow",
22735                context: "formatting"
22736              }),
22737              valueCallback
22738            );
22739          // T
22740          case "iiiii":
22741            return mapValue(
22742              match2.day(dateString, {
22743                width: "narrow",
22744                context: "formatting"
22745              }),
22746              valueCallback
22747            );
22748          // Tu
22749          case "iiiiii":
22750            return mapValue(
22751              match2.day(dateString, {
22752                width: "short",
22753                context: "formatting"
22754              }) || match2.day(dateString, {
22755                width: "narrow",
22756                context: "formatting"
22757              }),
22758              valueCallback
22759            );
22760          // Tuesday
22761          case "iiii":
22762          default:
22763            return mapValue(
22764              match2.day(dateString, {
22765                width: "wide",
22766                context: "formatting"
22767              }) || match2.day(dateString, {
22768                width: "abbreviated",
22769                context: "formatting"
22770              }) || match2.day(dateString, {
22771                width: "short",
22772                context: "formatting"
22773              }) || match2.day(dateString, {
22774                width: "narrow",
22775                context: "formatting"
22776              }),
22777              valueCallback
22778            );
22779        }
22780      }
22781      validate(_date, value) {
22782        return value >= 1 && value <= 7;
22783      }
22784      set(date, _flags, value) {
22785        date = setISODay(date, value);
22786        date.setHours(0, 0, 0, 0);
22787        return date;
22788      }
22789      incompatibleTokens = [
22790        "y",
22791        "Y",
22792        "u",
22793        "q",
22794        "Q",
22795        "M",
22796        "L",
22797        "w",
22798        "d",
22799        "D",
22800        "E",
22801        "e",
22802        "c",
22803        "t",
22804        "T"
22805      ];
22806    };
22807  
22808    // node_modules/date-fns/parse/_lib/parsers/AMPMParser.js
22809    var AMPMParser = class extends Parser {
22810      priority = 80;
22811      parse(dateString, token, match2) {
22812        switch (token) {
22813          case "a":
22814          case "aa":
22815          case "aaa":
22816            return match2.dayPeriod(dateString, {
22817              width: "abbreviated",
22818              context: "formatting"
22819            }) || match2.dayPeriod(dateString, {
22820              width: "narrow",
22821              context: "formatting"
22822            });
22823          case "aaaaa":
22824            return match2.dayPeriod(dateString, {
22825              width: "narrow",
22826              context: "formatting"
22827            });
22828          case "aaaa":
22829          default:
22830            return match2.dayPeriod(dateString, {
22831              width: "wide",
22832              context: "formatting"
22833            }) || match2.dayPeriod(dateString, {
22834              width: "abbreviated",
22835              context: "formatting"
22836            }) || match2.dayPeriod(dateString, {
22837              width: "narrow",
22838              context: "formatting"
22839            });
22840        }
22841      }
22842      set(date, _flags, value) {
22843        date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
22844        return date;
22845      }
22846      incompatibleTokens = ["b", "B", "H", "k", "t", "T"];
22847    };
22848  
22849    // node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js
22850    var AMPMMidnightParser = class extends Parser {
22851      priority = 80;
22852      parse(dateString, token, match2) {
22853        switch (token) {
22854          case "b":
22855          case "bb":
22856          case "bbb":
22857            return match2.dayPeriod(dateString, {
22858              width: "abbreviated",
22859              context: "formatting"
22860            }) || match2.dayPeriod(dateString, {
22861              width: "narrow",
22862              context: "formatting"
22863            });
22864          case "bbbbb":
22865            return match2.dayPeriod(dateString, {
22866              width: "narrow",
22867              context: "formatting"
22868            });
22869          case "bbbb":
22870          default:
22871            return match2.dayPeriod(dateString, {
22872              width: "wide",
22873              context: "formatting"
22874            }) || match2.dayPeriod(dateString, {
22875              width: "abbreviated",
22876              context: "formatting"
22877            }) || match2.dayPeriod(dateString, {
22878              width: "narrow",
22879              context: "formatting"
22880            });
22881        }
22882      }
22883      set(date, _flags, value) {
22884        date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
22885        return date;
22886      }
22887      incompatibleTokens = ["a", "B", "H", "k", "t", "T"];
22888    };
22889  
22890    // node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js
22891    var DayPeriodParser = class extends Parser {
22892      priority = 80;
22893      parse(dateString, token, match2) {
22894        switch (token) {
22895          case "B":
22896          case "BB":
22897          case "BBB":
22898            return match2.dayPeriod(dateString, {
22899              width: "abbreviated",
22900              context: "formatting"
22901            }) || match2.dayPeriod(dateString, {
22902              width: "narrow",
22903              context: "formatting"
22904            });
22905          case "BBBBB":
22906            return match2.dayPeriod(dateString, {
22907              width: "narrow",
22908              context: "formatting"
22909            });
22910          case "BBBB":
22911          default:
22912            return match2.dayPeriod(dateString, {
22913              width: "wide",
22914              context: "formatting"
22915            }) || match2.dayPeriod(dateString, {
22916              width: "abbreviated",
22917              context: "formatting"
22918            }) || match2.dayPeriod(dateString, {
22919              width: "narrow",
22920              context: "formatting"
22921            });
22922        }
22923      }
22924      set(date, _flags, value) {
22925        date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);
22926        return date;
22927      }
22928      incompatibleTokens = ["a", "b", "t", "T"];
22929    };
22930  
22931    // node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js
22932    var Hour1to12Parser = class extends Parser {
22933      priority = 70;
22934      parse(dateString, token, match2) {
22935        switch (token) {
22936          case "h":
22937            return parseNumericPattern(numericPatterns.hour12h, dateString);
22938          case "ho":
22939            return match2.ordinalNumber(dateString, { unit: "hour" });
22940          default:
22941            return parseNDigits(token.length, dateString);
22942        }
22943      }
22944      validate(_date, value) {
22945        return value >= 1 && value <= 12;
22946      }
22947      set(date, _flags, value) {
22948        const isPM = date.getHours() >= 12;
22949        if (isPM && value < 12) {
22950          date.setHours(value + 12, 0, 0, 0);
22951        } else if (!isPM && value === 12) {
22952          date.setHours(0, 0, 0, 0);
22953        } else {
22954          date.setHours(value, 0, 0, 0);
22955        }
22956        return date;
22957      }
22958      incompatibleTokens = ["H", "K", "k", "t", "T"];
22959    };
22960  
22961    // node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js
22962    var Hour0to23Parser = class extends Parser {
22963      priority = 70;
22964      parse(dateString, token, match2) {
22965        switch (token) {
22966          case "H":
22967            return parseNumericPattern(numericPatterns.hour23h, dateString);
22968          case "Ho":
22969            return match2.ordinalNumber(dateString, { unit: "hour" });
22970          default:
22971            return parseNDigits(token.length, dateString);
22972        }
22973      }
22974      validate(_date, value) {
22975        return value >= 0 && value <= 23;
22976      }
22977      set(date, _flags, value) {
22978        date.setHours(value, 0, 0, 0);
22979        return date;
22980      }
22981      incompatibleTokens = ["a", "b", "h", "K", "k", "t", "T"];
22982    };
22983  
22984    // node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js
22985    var Hour0To11Parser = class extends Parser {
22986      priority = 70;
22987      parse(dateString, token, match2) {
22988        switch (token) {
22989          case "K":
22990            return parseNumericPattern(numericPatterns.hour11h, dateString);
22991          case "Ko":
22992            return match2.ordinalNumber(dateString, { unit: "hour" });
22993          default:
22994            return parseNDigits(token.length, dateString);
22995        }
22996      }
22997      validate(_date, value) {
22998        return value >= 0 && value <= 11;
22999      }
23000      set(date, _flags, value) {
23001        const isPM = date.getHours() >= 12;
23002        if (isPM && value < 12) {
23003          date.setHours(value + 12, 0, 0, 0);
23004        } else {
23005          date.setHours(value, 0, 0, 0);
23006        }
23007        return date;
23008      }
23009      incompatibleTokens = ["h", "H", "k", "t", "T"];
23010    };
23011  
23012    // node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js
23013    var Hour1To24Parser = class extends Parser {
23014      priority = 70;
23015      parse(dateString, token, match2) {
23016        switch (token) {
23017          case "k":
23018            return parseNumericPattern(numericPatterns.hour24h, dateString);
23019          case "ko":
23020            return match2.ordinalNumber(dateString, { unit: "hour" });
23021          default:
23022            return parseNDigits(token.length, dateString);
23023        }
23024      }
23025      validate(_date, value) {
23026        return value >= 1 && value <= 24;
23027      }
23028      set(date, _flags, value) {
23029        const hours = value <= 24 ? value % 24 : value;
23030        date.setHours(hours, 0, 0, 0);
23031        return date;
23032      }
23033      incompatibleTokens = ["a", "b", "h", "H", "K", "t", "T"];
23034    };
23035  
23036    // node_modules/date-fns/parse/_lib/parsers/MinuteParser.js
23037    var MinuteParser = class extends Parser {
23038      priority = 60;
23039      parse(dateString, token, match2) {
23040        switch (token) {
23041          case "m":
23042            return parseNumericPattern(numericPatterns.minute, dateString);
23043          case "mo":
23044            return match2.ordinalNumber(dateString, { unit: "minute" });
23045          default:
23046            return parseNDigits(token.length, dateString);
23047        }
23048      }
23049      validate(_date, value) {
23050        return value >= 0 && value <= 59;
23051      }
23052      set(date, _flags, value) {
23053        date.setMinutes(value, 0, 0);
23054        return date;
23055      }
23056      incompatibleTokens = ["t", "T"];
23057    };
23058  
23059    // node_modules/date-fns/parse/_lib/parsers/SecondParser.js
23060    var SecondParser = class extends Parser {
23061      priority = 50;
23062      parse(dateString, token, match2) {
23063        switch (token) {
23064          case "s":
23065            return parseNumericPattern(numericPatterns.second, dateString);
23066          case "so":
23067            return match2.ordinalNumber(dateString, { unit: "second" });
23068          default:
23069            return parseNDigits(token.length, dateString);
23070        }
23071      }
23072      validate(_date, value) {
23073        return value >= 0 && value <= 59;
23074      }
23075      set(date, _flags, value) {
23076        date.setSeconds(value, 0);
23077        return date;
23078      }
23079      incompatibleTokens = ["t", "T"];
23080    };
23081  
23082    // node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js
23083    var FractionOfSecondParser = class extends Parser {
23084      priority = 30;
23085      parse(dateString, token) {
23086        const valueCallback = (value) => Math.trunc(value * Math.pow(10, -token.length + 3));
23087        return mapValue(parseNDigits(token.length, dateString), valueCallback);
23088      }
23089      set(date, _flags, value) {
23090        date.setMilliseconds(value);
23091        return date;
23092      }
23093      incompatibleTokens = ["t", "T"];
23094    };
23095  
23096    // node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js
23097    var ISOTimezoneWithZParser = class extends Parser {
23098      priority = 10;
23099      parse(dateString, token) {
23100        switch (token) {
23101          case "X":
23102            return parseTimezonePattern(
23103              timezonePatterns.basicOptionalMinutes,
23104              dateString
23105            );
23106          case "XX":
23107            return parseTimezonePattern(timezonePatterns.basic, dateString);
23108          case "XXXX":
23109            return parseTimezonePattern(
23110              timezonePatterns.basicOptionalSeconds,
23111              dateString
23112            );
23113          case "XXXXX":
23114            return parseTimezonePattern(
23115              timezonePatterns.extendedOptionalSeconds,
23116              dateString
23117            );
23118          case "XXX":
23119          default:
23120            return parseTimezonePattern(timezonePatterns.extended, dateString);
23121        }
23122      }
23123      set(date, flags, value) {
23124        if (flags.timestampIsSet) return date;
23125        return constructFrom(
23126          date,
23127          date.getTime() - getTimezoneOffsetInMilliseconds(date) - value
23128        );
23129      }
23130      incompatibleTokens = ["t", "T", "x"];
23131    };
23132  
23133    // node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js
23134    var ISOTimezoneParser = class extends Parser {
23135      priority = 10;
23136      parse(dateString, token) {
23137        switch (token) {
23138          case "x":
23139            return parseTimezonePattern(
23140              timezonePatterns.basicOptionalMinutes,
23141              dateString
23142            );
23143          case "xx":
23144            return parseTimezonePattern(timezonePatterns.basic, dateString);
23145          case "xxxx":
23146            return parseTimezonePattern(
23147              timezonePatterns.basicOptionalSeconds,
23148              dateString
23149            );
23150          case "xxxxx":
23151            return parseTimezonePattern(
23152              timezonePatterns.extendedOptionalSeconds,
23153              dateString
23154            );
23155          case "xxx":
23156          default:
23157            return parseTimezonePattern(timezonePatterns.extended, dateString);
23158        }
23159      }
23160      set(date, flags, value) {
23161        if (flags.timestampIsSet) return date;
23162        return constructFrom(
23163          date,
23164          date.getTime() - getTimezoneOffsetInMilliseconds(date) - value
23165        );
23166      }
23167      incompatibleTokens = ["t", "T", "X"];
23168    };
23169  
23170    // node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js
23171    var TimestampSecondsParser = class extends Parser {
23172      priority = 40;
23173      parse(dateString) {
23174        return parseAnyDigitsSigned(dateString);
23175      }
23176      set(date, _flags, value) {
23177        return [constructFrom(date, value * 1e3), { timestampIsSet: true }];
23178      }
23179      incompatibleTokens = "*";
23180    };
23181  
23182    // node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js
23183    var TimestampMillisecondsParser = class extends Parser {
23184      priority = 20;
23185      parse(dateString) {
23186        return parseAnyDigitsSigned(dateString);
23187      }
23188      set(date, _flags, value) {
23189        return [constructFrom(date, value), { timestampIsSet: true }];
23190      }
23191      incompatibleTokens = "*";
23192    };
23193  
23194    // node_modules/date-fns/parse/_lib/parsers.js
23195    var parsers = {
23196      G: new EraParser(),
23197      y: new YearParser(),
23198      Y: new LocalWeekYearParser(),
23199      R: new ISOWeekYearParser(),
23200      u: new ExtendedYearParser(),
23201      Q: new QuarterParser(),
23202      q: new StandAloneQuarterParser(),
23203      M: new MonthParser(),
23204      L: new StandAloneMonthParser(),
23205      w: new LocalWeekParser(),
23206      I: new ISOWeekParser(),
23207      d: new DateParser(),
23208      D: new DayOfYearParser(),
23209      E: new DayParser(),
23210      e: new LocalDayParser(),
23211      c: new StandAloneLocalDayParser(),
23212      i: new ISODayParser(),
23213      a: new AMPMParser(),
23214      b: new AMPMMidnightParser(),
23215      B: new DayPeriodParser(),
23216      h: new Hour1to12Parser(),
23217      H: new Hour0to23Parser(),
23218      K: new Hour0To11Parser(),
23219      k: new Hour1To24Parser(),
23220      m: new MinuteParser(),
23221      s: new SecondParser(),
23222      S: new FractionOfSecondParser(),
23223      X: new ISOTimezoneWithZParser(),
23224      x: new ISOTimezoneParser(),
23225      t: new TimestampSecondsParser(),
23226      T: new TimestampMillisecondsParser()
23227    };
23228  
23229    // node_modules/date-fns/parse.js
23230    var formattingTokensRegExp2 = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
23231    var longFormattingTokensRegExp2 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;
23232    var escapedStringRegExp2 = /^'([^]*?)'?$/;
23233    var doubleQuoteRegExp2 = /''/g;
23234    var notWhitespaceRegExp = /\S/;
23235    var unescapedLatinCharacterRegExp2 = /[a-zA-Z]/;
23236    function parse(dateStr, formatStr, referenceDate, options) {
23237      const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);
23238      const defaultOptions2 = getDefaultOptions2();
23239      const locale = options?.locale ?? defaultOptions2.locale ?? enUS;
23240      const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1;
23241      const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0;
23242      if (!formatStr)
23243        return dateStr ? invalidDate() : toDate(referenceDate, options?.in);
23244      const subFnOptions = {
23245        firstWeekContainsDate,
23246        weekStartsOn,
23247        locale
23248      };
23249      const setters = [new DateTimezoneSetter(options?.in, referenceDate)];
23250      const tokens = formatStr.match(longFormattingTokensRegExp2).map((substring) => {
23251        const firstCharacter = substring[0];
23252        if (firstCharacter in longFormatters) {
23253          const longFormatter = longFormatters[firstCharacter];
23254          return longFormatter(substring, locale.formatLong);
23255        }
23256        return substring;
23257      }).join("").match(formattingTokensRegExp2);
23258      const usedTokens = [];
23259      for (let token of tokens) {
23260        if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {
23261          warnOrThrowProtectedError(token, formatStr, dateStr);
23262        }
23263        if (!options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
23264          warnOrThrowProtectedError(token, formatStr, dateStr);
23265        }
23266        const firstCharacter = token[0];
23267        const parser = parsers[firstCharacter];
23268        if (parser) {
23269          const { incompatibleTokens } = parser;
23270          if (Array.isArray(incompatibleTokens)) {
23271            const incompatibleToken = usedTokens.find(
23272              (usedToken) => incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter
23273            );
23274            if (incompatibleToken) {
23275              throw new RangeError(
23276                `The format string mustn't contain \`$incompatibleToken.fullToken}\` and \`$token}\` at the same time`
23277              );
23278            }
23279          } else if (parser.incompatibleTokens === "*" && usedTokens.length > 0) {
23280            throw new RangeError(
23281              `The format string mustn't contain \`$token}\` and any other token at the same time`
23282            );
23283          }
23284          usedTokens.push({ token: firstCharacter, fullToken: token });
23285          const parseResult = parser.run(
23286            dateStr,
23287            token,
23288            locale.match,
23289            subFnOptions
23290          );
23291          if (!parseResult) {
23292            return invalidDate();
23293          }
23294          setters.push(parseResult.setter);
23295          dateStr = parseResult.rest;
23296        } else {
23297          if (firstCharacter.match(unescapedLatinCharacterRegExp2)) {
23298            throw new RangeError(
23299              "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`"
23300            );
23301          }
23302          if (token === "''") {
23303            token = "'";
23304          } else if (firstCharacter === "'") {
23305            token = cleanEscapedString2(token);
23306          }
23307          if (dateStr.indexOf(token) === 0) {
23308            dateStr = dateStr.slice(token.length);
23309          } else {
23310            return invalidDate();
23311          }
23312        }
23313      }
23314      if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {
23315        return invalidDate();
23316      }
23317      const uniquePrioritySetters = setters.map((setter) => setter.priority).sort((a2, b2) => b2 - a2).filter((priority, index2, array) => array.indexOf(priority) === index2).map(
23318        (priority) => setters.filter((setter) => setter.priority === priority).sort((a2, b2) => b2.subPriority - a2.subPriority)
23319      ).map((setterArray) => setterArray[0]);
23320      let date = toDate(referenceDate, options?.in);
23321      if (isNaN(+date)) return invalidDate();
23322      const flags = {};
23323      for (const setter of uniquePrioritySetters) {
23324        if (!setter.validate(date, subFnOptions)) {
23325          return invalidDate();
23326        }
23327        const result = setter.set(date, flags, subFnOptions);
23328        if (Array.isArray(result)) {
23329          date = result[0];
23330          Object.assign(flags, result[1]);
23331        } else {
23332          date = result;
23333        }
23334      }
23335      return date;
23336    }
23337    function cleanEscapedString2(input) {
23338      return input.match(escapedStringRegExp2)[1].replace(doubleQuoteRegExp2, "'");
23339    }
23340  
23341    // node_modules/date-fns/isSameMonth.js
23342    function isSameMonth(laterDate, earlierDate, options) {
23343      const [laterDate_, earlierDate_] = normalizeDates(
23344        options?.in,
23345        laterDate,
23346        earlierDate
23347      );
23348      return laterDate_.getFullYear() === earlierDate_.getFullYear() && laterDate_.getMonth() === earlierDate_.getMonth();
23349    }
23350  
23351    // node_modules/date-fns/isSameYear.js
23352    function isSameYear(laterDate, earlierDate, options) {
23353      const [laterDate_, earlierDate_] = normalizeDates(
23354        options?.in,
23355        laterDate,
23356        earlierDate
23357      );
23358      return laterDate_.getFullYear() === earlierDate_.getFullYear();
23359    }
23360  
23361    // node_modules/date-fns/subDays.js
23362    function subDays(date, amount, options) {
23363      return addDays(date, -amount, options);
23364    }
23365  
23366    // node_modules/date-fns/parseISO.js
23367    function parseISO(argument, options) {
23368      const invalidDate = () => constructFrom(options?.in, NaN);
23369      const additionalDigits = options?.additionalDigits ?? 2;
23370      const dateStrings = splitDateString(argument);
23371      let date;
23372      if (dateStrings.date) {
23373        const parseYearResult = parseYear(dateStrings.date, additionalDigits);
23374        date = parseDate(parseYearResult.restDateString, parseYearResult.year);
23375      }
23376      if (!date || isNaN(+date)) return invalidDate();
23377      const timestamp = +date;
23378      let time = 0;
23379      let offset4;
23380      if (dateStrings.time) {
23381        time = parseTime(dateStrings.time);
23382        if (isNaN(time)) return invalidDate();
23383      }
23384      if (dateStrings.timezone) {
23385        offset4 = parseTimezone(dateStrings.timezone);
23386        if (isNaN(offset4)) return invalidDate();
23387      } else {
23388        const tmpDate = new Date(timestamp + time);
23389        const result = toDate(0, options?.in);
23390        result.setFullYear(
23391          tmpDate.getUTCFullYear(),
23392          tmpDate.getUTCMonth(),
23393          tmpDate.getUTCDate()
23394        );
23395        result.setHours(
23396          tmpDate.getUTCHours(),
23397          tmpDate.getUTCMinutes(),
23398          tmpDate.getUTCSeconds(),
23399          tmpDate.getUTCMilliseconds()
23400        );
23401        return result;
23402      }
23403      return toDate(timestamp + time + offset4, options?.in);
23404    }
23405    var patterns = {
23406      dateTimeDelimiter: /[T ]/,
23407      timeZoneDelimiter: /[Z ]/i,
23408      timezone: /([Z+-].*)$/
23409    };
23410    var dateRegex = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/;
23411    var timeRegex = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/;
23412    var timezoneRegex = /^([+-])(\d{2})(?::?(\d{2}))?$/;
23413    function splitDateString(dateString) {
23414      const dateStrings = {};
23415      const array = dateString.split(patterns.dateTimeDelimiter);
23416      let timeString;
23417      if (array.length > 2) {
23418        return dateStrings;
23419      }
23420      if (/:/.test(array[0])) {
23421        timeString = array[0];
23422      } else {
23423        dateStrings.date = array[0];
23424        timeString = array[1];
23425        if (patterns.timeZoneDelimiter.test(dateStrings.date)) {
23426          dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];
23427          timeString = dateString.substr(
23428            dateStrings.date.length,
23429            dateString.length
23430          );
23431        }
23432      }
23433      if (timeString) {
23434        const token = patterns.timezone.exec(timeString);
23435        if (token) {
23436          dateStrings.time = timeString.replace(token[1], "");
23437          dateStrings.timezone = token[1];
23438        } else {
23439          dateStrings.time = timeString;
23440        }
23441      }
23442      return dateStrings;
23443    }
23444    function parseYear(dateString, additionalDigits) {
23445      const regex = new RegExp(
23446        "^(?:(\\d{4}|[+-]\\d{" + (4 + additionalDigits) + "})|(\\d{2}|[+-]\\d{" + (2 + additionalDigits) + "})$)"
23447      );
23448      const captures = dateString.match(regex);
23449      if (!captures) return { year: NaN, restDateString: "" };
23450      const year = captures[1] ? parseInt(captures[1]) : null;
23451      const century = captures[2] ? parseInt(captures[2]) : null;
23452      return {
23453        year: century === null ? year : century * 100,
23454        restDateString: dateString.slice((captures[1] || captures[2]).length)
23455      };
23456    }
23457    function parseDate(dateString, year) {
23458      if (year === null) return /* @__PURE__ */ new Date(NaN);
23459      const captures = dateString.match(dateRegex);
23460      if (!captures) return /* @__PURE__ */ new Date(NaN);
23461      const isWeekDate = !!captures[4];
23462      const dayOfYear = parseDateUnit(captures[1]);
23463      const month = parseDateUnit(captures[2]) - 1;
23464      const day = parseDateUnit(captures[3]);
23465      const week = parseDateUnit(captures[4]);
23466      const dayOfWeek = parseDateUnit(captures[5]) - 1;
23467      if (isWeekDate) {
23468        if (!validateWeekDate(year, week, dayOfWeek)) {
23469          return /* @__PURE__ */ new Date(NaN);
23470        }
23471        return dayOfISOWeekYear(year, week, dayOfWeek);
23472      } else {
23473        const date = /* @__PURE__ */ new Date(0);
23474        if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {
23475          return /* @__PURE__ */ new Date(NaN);
23476        }
23477        date.setUTCFullYear(year, month, Math.max(dayOfYear, day));
23478        return date;
23479      }
23480    }
23481    function parseDateUnit(value) {
23482      return value ? parseInt(value) : 1;
23483    }
23484    function parseTime(timeString) {
23485      const captures = timeString.match(timeRegex);
23486      if (!captures) return NaN;
23487      const hours = parseTimeUnit(captures[1]);
23488      const minutes = parseTimeUnit(captures[2]);
23489      const seconds = parseTimeUnit(captures[3]);
23490      if (!validateTime(hours, minutes, seconds)) {
23491        return NaN;
23492      }
23493      return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1e3;
23494    }
23495    function parseTimeUnit(value) {
23496      return value && parseFloat(value.replace(",", ".")) || 0;
23497    }
23498    function parseTimezone(timezoneString) {
23499      if (timezoneString === "Z") return 0;
23500      const captures = timezoneString.match(timezoneRegex);
23501      if (!captures) return 0;
23502      const sign = captures[1] === "+" ? -1 : 1;
23503      const hours = parseInt(captures[2]);
23504      const minutes = captures[3] && parseInt(captures[3]) || 0;
23505      if (!validateTimezone(hours, minutes)) {
23506        return NaN;
23507      }
23508      return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);
23509    }
23510    function dayOfISOWeekYear(isoWeekYear, week, day) {
23511      const date = /* @__PURE__ */ new Date(0);
23512      date.setUTCFullYear(isoWeekYear, 0, 4);
23513      const fourthOfJanuaryDay = date.getUTCDay() || 7;
23514      const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;
23515      date.setUTCDate(date.getUTCDate() + diff);
23516      return date;
23517    }
23518    var daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
23519    function isLeapYearIndex2(year) {
23520      return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
23521    }
23522    function validateDate(year, month, date) {
23523      return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex2(year) ? 29 : 28));
23524    }
23525    function validateDayOfYearDate(year, dayOfYear) {
23526      return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex2(year) ? 366 : 365);
23527    }
23528    function validateWeekDate(_year, week, day) {
23529      return week >= 1 && week <= 53 && day >= 0 && day <= 6;
23530    }
23531    function validateTime(hours, minutes, seconds) {
23532      if (hours === 24) {
23533        return minutes === 0 && seconds === 0;
23534      }
23535      return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;
23536    }
23537    function validateTimezone(_hours, minutes) {
23538      return minutes >= 0 && minutes <= 59;
23539    }
23540  
23541    // node_modules/date-fns/setMonth.js
23542    function setMonth(date, month, options) {
23543      const _date = toDate(date, options?.in);
23544      const year = _date.getFullYear();
23545      const day = _date.getDate();
23546      const midMonth = constructFrom(options?.in || date, 0);
23547      midMonth.setFullYear(year, month, 15);
23548      midMonth.setHours(0, 0, 0, 0);
23549      const daysInMonth = getDaysInMonth(midMonth);
23550      _date.setMonth(month, Math.min(day, daysInMonth));
23551      return _date;
23552    }
23553  
23554    // node_modules/date-fns/setYear.js
23555    function setYear(date, year, options) {
23556      const date_ = toDate(date, options?.in);
23557      if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);
23558      date_.setFullYear(year);
23559      return date_;
23560    }
23561  
23562    // node_modules/date-fns/subMonths.js
23563    function subMonths(date, amount, options) {
23564      return addMonths(date, -amount, options);
23565    }
23566  
23567    // node_modules/date-fns/subWeeks.js
23568    function subWeeks(date, amount, options) {
23569      return addWeeks(date, -amount, options);
23570    }
23571  
23572    // node_modules/date-fns/subYears.js
23573    function subYears(date, amount, options) {
23574      return addYears(date, -amount, options);
23575    }
23576  
23577    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js
23578    var FIVE_WEEKS = 5;
23579    var FOUR_WEEKS = 4;
23580    function getBroadcastWeeksInMonth(month, dateLib) {
23581      const firstDayOfMonth = dateLib.startOfMonth(month);
23582      const firstDayOfWeek = firstDayOfMonth.getDay() > 0 ? firstDayOfMonth.getDay() : 7;
23583      const broadcastStartDate = dateLib.addDays(month, -firstDayOfWeek + 1);
23584      const lastDateOfLastWeek = dateLib.addDays(broadcastStartDate, FIVE_WEEKS * 7 - 1);
23585      const numberOfWeeks = dateLib.getMonth(month) === dateLib.getMonth(lastDateOfLastWeek) ? FIVE_WEEKS : FOUR_WEEKS;
23586      return numberOfWeeks;
23587    }
23588  
23589    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js
23590    function startOfBroadcastWeek(date, dateLib) {
23591      const firstOfMonth = dateLib.startOfMonth(date);
23592      const dayOfWeek = firstOfMonth.getDay();
23593      if (dayOfWeek === 1) {
23594        return firstOfMonth;
23595      } else if (dayOfWeek === 0) {
23596        return dateLib.addDays(firstOfMonth, -1 * 6);
23597      } else {
23598        return dateLib.addDays(firstOfMonth, -1 * (dayOfWeek - 1));
23599      }
23600    }
23601  
23602    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js
23603    function endOfBroadcastWeek(date, dateLib) {
23604      const startDate = startOfBroadcastWeek(date, dateLib);
23605      const numberOfWeeks = getBroadcastWeeksInMonth(date, dateLib);
23606      const endDate = dateLib.addDays(startDate, numberOfWeeks * 7 - 1);
23607      return endDate;
23608    }
23609  
23610    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/locale/en-US.js
23611    var enUS2 = {
23612      ...enUS,
23613      labels: {
23614        labelDayButton: (date, modifiers, options, dateLib) => {
23615          let formatDate2;
23616          if (dateLib && typeof dateLib.format === "function") {
23617            formatDate2 = dateLib.format.bind(dateLib);
23618          } else {
23619            formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
23620          }
23621          let label = formatDate2(date, "PPPP");
23622          if (modifiers.today)
23623            label = `Today, $label}`;
23624          if (modifiers.selected)
23625            label = `$label}, selected`;
23626          return label;
23627        },
23628        labelMonthDropdown: "Choose the Month",
23629        labelNext: "Go to the Next Month",
23630        labelPrevious: "Go to the Previous Month",
23631        labelWeekNumber: (weekNumber) => `Week $weekNumber}`,
23632        labelYearDropdown: "Choose the Year",
23633        labelGrid: (date, options, dateLib) => {
23634          let formatDate2;
23635          if (dateLib && typeof dateLib.format === "function") {
23636            formatDate2 = dateLib.format.bind(dateLib);
23637          } else {
23638            formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
23639          }
23640          return formatDate2(date, "LLLL yyyy");
23641        },
23642        labelGridcell: (date, modifiers, options, dateLib) => {
23643          let formatDate2;
23644          if (dateLib && typeof dateLib.format === "function") {
23645            formatDate2 = dateLib.format.bind(dateLib);
23646          } else {
23647            formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
23648          }
23649          let label = formatDate2(date, "PPPP");
23650          if (modifiers?.today) {
23651            label = `Today, $label}`;
23652          }
23653          return label;
23654        },
23655        labelNav: "Navigation bar",
23656        labelWeekNumberHeader: "Week Number",
23657        labelWeekday: (date, options, dateLib) => {
23658          let formatDate2;
23659          if (dateLib && typeof dateLib.format === "function") {
23660            formatDate2 = dateLib.format.bind(dateLib);
23661          } else {
23662            formatDate2 = (d2, pattern) => format(d2, pattern, { locale: enUS, ...options });
23663          }
23664          return formatDate2(date, "cccc");
23665        }
23666      }
23667    };
23668  
23669    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/DateLib.js
23670    var DateLib = class _DateLib {
23671      /**
23672       * Creates an instance of `DateLib`.
23673       *
23674       * @param options Configuration options for the date library.
23675       * @param overrides Custom overrides for the date library functions.
23676       */
23677      constructor(options, overrides) {
23678        this.today = () => {
23679          if (this.overrides?.today) {
23680            return this.overrides.today();
23681          }
23682          if (this.options.timeZone) {
23683            return TZDate.tz(this.options.timeZone);
23684          }
23685          const DateCtor = this.options.Date ?? Date;
23686          return new DateCtor();
23687        };
23688        this.newDate = (year, monthIndex, date) => {
23689          if (this.overrides?.newDate) {
23690            return this.overrides.newDate(year, monthIndex, date);
23691          }
23692          if (this.options.timeZone) {
23693            return new TZDate(year, monthIndex, date, this.options.timeZone);
23694          }
23695          return new Date(year, monthIndex, date);
23696        };
23697        this.addDays = (date, amount) => {
23698          return this.overrides?.addDays ? this.overrides.addDays(date, amount) : addDays(date, amount);
23699        };
23700        this.addMonths = (date, amount) => {
23701          return this.overrides?.addMonths ? this.overrides.addMonths(date, amount) : addMonths(date, amount);
23702        };
23703        this.addWeeks = (date, amount) => {
23704          return this.overrides?.addWeeks ? this.overrides.addWeeks(date, amount) : addWeeks(date, amount);
23705        };
23706        this.addYears = (date, amount) => {
23707          return this.overrides?.addYears ? this.overrides.addYears(date, amount) : addYears(date, amount);
23708        };
23709        this.differenceInCalendarDays = (dateLeft, dateRight) => {
23710          return this.overrides?.differenceInCalendarDays ? this.overrides.differenceInCalendarDays(dateLeft, dateRight) : differenceInCalendarDays(dateLeft, dateRight);
23711        };
23712        this.differenceInCalendarMonths = (dateLeft, dateRight) => {
23713          return this.overrides?.differenceInCalendarMonths ? this.overrides.differenceInCalendarMonths(dateLeft, dateRight) : differenceInCalendarMonths(dateLeft, dateRight);
23714        };
23715        this.eachMonthOfInterval = (interval) => {
23716          return this.overrides?.eachMonthOfInterval ? this.overrides.eachMonthOfInterval(interval) : eachMonthOfInterval(interval);
23717        };
23718        this.eachYearOfInterval = (interval) => {
23719          const years = this.overrides?.eachYearOfInterval ? this.overrides.eachYearOfInterval(interval) : eachYearOfInterval(interval);
23720          const uniqueYears = new Set(years.map((d2) => this.getYear(d2)));
23721          if (uniqueYears.size === years.length) {
23722            return years;
23723          }
23724          const yearsArray = [];
23725          uniqueYears.forEach((y2) => {
23726            yearsArray.push(new Date(y2, 0, 1));
23727          });
23728          return yearsArray;
23729        };
23730        this.endOfBroadcastWeek = (date) => {
23731          return this.overrides?.endOfBroadcastWeek ? this.overrides.endOfBroadcastWeek(date) : endOfBroadcastWeek(date, this);
23732        };
23733        this.endOfISOWeek = (date) => {
23734          return this.overrides?.endOfISOWeek ? this.overrides.endOfISOWeek(date) : endOfISOWeek(date);
23735        };
23736        this.endOfMonth = (date) => {
23737          return this.overrides?.endOfMonth ? this.overrides.endOfMonth(date) : endOfMonth(date);
23738        };
23739        this.endOfWeek = (date, options2) => {
23740          return this.overrides?.endOfWeek ? this.overrides.endOfWeek(date, options2) : endOfWeek(date, this.options);
23741        };
23742        this.endOfYear = (date) => {
23743          return this.overrides?.endOfYear ? this.overrides.endOfYear(date) : endOfYear(date);
23744        };
23745        this.format = (date, formatStr, _options) => {
23746          const formatted = this.overrides?.format ? this.overrides.format(date, formatStr, this.options) : format(date, formatStr, this.options);
23747          if (this.options.numerals && this.options.numerals !== "latn") {
23748            return this.replaceDigits(formatted);
23749          }
23750          return formatted;
23751        };
23752        this.getISOWeek = (date) => {
23753          return this.overrides?.getISOWeek ? this.overrides.getISOWeek(date) : getISOWeek(date);
23754        };
23755        this.getMonth = (date, _options) => {
23756          return this.overrides?.getMonth ? this.overrides.getMonth(date, this.options) : getMonth(date, this.options);
23757        };
23758        this.getYear = (date, _options) => {
23759          return this.overrides?.getYear ? this.overrides.getYear(date, this.options) : getYear(date, this.options);
23760        };
23761        this.getWeek = (date, _options) => {
23762          return this.overrides?.getWeek ? this.overrides.getWeek(date, this.options) : getWeek(date, this.options);
23763        };
23764        this.isAfter = (date, dateToCompare) => {
23765          return this.overrides?.isAfter ? this.overrides.isAfter(date, dateToCompare) : isAfter(date, dateToCompare);
23766        };
23767        this.isBefore = (date, dateToCompare) => {
23768          return this.overrides?.isBefore ? this.overrides.isBefore(date, dateToCompare) : isBefore(date, dateToCompare);
23769        };
23770        this.isDate = (value) => {
23771          return this.overrides?.isDate ? this.overrides.isDate(value) : isDate(value);
23772        };
23773        this.isSameDay = (dateLeft, dateRight) => {
23774          return this.overrides?.isSameDay ? this.overrides.isSameDay(dateLeft, dateRight) : isSameDay(dateLeft, dateRight);
23775        };
23776        this.isSameMonth = (dateLeft, dateRight) => {
23777          return this.overrides?.isSameMonth ? this.overrides.isSameMonth(dateLeft, dateRight) : isSameMonth(dateLeft, dateRight);
23778        };
23779        this.isSameYear = (dateLeft, dateRight) => {
23780          return this.overrides?.isSameYear ? this.overrides.isSameYear(dateLeft, dateRight) : isSameYear(dateLeft, dateRight);
23781        };
23782        this.max = (dates) => {
23783          return this.overrides?.max ? this.overrides.max(dates) : max2(dates);
23784        };
23785        this.min = (dates) => {
23786          return this.overrides?.min ? this.overrides.min(dates) : min2(dates);
23787        };
23788        this.setMonth = (date, month) => {
23789          return this.overrides?.setMonth ? this.overrides.setMonth(date, month) : setMonth(date, month);
23790        };
23791        this.setYear = (date, year) => {
23792          return this.overrides?.setYear ? this.overrides.setYear(date, year) : setYear(date, year);
23793        };
23794        this.startOfBroadcastWeek = (date, _dateLib) => {
23795          return this.overrides?.startOfBroadcastWeek ? this.overrides.startOfBroadcastWeek(date, this) : startOfBroadcastWeek(date, this);
23796        };
23797        this.startOfDay = (date) => {
23798          return this.overrides?.startOfDay ? this.overrides.startOfDay(date) : startOfDay(date);
23799        };
23800        this.startOfISOWeek = (date) => {
23801          return this.overrides?.startOfISOWeek ? this.overrides.startOfISOWeek(date) : startOfISOWeek(date);
23802        };
23803        this.startOfMonth = (date) => {
23804          return this.overrides?.startOfMonth ? this.overrides.startOfMonth(date) : startOfMonth(date);
23805        };
23806        this.startOfWeek = (date, _options) => {
23807          return this.overrides?.startOfWeek ? this.overrides.startOfWeek(date, this.options) : startOfWeek(date, this.options);
23808        };
23809        this.startOfYear = (date) => {
23810          return this.overrides?.startOfYear ? this.overrides.startOfYear(date) : startOfYear(date);
23811        };
23812        this.options = { locale: enUS2, ...options };
23813        this.overrides = overrides;
23814      }
23815      /**
23816       * Generates a mapping of Arabic digits (0-9) to the target numbering system
23817       * digits.
23818       *
23819       * @since 9.5.0
23820       * @returns A record mapping Arabic digits to the target numerals.
23821       */
23822      getDigitMap() {
23823        const { numerals = "latn" } = this.options;
23824        const formatter = new Intl.NumberFormat("en-US", {
23825          numberingSystem: numerals
23826        });
23827        const digitMap = {};
23828        for (let i2 = 0; i2 < 10; i2++) {
23829          digitMap[i2.toString()] = formatter.format(i2);
23830        }
23831        return digitMap;
23832      }
23833      /**
23834       * Replaces Arabic digits in a string with the target numbering system digits.
23835       *
23836       * @since 9.5.0
23837       * @param input The string containing Arabic digits.
23838       * @returns The string with digits replaced.
23839       */
23840      replaceDigits(input) {
23841        const digitMap = this.getDigitMap();
23842        return input.replace(/\d/g, (digit) => digitMap[digit] || digit);
23843      }
23844      /**
23845       * Formats a number using the configured numbering system.
23846       *
23847       * @since 9.5.0
23848       * @param value The number to format.
23849       * @returns The formatted number as a string.
23850       */
23851      formatNumber(value) {
23852        return this.replaceDigits(value.toString());
23853      }
23854      /**
23855       * Returns the preferred ordering for month and year labels for the current
23856       * locale.
23857       */
23858      getMonthYearOrder() {
23859        const code = this.options.locale?.code;
23860        if (!code) {
23861          return "month-first";
23862        }
23863        return _DateLib.yearFirstLocales.has(code) ? "year-first" : "month-first";
23864      }
23865      /**
23866       * Formats the month/year pair respecting locale conventions.
23867       *
23868       * @since 9.11.0
23869       */
23870      formatMonthYear(date) {
23871        const { locale, timeZone, numerals } = this.options;
23872        const localeCode = locale?.code;
23873        if (localeCode && _DateLib.yearFirstLocales.has(localeCode)) {
23874          try {
23875            const intl = new Intl.DateTimeFormat(localeCode, {
23876              month: "long",
23877              year: "numeric",
23878              timeZone,
23879              numberingSystem: numerals
23880            });
23881            const formatted = intl.format(date);
23882            return formatted;
23883          } catch {
23884          }
23885        }
23886        const pattern = this.getMonthYearOrder() === "year-first" ? "y LLLL" : "LLLL y";
23887        return this.format(date, pattern);
23888      }
23889    };
23890    DateLib.yearFirstLocales = /* @__PURE__ */ new Set([
23891      "eu",
23892      "hu",
23893      "ja",
23894      "ja-Hira",
23895      "ja-JP",
23896      "ko",
23897      "ko-KR",
23898      "lt",
23899      "lt-LT",
23900      "lv",
23901      "lv-LV",
23902      "mn",
23903      "mn-MN",
23904      "zh",
23905      "zh-CN",
23906      "zh-HK",
23907      "zh-TW"
23908    ]);
23909    var defaultDateLib = new DateLib();
23910  
23911    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js
23912    var CalendarDay = class {
23913      constructor(date, displayMonth, dateLib = defaultDateLib) {
23914        this.date = date;
23915        this.displayMonth = displayMonth;
23916        this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));
23917        this.dateLib = dateLib;
23918        this.isoDate = dateLib.format(date, "yyyy-MM-dd");
23919        this.displayMonthId = dateLib.format(displayMonth, "yyyy-MM");
23920        this.dateMonthId = dateLib.format(date, "yyyy-MM");
23921      }
23922      /**
23923       * Checks if this day is equal to another `CalendarDay`, considering both the
23924       * date and the displayed month.
23925       *
23926       * @param day The `CalendarDay` to compare with.
23927       * @returns `true` if the days are equal, otherwise `false`.
23928       */
23929      isEqualTo(day) {
23930        return this.dateLib.isSameDay(day.date, this.date) && this.dateLib.isSameMonth(day.displayMonth, this.displayMonth);
23931      }
23932    };
23933  
23934    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js
23935    var CalendarMonth = class {
23936      constructor(month, weeks) {
23937        this.date = month;
23938        this.weeks = weeks;
23939      }
23940    };
23941  
23942    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js
23943    var CalendarWeek = class {
23944      constructor(weekNumber, days) {
23945        this.days = days;
23946        this.weekNumber = weekNumber;
23947      }
23948    };
23949  
23950    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/custom-components.js
23951    var custom_components_exports = {};
23952    __export(custom_components_exports, {
23953      CaptionLabel: () => CaptionLabel,
23954      Chevron: () => Chevron,
23955      Day: () => Day,
23956      DayButton: () => DayButton,
23957      Dropdown: () => Dropdown,
23958      DropdownNav: () => DropdownNav,
23959      Footer: () => Footer,
23960      Month: () => Month,
23961      MonthCaption: () => MonthCaption,
23962      MonthGrid: () => MonthGrid,
23963      Months: () => Months,
23964      MonthsDropdown: () => MonthsDropdown,
23965      Nav: () => Nav,
23966      NextMonthButton: () => NextMonthButton,
23967      Option: () => Option,
23968      PreviousMonthButton: () => PreviousMonthButton,
23969      Root: () => Root3,
23970      Select: () => Select,
23971      Week: () => Week,
23972      WeekNumber: () => WeekNumber,
23973      WeekNumberHeader: () => WeekNumberHeader,
23974      Weekday: () => Weekday,
23975      Weekdays: () => Weekdays,
23976      Weeks: () => Weeks,
23977      YearsDropdown: () => YearsDropdown
23978    });
23979  
23980    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js
23981    var import_react6 = __toESM(require_react(), 1);
23982    function CaptionLabel(props) {
23983      return import_react6.default.createElement("span", { ...props });
23984    }
23985  
23986    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Chevron.js
23987    var import_react7 = __toESM(require_react(), 1);
23988    function Chevron(props) {
23989      const { size: size4 = 24, orientation = "left", className, style } = props;
23990      return import_react7.default.createElement(
23991        "svg",
23992        { className, style, width: size4, height: size4, viewBox: "0 0 24 24" },
23993        orientation === "up" && import_react7.default.createElement("polygon", { points: "6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28" }),
23994        orientation === "down" && import_react7.default.createElement("polygon", { points: "6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72" }),
23995        orientation === "left" && import_react7.default.createElement("polygon", { points: "16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20" }),
23996        orientation === "right" && import_react7.default.createElement("polygon", { points: "8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20" })
23997      );
23998    }
23999  
24000    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Day.js
24001    var import_react8 = __toESM(require_react(), 1);
24002    function Day(props) {
24003      const { day, modifiers, ...tdProps } = props;
24004      return import_react8.default.createElement("td", { ...tdProps });
24005    }
24006  
24007    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/DayButton.js
24008    var import_react9 = __toESM(require_react(), 1);
24009    function DayButton(props) {
24010      const { day, modifiers, ...buttonProps } = props;
24011      const ref = import_react9.default.useRef(null);
24012      import_react9.default.useEffect(() => {
24013        if (modifiers.focused)
24014          ref.current?.focus();
24015      }, [modifiers.focused]);
24016      return import_react9.default.createElement("button", { ref, ...buttonProps });
24017    }
24018  
24019    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Dropdown.js
24020    var import_react11 = __toESM(require_react(), 1);
24021  
24022    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/UI.js
24023    var UI;
24024    (function(UI2) {
24025      UI2["Root"] = "root";
24026      UI2["Chevron"] = "chevron";
24027      UI2["Day"] = "day";
24028      UI2["DayButton"] = "day_button";
24029      UI2["CaptionLabel"] = "caption_label";
24030      UI2["Dropdowns"] = "dropdowns";
24031      UI2["Dropdown"] = "dropdown";
24032      UI2["DropdownRoot"] = "dropdown_root";
24033      UI2["Footer"] = "footer";
24034      UI2["MonthGrid"] = "month_grid";
24035      UI2["MonthCaption"] = "month_caption";
24036      UI2["MonthsDropdown"] = "months_dropdown";
24037      UI2["Month"] = "month";
24038      UI2["Months"] = "months";
24039      UI2["Nav"] = "nav";
24040      UI2["NextMonthButton"] = "button_next";
24041      UI2["PreviousMonthButton"] = "button_previous";
24042      UI2["Week"] = "week";
24043      UI2["Weeks"] = "weeks";
24044      UI2["Weekday"] = "weekday";
24045      UI2["Weekdays"] = "weekdays";
24046      UI2["WeekNumber"] = "week_number";
24047      UI2["WeekNumberHeader"] = "week_number_header";
24048      UI2["YearsDropdown"] = "years_dropdown";
24049    })(UI || (UI = {}));
24050    var DayFlag;
24051    (function(DayFlag2) {
24052      DayFlag2["disabled"] = "disabled";
24053      DayFlag2["hidden"] = "hidden";
24054      DayFlag2["outside"] = "outside";
24055      DayFlag2["focused"] = "focused";
24056      DayFlag2["today"] = "today";
24057    })(DayFlag || (DayFlag = {}));
24058    var SelectionState;
24059    (function(SelectionState2) {
24060      SelectionState2["range_end"] = "range_end";
24061      SelectionState2["range_middle"] = "range_middle";
24062      SelectionState2["range_start"] = "range_start";
24063      SelectionState2["selected"] = "selected";
24064    })(SelectionState || (SelectionState = {}));
24065    var Animation;
24066    (function(Animation2) {
24067      Animation2["weeks_before_enter"] = "weeks_before_enter";
24068      Animation2["weeks_before_exit"] = "weeks_before_exit";
24069      Animation2["weeks_after_enter"] = "weeks_after_enter";
24070      Animation2["weeks_after_exit"] = "weeks_after_exit";
24071      Animation2["caption_after_enter"] = "caption_after_enter";
24072      Animation2["caption_after_exit"] = "caption_after_exit";
24073      Animation2["caption_before_enter"] = "caption_before_enter";
24074      Animation2["caption_before_exit"] = "caption_before_exit";
24075    })(Animation || (Animation = {}));
24076  
24077    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useDayPicker.js
24078    var import_react10 = __toESM(require_react(), 1);
24079    var dayPickerContext = (0, import_react10.createContext)(void 0);
24080    function useDayPicker() {
24081      const context = (0, import_react10.useContext)(dayPickerContext);
24082      if (context === void 0) {
24083        throw new Error("useDayPicker() must be used within a custom component.");
24084      }
24085      return context;
24086    }
24087  
24088    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Dropdown.js
24089    function Dropdown(props) {
24090      const { options, className, ...selectProps } = props;
24091      const { classNames, components, styles } = useDayPicker();
24092      const cssClassSelect = [classNames[UI.Dropdown], className].join(" ");
24093      const selectedOption = options?.find(({ value }) => value === selectProps.value);
24094      return import_react11.default.createElement(
24095        "span",
24096        { "data-disabled": selectProps.disabled, className: classNames[UI.DropdownRoot], style: styles?.[UI.DropdownRoot] },
24097        import_react11.default.createElement(components.Select, { className: cssClassSelect, ...selectProps }, options?.map(({ value, label, disabled: disabled2 }) => import_react11.default.createElement(components.Option, { key: value, value, disabled: disabled2 }, label))),
24098        import_react11.default.createElement(
24099          "span",
24100          { className: classNames[UI.CaptionLabel], style: styles?.[UI.CaptionLabel], "aria-hidden": true },
24101          selectedOption?.label,
24102          import_react11.default.createElement(components.Chevron, { orientation: "down", size: 18, className: classNames[UI.Chevron], style: styles?.[UI.Chevron] })
24103        )
24104      );
24105    }
24106  
24107    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/DropdownNav.js
24108    var import_react12 = __toESM(require_react(), 1);
24109    function DropdownNav(props) {
24110      return import_react12.default.createElement("div", { ...props });
24111    }
24112  
24113    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Footer.js
24114    var import_react13 = __toESM(require_react(), 1);
24115    function Footer(props) {
24116      return import_react13.default.createElement("div", { ...props });
24117    }
24118  
24119    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Month.js
24120    var import_react14 = __toESM(require_react(), 1);
24121    function Month(props) {
24122      const { calendarMonth, displayIndex, ...divProps } = props;
24123      return import_react14.default.createElement("div", { ...divProps }, props.children);
24124    }
24125  
24126    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/MonthCaption.js
24127    var import_react15 = __toESM(require_react(), 1);
24128    function MonthCaption(props) {
24129      const { calendarMonth, displayIndex, ...divProps } = props;
24130      return import_react15.default.createElement("div", { ...divProps });
24131    }
24132  
24133    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/MonthGrid.js
24134    var import_react16 = __toESM(require_react(), 1);
24135    function MonthGrid(props) {
24136      return import_react16.default.createElement("table", { ...props });
24137    }
24138  
24139    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Months.js
24140    var import_react17 = __toESM(require_react(), 1);
24141    function Months(props) {
24142      return import_react17.default.createElement("div", { ...props });
24143    }
24144  
24145    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js
24146    var import_react18 = __toESM(require_react(), 1);
24147    function MonthsDropdown(props) {
24148      const { components } = useDayPicker();
24149      return import_react18.default.createElement(components.Dropdown, { ...props });
24150    }
24151  
24152    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Nav.js
24153    var import_react19 = __toESM(require_react(), 1);
24154    function Nav(props) {
24155      const { onPreviousClick, onNextClick, previousMonth, nextMonth, ...navProps } = props;
24156      const { components, classNames, styles, labels: { labelPrevious: labelPrevious2, labelNext: labelNext2 } } = useDayPicker();
24157      const handleNextClick = (0, import_react19.useCallback)((e2) => {
24158        if (nextMonth) {
24159          onNextClick?.(e2);
24160        }
24161      }, [nextMonth, onNextClick]);
24162      const handlePreviousClick = (0, import_react19.useCallback)((e2) => {
24163        if (previousMonth) {
24164          onPreviousClick?.(e2);
24165        }
24166      }, [previousMonth, onPreviousClick]);
24167      return import_react19.default.createElement(
24168        "nav",
24169        { ...navProps },
24170        import_react19.default.createElement(
24171          components.PreviousMonthButton,
24172          { type: "button", className: classNames[UI.PreviousMonthButton], style: styles?.[UI.PreviousMonthButton], tabIndex: previousMonth ? void 0 : -1, "aria-disabled": previousMonth ? void 0 : true, "aria-label": labelPrevious2(previousMonth), onClick: handlePreviousClick },
24173          import_react19.default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], style: styles?.[UI.Chevron], orientation: "left" })
24174        ),
24175        import_react19.default.createElement(
24176          components.NextMonthButton,
24177          { type: "button", className: classNames[UI.NextMonthButton], style: styles?.[UI.NextMonthButton], tabIndex: nextMonth ? void 0 : -1, "aria-disabled": nextMonth ? void 0 : true, "aria-label": labelNext2(nextMonth), onClick: handleNextClick },
24178          import_react19.default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, orientation: "right", className: classNames[UI.Chevron], style: styles?.[UI.Chevron] })
24179        )
24180      );
24181    }
24182  
24183    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js
24184    var import_react20 = __toESM(require_react(), 1);
24185    function NextMonthButton(props) {
24186      return import_react20.default.createElement("button", { ...props });
24187    }
24188  
24189    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Option.js
24190    var import_react21 = __toESM(require_react(), 1);
24191    function Option(props) {
24192      return import_react21.default.createElement("option", { ...props });
24193    }
24194  
24195    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js
24196    var import_react22 = __toESM(require_react(), 1);
24197    function PreviousMonthButton(props) {
24198      return import_react22.default.createElement("button", { ...props });
24199    }
24200  
24201    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Root.js
24202    var import_react23 = __toESM(require_react(), 1);
24203    function Root3(props) {
24204      const { rootRef, ...rest } = props;
24205      return import_react23.default.createElement("div", { ...rest, ref: rootRef });
24206    }
24207  
24208    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Select.js
24209    var import_react24 = __toESM(require_react(), 1);
24210    function Select(props) {
24211      return import_react24.default.createElement("select", { ...props });
24212    }
24213  
24214    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Week.js
24215    var import_react25 = __toESM(require_react(), 1);
24216    function Week(props) {
24217      const { week, ...trProps } = props;
24218      return import_react25.default.createElement("tr", { ...trProps });
24219    }
24220  
24221    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Weekday.js
24222    var import_react26 = __toESM(require_react(), 1);
24223    function Weekday(props) {
24224      return import_react26.default.createElement("th", { ...props });
24225    }
24226  
24227    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Weekdays.js
24228    var import_react27 = __toESM(require_react(), 1);
24229    function Weekdays(props) {
24230      return import_react27.default.createElement(
24231        "thead",
24232        { "aria-hidden": true },
24233        import_react27.default.createElement("tr", { ...props })
24234      );
24235    }
24236  
24237    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/WeekNumber.js
24238    var import_react28 = __toESM(require_react(), 1);
24239    function WeekNumber(props) {
24240      const { week, ...thProps } = props;
24241      return import_react28.default.createElement("th", { ...thProps });
24242    }
24243  
24244    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js
24245    var import_react29 = __toESM(require_react(), 1);
24246    function WeekNumberHeader(props) {
24247      return import_react29.default.createElement("th", { ...props });
24248    }
24249  
24250    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/Weeks.js
24251    var import_react30 = __toESM(require_react(), 1);
24252    function Weeks(props) {
24253      return import_react30.default.createElement("tbody", { ...props });
24254    }
24255  
24256    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js
24257    var import_react31 = __toESM(require_react(), 1);
24258    function YearsDropdown(props) {
24259      const { components } = useDayPicker();
24260      return import_react31.default.createElement(components.Dropdown, { ...props });
24261    }
24262  
24263    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/DayPicker.js
24264    var import_react36 = __toESM(require_react(), 1);
24265  
24266    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js
24267    function rangeIncludesDate(range, date, excludeEnds = false, dateLib = defaultDateLib) {
24268      let { from, to } = range;
24269      const { differenceInCalendarDays: differenceInCalendarDays2, isSameDay: isSameDay2 } = dateLib;
24270      if (from && to) {
24271        const isRangeInverted = differenceInCalendarDays2(to, from) < 0;
24272        if (isRangeInverted) {
24273          [from, to] = [to, from];
24274        }
24275        const isInRange = differenceInCalendarDays2(date, from) >= (excludeEnds ? 1 : 0) && differenceInCalendarDays2(to, date) >= (excludeEnds ? 1 : 0);
24276        return isInRange;
24277      }
24278      if (!excludeEnds && to) {
24279        return isSameDay2(to, date);
24280      }
24281      if (!excludeEnds && from) {
24282        return isSameDay2(from, date);
24283      }
24284      return false;
24285    }
24286  
24287    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/typeguards.js
24288    function isDateInterval(matcher) {
24289      return Boolean(matcher && typeof matcher === "object" && "before" in matcher && "after" in matcher);
24290    }
24291    function isDateRange(value) {
24292      return Boolean(value && typeof value === "object" && "from" in value);
24293    }
24294    function isDateAfterType(value) {
24295      return Boolean(value && typeof value === "object" && "after" in value);
24296    }
24297    function isDateBeforeType(value) {
24298      return Boolean(value && typeof value === "object" && "before" in value);
24299    }
24300    function isDayOfWeekType(value) {
24301      return Boolean(value && typeof value === "object" && "dayOfWeek" in value);
24302    }
24303    function isDatesArray(value, dateLib) {
24304      return Array.isArray(value) && value.every(dateLib.isDate);
24305    }
24306  
24307    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js
24308    function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {
24309      const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers;
24310      const { isSameDay: isSameDay2, differenceInCalendarDays: differenceInCalendarDays2, isAfter: isAfter2 } = dateLib;
24311      return matchersArr.some((matcher) => {
24312        if (typeof matcher === "boolean") {
24313          return matcher;
24314        }
24315        if (dateLib.isDate(matcher)) {
24316          return isSameDay2(date, matcher);
24317        }
24318        if (isDatesArray(matcher, dateLib)) {
24319          return matcher.some((matcherDate) => isSameDay2(date, matcherDate));
24320        }
24321        if (isDateRange(matcher)) {
24322          return rangeIncludesDate(matcher, date, false, dateLib);
24323        }
24324        if (isDayOfWeekType(matcher)) {
24325          if (!Array.isArray(matcher.dayOfWeek)) {
24326            return matcher.dayOfWeek === date.getDay();
24327          }
24328          return matcher.dayOfWeek.includes(date.getDay());
24329        }
24330        if (isDateInterval(matcher)) {
24331          const diffBefore = differenceInCalendarDays2(matcher.before, date);
24332          const diffAfter = differenceInCalendarDays2(matcher.after, date);
24333          const isDayBefore = diffBefore > 0;
24334          const isDayAfter = diffAfter < 0;
24335          const isClosedInterval = isAfter2(matcher.before, matcher.after);
24336          if (isClosedInterval) {
24337            return isDayAfter && isDayBefore;
24338          } else {
24339            return isDayBefore || isDayAfter;
24340          }
24341        }
24342        if (isDateAfterType(matcher)) {
24343          return differenceInCalendarDays2(date, matcher.after) > 0;
24344        }
24345        if (isDateBeforeType(matcher)) {
24346          return differenceInCalendarDays2(matcher.before, date) > 0;
24347        }
24348        if (typeof matcher === "function") {
24349          return matcher(date);
24350        }
24351        return false;
24352      });
24353    }
24354  
24355    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js
24356    function createGetModifiers(days, props, navStart, navEnd, dateLib) {
24357      const { disabled: disabled2, hidden, modifiers, showOutsideDays, broadcastCalendar, today = dateLib.today() } = props;
24358      const { isSameDay: isSameDay2, isSameMonth: isSameMonth2, startOfMonth: startOfMonth2, isBefore: isBefore2, endOfMonth: endOfMonth2, isAfter: isAfter2 } = dateLib;
24359      const computedNavStart = navStart && startOfMonth2(navStart);
24360      const computedNavEnd = navEnd && endOfMonth2(navEnd);
24361      const internalModifiersMap = {
24362        [DayFlag.focused]: [],
24363        [DayFlag.outside]: [],
24364        [DayFlag.disabled]: [],
24365        [DayFlag.hidden]: [],
24366        [DayFlag.today]: []
24367      };
24368      const customModifiersMap = {};
24369      for (const day of days) {
24370        const { date, displayMonth } = day;
24371        const isOutside = Boolean(displayMonth && !isSameMonth2(date, displayMonth));
24372        const isBeforeNavStart = Boolean(computedNavStart && isBefore2(date, computedNavStart));
24373        const isAfterNavEnd = Boolean(computedNavEnd && isAfter2(date, computedNavEnd));
24374        const isDisabled = Boolean(disabled2 && dateMatchModifiers(date, disabled2, dateLib));
24375        const isHidden2 = Boolean(hidden && dateMatchModifiers(date, hidden, dateLib)) || isBeforeNavStart || isAfterNavEnd || // Broadcast calendar will show outside days as default
24376        !broadcastCalendar && !showOutsideDays && isOutside || broadcastCalendar && showOutsideDays === false && isOutside;
24377        const isToday = isSameDay2(date, today);
24378        if (isOutside)
24379          internalModifiersMap.outside.push(day);
24380        if (isDisabled)
24381          internalModifiersMap.disabled.push(day);
24382        if (isHidden2)
24383          internalModifiersMap.hidden.push(day);
24384        if (isToday)
24385          internalModifiersMap.today.push(day);
24386        if (modifiers) {
24387          Object.keys(modifiers).forEach((name) => {
24388            const modifierValue = modifiers?.[name];
24389            const isMatch = modifierValue ? dateMatchModifiers(date, modifierValue, dateLib) : false;
24390            if (!isMatch)
24391              return;
24392            if (customModifiersMap[name]) {
24393              customModifiersMap[name].push(day);
24394            } else {
24395              customModifiersMap[name] = [day];
24396            }
24397          });
24398        }
24399      }
24400      return (day) => {
24401        const dayFlags = {
24402          [DayFlag.focused]: false,
24403          [DayFlag.disabled]: false,
24404          [DayFlag.hidden]: false,
24405          [DayFlag.outside]: false,
24406          [DayFlag.today]: false
24407        };
24408        const customModifiers = {};
24409        for (const name in internalModifiersMap) {
24410          const days2 = internalModifiersMap[name];
24411          dayFlags[name] = days2.some((d2) => d2 === day);
24412        }
24413        for (const name in customModifiersMap) {
24414          customModifiers[name] = customModifiersMap[name].some((d2) => d2 === day);
24415        }
24416        return {
24417          ...dayFlags,
24418          // custom modifiers should override all the previous ones
24419          ...customModifiers
24420        };
24421      };
24422    }
24423  
24424    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js
24425    function getClassNamesForModifiers(modifiers, classNames, modifiersClassNames = {}) {
24426      const modifierClassNames = Object.entries(modifiers).filter(([, active]) => active === true).reduce((previousValue, [key]) => {
24427        if (modifiersClassNames[key]) {
24428          previousValue.push(modifiersClassNames[key]);
24429        } else if (classNames[DayFlag[key]]) {
24430          previousValue.push(classNames[DayFlag[key]]);
24431        } else if (classNames[SelectionState[key]]) {
24432          previousValue.push(classNames[SelectionState[key]]);
24433        }
24434        return previousValue;
24435      }, [classNames[UI.Day]]);
24436      return modifierClassNames;
24437    }
24438  
24439    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getComponents.js
24440    function getComponents(customComponents) {
24441      return {
24442        ...custom_components_exports,
24443        ...customComponents
24444      };
24445    }
24446  
24447    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js
24448    function getDataAttributes(props) {
24449      const dataAttributes = {
24450        "data-mode": props.mode ?? void 0,
24451        "data-required": "required" in props ? props.required : void 0,
24452        "data-multiple-months": props.numberOfMonths && props.numberOfMonths > 1 || void 0,
24453        "data-week-numbers": props.showWeekNumber || void 0,
24454        "data-broadcast-calendar": props.broadcastCalendar || void 0,
24455        "data-nav-layout": props.navLayout || void 0
24456      };
24457      Object.entries(props).forEach(([key, val]) => {
24458        if (key.startsWith("data-")) {
24459          dataAttributes[key] = val;
24460        }
24461      });
24462      return dataAttributes;
24463    }
24464  
24465    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js
24466    function getDefaultClassNames() {
24467      const classNames = {};
24468      for (const key in UI) {
24469        classNames[UI[key]] = `rdp-$UI[key]}`;
24470      }
24471      for (const key in DayFlag) {
24472        classNames[DayFlag[key]] = `rdp-$DayFlag[key]}`;
24473      }
24474      for (const key in SelectionState) {
24475        classNames[SelectionState[key]] = `rdp-$SelectionState[key]}`;
24476      }
24477      for (const key in Animation) {
24478        classNames[Animation[key]] = `rdp-$Animation[key]}`;
24479      }
24480      return classNames;
24481    }
24482  
24483    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/index.js
24484    var formatters_exports = {};
24485    __export(formatters_exports, {
24486      formatCaption: () => formatCaption,
24487      formatDay: () => formatDay,
24488      formatMonthDropdown: () => formatMonthDropdown,
24489      formatWeekNumber: () => formatWeekNumber,
24490      formatWeekNumberHeader: () => formatWeekNumberHeader,
24491      formatWeekdayName: () => formatWeekdayName,
24492      formatYearDropdown: () => formatYearDropdown
24493    });
24494  
24495    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js
24496    function formatCaption(month, options, dateLib) {
24497      const lib = dateLib ?? new DateLib(options);
24498      return lib.formatMonthYear(month);
24499    }
24500  
24501    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatDay.js
24502    function formatDay(date, options, dateLib) {
24503      return (dateLib ?? new DateLib(options)).format(date, "d");
24504    }
24505  
24506    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js
24507    function formatMonthDropdown(month, dateLib = defaultDateLib) {
24508      return dateLib.format(month, "LLLL");
24509    }
24510  
24511    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js
24512    function formatWeekdayName(weekday, options, dateLib) {
24513      return (dateLib ?? new DateLib(options)).format(weekday, "cccccc");
24514    }
24515  
24516    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js
24517    function formatWeekNumber(weekNumber, dateLib = defaultDateLib) {
24518      if (weekNumber < 10) {
24519        return dateLib.formatNumber(`0$weekNumber.toLocaleString()}`);
24520      }
24521      return dateLib.formatNumber(`$weekNumber.toLocaleString()}`);
24522    }
24523  
24524    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js
24525    function formatWeekNumberHeader() {
24526      return ``;
24527    }
24528  
24529    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js
24530    function formatYearDropdown(year, dateLib = defaultDateLib) {
24531      return dateLib.format(year, "yyyy");
24532    }
24533  
24534    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js
24535    function getFormatters(customFormatters) {
24536      return {
24537        ...formatters_exports,
24538        ...customFormatters
24539      };
24540    }
24541  
24542    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/index.js
24543    var labels_exports = {};
24544    __export(labels_exports, {
24545      labelDayButton: () => labelDayButton,
24546      labelGrid: () => labelGrid,
24547      labelGridcell: () => labelGridcell,
24548      labelMonthDropdown: () => labelMonthDropdown,
24549      labelNav: () => labelNav,
24550      labelNext: () => labelNext,
24551      labelPrevious: () => labelPrevious,
24552      labelWeekNumber: () => labelWeekNumber,
24553      labelWeekNumberHeader: () => labelWeekNumberHeader,
24554      labelWeekday: () => labelWeekday,
24555      labelYearDropdown: () => labelYearDropdown
24556    });
24557  
24558    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js
24559    function labelDayButton(date, modifiers, options, dateLib) {
24560      let label = (dateLib ?? new DateLib(options)).format(date, "PPPP");
24561      if (modifiers.today)
24562        label = `Today, $label}`;
24563      if (modifiers.selected)
24564        label = `$label}, selected`;
24565      return label;
24566    }
24567  
24568    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelGrid.js
24569    function labelGrid(date, options, dateLib) {
24570      const lib = dateLib ?? new DateLib(options);
24571      return lib.formatMonthYear(date);
24572    }
24573  
24574    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js
24575    function labelGridcell(date, modifiers, options, dateLib) {
24576      let label = (dateLib ?? new DateLib(options)).format(date, "PPPP");
24577      if (modifiers?.today) {
24578        label = `Today, $label}`;
24579      }
24580      return label;
24581    }
24582  
24583    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js
24584    function labelMonthDropdown(_options) {
24585      return "Choose the Month";
24586    }
24587  
24588    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelNav.js
24589    function labelNav() {
24590      return "";
24591    }
24592  
24593    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelNext.js
24594    var defaultLabel = "Go to the Next Month";
24595    function labelNext(_month, _options) {
24596      return defaultLabel;
24597    }
24598  
24599    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js
24600    function labelPrevious(_month) {
24601      return "Go to the Previous Month";
24602    }
24603  
24604    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js
24605    function labelWeekday(date, options, dateLib) {
24606      return (dateLib ?? new DateLib(options)).format(date, "cccc");
24607    }
24608  
24609    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js
24610    function labelWeekNumber(weekNumber, _options) {
24611      return `Week $weekNumber}`;
24612    }
24613  
24614    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js
24615    function labelWeekNumberHeader(_options) {
24616      return "Week Number";
24617    }
24618  
24619    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js
24620    function labelYearDropdown(_options) {
24621      return "Choose the Year";
24622    }
24623  
24624    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getLabels.js
24625    var resolveLabel = (defaultLabel2, customLabel, localeLabel) => {
24626      if (customLabel)
24627        return customLabel;
24628      if (localeLabel) {
24629        return typeof localeLabel === "function" ? localeLabel : (..._args) => localeLabel;
24630      }
24631      return defaultLabel2;
24632    };
24633    function getLabels(customLabels, options) {
24634      const localeLabels = options.locale?.labels ?? {};
24635      return {
24636        ...labels_exports,
24637        ...customLabels ?? {},
24638        labelDayButton: resolveLabel(labelDayButton, customLabels?.labelDayButton, localeLabels.labelDayButton),
24639        labelMonthDropdown: resolveLabel(labelMonthDropdown, customLabels?.labelMonthDropdown, localeLabels.labelMonthDropdown),
24640        labelNext: resolveLabel(labelNext, customLabels?.labelNext, localeLabels.labelNext),
24641        labelPrevious: resolveLabel(labelPrevious, customLabels?.labelPrevious, localeLabels.labelPrevious),
24642        labelWeekNumber: resolveLabel(labelWeekNumber, customLabels?.labelWeekNumber, localeLabels.labelWeekNumber),
24643        labelYearDropdown: resolveLabel(labelYearDropdown, customLabels?.labelYearDropdown, localeLabels.labelYearDropdown),
24644        labelGrid: resolveLabel(labelGrid, customLabels?.labelGrid, localeLabels.labelGrid),
24645        labelGridcell: resolveLabel(labelGridcell, customLabels?.labelGridcell, localeLabels.labelGridcell),
24646        labelNav: resolveLabel(labelNav, customLabels?.labelNav, localeLabels.labelNav),
24647        labelWeekNumberHeader: resolveLabel(labelWeekNumberHeader, customLabels?.labelWeekNumberHeader, localeLabels.labelWeekNumberHeader),
24648        labelWeekday: resolveLabel(labelWeekday, customLabels?.labelWeekday, localeLabels.labelWeekday)
24649      };
24650    }
24651  
24652    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js
24653    function getMonthOptions(displayMonth, navStart, navEnd, formatters2, dateLib) {
24654      const { startOfMonth: startOfMonth2, startOfYear: startOfYear2, endOfYear: endOfYear2, eachMonthOfInterval: eachMonthOfInterval2, getMonth: getMonth2 } = dateLib;
24655      const months = eachMonthOfInterval2({
24656        start: startOfYear2(displayMonth),
24657        end: endOfYear2(displayMonth)
24658      });
24659      const options = months.map((month) => {
24660        const label = formatters2.formatMonthDropdown(month, dateLib);
24661        const value = getMonth2(month);
24662        const disabled2 = navStart && month < startOfMonth2(navStart) || navEnd && month > startOfMonth2(navEnd) || false;
24663        return { value, label, disabled: disabled2 };
24664      });
24665      return options;
24666    }
24667  
24668    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js
24669    function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {
24670      let style = { ...styles?.[UI.Day] };
24671      Object.entries(dayModifiers).filter(([, active]) => active === true).forEach(([modifier]) => {
24672        style = {
24673          ...style,
24674          ...modifiersStyles?.[modifier]
24675        };
24676      });
24677      return style;
24678    }
24679  
24680    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js
24681    function getWeekdays(dateLib, ISOWeek, broadcastCalendar, today) {
24682      const referenceToday = today ?? dateLib.today();
24683      const start = broadcastCalendar ? dateLib.startOfBroadcastWeek(referenceToday, dateLib) : ISOWeek ? dateLib.startOfISOWeek(referenceToday) : dateLib.startOfWeek(referenceToday);
24684      const days = [];
24685      for (let i2 = 0; i2 < 7; i2++) {
24686        const day = dateLib.addDays(start, i2);
24687        days.push(day);
24688      }
24689      return days;
24690    }
24691  
24692    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js
24693    function getYearOptions(navStart, navEnd, formatters2, dateLib, reverse = false) {
24694      if (!navStart)
24695        return void 0;
24696      if (!navEnd)
24697        return void 0;
24698      const { startOfYear: startOfYear2, endOfYear: endOfYear2, eachYearOfInterval: eachYearOfInterval2, getYear: getYear2 } = dateLib;
24699      const firstNavYear = startOfYear2(navStart);
24700      const lastNavYear = endOfYear2(navEnd);
24701      const years = eachYearOfInterval2({ start: firstNavYear, end: lastNavYear });
24702      if (reverse)
24703        years.reverse();
24704      return years.map((year) => {
24705        const label = formatters2.formatYearDropdown(year, dateLib);
24706        return {
24707          value: getYear2(year),
24708          label,
24709          disabled: false
24710        };
24711      });
24712    }
24713  
24714    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/noonDateLib.js
24715    function createNoonOverrides(timeZone, options = {}) {
24716      const { weekStartsOn, locale } = options;
24717      const fallbackWeekStartsOn = weekStartsOn ?? locale?.options?.weekStartsOn ?? 0;
24718      const toNoonTZDate = (date) => {
24719        const normalizedDate = typeof date === "number" || typeof date === "string" ? new Date(date) : date;
24720        return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);
24721      };
24722      const toCalendarDate2 = (date) => {
24723        const zoned = toNoonTZDate(date);
24724        return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);
24725      };
24726      return {
24727        today: () => {
24728          return toNoonTZDate(TZDate.tz(timeZone));
24729        },
24730        newDate: (year, monthIndex, date) => {
24731          return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);
24732        },
24733        startOfDay: (date) => {
24734          return toNoonTZDate(date);
24735        },
24736        startOfWeek: (date, options2) => {
24737          const base = toNoonTZDate(date);
24738          const weekStartsOnValue = options2?.weekStartsOn ?? fallbackWeekStartsOn;
24739          const diff = (base.getDay() - weekStartsOnValue + 7) % 7;
24740          base.setDate(base.getDate() - diff);
24741          return base;
24742        },
24743        startOfISOWeek: (date) => {
24744          const base = toNoonTZDate(date);
24745          const diff = (base.getDay() - 1 + 7) % 7;
24746          base.setDate(base.getDate() - diff);
24747          return base;
24748        },
24749        startOfMonth: (date) => {
24750          const base = toNoonTZDate(date);
24751          base.setDate(1);
24752          return base;
24753        },
24754        startOfYear: (date) => {
24755          const base = toNoonTZDate(date);
24756          base.setMonth(0, 1);
24757          return base;
24758        },
24759        endOfWeek: (date, options2) => {
24760          const base = toNoonTZDate(date);
24761          const weekStartsOnValue = options2?.weekStartsOn ?? fallbackWeekStartsOn;
24762          const endDow = (weekStartsOnValue + 6) % 7;
24763          const diff = (endDow - base.getDay() + 7) % 7;
24764          base.setDate(base.getDate() + diff);
24765          return base;
24766        },
24767        endOfISOWeek: (date) => {
24768          const base = toNoonTZDate(date);
24769          const diff = (7 - base.getDay()) % 7;
24770          base.setDate(base.getDate() + diff);
24771          return base;
24772        },
24773        endOfMonth: (date) => {
24774          const base = toNoonTZDate(date);
24775          base.setMonth(base.getMonth() + 1, 0);
24776          return base;
24777        },
24778        endOfYear: (date) => {
24779          const base = toNoonTZDate(date);
24780          base.setMonth(11, 31);
24781          return base;
24782        },
24783        eachMonthOfInterval: (interval) => {
24784          const start = toNoonTZDate(interval.start);
24785          const end = toNoonTZDate(interval.end);
24786          const result = [];
24787          const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);
24788          const endKey = end.getFullYear() * 12 + end.getMonth();
24789          while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {
24790            result.push(new TZDate(cursor, timeZone));
24791            cursor.setMonth(cursor.getMonth() + 1, 1);
24792          }
24793          return result;
24794        },
24795        // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),
24796        // mutate the same TZDate, and return it.
24797        addDays: (date, amount) => {
24798          const base = toNoonTZDate(date);
24799          base.setDate(base.getDate() + amount);
24800          return base;
24801        },
24802        addWeeks: (date, amount) => {
24803          const base = toNoonTZDate(date);
24804          base.setDate(base.getDate() + amount * 7);
24805          return base;
24806        },
24807        addMonths: (date, amount) => {
24808          const base = toNoonTZDate(date);
24809          base.setMonth(base.getMonth() + amount);
24810          return base;
24811        },
24812        addYears: (date, amount) => {
24813          const base = toNoonTZDate(date);
24814          base.setFullYear(base.getFullYear() + amount);
24815          return base;
24816        },
24817        eachYearOfInterval: (interval) => {
24818          const start = toNoonTZDate(interval.start);
24819          const end = toNoonTZDate(interval.end);
24820          const years = [];
24821          const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);
24822          while (cursor.getFullYear() <= end.getFullYear()) {
24823            years.push(new TZDate(cursor, timeZone));
24824            cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);
24825          }
24826          return years;
24827        },
24828        getWeek: (date, options2) => {
24829          const base = toCalendarDate2(date);
24830          return getWeek(base, {
24831            weekStartsOn: options2?.weekStartsOn ?? fallbackWeekStartsOn,
24832            firstWeekContainsDate: options2?.firstWeekContainsDate ?? locale?.options?.firstWeekContainsDate ?? 1
24833          });
24834        },
24835        getISOWeek: (date) => {
24836          const base = toCalendarDate2(date);
24837          return getISOWeek(base);
24838        },
24839        differenceInCalendarDays: (dateLeft, dateRight) => {
24840          const left = toCalendarDate2(dateLeft);
24841          const right = toCalendarDate2(dateRight);
24842          return differenceInCalendarDays(left, right);
24843        },
24844        differenceInCalendarMonths: (dateLeft, dateRight) => {
24845          const left = toCalendarDate2(dateLeft);
24846          const right = toCalendarDate2(dateRight);
24847          return differenceInCalendarMonths(left, right);
24848        }
24849      };
24850    }
24851  
24852    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useAnimation.js
24853    var import_react32 = __toESM(require_react(), 1);
24854    var asHtmlElement = (element) => {
24855      if (element instanceof HTMLElement)
24856        return element;
24857      return null;
24858    };
24859    var queryMonthEls = (element) => [
24860      ...element.querySelectorAll("[data-animated-month]") ?? []
24861    ];
24862    var queryMonthEl = (element) => asHtmlElement(element.querySelector("[data-animated-month]"));
24863    var queryCaptionEl = (element) => asHtmlElement(element.querySelector("[data-animated-caption]"));
24864    var queryWeeksEl = (element) => asHtmlElement(element.querySelector("[data-animated-weeks]"));
24865    var queryNavEl = (element) => asHtmlElement(element.querySelector("[data-animated-nav]"));
24866    var queryWeekdaysEl = (element) => asHtmlElement(element.querySelector("[data-animated-weekdays]"));
24867    function useAnimation(rootElRef, enabled, { classNames, months, focused, dateLib }) {
24868      const previousRootElSnapshotRef = (0, import_react32.useRef)(null);
24869      const previousMonthsRef = (0, import_react32.useRef)(months);
24870      const animatingRef = (0, import_react32.useRef)(false);
24871      (0, import_react32.useLayoutEffect)(() => {
24872        const previousMonths = previousMonthsRef.current;
24873        previousMonthsRef.current = months;
24874        if (!enabled || !rootElRef.current || // safety check because the ref can be set to anything by consumers
24875        !(rootElRef.current instanceof HTMLElement) || // validation required for the animation to work as expected
24876        months.length === 0 || previousMonths.length === 0 || months.length !== previousMonths.length) {
24877          return;
24878        }
24879        const isSameMonth2 = dateLib.isSameMonth(months[0].date, previousMonths[0].date);
24880        const isAfterPreviousMonth = dateLib.isAfter(months[0].date, previousMonths[0].date);
24881        const captionAnimationClass = isAfterPreviousMonth ? classNames[Animation.caption_after_enter] : classNames[Animation.caption_before_enter];
24882        const weeksAnimationClass = isAfterPreviousMonth ? classNames[Animation.weeks_after_enter] : classNames[Animation.weeks_before_enter];
24883        const previousRootElSnapshot = previousRootElSnapshotRef.current;
24884        const rootElSnapshot = rootElRef.current.cloneNode(true);
24885        if (rootElSnapshot instanceof HTMLElement) {
24886          const currentMonthElsSnapshot = queryMonthEls(rootElSnapshot);
24887          currentMonthElsSnapshot.forEach((currentMonthElSnapshot) => {
24888            if (!(currentMonthElSnapshot instanceof HTMLElement))
24889              return;
24890            const previousMonthElSnapshot = queryMonthEl(currentMonthElSnapshot);
24891            if (previousMonthElSnapshot && currentMonthElSnapshot.contains(previousMonthElSnapshot)) {
24892              currentMonthElSnapshot.removeChild(previousMonthElSnapshot);
24893            }
24894            const captionEl = queryCaptionEl(currentMonthElSnapshot);
24895            if (captionEl) {
24896              captionEl.classList.remove(captionAnimationClass);
24897            }
24898            const weeksEl = queryWeeksEl(currentMonthElSnapshot);
24899            if (weeksEl) {
24900              weeksEl.classList.remove(weeksAnimationClass);
24901            }
24902          });
24903          previousRootElSnapshotRef.current = rootElSnapshot;
24904        } else {
24905          previousRootElSnapshotRef.current = null;
24906        }
24907        if (animatingRef.current || isSameMonth2 || // skip animation if a day is focused because it can cause issues to the animation and is better for a11y
24908        focused) {
24909          return;
24910        }
24911        const previousMonthEls = previousRootElSnapshot instanceof HTMLElement ? queryMonthEls(previousRootElSnapshot) : [];
24912        const currentMonthEls = queryMonthEls(rootElRef.current);
24913        if (currentMonthEls?.every((el) => el instanceof HTMLElement) && previousMonthEls?.every((el) => el instanceof HTMLElement)) {
24914          animatingRef.current = true;
24915          const cleanUpFunctions = [];
24916          rootElRef.current.style.isolation = "isolate";
24917          const navEl = queryNavEl(rootElRef.current);
24918          if (navEl) {
24919            navEl.style.zIndex = "1";
24920          }
24921          currentMonthEls.forEach((currentMonthEl, index2) => {
24922            const previousMonthEl = previousMonthEls[index2];
24923            if (!previousMonthEl) {
24924              return;
24925            }
24926            currentMonthEl.style.position = "relative";
24927            currentMonthEl.style.overflow = "hidden";
24928            const captionEl = queryCaptionEl(currentMonthEl);
24929            if (captionEl) {
24930              captionEl.classList.add(captionAnimationClass);
24931            }
24932            const weeksEl = queryWeeksEl(currentMonthEl);
24933            if (weeksEl) {
24934              weeksEl.classList.add(weeksAnimationClass);
24935            }
24936            const cleanUp = () => {
24937              animatingRef.current = false;
24938              if (rootElRef.current) {
24939                rootElRef.current.style.isolation = "";
24940              }
24941              if (navEl) {
24942                navEl.style.zIndex = "";
24943              }
24944              if (captionEl) {
24945                captionEl.classList.remove(captionAnimationClass);
24946              }
24947              if (weeksEl) {
24948                weeksEl.classList.remove(weeksAnimationClass);
24949              }
24950              currentMonthEl.style.position = "";
24951              currentMonthEl.style.overflow = "";
24952              if (currentMonthEl.contains(previousMonthEl)) {
24953                currentMonthEl.removeChild(previousMonthEl);
24954              }
24955            };
24956            cleanUpFunctions.push(cleanUp);
24957            previousMonthEl.style.pointerEvents = "none";
24958            previousMonthEl.style.position = "absolute";
24959            previousMonthEl.style.overflow = "hidden";
24960            previousMonthEl.setAttribute("aria-hidden", "true");
24961            const previousWeekdaysEl = queryWeekdaysEl(previousMonthEl);
24962            if (previousWeekdaysEl) {
24963              previousWeekdaysEl.style.opacity = "0";
24964            }
24965            const previousCaptionEl = queryCaptionEl(previousMonthEl);
24966            if (previousCaptionEl) {
24967              previousCaptionEl.classList.add(isAfterPreviousMonth ? classNames[Animation.caption_before_exit] : classNames[Animation.caption_after_exit]);
24968              previousCaptionEl.addEventListener("animationend", cleanUp);
24969            }
24970            const previousWeeksEl = queryWeeksEl(previousMonthEl);
24971            if (previousWeeksEl) {
24972              previousWeeksEl.classList.add(isAfterPreviousMonth ? classNames[Animation.weeks_before_exit] : classNames[Animation.weeks_after_exit]);
24973            }
24974            currentMonthEl.insertBefore(previousMonthEl, currentMonthEl.firstChild);
24975          });
24976        }
24977      });
24978    }
24979  
24980    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useCalendar.js
24981    var import_react34 = __toESM(require_react(), 1);
24982  
24983    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDates.js
24984    function getDates(displayMonths, maxDate, props, dateLib) {
24985      const firstMonth = displayMonths[0];
24986      const lastMonth = displayMonths[displayMonths.length - 1];
24987      const { ISOWeek, fixedWeeks, broadcastCalendar } = props ?? {};
24988      const { addDays: addDays2, differenceInCalendarDays: differenceInCalendarDays2, differenceInCalendarMonths: differenceInCalendarMonths2, endOfBroadcastWeek: endOfBroadcastWeek2, endOfISOWeek: endOfISOWeek2, endOfMonth: endOfMonth2, endOfWeek: endOfWeek2, isAfter: isAfter2, startOfBroadcastWeek: startOfBroadcastWeek2, startOfISOWeek: startOfISOWeek2, startOfWeek: startOfWeek2 } = dateLib;
24989      const startWeekFirstDate = broadcastCalendar ? startOfBroadcastWeek2(firstMonth, dateLib) : ISOWeek ? startOfISOWeek2(firstMonth) : startOfWeek2(firstMonth);
24990      const displayMonthsWeekEnd = broadcastCalendar ? endOfBroadcastWeek2(lastMonth) : ISOWeek ? endOfISOWeek2(endOfMonth2(lastMonth)) : endOfWeek2(endOfMonth2(lastMonth));
24991      const constraintWeekEnd = maxDate && (broadcastCalendar ? endOfBroadcastWeek2(maxDate) : ISOWeek ? endOfISOWeek2(maxDate) : endOfWeek2(maxDate));
24992      const gridEndDate = constraintWeekEnd && isAfter2(displayMonthsWeekEnd, constraintWeekEnd) ? constraintWeekEnd : displayMonthsWeekEnd;
24993      const nOfDays = differenceInCalendarDays2(gridEndDate, startWeekFirstDate);
24994      const nOfMonths = differenceInCalendarMonths2(lastMonth, firstMonth) + 1;
24995      const dates = [];
24996      for (let i2 = 0; i2 <= nOfDays; i2++) {
24997        const date = addDays2(startWeekFirstDate, i2);
24998        dates.push(date);
24999      }
25000      const nrOfDaysWithFixedWeeks = broadcastCalendar ? 35 : 42;
25001      const extraDates = nrOfDaysWithFixedWeeks * nOfMonths;
25002      if (fixedWeeks && dates.length < extraDates) {
25003        const daysToAdd = extraDates - dates.length;
25004        for (let i2 = 0; i2 < daysToAdd; i2++) {
25005          const date = addDays2(dates[dates.length - 1], 1);
25006          dates.push(date);
25007        }
25008      }
25009      return dates;
25010    }
25011  
25012    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDays.js
25013    function getDays(calendarMonths) {
25014      const initialDays = [];
25015      return calendarMonths.reduce((days, month) => {
25016        const weekDays = month.weeks.reduce((weekDays2, week) => {
25017          return weekDays2.concat(week.days.slice());
25018        }, initialDays.slice());
25019        return days.concat(weekDays.slice());
25020      }, initialDays.slice());
25021    }
25022  
25023    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js
25024    function getDisplayMonths(firstDisplayedMonth, calendarEndMonth, props, dateLib) {
25025      const { numberOfMonths = 1 } = props;
25026      const months = [];
25027      for (let i2 = 0; i2 < numberOfMonths; i2++) {
25028        const month = dateLib.addMonths(firstDisplayedMonth, i2);
25029        if (calendarEndMonth && month > calendarEndMonth) {
25030          break;
25031        }
25032        months.push(month);
25033      }
25034      return months;
25035    }
25036  
25037    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js
25038    function getInitialMonth(props, navStart, navEnd, dateLib) {
25039      const { month, defaultMonth, today = dateLib.today(), numberOfMonths = 1 } = props;
25040      let initialMonth = month || defaultMonth || today;
25041      const { differenceInCalendarMonths: differenceInCalendarMonths2, addMonths: addMonths2, startOfMonth: startOfMonth2 } = dateLib;
25042      if (navEnd && differenceInCalendarMonths2(navEnd, initialMonth) < numberOfMonths - 1) {
25043        const offset4 = -1 * (numberOfMonths - 1);
25044        initialMonth = addMonths2(navEnd, offset4);
25045      }
25046      if (navStart && differenceInCalendarMonths2(initialMonth, navStart) < 0) {
25047        initialMonth = navStart;
25048      }
25049      return startOfMonth2(initialMonth);
25050    }
25051  
25052    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getMonths.js
25053    function getMonths(displayMonths, dates, props, dateLib) {
25054      const { addDays: addDays2, endOfBroadcastWeek: endOfBroadcastWeek2, endOfISOWeek: endOfISOWeek2, endOfMonth: endOfMonth2, endOfWeek: endOfWeek2, getISOWeek: getISOWeek2, getWeek: getWeek2, startOfBroadcastWeek: startOfBroadcastWeek2, startOfISOWeek: startOfISOWeek2, startOfWeek: startOfWeek2 } = dateLib;
25055      const dayPickerMonths = displayMonths.reduce((months, month) => {
25056        const firstDateOfFirstWeek = props.broadcastCalendar ? startOfBroadcastWeek2(month, dateLib) : props.ISOWeek ? startOfISOWeek2(month) : startOfWeek2(month);
25057        const lastDateOfLastWeek = props.broadcastCalendar ? endOfBroadcastWeek2(month) : props.ISOWeek ? endOfISOWeek2(endOfMonth2(month)) : endOfWeek2(endOfMonth2(month));
25058        const monthDates = dates.filter((date) => {
25059          return date >= firstDateOfFirstWeek && date <= lastDateOfLastWeek;
25060        });
25061        const nrOfDaysWithFixedWeeks = props.broadcastCalendar ? 35 : 42;
25062        if (props.fixedWeeks && monthDates.length < nrOfDaysWithFixedWeeks) {
25063          const extraDates = dates.filter((date) => {
25064            const daysToAdd = nrOfDaysWithFixedWeeks - monthDates.length;
25065            return date > lastDateOfLastWeek && date <= addDays2(lastDateOfLastWeek, daysToAdd);
25066          });
25067          monthDates.push(...extraDates);
25068        }
25069        const weeks = monthDates.reduce((weeks2, date) => {
25070          const weekNumber = props.ISOWeek ? getISOWeek2(date) : getWeek2(date);
25071          const week = weeks2.find((week2) => week2.weekNumber === weekNumber);
25072          const day = new CalendarDay(date, month, dateLib);
25073          if (!week) {
25074            weeks2.push(new CalendarWeek(weekNumber, [day]));
25075          } else {
25076            week.days.push(day);
25077          }
25078          return weeks2;
25079        }, []);
25080        const dayPickerMonth = new CalendarMonth(month, weeks);
25081        months.push(dayPickerMonth);
25082        return months;
25083      }, []);
25084      if (!props.reverseMonths) {
25085        return dayPickerMonths;
25086      } else {
25087        return dayPickerMonths.reverse();
25088      }
25089    }
25090  
25091    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js
25092    function getNavMonths(props, dateLib) {
25093      let { startMonth, endMonth } = props;
25094      const { startOfYear: startOfYear2, startOfDay: startOfDay2, startOfMonth: startOfMonth2, endOfMonth: endOfMonth2, addYears: addYears2, endOfYear: endOfYear2, today } = dateLib;
25095      const hasYearDropdown = props.captionLayout === "dropdown" || props.captionLayout === "dropdown-years";
25096      if (startMonth) {
25097        startMonth = startOfMonth2(startMonth);
25098      } else if (!startMonth && hasYearDropdown) {
25099        startMonth = startOfYear2(addYears2(props.today ?? today(), -100));
25100      }
25101      if (endMonth) {
25102        endMonth = endOfMonth2(endMonth);
25103      } else if (!endMonth && hasYearDropdown) {
25104        endMonth = endOfYear2(props.today ?? today());
25105      }
25106      return [
25107        startMonth ? startOfDay2(startMonth) : startMonth,
25108        endMonth ? startOfDay2(endMonth) : endMonth
25109      ];
25110    }
25111  
25112    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js
25113    function getNextMonth(firstDisplayedMonth, calendarEndMonth, options, dateLib) {
25114      if (options.disableNavigation) {
25115        return void 0;
25116      }
25117      const { pagedNavigation, numberOfMonths = 1 } = options;
25118      const { startOfMonth: startOfMonth2, addMonths: addMonths2, differenceInCalendarMonths: differenceInCalendarMonths2 } = dateLib;
25119      const offset4 = pagedNavigation ? numberOfMonths : 1;
25120      const month = startOfMonth2(firstDisplayedMonth);
25121      if (!calendarEndMonth) {
25122        return addMonths2(month, offset4);
25123      }
25124      const monthsDiff = differenceInCalendarMonths2(calendarEndMonth, firstDisplayedMonth);
25125      if (monthsDiff < numberOfMonths) {
25126        return void 0;
25127      }
25128      return addMonths2(month, offset4);
25129    }
25130  
25131    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js
25132    function getPreviousMonth(firstDisplayedMonth, calendarStartMonth, options, dateLib) {
25133      if (options.disableNavigation) {
25134        return void 0;
25135      }
25136      const { pagedNavigation, numberOfMonths } = options;
25137      const { startOfMonth: startOfMonth2, addMonths: addMonths2, differenceInCalendarMonths: differenceInCalendarMonths2 } = dateLib;
25138      const offset4 = pagedNavigation ? numberOfMonths ?? 1 : 1;
25139      const month = startOfMonth2(firstDisplayedMonth);
25140      if (!calendarStartMonth) {
25141        return addMonths2(month, -offset4);
25142      }
25143      const monthsDiff = differenceInCalendarMonths2(month, calendarStartMonth);
25144      if (monthsDiff <= 0) {
25145        return void 0;
25146      }
25147      return addMonths2(month, -offset4);
25148    }
25149  
25150    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js
25151    function getWeeks(months) {
25152      const initialWeeks = [];
25153      return months.reduce((weeks, month) => {
25154        return weeks.concat(month.weeks.slice());
25155      }, initialWeeks.slice());
25156    }
25157  
25158    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js
25159    var import_react33 = __toESM(require_react(), 1);
25160    function useControlledValue(defaultValue2, controlledValue) {
25161      const [uncontrolledValue, setValue] = (0, import_react33.useState)(defaultValue2);
25162      const value = controlledValue === void 0 ? uncontrolledValue : controlledValue;
25163      return [value, setValue];
25164    }
25165  
25166    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useCalendar.js
25167    function useCalendar(props, dateLib) {
25168      const [navStart, navEnd] = getNavMonths(props, dateLib);
25169      const { startOfMonth: startOfMonth2, endOfMonth: endOfMonth2 } = dateLib;
25170      const initialMonth = getInitialMonth(props, navStart, navEnd, dateLib);
25171      const [firstMonth, setFirstMonth] = useControlledValue(
25172        initialMonth,
25173        // initialMonth is always computed from props.month if provided
25174        props.month ? initialMonth : void 0
25175      );
25176      (0, import_react34.useEffect)(() => {
25177        const newInitialMonth = getInitialMonth(props, navStart, navEnd, dateLib);
25178        setFirstMonth(newInitialMonth);
25179      }, [props.timeZone]);
25180      const { months, weeks, days, previousMonth, nextMonth } = (0, import_react34.useMemo)(() => {
25181        const displayMonths = getDisplayMonths(firstMonth, navEnd, { numberOfMonths: props.numberOfMonths }, dateLib);
25182        const dates = getDates(displayMonths, props.endMonth ? endOfMonth2(props.endMonth) : void 0, {
25183          ISOWeek: props.ISOWeek,
25184          fixedWeeks: props.fixedWeeks,
25185          broadcastCalendar: props.broadcastCalendar
25186        }, dateLib);
25187        const months2 = getMonths(displayMonths, dates, {
25188          broadcastCalendar: props.broadcastCalendar,
25189          fixedWeeks: props.fixedWeeks,
25190          ISOWeek: props.ISOWeek,
25191          reverseMonths: props.reverseMonths
25192        }, dateLib);
25193        const weeks2 = getWeeks(months2);
25194        const days2 = getDays(months2);
25195        const previousMonth2 = getPreviousMonth(firstMonth, navStart, props, dateLib);
25196        const nextMonth2 = getNextMonth(firstMonth, navEnd, props, dateLib);
25197        return {
25198          months: months2,
25199          weeks: weeks2,
25200          days: days2,
25201          previousMonth: previousMonth2,
25202          nextMonth: nextMonth2
25203        };
25204      }, [
25205        dateLib,
25206        firstMonth.getTime(),
25207        navEnd?.getTime(),
25208        navStart?.getTime(),
25209        props.disableNavigation,
25210        props.broadcastCalendar,
25211        props.endMonth?.getTime(),
25212        props.fixedWeeks,
25213        props.ISOWeek,
25214        props.numberOfMonths,
25215        props.pagedNavigation,
25216        props.reverseMonths
25217      ]);
25218      const { disableNavigation, onMonthChange } = props;
25219      const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d2) => d2.isEqualTo(day)));
25220      const goToMonth = (date) => {
25221        if (disableNavigation) {
25222          return;
25223        }
25224        let newMonth = startOfMonth2(date);
25225        if (navStart && newMonth < startOfMonth2(navStart)) {
25226          newMonth = startOfMonth2(navStart);
25227        }
25228        if (navEnd && newMonth > startOfMonth2(navEnd)) {
25229          newMonth = startOfMonth2(navEnd);
25230        }
25231        setFirstMonth(newMonth);
25232        onMonthChange?.(newMonth);
25233      };
25234      const goToDay = (day) => {
25235        if (isDayInCalendar(day)) {
25236          return;
25237        }
25238        goToMonth(day.date);
25239      };
25240      const calendar = {
25241        months,
25242        weeks,
25243        days,
25244        navStart,
25245        navEnd,
25246        previousMonth,
25247        nextMonth,
25248        goToMonth,
25249        goToDay
25250      };
25251      return calendar;
25252    }
25253  
25254    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useFocus.js
25255    var import_react35 = __toESM(require_react(), 1);
25256  
25257    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js
25258    var FocusTargetPriority;
25259    (function(FocusTargetPriority2) {
25260      FocusTargetPriority2[FocusTargetPriority2["Today"] = 0] = "Today";
25261      FocusTargetPriority2[FocusTargetPriority2["Selected"] = 1] = "Selected";
25262      FocusTargetPriority2[FocusTargetPriority2["LastFocused"] = 2] = "LastFocused";
25263      FocusTargetPriority2[FocusTargetPriority2["FocusedModifier"] = 3] = "FocusedModifier";
25264    })(FocusTargetPriority || (FocusTargetPriority = {}));
25265    function isFocusableDay(modifiers) {
25266      return !modifiers[DayFlag.disabled] && !modifiers[DayFlag.hidden] && !modifiers[DayFlag.outside];
25267    }
25268    function calculateFocusTarget(days, getModifiers, isSelected2, lastFocused) {
25269      let focusTarget;
25270      let foundFocusTargetPriority = -1;
25271      for (const day of days) {
25272        const modifiers = getModifiers(day);
25273        if (isFocusableDay(modifiers)) {
25274          if (modifiers[DayFlag.focused] && foundFocusTargetPriority < FocusTargetPriority.FocusedModifier) {
25275            focusTarget = day;
25276            foundFocusTargetPriority = FocusTargetPriority.FocusedModifier;
25277          } else if (lastFocused?.isEqualTo(day) && foundFocusTargetPriority < FocusTargetPriority.LastFocused) {
25278            focusTarget = day;
25279            foundFocusTargetPriority = FocusTargetPriority.LastFocused;
25280          } else if (isSelected2(day.date) && foundFocusTargetPriority < FocusTargetPriority.Selected) {
25281            focusTarget = day;
25282            foundFocusTargetPriority = FocusTargetPriority.Selected;
25283          } else if (modifiers[DayFlag.today] && foundFocusTargetPriority < FocusTargetPriority.Today) {
25284            focusTarget = day;
25285            foundFocusTargetPriority = FocusTargetPriority.Today;
25286          }
25287        }
25288      }
25289      if (!focusTarget) {
25290        focusTarget = days.find((day) => isFocusableDay(getModifiers(day)));
25291      }
25292      return focusTarget;
25293    }
25294  
25295    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js
25296    function getFocusableDate(moveBy, moveDir, refDate, navStart, navEnd, props, dateLib) {
25297      const { ISOWeek, broadcastCalendar } = props;
25298      const { addDays: addDays2, addMonths: addMonths2, addWeeks: addWeeks2, addYears: addYears2, endOfBroadcastWeek: endOfBroadcastWeek2, endOfISOWeek: endOfISOWeek2, endOfWeek: endOfWeek2, max: max3, min: min3, startOfBroadcastWeek: startOfBroadcastWeek2, startOfISOWeek: startOfISOWeek2, startOfWeek: startOfWeek2 } = dateLib;
25299      const moveFns = {
25300        day: addDays2,
25301        week: addWeeks2,
25302        month: addMonths2,
25303        year: addYears2,
25304        startOfWeek: (date) => broadcastCalendar ? startOfBroadcastWeek2(date, dateLib) : ISOWeek ? startOfISOWeek2(date) : startOfWeek2(date),
25305        endOfWeek: (date) => broadcastCalendar ? endOfBroadcastWeek2(date) : ISOWeek ? endOfISOWeek2(date) : endOfWeek2(date)
25306      };
25307      let focusableDate = moveFns[moveBy](refDate, moveDir === "after" ? 1 : -1);
25308      if (moveDir === "before" && navStart) {
25309        focusableDate = max3([navStart, focusableDate]);
25310      } else if (moveDir === "after" && navEnd) {
25311        focusableDate = min3([navEnd, focusableDate]);
25312      }
25313      return focusableDate;
25314    }
25315  
25316    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js
25317    function getNextFocus(moveBy, moveDir, refDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt = 0) {
25318      if (attempt > 365) {
25319        return void 0;
25320      }
25321      const focusableDate = getFocusableDate(moveBy, moveDir, refDay.date, calendarStartMonth, calendarEndMonth, props, dateLib);
25322      const isDisabled = Boolean(props.disabled && dateMatchModifiers(focusableDate, props.disabled, dateLib));
25323      const isHidden2 = Boolean(props.hidden && dateMatchModifiers(focusableDate, props.hidden, dateLib));
25324      const targetMonth = focusableDate;
25325      const focusDay = new CalendarDay(focusableDate, targetMonth, dateLib);
25326      if (!isDisabled && !isHidden2) {
25327        return focusDay;
25328      }
25329      return getNextFocus(moveBy, moveDir, focusDay, calendarStartMonth, calendarEndMonth, props, dateLib, attempt + 1);
25330    }
25331  
25332    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useFocus.js
25333    function useFocus2(props, calendar, getModifiers, isSelected2, dateLib) {
25334      const { autoFocus } = props;
25335      const [lastFocused, setLastFocused] = (0, import_react35.useState)();
25336      const focusTarget = calculateFocusTarget(calendar.days, getModifiers, isSelected2 || (() => false), lastFocused);
25337      const [focusedDay, setFocused] = (0, import_react35.useState)(autoFocus ? focusTarget : void 0);
25338      const blur = () => {
25339        setLastFocused(focusedDay);
25340        setFocused(void 0);
25341      };
25342      const moveFocus = (moveBy, moveDir) => {
25343        if (!focusedDay)
25344          return;
25345        const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);
25346        if (!nextFocus)
25347          return;
25348        if (props.disableNavigation) {
25349          const isNextInCalendar = calendar.days.some((day) => day.isEqualTo(nextFocus));
25350          if (!isNextInCalendar) {
25351            return;
25352          }
25353        }
25354        calendar.goToDay(nextFocus);
25355        setFocused(nextFocus);
25356      };
25357      const isFocusTarget = (day) => {
25358        return Boolean(focusTarget?.isEqualTo(day));
25359      };
25360      const useFocus3 = {
25361        isFocusTarget,
25362        setFocused,
25363        focused: focusedDay,
25364        blur,
25365        moveFocus
25366      };
25367      return useFocus3;
25368    }
25369  
25370    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/selection/useMulti.js
25371    function useMulti(props, dateLib) {
25372      const { selected: initiallySelected, required, onSelect } = props;
25373      const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : void 0);
25374      const selected = !onSelect ? internallySelected : initiallySelected;
25375      const { isSameDay: isSameDay2 } = dateLib;
25376      const isSelected2 = (date) => {
25377        return selected?.some((d2) => isSameDay2(d2, date)) ?? false;
25378      };
25379      const { min: min3, max: max3 } = props;
25380      const select3 = (triggerDate, modifiers, e2) => {
25381        let newDates = [...selected ?? []];
25382        if (isSelected2(triggerDate)) {
25383          if (selected?.length === min3) {
25384            return;
25385          }
25386          if (required && selected?.length === 1) {
25387            return;
25388          }
25389          newDates = selected?.filter((d2) => !isSameDay2(d2, triggerDate));
25390        } else {
25391          if (selected?.length === max3) {
25392            newDates = [triggerDate];
25393          } else {
25394            newDates = [...newDates, triggerDate];
25395          }
25396        }
25397        if (!onSelect) {
25398          setSelected(newDates);
25399        }
25400        onSelect?.(newDates, triggerDate, modifiers, e2);
25401        return newDates;
25402      };
25403      return {
25404        selected,
25405        select: select3,
25406        isSelected: isSelected2
25407      };
25408    }
25409  
25410    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/addToRange.js
25411    function addToRange(date, initialRange, min3 = 0, max3 = 0, required = false, dateLib = defaultDateLib) {
25412      const { from, to } = initialRange || {};
25413      const { isSameDay: isSameDay2, isAfter: isAfter2, isBefore: isBefore2 } = dateLib;
25414      let range;
25415      if (!from && !to) {
25416        range = { from: date, to: min3 > 0 ? void 0 : date };
25417      } else if (from && !to) {
25418        if (isSameDay2(from, date)) {
25419          if (min3 === 0) {
25420            range = { from, to: date };
25421          } else if (required) {
25422            range = { from, to: void 0 };
25423          } else {
25424            range = void 0;
25425          }
25426        } else if (isBefore2(date, from)) {
25427          range = { from: date, to: from };
25428        } else {
25429          range = { from, to: date };
25430        }
25431      } else if (from && to) {
25432        if (isSameDay2(from, date) && isSameDay2(to, date)) {
25433          if (required) {
25434            range = { from, to };
25435          } else {
25436            range = void 0;
25437          }
25438        } else if (isSameDay2(from, date)) {
25439          range = { from, to: min3 > 0 ? void 0 : date };
25440        } else if (isSameDay2(to, date)) {
25441          range = { from: date, to: min3 > 0 ? void 0 : date };
25442        } else if (isBefore2(date, from)) {
25443          range = { from: date, to };
25444        } else if (isAfter2(date, from)) {
25445          range = { from, to: date };
25446        } else if (isAfter2(date, to)) {
25447          range = { from, to: date };
25448        } else {
25449          throw new Error("Invalid range");
25450        }
25451      }
25452      if (range?.from && range?.to) {
25453        const diff = dateLib.differenceInCalendarDays(range.to, range.from);
25454        if (max3 > 0 && diff > max3) {
25455          range = { from: date, to: void 0 };
25456        } else if (min3 > 1 && diff < min3) {
25457          range = { from: date, to: void 0 };
25458        }
25459      }
25460      return range;
25461    }
25462  
25463    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js
25464    function rangeContainsDayOfWeek(range, dayOfWeek, dateLib = defaultDateLib) {
25465      const dayOfWeekArr = !Array.isArray(dayOfWeek) ? [dayOfWeek] : dayOfWeek;
25466      let date = range.from;
25467      const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);
25468      const totalDaysLimit = Math.min(totalDays, 6);
25469      for (let i2 = 0; i2 <= totalDaysLimit; i2++) {
25470        if (dayOfWeekArr.includes(date.getDay())) {
25471          return true;
25472        }
25473        date = dateLib.addDays(date, 1);
25474      }
25475      return false;
25476    }
25477  
25478    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js
25479    function rangeOverlaps(rangeLeft, rangeRight, dateLib = defaultDateLib) {
25480      return rangeIncludesDate(rangeLeft, rangeRight.from, false, dateLib) || rangeIncludesDate(rangeLeft, rangeRight.to, false, dateLib) || rangeIncludesDate(rangeRight, rangeLeft.from, false, dateLib) || rangeIncludesDate(rangeRight, rangeLeft.to, false, dateLib);
25481    }
25482  
25483    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js
25484    function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {
25485      const matchers = Array.isArray(modifiers) ? modifiers : [modifiers];
25486      const nonFunctionMatchers = matchers.filter((matcher) => typeof matcher !== "function");
25487      const nonFunctionMatchersResult = nonFunctionMatchers.some((matcher) => {
25488        if (typeof matcher === "boolean")
25489          return matcher;
25490        if (dateLib.isDate(matcher)) {
25491          return rangeIncludesDate(range, matcher, false, dateLib);
25492        }
25493        if (isDatesArray(matcher, dateLib)) {
25494          return matcher.some((date) => rangeIncludesDate(range, date, false, dateLib));
25495        }
25496        if (isDateRange(matcher)) {
25497          if (matcher.from && matcher.to) {
25498            return rangeOverlaps(range, { from: matcher.from, to: matcher.to }, dateLib);
25499          }
25500          return false;
25501        }
25502        if (isDayOfWeekType(matcher)) {
25503          return rangeContainsDayOfWeek(range, matcher.dayOfWeek, dateLib);
25504        }
25505        if (isDateInterval(matcher)) {
25506          const isClosedInterval = dateLib.isAfter(matcher.before, matcher.after);
25507          if (isClosedInterval) {
25508            return rangeOverlaps(range, {
25509              from: dateLib.addDays(matcher.after, 1),
25510              to: dateLib.addDays(matcher.before, -1)
25511            }, dateLib);
25512          }
25513          return dateMatchModifiers(range.from, matcher, dateLib) || dateMatchModifiers(range.to, matcher, dateLib);
25514        }
25515        if (isDateAfterType(matcher) || isDateBeforeType(matcher)) {
25516          return dateMatchModifiers(range.from, matcher, dateLib) || dateMatchModifiers(range.to, matcher, dateLib);
25517        }
25518        return false;
25519      });
25520      if (nonFunctionMatchersResult) {
25521        return true;
25522      }
25523      const functionMatchers = matchers.filter((matcher) => typeof matcher === "function");
25524      if (functionMatchers.length) {
25525        let date = range.from;
25526        const totalDays = dateLib.differenceInCalendarDays(range.to, range.from);
25527        for (let i2 = 0; i2 <= totalDays; i2++) {
25528          if (functionMatchers.some((matcher) => matcher(date))) {
25529            return true;
25530          }
25531          date = dateLib.addDays(date, 1);
25532        }
25533      }
25534      return false;
25535    }
25536  
25537    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/selection/useRange.js
25538    function useRange(props, dateLib) {
25539      const { disabled: disabled2, excludeDisabled, resetOnSelect, selected: initiallySelected, required, onSelect } = props;
25540      const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : void 0);
25541      const selected = !onSelect ? internallySelected : initiallySelected;
25542      const isSelected2 = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);
25543      const select3 = (triggerDate, modifiers, e2) => {
25544        const { min: min3, max: max3 } = props;
25545        let newRange;
25546        if (triggerDate) {
25547          const selectedFrom = selected?.from;
25548          const selectedTo = selected?.to;
25549          const hasFullRange = !!selectedFrom && !!selectedTo;
25550          const isClickingSingleDayRange = !!selectedFrom && !!selectedTo && dateLib.isSameDay(selectedFrom, selectedTo) && dateLib.isSameDay(triggerDate, selectedFrom);
25551          if (resetOnSelect && (hasFullRange || !selected?.from)) {
25552            if (!required && isClickingSingleDayRange) {
25553              newRange = void 0;
25554            } else {
25555              newRange = { from: triggerDate, to: void 0 };
25556            }
25557          } else {
25558            newRange = addToRange(triggerDate, selected, min3, max3, required, dateLib);
25559          }
25560        }
25561        if (excludeDisabled && disabled2 && newRange?.from && newRange.to) {
25562          if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled2, dateLib)) {
25563            newRange.from = triggerDate;
25564            newRange.to = void 0;
25565          }
25566        }
25567        if (!onSelect) {
25568          setSelected(newRange);
25569        }
25570        onSelect?.(newRange, triggerDate, modifiers, e2);
25571        return newRange;
25572      };
25573      return {
25574        selected,
25575        select: select3,
25576        isSelected: isSelected2
25577      };
25578    }
25579  
25580    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/selection/useSingle.js
25581    function useSingle(props, dateLib) {
25582      const { selected: initiallySelected, required, onSelect } = props;
25583      const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : void 0);
25584      const selected = !onSelect ? internallySelected : initiallySelected;
25585      const { isSameDay: isSameDay2 } = dateLib;
25586      const isSelected2 = (compareDate) => {
25587        return selected ? isSameDay2(selected, compareDate) : false;
25588      };
25589      const select3 = (triggerDate, modifiers, e2) => {
25590        let newDate = triggerDate;
25591        if (!required && selected && selected && isSameDay2(triggerDate, selected)) {
25592          newDate = void 0;
25593        }
25594        if (!onSelect) {
25595          setSelected(newDate);
25596        }
25597        if (required) {
25598          onSelect?.(newDate, triggerDate, modifiers, e2);
25599        } else {
25600          onSelect?.(newDate, triggerDate, modifiers, e2);
25601        }
25602        return newDate;
25603      };
25604      return {
25605        selected,
25606        select: select3,
25607        isSelected: isSelected2
25608      };
25609    }
25610  
25611    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/useSelection.js
25612    function useSelection(props, dateLib) {
25613      const single = useSingle(props, dateLib);
25614      const multi = useMulti(props, dateLib);
25615      const range = useRange(props, dateLib);
25616      switch (props.mode) {
25617        case "single":
25618          return single;
25619        case "multiple":
25620          return multi;
25621        case "range":
25622          return range;
25623        default:
25624          return void 0;
25625      }
25626    }
25627  
25628    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js
25629    function toTimeZone(date, timeZone) {
25630      if (date instanceof TZDate && date.timeZone === timeZone) {
25631        return date;
25632      }
25633      return new TZDate(date, timeZone);
25634    }
25635  
25636    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js
25637    function toZoneNoon(date, timeZone, noonSafe) {
25638      if (!noonSafe)
25639        return toTimeZone(date, timeZone);
25640      const zoned = toTimeZone(date, timeZone);
25641      const noonZoned = new TZDate(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 12, 0, 0, timeZone);
25642      return new Date(noonZoned.getTime());
25643    }
25644    function convertMatcher(matcher, timeZone, noonSafe) {
25645      if (typeof matcher === "boolean" || typeof matcher === "function") {
25646        return matcher;
25647      }
25648      if (matcher instanceof Date) {
25649        return toZoneNoon(matcher, timeZone, noonSafe);
25650      }
25651      if (Array.isArray(matcher)) {
25652        return matcher.map((value) => value instanceof Date ? toZoneNoon(value, timeZone, noonSafe) : value);
25653      }
25654      if (isDateRange(matcher)) {
25655        return {
25656          ...matcher,
25657          from: matcher.from ? toTimeZone(matcher.from, timeZone) : matcher.from,
25658          to: matcher.to ? toTimeZone(matcher.to, timeZone) : matcher.to
25659        };
25660      }
25661      if (isDateInterval(matcher)) {
25662        return {
25663          before: toZoneNoon(matcher.before, timeZone, noonSafe),
25664          after: toZoneNoon(matcher.after, timeZone, noonSafe)
25665        };
25666      }
25667      if (isDateAfterType(matcher)) {
25668        return {
25669          after: toZoneNoon(matcher.after, timeZone, noonSafe)
25670        };
25671      }
25672      if (isDateBeforeType(matcher)) {
25673        return {
25674          before: toZoneNoon(matcher.before, timeZone, noonSafe)
25675        };
25676      }
25677      return matcher;
25678    }
25679    function convertMatchersToTimeZone(matchers, timeZone, noonSafe) {
25680      if (!matchers) {
25681        return matchers;
25682      }
25683      if (Array.isArray(matchers)) {
25684        return matchers.map((matcher) => convertMatcher(matcher, timeZone, noonSafe));
25685      }
25686      return convertMatcher(matchers, timeZone, noonSafe);
25687    }
25688  
25689    // node_modules/@daypicker/react/node_modules/react-day-picker/dist/esm/DayPicker.js
25690    function DayPicker(initialProps) {
25691      let props = initialProps;
25692      const timeZone = props.timeZone;
25693      if (timeZone) {
25694        props = {
25695          ...initialProps,
25696          timeZone
25697        };
25698        if (props.today) {
25699          props.today = toTimeZone(props.today, timeZone);
25700        }
25701        if (props.month) {
25702          props.month = toTimeZone(props.month, timeZone);
25703        }
25704        if (props.defaultMonth) {
25705          props.defaultMonth = toTimeZone(props.defaultMonth, timeZone);
25706        }
25707        if (props.startMonth) {
25708          props.startMonth = toTimeZone(props.startMonth, timeZone);
25709        }
25710        if (props.endMonth) {
25711          props.endMonth = toTimeZone(props.endMonth, timeZone);
25712        }
25713        if (props.mode === "single" && props.selected) {
25714          props.selected = toTimeZone(props.selected, timeZone);
25715        } else if (props.mode === "multiple" && props.selected) {
25716          props.selected = props.selected?.map((date) => toTimeZone(date, timeZone));
25717        } else if (props.mode === "range" && props.selected) {
25718          props.selected = {
25719            from: props.selected.from ? toTimeZone(props.selected.from, timeZone) : props.selected.from,
25720            to: props.selected.to ? toTimeZone(props.selected.to, timeZone) : props.selected.to
25721          };
25722        }
25723        if (props.disabled !== void 0) {
25724          props.disabled = convertMatchersToTimeZone(props.disabled, timeZone);
25725        }
25726        if (props.hidden !== void 0) {
25727          props.hidden = convertMatchersToTimeZone(props.hidden, timeZone);
25728        }
25729        if (props.modifiers) {
25730          const nextModifiers = {};
25731          Object.keys(props.modifiers).forEach((key) => {
25732            nextModifiers[key] = convertMatchersToTimeZone(props.modifiers?.[key], timeZone);
25733          });
25734          props.modifiers = nextModifiers;
25735        }
25736      }
25737      const { components, formatters: formatters2, labels, dateLib, locale, classNames } = (0, import_react36.useMemo)(() => {
25738        const locale2 = { ...enUS2, ...props.locale };
25739        const weekStartsOn = props.broadcastCalendar ? 1 : props.weekStartsOn;
25740        const noonOverrides = props.noonSafe && props.timeZone ? createNoonOverrides(props.timeZone, {
25741          weekStartsOn,
25742          locale: locale2
25743        }) : void 0;
25744        const overrides = props.dateLib && noonOverrides ? { ...noonOverrides, ...props.dateLib } : props.dateLib ?? noonOverrides;
25745        const dateLib2 = new DateLib({
25746          locale: locale2,
25747          weekStartsOn,
25748          firstWeekContainsDate: props.firstWeekContainsDate,
25749          useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,
25750          useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,
25751          timeZone: props.timeZone,
25752          numerals: props.numerals
25753        }, overrides);
25754        return {
25755          dateLib: dateLib2,
25756          components: getComponents(props.components),
25757          formatters: getFormatters(props.formatters),
25758          labels: getLabels(props.labels, dateLib2.options),
25759          locale: locale2,
25760          classNames: { ...getDefaultClassNames(), ...props.classNames }
25761        };
25762      }, [
25763        props.locale,
25764        props.broadcastCalendar,
25765        props.weekStartsOn,
25766        props.firstWeekContainsDate,
25767        props.useAdditionalWeekYearTokens,
25768        props.useAdditionalDayOfYearTokens,
25769        props.timeZone,
25770        props.numerals,
25771        props.dateLib,
25772        props.noonSafe,
25773        props.components,
25774        props.formatters,
25775        props.labels,
25776        props.classNames
25777      ]);
25778      if (!props.today) {
25779        props = { ...props, today: dateLib.today() };
25780      }
25781      const { captionLayout, mode, navLayout, numberOfMonths = 1, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles } = props;
25782      const { formatCaption: formatCaption2, formatDay: formatDay2, formatMonthDropdown: formatMonthDropdown2, formatWeekNumber: formatWeekNumber2, formatWeekNumberHeader: formatWeekNumberHeader2, formatWeekdayName: formatWeekdayName2, formatYearDropdown: formatYearDropdown2 } = formatters2;
25783      const calendar = useCalendar(props, dateLib);
25784      const { days, months, navStart, navEnd, previousMonth, nextMonth, goToMonth } = calendar;
25785      const getModifiers = createGetModifiers(days, props, navStart, navEnd, dateLib);
25786      const { isSelected: isSelected2, select: select3, selected: selectedValue } = useSelection(props, dateLib) ?? {};
25787      const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus2(props, calendar, getModifiers, isSelected2 ?? (() => false), dateLib);
25788      const { labelDayButton: labelDayButton2, labelGridcell: labelGridcell2, labelGrid: labelGrid2, labelMonthDropdown: labelMonthDropdown2, labelNav: labelNav2, labelPrevious: labelPrevious2, labelNext: labelNext2, labelWeekday: labelWeekday2, labelWeekNumber: labelWeekNumber2, labelWeekNumberHeader: labelWeekNumberHeader2, labelYearDropdown: labelYearDropdown2 } = labels;
25789      const weekdays = (0, import_react36.useMemo)(() => getWeekdays(dateLib, props.ISOWeek, props.broadcastCalendar, props.today), [dateLib, props.ISOWeek, props.broadcastCalendar, props.today]);
25790      const isInteractive = mode !== void 0 || onDayClick !== void 0;
25791      const handlePreviousClick = (0, import_react36.useCallback)(() => {
25792        if (!previousMonth)
25793          return;
25794        goToMonth(previousMonth);
25795        onPrevClick?.(previousMonth);
25796      }, [previousMonth, goToMonth, onPrevClick]);
25797      const handleNextClick = (0, import_react36.useCallback)(() => {
25798        if (!nextMonth)
25799          return;
25800        goToMonth(nextMonth);
25801        onNextClick?.(nextMonth);
25802      }, [goToMonth, nextMonth, onNextClick]);
25803      const handleDayClick = (0, import_react36.useCallback)((day, m2) => (e2) => {
25804        e2.preventDefault();
25805        e2.stopPropagation();
25806        setFocused(day);
25807        if (m2.disabled) {
25808          return;
25809        }
25810        select3?.(day.date, m2, e2);
25811        onDayClick?.(day.date, m2, e2);
25812      }, [select3, onDayClick, setFocused]);
25813      const handleDayFocus = (0, import_react36.useCallback)((day, m2) => (e2) => {
25814        setFocused(day);
25815        onDayFocus?.(day.date, m2, e2);
25816      }, [onDayFocus, setFocused]);
25817      const handleDayBlur = (0, import_react36.useCallback)((day, m2) => (e2) => {
25818        blur();
25819        onDayBlur?.(day.date, m2, e2);
25820      }, [blur, onDayBlur]);
25821      const handleDayKeyDown = (0, import_react36.useCallback)((day, modifiers) => (e2) => {
25822        const keyMap = {
25823          ArrowLeft: [
25824            e2.shiftKey ? "month" : "day",
25825            props.dir === "rtl" ? "after" : "before"
25826          ],
25827          ArrowRight: [
25828            e2.shiftKey ? "month" : "day",
25829            props.dir === "rtl" ? "before" : "after"
25830          ],
25831          ArrowDown: [e2.shiftKey ? "year" : "week", "after"],
25832          ArrowUp: [e2.shiftKey ? "year" : "week", "before"],
25833          PageUp: [e2.shiftKey ? "year" : "month", "before"],
25834          PageDown: [e2.shiftKey ? "year" : "month", "after"],
25835          Home: ["startOfWeek", "before"],
25836          End: ["endOfWeek", "after"]
25837        };
25838        if (keyMap[e2.key]) {
25839          e2.preventDefault();
25840          e2.stopPropagation();
25841          const [moveBy, moveDir] = keyMap[e2.key];
25842          moveFocus(moveBy, moveDir);
25843        }
25844        onDayKeyDown?.(day.date, modifiers, e2);
25845      }, [moveFocus, onDayKeyDown, props.dir]);
25846      const handleDayMouseEnter = (0, import_react36.useCallback)((day, modifiers) => (e2) => {
25847        onDayMouseEnter?.(day.date, modifiers, e2);
25848      }, [onDayMouseEnter]);
25849      const handleDayMouseLeave = (0, import_react36.useCallback)((day, modifiers) => (e2) => {
25850        onDayMouseLeave?.(day.date, modifiers, e2);
25851      }, [onDayMouseLeave]);
25852      const handleMonthChange = (0, import_react36.useCallback)((date, monthOffset) => (e2) => {
25853        const selectedMonth = Number(e2.target.value);
25854        const month = dateLib.setMonth(dateLib.startOfMonth(date), selectedMonth);
25855        goToMonth(dateLib.addMonths(month, -monthOffset));
25856      }, [dateLib, goToMonth]);
25857      const handleYearChange = (0, import_react36.useCallback)((date, monthOffset) => (e2) => {
25858        const selectedYear = Number(e2.target.value);
25859        const month = dateLib.setYear(dateLib.startOfMonth(date), selectedYear);
25860        goToMonth(dateLib.addMonths(month, -monthOffset));
25861      }, [dateLib, goToMonth]);
25862      const { className, style } = (0, import_react36.useMemo)(() => ({
25863        className: [classNames[UI.Root], props.className].filter(Boolean).join(" "),
25864        style: { ...styles?.[UI.Root], ...props.style }
25865      }), [classNames, props.className, props.style, styles]);
25866      const dataAttributes = getDataAttributes(props);
25867      const getDropdownStyle = (dropdown) => {
25868        const dropdownStyle = styles?.[UI.Dropdown];
25869        const specificDropdownStyle = styles?.[dropdown];
25870        if (!dropdownStyle && !specificDropdownStyle) {
25871          return void 0;
25872        }
25873        return {
25874          ...dropdownStyle,
25875          ...specificDropdownStyle
25876        };
25877      };
25878      const rootElRef = (0, import_react36.useRef)(null);
25879      useAnimation(rootElRef, Boolean(props.animate), {
25880        classNames,
25881        months,
25882        focused,
25883        dateLib
25884      });
25885      const contextValue = {
25886        dayPickerProps: props,
25887        selected: selectedValue,
25888        select: select3,
25889        isSelected: isSelected2,
25890        months,
25891        nextMonth,
25892        previousMonth,
25893        goToMonth,
25894        getModifiers,
25895        components,
25896        classNames,
25897        styles,
25898        labels,
25899        formatters: formatters2
25900      };
25901      return import_react36.default.createElement(
25902        dayPickerContext.Provider,
25903        { value: contextValue },
25904        import_react36.default.createElement(
25905          components.Root,
25906          { rootRef: props.animate ? rootElRef : void 0, className, style, dir: props.dir, id: props.id, lang: props.lang ?? locale.code, nonce: props.nonce, title: props.title, role: props.role, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], ...dataAttributes },
25907          import_react36.default.createElement(
25908            components.Months,
25909            { className: classNames[UI.Months], style: styles?.[UI.Months] },
25910            !props.hideNavigation && !navLayout && import_react36.default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles?.[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
25911            months.map((calendarMonth, displayIndex) => {
25912              const monthOffset = props.reverseMonths ? months.length - 1 - displayIndex : displayIndex;
25913              return import_react36.default.createElement(
25914                components.Month,
25915                {
25916                  "data-animated-month": props.animate ? "true" : void 0,
25917                  className: classNames[UI.Month],
25918                  style: styles?.[UI.Month],
25919                  // biome-ignore lint/suspicious/noArrayIndexKey: breaks animation
25920                  key: displayIndex,
25921                  displayIndex,
25922                  calendarMonth
25923                },
25924                navLayout === "around" && !props.hideNavigation && displayIndex === 0 && import_react36.default.createElement(
25925                  components.PreviousMonthButton,
25926                  { type: "button", className: classNames[UI.PreviousMonthButton], style: styles?.[UI.PreviousMonthButton], tabIndex: previousMonth ? void 0 : -1, "aria-disabled": previousMonth ? void 0 : true, "aria-label": labelPrevious2(previousMonth), onClick: handlePreviousClick, "data-animated-button": props.animate ? "true" : void 0 },
25927                  import_react36.default.createElement(components.Chevron, { disabled: previousMonth ? void 0 : true, className: classNames[UI.Chevron], style: styles?.[UI.Chevron], orientation: props.dir === "rtl" ? "right" : "left" })
25928                ),
25929                import_react36.default.createElement(components.MonthCaption, { "data-animated-caption": props.animate ? "true" : void 0, className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth, displayIndex }, captionLayout?.startsWith("dropdown") ? import_react36.default.createElement(
25930                  components.DropdownNav,
25931                  { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },
25932                  (() => {
25933                    const monthControl = captionLayout === "dropdown" || captionLayout === "dropdown-months" ? import_react36.default.createElement(components.MonthsDropdown, { key: "month", className: classNames[UI.MonthsDropdown], "aria-label": labelMonthDropdown2(), disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date, monthOffset), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters2, dateLib), style: getDropdownStyle(UI.MonthsDropdown), value: dateLib.getMonth(calendarMonth.date) }) : import_react36.default.createElement("span", { key: "month" }, formatMonthDropdown2(calendarMonth.date, dateLib));
25934                    const yearControl = captionLayout === "dropdown" || captionLayout === "dropdown-years" ? import_react36.default.createElement(components.YearsDropdown, { key: "year", className: classNames[UI.YearsDropdown], "aria-label": labelYearDropdown2(dateLib.options), disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date, monthOffset), options: getYearOptions(navStart, navEnd, formatters2, dateLib, Boolean(props.reverseYears)), style: getDropdownStyle(UI.YearsDropdown), value: dateLib.getYear(calendarMonth.date) }) : import_react36.default.createElement("span", { key: "year" }, formatYearDropdown2(calendarMonth.date, dateLib));
25935                    const controls = dateLib.getMonthYearOrder() === "year-first" ? [yearControl, monthControl] : [monthControl, yearControl];
25936                    return controls;
25937                  })(),
25938                  import_react36.default.createElement("span", { role: "status", "aria-live": "polite", style: {
25939                    border: 0,
25940                    clip: "rect(0 0 0 0)",
25941                    height: "1px",
25942                    margin: "-1px",
25943                    overflow: "hidden",
25944                    padding: 0,
25945                    position: "absolute",
25946                    width: "1px",
25947                    whiteSpace: "nowrap",
25948                    wordWrap: "normal"
25949                  } }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))
25950                ) : import_react36.default.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], style: styles?.[UI.CaptionLabel], role: "status", "aria-live": "polite" }, formatCaption2(calendarMonth.date, dateLib.options, dateLib))),
25951                navLayout === "around" && !props.hideNavigation && displayIndex === numberOfMonths - 1 && import_react36.default.createElement(
25952                  components.NextMonthButton,
25953                  { type: "button", className: classNames[UI.NextMonthButton], style: styles?.[UI.NextMonthButton], tabIndex: nextMonth ? void 0 : -1, "aria-disabled": nextMonth ? void 0 : true, "aria-label": labelNext2(nextMonth), onClick: handleNextClick, "data-animated-button": props.animate ? "true" : void 0 },
25954                  import_react36.default.createElement(components.Chevron, { disabled: nextMonth ? void 0 : true, className: classNames[UI.Chevron], style: styles?.[UI.Chevron], orientation: props.dir === "rtl" ? "left" : "right" })
25955                ),
25956                displayIndex === numberOfMonths - 1 && navLayout === "after" && !props.hideNavigation && import_react36.default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : void 0, className: classNames[UI.Nav], style: styles?.[UI.Nav], "aria-label": labelNav2(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth, nextMonth }),
25957                import_react36.default.createElement(
25958                  components.MonthGrid,
25959                  { role: "grid", "aria-multiselectable": mode === "multiple" || mode === "range", "aria-label": labelGrid2(calendarMonth.date, dateLib.options, dateLib) || void 0, className: classNames[UI.MonthGrid], style: styles?.[UI.MonthGrid] },
25960                  !props.hideWeekdays && import_react36.default.createElement(
25961                    components.Weekdays,
25962                    { "data-animated-weekdays": props.animate ? "true" : void 0, className: classNames[UI.Weekdays], style: styles?.[UI.Weekdays] },
25963                    showWeekNumber && import_react36.default.createElement(components.WeekNumberHeader, { "aria-label": labelWeekNumberHeader2(dateLib.options), className: classNames[UI.WeekNumberHeader], style: styles?.[UI.WeekNumberHeader], scope: "col" }, formatWeekNumberHeader2()),
25964                    weekdays.map((weekday) => import_react36.default.createElement(components.Weekday, { "aria-label": labelWeekday2(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles?.[UI.Weekday], scope: "col" }, formatWeekdayName2(weekday, dateLib.options, dateLib)))
25965                  ),
25966                  import_react36.default.createElement(components.Weeks, { "data-animated-weeks": props.animate ? "true" : void 0, className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week) => {
25967                    return import_react36.default.createElement(
25968                      components.Week,
25969                      { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week },
25970                      showWeekNumber && import_react36.default.createElement(components.WeekNumber, { week, style: styles?.[UI.WeekNumber], "aria-label": labelWeekNumber2(week.weekNumber, {
25971                        locale
25972                      }), className: classNames[UI.WeekNumber], scope: "row", role: "rowheader" }, formatWeekNumber2(week.weekNumber, dateLib)),
25973                      week.days.map((day) => {
25974                        const { date } = day;
25975                        const modifiers = getModifiers(day);
25976                        modifiers[DayFlag.focused] = !modifiers.hidden && Boolean(focused?.isEqualTo(day));
25977                        modifiers[SelectionState.selected] = isSelected2?.(date) || modifiers.selected;
25978                        if (isDateRange(selectedValue)) {
25979                          const { from, to } = selectedValue;
25980                          modifiers[SelectionState.range_start] = Boolean(from && to && dateLib.isSameDay(date, from));
25981                          modifiers[SelectionState.range_end] = Boolean(from && to && dateLib.isSameDay(date, to));
25982                          modifiers[SelectionState.range_middle] = rangeIncludesDate(selectedValue, date, true, dateLib);
25983                        }
25984                        const style2 = getStyleForModifiers(modifiers, styles, props.modifiersStyles);
25985                        const className2 = getClassNamesForModifiers(modifiers, classNames, props.modifiersClassNames);
25986                        const ariaLabel = !isInteractive && !modifiers.hidden ? labelGridcell2(date, modifiers, dateLib.options, dateLib) : void 0;
25987                        return import_react36.default.createElement(components.Day, { key: `$day.isoDate}_$day.displayMonthId}`, day, modifiers, className: className2.join(" "), style: style2, role: "gridcell", "aria-selected": modifiers.selected || void 0, "aria-label": ariaLabel, "data-day": day.isoDate, "data-month": day.outside ? day.dateMonthId : void 0, "data-selected": modifiers.selected || void 0, "data-disabled": modifiers.disabled || void 0, "data-hidden": modifiers.hidden || void 0, "data-outside": day.outside || void 0, "data-focused": modifiers.focused || void 0, "data-today": modifiers.today || void 0 }, !modifiers.hidden && isInteractive ? import_react36.default.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: "button", day, modifiers, disabled: !modifiers.focused && modifiers.disabled || void 0, "aria-disabled": modifiers.focused && modifiers.disabled || void 0, tabIndex: isFocusTarget(day) ? 0 : -1, "aria-label": labelDayButton2(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay2(date, dateLib.options, dateLib)) : !modifiers.hidden && formatDay2(day.date, dateLib.options, dateLib));
25988                      })
25989                    );
25990                  }))
25991                )
25992              );
25993            })
25994          ),
25995          props.footer && import_react36.default.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: "status", "aria-live": "polite" }, props.footer)
25996        )
25997      );
25998    }
25999  
26000    // packages/ui/build-module/calendar/calendar.mjs
26001    var import_element52 = __toESM(require_element(), 1);
26002  
26003    // packages/ui/build-module/calendar/utils/components.mjs
26004    var import_element48 = __toESM(require_element(), 1);
26005    var import_compose = __toESM(require_compose(), 1);
26006    var import_i18n12 = __toESM(require_i18n(), 1);
26007  
26008    // packages/ui/build-module/icon-button/icon-button.mjs
26009    var import_element46 = __toESM(require_element(), 1);
26010    var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1);
26011    var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash";
26012    function getRuntime24() {
26013      const globalScope = globalThis;
26014      if (globalScope.__wpStyleRuntime) {
26015        return globalScope.__wpStyleRuntime;
26016      }
26017      globalScope.__wpStyleRuntime = {
26018        documents: /* @__PURE__ */ new Map(),
26019        styles: /* @__PURE__ */ new Map(),
26020        injectedStyles: /* @__PURE__ */ new WeakMap()
26021      };
26022      if (typeof document !== "undefined") {
26023        registerDocument24(document);
26024      }
26025      return globalScope.__wpStyleRuntime;
26026    }
26027    function documentContainsStyleHash24(targetDocument, hash) {
26028      if (!targetDocument.head) {
26029        return false;
26030      }
26031      for (const style of targetDocument.head.querySelectorAll(
26032        `style[$STYLE_HASH_ATTRIBUTE24}]`
26033      )) {
26034        if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) {
26035          return true;
26036        }
26037      }
26038      return false;
26039    }
26040    function injectStyle24(targetDocument, hash, css) {
26041      if (!targetDocument.head) {
26042        return;
26043      }
26044      const runtime = getRuntime24();
26045      let injectedStyles = runtime.injectedStyles.get(targetDocument);
26046      if (!injectedStyles) {
26047        injectedStyles = /* @__PURE__ */ new Set();
26048        runtime.injectedStyles.set(targetDocument, injectedStyles);
26049      }
26050      if (injectedStyles.has(hash)) {
26051        return;
26052      }
26053      if (documentContainsStyleHash24(targetDocument, hash)) {
26054        injectedStyles.add(hash);
26055        return;
26056      }
26057      const style = targetDocument.createElement("style");
26058      style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash);
26059      style.appendChild(targetDocument.createTextNode(css));
26060      targetDocument.head.appendChild(style);
26061      injectedStyles.add(hash);
26062    }
26063    function registerDocument24(targetDocument) {
26064      const runtime = getRuntime24();
26065      runtime.documents.set(
26066        targetDocument,
26067        (runtime.documents.get(targetDocument) ?? 0) + 1
26068      );
26069      for (const [hash, css] of runtime.styles) {
26070        injectStyle24(targetDocument, hash, css);
26071      }
26072      return () => {
26073        const count = runtime.documents.get(targetDocument);
26074        if (count === void 0) {
26075          return;
26076        }
26077        if (count <= 1) {
26078          runtime.documents.delete(targetDocument);
26079          return;
26080        }
26081        runtime.documents.set(targetDocument, count - 1);
26082      };
26083    }
26084    function registerStyle24(hash, css) {
26085      const runtime = getRuntime24();
26086      runtime.styles.set(hash, css);
26087      for (const targetDocument of runtime.documents.keys()) {
26088        injectStyle24(targetDocument, hash, css);
26089      }
26090    }
26091    if (typeof process === "undefined" || true) {
26092      registerStyle24("c5cdafb1bc", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0px;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}}");
26093    }
26094    var style_default23 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" };
26095    var IconButton = (0, import_element46.forwardRef)(
26096      function IconButton2({
26097        label,
26098        className,
26099        // Prevent accidental forwarding of `children`
26100        children: _children,
26101        disabled: disabled2,
26102        focusableWhenDisabled = true,
26103        icon,
26104        size: size4,
26105        shortcut,
26106        positioner,
26107        "aria-describedby": ariaDescribedBy,
26108        "aria-keyshortcuts": ariaKeyShortcuts,
26109        ...restProps
26110      }, ref) {
26111        const classes = clsx_default(style_default23["icon-button"], className);
26112        const { descriptionId, targetProps } = useKeyboardShortcutProps({
26113          "aria-describedby": ariaDescribedBy,
26114          "aria-keyshortcuts": ariaKeyShortcuts,
26115          shortcut
26116        });
26117        return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(Root, { children: [
26118          /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
26119            Trigger,
26120            {
26121              ref,
26122              ...targetProps,
26123              disabled: disabled2 && !focusableWhenDisabled,
26124              render: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
26125                Button4,
26126                {
26127                  ...restProps,
26128                  size: size4,
26129                  "aria-label": label,
26130                  disabled: disabled2,
26131                  focusableWhenDisabled
26132                }
26133              ),
26134              className: classes,
26135              children: [
26136                /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Icon, { icon, size: 24, className: style_default23.icon }),
26137                shortcut && descriptionId && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
26138                  KeyboardShortcutDescription,
26139                  {
26140                    descriptionId,
26141                    shortcut
26142                  }
26143                )
26144              ]
26145            }
26146          ),
26147          /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(Popup, { positioner, children: [
26148            label,
26149            shortcut && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment, { children: [
26150              " ",
26151              /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(KeyboardShortcutDisplay, { shortcut })
26152            ] })
26153          ] })
26154        ] });
26155      }
26156    );
26157  
26158    // packages/ui/build-module/calendar/utils/root-context.mjs
26159    var import_element47 = __toESM(require_element(), 1);
26160    var RootContext = (0, import_element47.createContext)({});
26161  
26162    // packages/ui/build-module/calendar/utils/components.mjs
26163    var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1);
26164    var PreviewDashStartAndEnd = () => {
26165      return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
26166        "svg",
26167        {
26168          viewBox: "0 0 32 32",
26169          xmlns: "http://www.w3.org/2000/svg",
26170          fill: "none",
26171          stroke: "currentColor",
26172          strokeDasharray: "3.7677",
26173          strokeDashoffset: "3.2",
26174          strokeWidth: "1",
26175          children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("path", { d: "M29.5,0.5 h-27 a2,2 0 0 0 -2,2 v27 a2,2 0 0 0 2,2 h27 a2,2 0 0 0 2,-2 v-27 a2,2 0 0 0 -2,-2" })
26176        }
26177      );
26178    };
26179    var PreviewDashStart = () => {
26180      return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
26181        "svg",
26182        {
26183          viewBox: "0 0 32 32",
26184          xmlns: "http://www.w3.org/2000/svg",
26185          fill: "none",
26186          stroke: "currentColor",
26187          strokeDasharray: "3.84516",
26188          strokeDashoffset: "1.9226",
26189          strokeWidth: "1",
26190          children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("path", { d: "M32,0.5 h-29.5 a2,2 0 0 0 -2,2 v27 a2,2 0 0 0 2,2 h30" })
26191        }
26192      );
26193    };
26194    var PreviewDashMiddle = () => {
26195      return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
26196        "svg",
26197        {
26198          viewBox: "0 0 32 32",
26199          xmlns: "http://www.w3.org/2000/svg",
26200          fill: "none",
26201          stroke: "currentColor",
26202          strokeDasharray: "3.9 4",
26203          strokeDashoffset: "2",
26204          strokeWidth: "1",
26205          children: [
26206            /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("line", { x1: "0", y1: "0.5", x2: "100", y2: "0.5" }),
26207            /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("line", { x1: "0", y1: "31.5", x2: "100", y2: "31.5" })
26208          ]
26209        }
26210      );
26211    };
26212    var PreviewDashEnd = () => {
26213      return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
26214        "svg",
26215        {
26216          viewBox: "0 0 32 32",
26217          xmlns: "http://www.w3.org/2000/svg",
26218          fill: "none",
26219          stroke: "currentColor",
26220          strokeDasharray: "3.84516",
26221          strokeDashoffset: "1.9226",
26222          strokeWidth: "1",
26223          children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("path", { d: "M0,0.5 h29.5 a2,2 0 0 1 2,2 v27 a2,2 0 0 1 -2,2 h-29.5" })
26224        }
26225      );
26226    };
26227    function Day2(props) {
26228      const { day, modifiers, children, ...tdProps } = props;
26229      let PreviewDash;
26230      if (modifiers.preview_start && modifiers.preview_end) {
26231        PreviewDash = PreviewDashStartAndEnd;
26232      } else if (modifiers.preview_start) {
26233        PreviewDash = PreviewDashStart;
26234      } else if (modifiers.preview_end) {
26235        PreviewDash = PreviewDashEnd;
26236      } else if (modifiers.preview) {
26237        PreviewDash = PreviewDashMiddle;
26238      }
26239      return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("td", { ...tdProps, children: [
26240        PreviewDash && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(PreviewDash, {}),
26241        children
26242      ] });
26243    }
26244    function Root4({ rootRef, ...props }) {
26245      const { render: render4, ref, role, defaultAriaLabel } = (0, import_element48.useContext)(RootContext);
26246      const { months, labels } = useDayPicker();
26247      const hasExplicitLabel = props["aria-label"] !== void 0 || props["aria-labelledby"] !== void 0;
26248      let ariaLabel = props["aria-label"];
26249      if (!hasExplicitLabel && defaultAriaLabel && role === "application") {
26250        const currentMonth = months[0];
26251        ariaLabel = currentMonth ? (0, import_i18n12.sprintf)(
26252          // translators: 1: Calendar type. 2: Current month and year.
26253          (0, import_i18n12.__)("%1$s, %2$s"),
26254          defaultAriaLabel,
26255          labels.labelGrid(currentMonth.date)
26256        ) : defaultAriaLabel;
26257      }
26258      const mergedRef = (0, import_compose.useMergeRefs)([rootRef ?? null, ref ?? null]);
26259      return useRender({
26260        render: render4,
26261        defaultTagName: "div",
26262        ref: mergedRef,
26263        props: { ...props, role, "aria-label": ariaLabel }
26264      });
26265    }
26266    function NavButton({
26267      icon,
26268      className,
26269      children: _children,
26270      "aria-label": label,
26271      "aria-disabled": ariaDisabled,
26272      ...props
26273    }) {
26274      return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
26275        IconButton,
26276        {
26277          ...props,
26278          className,
26279          label,
26280          icon,
26281          variant: "minimal",
26282          tone: "neutral",
26283          size: "compact",
26284          disabled: ariaDisabled === true || ariaDisabled === "true",
26285          focusableWhenDisabled: true
26286        }
26287      );
26288    }
26289    function PreviousMonthButton2(props) {
26290      return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(NavButton, { ...props, icon: chevron_left_default });
26291    }
26292    function NextMonthButton2(props) {
26293      return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(NavButton, { ...props, icon: chevron_right_default });
26294    }
26295  
26296    // packages/ui/build-module/calendar/utils/constants.mjs
26297    var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash";
26298    function getRuntime25() {
26299      const globalScope = globalThis;
26300      if (globalScope.__wpStyleRuntime) {
26301        return globalScope.__wpStyleRuntime;
26302      }
26303      globalScope.__wpStyleRuntime = {
26304        documents: /* @__PURE__ */ new Map(),
26305        styles: /* @__PURE__ */ new Map(),
26306        injectedStyles: /* @__PURE__ */ new WeakMap()
26307      };
26308      if (typeof document !== "undefined") {
26309        registerDocument25(document);
26310      }
26311      return globalScope.__wpStyleRuntime;
26312    }
26313    function documentContainsStyleHash25(targetDocument, hash) {
26314      if (!targetDocument.head) {
26315        return false;
26316      }
26317      for (const style of targetDocument.head.querySelectorAll(
26318        `style[$STYLE_HASH_ATTRIBUTE25}]`
26319      )) {
26320        if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) {
26321          return true;
26322        }
26323      }
26324      return false;
26325    }
26326    function injectStyle25(targetDocument, hash, css) {
26327      if (!targetDocument.head) {
26328        return;
26329      }
26330      const runtime = getRuntime25();
26331      let injectedStyles = runtime.injectedStyles.get(targetDocument);
26332      if (!injectedStyles) {
26333        injectedStyles = /* @__PURE__ */ new Set();
26334        runtime.injectedStyles.set(targetDocument, injectedStyles);
26335      }
26336      if (injectedStyles.has(hash)) {
26337        return;
26338      }
26339      if (documentContainsStyleHash25(targetDocument, hash)) {
26340        injectedStyles.add(hash);
26341        return;
26342      }
26343      const style = targetDocument.createElement("style");
26344      style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash);
26345      style.appendChild(targetDocument.createTextNode(css));
26346      targetDocument.head.appendChild(style);
26347      injectedStyles.add(hash);
26348    }
26349    function registerDocument25(targetDocument) {
26350      const runtime = getRuntime25();
26351      runtime.documents.set(
26352        targetDocument,
26353        (runtime.documents.get(targetDocument) ?? 0) + 1
26354      );
26355      for (const [hash, css] of runtime.styles) {
26356        injectStyle25(targetDocument, hash, css);
26357      }
26358      return () => {
26359        const count = runtime.documents.get(targetDocument);
26360        if (count === void 0) {
26361          return;
26362        }
26363        if (count <= 1) {
26364          runtime.documents.delete(targetDocument);
26365          return;
26366        }
26367        runtime.documents.set(targetDocument, count - 1);
26368      };
26369    }
26370    function registerStyle25(hash, css) {
26371      const runtime = getRuntime25();
26372      runtime.styles.set(hash, css);
26373      for (const targetDocument of runtime.documents.keys()) {
26374        injectStyle25(targetDocument, hash, css);
26375      }
26376    }
26377    if (typeof process === "undefined" || true) {
26378      registerStyle25("9d2212290a", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._2c7ac60ba97b3411__root{--wp-ui-calendar-cell-size:var(--wpds-dimension-size-md,32px);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:inline-block;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);position:relative;z-index:0}._172c492625235710__day{color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);padding:0;position:relative;&:has(._1b64226e315835f8__day-button:disabled){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&:has(._1b64226e315835f8__day-button:focus-visible),&:has(._1b64226e315835f8__day-button:hover:not(:disabled)){color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}}._1b64226e315835f8__day-button{align-items:center;background:none;border:none;border-radius:var(--wpds-border-radius-sm,2px);color:inherit;cursor:var(--wpds-cursor-control,pointer);display:flex;font:inherit;font-variant-numeric:tabular-nums;height:var(--wp-ui-calendar-cell-size);justify-content:center;margin:0;padding:0;position:relative;width:var(--wp-ui-calendar-cell-size);&:before{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border:none;border-radius:var(--wpds-border-radius-sm,2px);z-index:-1}&:after,&:before{content:"";inset:0;position:absolute}&:after{pointer-events:none;z-index:1}&:disabled{cursor:revert;&:before{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}@media (forced-colors:active){text-decoration:line-through}}&:focus-visible:before,&:hover:not(:disabled):before{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed)}}._66b9a8120581fd4b__caption-label{align-items:center;border:0;display:inline-flex;position:relative;text-transform:capitalize;white-space:nowrap;z-index:1}._2c7ac60ba97b3411__root[dir=rtl] ._395a75bb1930f57e__nav-button{transform:rotate(180deg);transform-origin:50%}._337e5337d49b7f3d__month-caption{align-content:center;display:flex;height:var(--wp-ui-calendar-cell-size);justify-content:center;margin-bottom:var(--wpds-dimension-gap-md,12px)}._110e46230c68e498__months{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-lg,16px);justify-content:center;max-width:fit-content;position:relative}._92915239fedb1fea__month-grid{border-collapse:separate;border-spacing:0 var(--wpds-dimension-gap-xs,4px)}._66b1d4a7b488b496__nav{align-items:center;display:flex;height:var(--wp-ui-calendar-cell-size);inset-block-start:0;inset-inline-end:0;inset-inline-start:0;justify-content:space-between;position:absolute}._7207199709ca5776__weekday{color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-weight:var(--wpds-typography-font-weight-default,400);height:var(--wp-ui-calendar-cell-size);padding:0;text-align:center;text-transform:uppercase;width:var(--wp-ui-calendar-cell-size)}._058175f0f9c495e0__today:after{border:2px solid;border-radius:50%;content:"";height:0;inset-block-start:2px;inset-inline-end:2px;position:absolute;width:0;z-index:1}.acb642920fb0bef5__selected:not(._165d91a726feca9c__range-middle){&:has(._1b64226e315835f8__day-button,._1b64226e315835f8__day-button:hover:not(:disabled)){color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0)}&:has(._1b64226e315835f8__day-button:disabled){color:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}._1b64226e315835f8__day-button{&:before{background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);border:1px solid transparent}&:disabled:before{background-color:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6)}&:hover:not(:disabled):before{background-color:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e)}}}.c259c5c255fda10f__outside{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}._4d8957a0ca4ec8f0__hidden{visibility:hidden}.f2523033db055ffe__range-start:not(.c04a453de7b11520__range-end) ._1b64226e315835f8__day-button{&,&:before{border-end-end-radius:0;border-start-end-radius:0}}._165d91a726feca9c__range-middle ._1b64226e315835f8__day-button{&:before{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);border-color:transparent;border-radius:0;border-style:solid;border-width:1px 0}}.c04a453de7b11520__range-end:not(.f2523033db055ffe__range-start) ._1b64226e315835f8__day-button{&,&:before{border-end-start-radius:0;border-start-start-radius:0}}._81b244e7c541d95e__preview svg{color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);inset:0;pointer-events:none;position:absolute;@media (forced-colors:active){color:inherit}}._81b244e7c541d95e__preview.acb642920fb0bef5__selected:not(._165d91a726feca9c__range-middle) svg{display:none}._2c7ac60ba97b3411__root[dir=rtl] ._81b244e7c541d95e__preview svg{transform:scaleX(-1)}._81b244e7c541d95e__preview._165d91a726feca9c__range-middle ._1b64226e315835f8__day-button:before{border:none}@keyframes _255a1a462a5377db__slide-in-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes c21e45f616d6db39__slide-in-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes aed80001de9ae226__slide-out-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes _7d4779a7f29408f2__slide-out-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes _83ba6321b055d687__fade-in{0%{opacity:0}to{opacity:1}}@keyframes _96fbead71248d210__fade-out{0%{opacity:1}to{opacity:0}}._1563bccb09e39c30__caption-after-enter,._60ac2a7fc3208801__weeks-before-exit,._735dacf9052adecd__caption-before-exit,._7f73a6ab85101202__weeks-after-exit,._805d698b56ba4a29__weeks-after-enter,._9721326fbc23a5fb__weeks-before-enter,.c7a3082839155d29__caption-after-exit,.cb8a5ec82ad0885e__caption-before-enter{animation-duration:0s;animation-fill-mode:forwards;animation-timing-function:var(--wpds-motion-easing-balanced,cubic-bezier(.4,0,.2,1));@media not (prefers-reduced-motion){animation-duration:var(--wpds-motion-duration-lg,.3s)}}._2c7ac60ba97b3411__root[dir=rtl] ._805d698b56ba4a29__weeks-after-enter,._9721326fbc23a5fb__weeks-before-enter{animation-name:_255a1a462a5377db__slide-in-left}._2c7ac60ba97b3411__root[dir=rtl] ._7f73a6ab85101202__weeks-after-exit,._60ac2a7fc3208801__weeks-before-exit{animation-name:aed80001de9ae226__slide-out-left}._2c7ac60ba97b3411__root[dir=rtl] ._9721326fbc23a5fb__weeks-before-enter,._805d698b56ba4a29__weeks-after-enter{animation-name:c21e45f616d6db39__slide-in-right}._2c7ac60ba97b3411__root[dir=rtl] ._60ac2a7fc3208801__weeks-before-exit,._7f73a6ab85101202__weeks-after-exit{animation-name:_7d4779a7f29408f2__slide-out-right}._1563bccb09e39c30__caption-after-enter,.cb8a5ec82ad0885e__caption-before-enter{animation-name:_83ba6321b055d687__fade-in}._735dacf9052adecd__caption-before-exit,.c7a3082839155d29__caption-after-exit{animation-name:_96fbead71248d210__fade-out}}}');
26379    }
26380    var style_default24 = { "root": "_2c7ac60ba97b3411__root", "day": "_172c492625235710__day", "day-button": "_1b64226e315835f8__day-button", "caption-label": "_66b9a8120581fd4b__caption-label", "nav-button": "_395a75bb1930f57e__nav-button", "month-caption": "_337e5337d49b7f3d__month-caption", "months": "_110e46230c68e498__months", "month-grid": "_92915239fedb1fea__month-grid", "nav": "_66b1d4a7b488b496__nav", "weekday": "_7207199709ca5776__weekday", "today": "_058175f0f9c495e0__today", "selected": "acb642920fb0bef5__selected", "range-middle": "_165d91a726feca9c__range-middle", "outside": "c259c5c255fda10f__outside", "hidden": "_4d8957a0ca4ec8f0__hidden", "range-start": "f2523033db055ffe__range-start", "range-end": "c04a453de7b11520__range-end", "preview": "_81b244e7c541d95e__preview", "weeks-before-enter": "_9721326fbc23a5fb__weeks-before-enter", "weeks-before-exit": "_60ac2a7fc3208801__weeks-before-exit", "weeks-after-enter": "_805d698b56ba4a29__weeks-after-enter", "weeks-after-exit": "_7f73a6ab85101202__weeks-after-exit", "caption-after-enter": "_1563bccb09e39c30__caption-after-enter", "caption-after-exit": "c7a3082839155d29__caption-after-exit", "caption-before-enter": "cb8a5ec82ad0885e__caption-before-enter", "caption-before-exit": "_735dacf9052adecd__caption-before-exit", "slide-in-left": "_255a1a462a5377db__slide-in-left", "slide-out-left": "aed80001de9ae226__slide-out-left", "slide-in-right": "c21e45f616d6db39__slide-in-right", "slide-out-right": "_7d4779a7f29408f2__slide-out-right", "fade-in": "_83ba6321b055d687__fade-in", "fade-out": "_96fbead71248d210__fade-out" };
26381    if (typeof process === "undefined" || true) {
26382      registerStyle25("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
26383    }
26384    var resets_default10 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
26385    if (typeof process === "undefined" || true) {
26386      registerStyle25("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
26387    }
26388    var focus_module_default3 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
26389    if (typeof process === "undefined" || true) {
26390      registerStyle25("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
26391    }
26392    var global_css_defense_default5 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
26393    var CLASSNAMES = {
26394      root: clsx_default(style_default24.root, resets_default10["box-sizing"]),
26395      day: style_default24.day,
26396      day_button: clsx_default(
26397        style_default24["day-button"],
26398        global_css_defense_default5.button,
26399        focus_module_default3["outset-ring--focus-visible"]
26400      ),
26401      outside: style_default24.outside,
26402      caption_label: style_default24["caption-label"],
26403      button_next: style_default24["nav-button"],
26404      button_previous: style_default24["nav-button"],
26405      nav: style_default24.nav,
26406      month_caption: style_default24["month-caption"],
26407      months: style_default24.months,
26408      month_grid: style_default24["month-grid"],
26409      weekday: style_default24.weekday,
26410      today: style_default24.today,
26411      selected: style_default24.selected,
26412      /*
26413       * Disabled days are styled through `:has(.day-button:disabled)` rather than
26414       * a modifier class on the cell, because the two are not equivalent: the
26415       * focused day keeps its button enabled so it stays reachable. Mapped to
26416       * `undefined` on purpose, so `@daypicker/react` doesn't fall back to its
26417       * own `rdp-disabled` class for a modifier we don't style.
26418       */
26419      disabled: void 0,
26420      hidden: style_default24.hidden,
26421      range_start: style_default24["range-start"],
26422      range_end: style_default24["range-end"],
26423      range_middle: style_default24["range-middle"],
26424      weeks_before_enter: style_default24["weeks-before-enter"],
26425      weeks_before_exit: style_default24["weeks-before-exit"],
26426      weeks_after_enter: style_default24["weeks-after-enter"],
26427      weeks_after_exit: style_default24["weeks-after-exit"],
26428      caption_after_enter: style_default24["caption-after-enter"],
26429      caption_after_exit: style_default24["caption-after-exit"],
26430      caption_before_enter: style_default24["caption-before-enter"],
26431      caption_before_exit: style_default24["caption-before-exit"]
26432    };
26433    var MODIFIER_CLASSNAMES = {
26434      preview: style_default24.preview
26435    };
26436    var COMMON_PROPS = {
26437      animate: true,
26438      // Only show days in the current month
26439      showOutsideDays: false,
26440      // Hide week number column
26441      showWeekNumber: false,
26442      // Show weekdays row
26443      hideWeekdays: false,
26444      // Month and year caption are not interactive
26445      captionLayout: "label",
26446      // Show a variable number of weeks depending on the month
26447      fixedWeeks: false,
26448      // Show navigation buttons
26449      hideNavigation: false,
26450      // Class names
26451      classNames: CLASSNAMES,
26452      components: {
26453        Day: Day2,
26454        Root: Root4,
26455        PreviousMonthButton: PreviousMonthButton2,
26456        NextMonthButton: NextMonthButton2
26457      }
26458    };
26459  
26460    // packages/ui/build-module/calendar/utils/misc.mjs
26461    function clampNumberOfMonths(numberOfMonths) {
26462      return Math.min(3, Math.max(1, numberOfMonths));
26463    }
26464  
26465    // packages/ui/build-module/calendar/utils/use-controlled-value.mjs
26466    var import_element49 = __toESM(require_element(), 1);
26467    function useControlledValue2({
26468      defaultValue: defaultValue2,
26469      onChange,
26470      value: valueProp
26471    }) {
26472      const hasValue = typeof valueProp !== "undefined";
26473      const initialValue = hasValue ? valueProp : defaultValue2;
26474      const [state, setState] = (0, import_element49.useState)(initialValue);
26475      const value = hasValue ? valueProp : state;
26476      const uncontrolledSetValue = (0, import_element49.useCallback)(
26477        (nextValue, ...args) => {
26478          setState(nextValue);
26479          onChange?.(nextValue, ...args);
26480        },
26481        [onChange]
26482      );
26483      let setValue;
26484      if (hasValue && typeof onChange === "function") {
26485        setValue = onChange;
26486      } else if (!hasValue && typeof onChange === "function") {
26487        setValue = uncontrolledSetValue;
26488      } else {
26489        setValue = setState;
26490      }
26491      return [value, setValue];
26492    }
26493  
26494    // packages/ui/build-module/calendar/utils/use-localization-props.mjs
26495    var import_i18n13 = __toESM(require_i18n(), 1);
26496    var import_element50 = __toESM(require_element(), 1);
26497    function isLocaleRTL(locale) {
26498      const direction = (locale.getTextInfo?.() ?? locale.textInfo)?.direction;
26499      if (direction) {
26500        return direction === "rtl";
26501      }
26502      return [
26503        "ar",
26504        // Arabic
26505        "he",
26506        // Hebrew
26507        "fa",
26508        // Persian (Farsi)
26509        "ur",
26510        // Urdu
26511        "ps",
26512        // Pashto
26513        "syr",
26514        // Syriac
26515        "dv",
26516        // Divehi
26517        "ku",
26518        // Kurdish (Sorani)
26519        "ckb",
26520        // Central Kurdish (Sorani)
26521        "ug",
26522        // Uyghur
26523        "yi"
26524        // Yiddish
26525      ].includes(locale.language);
26526    }
26527    function getSupportedLocaleCode(localeCode) {
26528      if (!localeCode) {
26529        return;
26530      }
26531      let supportedLocaleCode;
26532      try {
26533        supportedLocaleCode = Intl.DateTimeFormat.supportedLocalesOf([
26534          localeCode
26535        ])[0];
26536      } catch {
26537      }
26538      return supportedLocaleCode;
26539    }
26540    function getWeekStartsOn(locale) {
26541      const firstDay = (locale.getWeekInfo?.() ?? locale.weekInfo)?.firstDay;
26542      if (firstDay === void 0 || firstDay < 1 || firstDay > 7) {
26543        return;
26544      }
26545      return firstDay % 7;
26546    }
26547    var useLocalizationProps = ({
26548      locale,
26549      timeZone,
26550      mode
26551    }) => {
26552      return (0, import_element50.useMemo)(() => {
26553        const isLocaleString = typeof locale === "string";
26554        const dateFnsLocale = isLocaleString || locale === void 0 ? enUS : locale;
26555        const supportedLocaleCode = getSupportedLocaleCode(
26556          isLocaleString ? locale : locale?.code
26557        );
26558        const localeCode = supportedLocaleCode ?? "en-US";
26559        const intlLocale = new Intl.Locale(localeCode);
26560        const isRightToLeft = supportedLocaleCode !== void 0 ? isLocaleRTL(intlLocale) : (0, import_i18n13.isRTL)();
26561        const weekStartsOn = isLocaleString || supportedLocaleCode !== void 0 ? getWeekStartsOn(intlLocale) : void 0;
26562        const monthNameFormatter = new Intl.DateTimeFormat(localeCode, {
26563          calendar: "gregory",
26564          year: "numeric",
26565          month: "long",
26566          timeZone
26567        });
26568        const weekdayNarrowFormatter = new Intl.DateTimeFormat(localeCode, {
26569          calendar: "gregory",
26570          weekday: "narrow",
26571          timeZone
26572        });
26573        const weekdayLongFormatter = new Intl.DateTimeFormat(localeCode, {
26574          calendar: "gregory",
26575          weekday: "long",
26576          timeZone
26577        });
26578        const fullDateFormatter = new Intl.DateTimeFormat(localeCode, {
26579          calendar: "gregory",
26580          weekday: "long",
26581          year: "numeric",
26582          month: "long",
26583          day: "numeric",
26584          timeZone
26585        });
26586        const dayNumberFormatter = new Intl.DateTimeFormat(localeCode, {
26587          calendar: "gregory",
26588          day: "numeric",
26589          timeZone
26590        });
26591        return {
26592          "aria-label": mode === "single" ? (0, import_i18n13.__)("Date calendar") : (0, import_i18n13.__)("Date range calendar"),
26593          labels: {
26594            /** The label for the navigation toolbar. */
26595            labelNav: () => (0, import_i18n13.__)("Navigation bar"),
26596            /**
26597             * The label for the month grid.
26598             * @param date
26599             */
26600            labelGrid: monthNameFormatter.format,
26601            /**
26602             * The label for the gridcell, when the calendar is not interactive.
26603             * @param date
26604             * @param modifiers
26605             */
26606            labelGridcell: (date, modifiers) => {
26607              const formattedDate = fullDateFormatter.format(date);
26608              let label = formattedDate;
26609              if (modifiers?.today) {
26610                label = (0, import_i18n13.sprintf)(
26611                  // translators: %s is the full date (e.g. "Monday, April 29, 2025")
26612                  (0, import_i18n13.__)("Today, %s"),
26613                  formattedDate
26614                );
26615              }
26616              return label;
26617            },
26618            /** The label for the "next month" button. */
26619            labelNext: () => (0, import_i18n13.__)("Next month"),
26620            /** The label for the "previous month" button. */
26621            labelPrevious: () => (0, import_i18n13.__)("Previous month"),
26622            /**
26623             * The label for the day button.
26624             * @param date
26625             * @param modifiers
26626             */
26627            labelDayButton: (date, modifiers) => {
26628              const formattedDate = fullDateFormatter.format(date);
26629              let label = formattedDate;
26630              if (modifiers?.today && modifiers?.selected) {
26631                return (0, import_i18n13.sprintf)(
26632                  // translators: %s is the full date (e.g. "Monday, April 29, 2025")
26633                  (0, import_i18n13.__)("Today, %s, selected"),
26634                  formattedDate
26635                );
26636              }
26637              if (modifiers?.today) {
26638                label = (0, import_i18n13.sprintf)(
26639                  // translators: %s is the full date (e.g. "Monday, April 29, 2025")
26640                  (0, import_i18n13.__)("Today, %s"),
26641                  formattedDate
26642                );
26643              }
26644              if (modifiers?.selected) {
26645                label = (0, import_i18n13.sprintf)(
26646                  // translators: %s is the full date (e.g. "Monday, April 29, 2025")
26647                  (0, import_i18n13.__)("%s, selected"),
26648                  formattedDate
26649                );
26650              }
26651              return label;
26652            },
26653            /**
26654             * The label for the weekday.
26655             * @param date
26656             */
26657            labelWeekday: weekdayLongFormatter.format
26658          },
26659          locale: dateFnsLocale,
26660          lang: localeCode,
26661          dir: isRightToLeft ? "rtl" : "ltr",
26662          ...weekStartsOn === void 0 ? {} : { weekStartsOn },
26663          formatters: {
26664            formatDay: dayNumberFormatter.format,
26665            formatWeekdayName: weekdayNarrowFormatter.format,
26666            formatCaption: monthNameFormatter.format
26667          },
26668          timeZone
26669        };
26670      }, [locale, timeZone, mode]);
26671    };
26672  
26673    // packages/ui/build-module/calendar/utils/use-preserve-day-focus.mjs
26674    var import_compose2 = __toESM(require_compose(), 1);
26675    var import_element51 = __toESM(require_element(), 1);
26676    function usePreserveDayFocus(forwardedRef, month) {
26677      const rootRef = (0, import_element51.useRef)(null);
26678      const hadDayFocusRef = (0, import_element51.useRef)(false);
26679      const mergedRef = (0, import_compose2.useMergeRefs)([rootRef, forwardedRef]);
26680      const monthIndex = month ? month.getFullYear() * 12 + month.getMonth() : void 0;
26681      const onDayFocus = (0, import_element51.useCallback)(() => {
26682        hadDayFocusRef.current = true;
26683      }, []);
26684      const onDayBlur = (0, import_element51.useCallback)(() => {
26685        hadDayFocusRef.current = false;
26686      }, []);
26687      (0, import_element51.useEffect)(() => {
26688        if (!hadDayFocusRef.current) {
26689          return;
26690        }
26691        const root = rootRef.current;
26692        if (!root) {
26693          return;
26694        }
26695        const { activeElement: activeElement2, body } = root.ownerDocument;
26696        if (activeElement2 !== body) {
26697          const grid = activeElement2?.closest('[role="grid"]');
26698          hadDayFocusRef.current = !!grid && root.contains(grid);
26699          return;
26700        }
26701        hadDayFocusRef.current = false;
26702        const focusTarget = root.querySelector(
26703          '[role="grid"] button[tabindex="0"]:not(:disabled)'
26704        );
26705        const enabledControl = root.querySelector(
26706          'button:not(:disabled):not([aria-disabled="true"])'
26707        );
26708        const focusableControl = root.querySelector(
26709          "button:not(:disabled)"
26710        );
26711        (focusTarget ?? enabledControl ?? focusableControl)?.focus();
26712      }, [monthIndex]);
26713      return { ref: mergedRef, onDayFocus, onDayBlur };
26714    }
26715  
26716    // packages/ui/build-module/calendar/calendar.mjs
26717    var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1);
26718    var Calendar = (0, import_element52.forwardRef)(
26719      function Calendar2({
26720        defaultValue: defaultValue2,
26721        value: valueProp,
26722        onValueChange,
26723        numberOfMonths = 1,
26724        locale,
26725        timeZone,
26726        month,
26727        render: render4,
26728        role = "application",
26729        "aria-label": ariaLabel,
26730        labels: customLabels,
26731        ...props
26732      }, ref) {
26733        const { "aria-label": defaultAriaLabel, ...localizationProps } = useLocalizationProps({
26734          locale,
26735          timeZone,
26736          mode: "single"
26737        });
26738        const labels = (0, import_element52.useMemo)(
26739          () => customLabels ? { ...localizationProps.labels, ...customLabels } : localizationProps.labels,
26740          [localizationProps.labels, customLabels]
26741        );
26742        const onChange = (0, import_element52.useCallback)(
26743          (selected2, triggerDate, modifiers, e2) => {
26744            onValueChange?.(
26745              selected2 ?? null,
26746              triggerDate,
26747              modifiers,
26748              e2
26749            );
26750          },
26751          [onValueChange]
26752        );
26753        const [selected, setSelected] = useControlledValue2({
26754          defaultValue: defaultValue2,
26755          value: valueProp,
26756          onChange
26757        });
26758        const dayFocusProps = usePreserveDayFocus(ref, month);
26759        const rootContextValue = (0, import_element52.useMemo)(
26760          () => ({
26761            render: render4,
26762            ref: dayFocusProps.ref,
26763            role,
26764            defaultAriaLabel
26765          }),
26766          [render4, dayFocusProps.ref, role, defaultAriaLabel]
26767        );
26768        return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(RootContext.Provider, { value: rootContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
26769          DayPicker,
26770          {
26771            ...COMMON_PROPS,
26772            ...localizationProps,
26773            ...props,
26774            "aria-label": ariaLabel,
26775            mode: "single",
26776            month,
26777            numberOfMonths: clampNumberOfMonths(numberOfMonths),
26778            labels,
26779            selected: selected ?? void 0,
26780            onSelect: setSelected,
26781            onDayFocus: dayFocusProps.onDayFocus,
26782            onDayBlur: dayFocusProps.onDayBlur
26783          }
26784        ) });
26785      }
26786    );
26787  
26788    // packages/ui/build-module/calendar/range-calendar.mjs
26789    var import_element53 = __toESM(require_element(), 1);
26790    var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1);
26791    function usePreviewRange({
26792      value,
26793      hoveredDate,
26794      excludeDisabled,
26795      min: min3,
26796      max: max3,
26797      disabled: disabled2
26798    }) {
26799      return (0, import_element53.useMemo)(() => {
26800        if (!hoveredDate || !value?.from) {
26801          return;
26802        }
26803        let previewHighlight;
26804        let potentialNewRange;
26805        if (hoveredDate < value.from) {
26806          previewHighlight = {
26807            from: hoveredDate,
26808            to: value.from
26809          };
26810          potentialNewRange = {
26811            from: hoveredDate,
26812            to: value.to ?? value.from
26813          };
26814        } else if (value.to && hoveredDate > value.from && hoveredDate < value.to) {
26815          previewHighlight = {
26816            from: value.from,
26817            to: hoveredDate
26818          };
26819          potentialNewRange = {
26820            from: value.from,
26821            to: hoveredDate
26822          };
26823        } else if (hoveredDate > value.from) {
26824          previewHighlight = {
26825            from: value.to ?? value.from,
26826            to: hoveredDate
26827          };
26828          potentialNewRange = {
26829            from: value.from,
26830            to: hoveredDate
26831          };
26832        }
26833        if (min3 !== void 0 && min3 > 0 && potentialNewRange && differenceInCalendarDays(
26834          potentialNewRange.to,
26835          potentialNewRange.from
26836        ) < min3) {
26837          previewHighlight = {
26838            from: hoveredDate,
26839            to: hoveredDate
26840          };
26841        }
26842        if (max3 !== void 0 && max3 > 0 && potentialNewRange && differenceInCalendarDays(
26843          potentialNewRange.to,
26844          potentialNewRange.from
26845        ) > max3) {
26846          previewHighlight = {
26847            from: hoveredDate,
26848            to: hoveredDate
26849          };
26850        }
26851        if (excludeDisabled && disabled2 && potentialNewRange && rangeContainsModifiers(potentialNewRange, disabled2)) {
26852          previewHighlight = {
26853            from: hoveredDate,
26854            to: hoveredDate
26855          };
26856        }
26857        return previewHighlight;
26858      }, [value, hoveredDate, excludeDisabled, min3, max3, disabled2]);
26859    }
26860    var RangeCalendar = (0, import_element53.forwardRef)(
26861      function RangeCalendar2({
26862        defaultValue: defaultValue2,
26863        value: valueProp,
26864        onValueChange,
26865        numberOfMonths = 1,
26866        excludeDisabled,
26867        min: min3,
26868        max: max3,
26869        disabled: disabled2,
26870        locale,
26871        timeZone,
26872        month,
26873        render: render4,
26874        role = "application",
26875        "aria-label": ariaLabel,
26876        labels: customLabels,
26877        ...props
26878      }, ref) {
26879        const { "aria-label": defaultAriaLabel, ...localizationProps } = useLocalizationProps({
26880          locale,
26881          timeZone,
26882          mode: "range"
26883        });
26884        const labels = (0, import_element53.useMemo)(
26885          () => customLabels ? { ...localizationProps.labels, ...customLabels } : localizationProps.labels,
26886          [localizationProps.labels, customLabels]
26887        );
26888        const onChange = (0, import_element53.useCallback)(
26889          (selected2, triggerDate, modifiers2, e2) => {
26890            onValueChange?.(
26891              selected2 ?? null,
26892              triggerDate,
26893              modifiers2,
26894              e2
26895            );
26896          },
26897          [onValueChange]
26898        );
26899        const [selected, setSelected] = useControlledValue2({
26900          defaultValue: defaultValue2,
26901          value: valueProp,
26902          onChange
26903        });
26904        const dayFocusProps = usePreserveDayFocus(ref, month);
26905        const [hoveredDate, setHoveredDate] = (0, import_element53.useState)(
26906          void 0
26907        );
26908        const previewRange = usePreviewRange({
26909          value: selected,
26910          hoveredDate,
26911          excludeDisabled,
26912          min: min3,
26913          max: max3,
26914          disabled: disabled2
26915        });
26916        const modifiers = (0, import_element53.useMemo)(() => {
26917          return {
26918            preview: previewRange,
26919            preview_start: previewRange?.from,
26920            preview_end: previewRange?.to
26921          };
26922        }, [previewRange]);
26923        const rootContextValue = (0, import_element53.useMemo)(
26924          () => ({
26925            render: render4,
26926            ref: dayFocusProps.ref,
26927            role,
26928            defaultAriaLabel
26929          }),
26930          [render4, dayFocusProps.ref, role, defaultAriaLabel]
26931        );
26932        return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(RootContext.Provider, { value: rootContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
26933          DayPicker,
26934          {
26935            ...COMMON_PROPS,
26936            ...localizationProps,
26937            ...props,
26938            "aria-label": ariaLabel,
26939            mode: "range",
26940            month,
26941            numberOfMonths: clampNumberOfMonths(numberOfMonths),
26942            disabled: disabled2,
26943            excludeDisabled,
26944            min: min3,
26945            max: max3,
26946            labels,
26947            selected: selected ?? void 0,
26948            onSelect: setSelected,
26949            onDayFocus: dayFocusProps.onDayFocus,
26950            onDayBlur: dayFocusProps.onDayBlur,
26951            onDayMouseEnter: (date) => setHoveredDate(date),
26952            onDayMouseLeave: () => setHoveredDate(void 0),
26953            modifiers,
26954            modifiersClassNames: MODIFIER_CLASSNAMES
26955          }
26956        ) });
26957      }
26958    );
26959  
26960    // packages/ui/build-module/stack/stack.mjs
26961    var import_element54 = __toESM(require_element(), 1);
26962    var STYLE_HASH_ATTRIBUTE26 = "data-wp-hash";
26963    function getRuntime26() {
26964      const globalScope = globalThis;
26965      if (globalScope.__wpStyleRuntime) {
26966        return globalScope.__wpStyleRuntime;
26967      }
26968      globalScope.__wpStyleRuntime = {
26969        documents: /* @__PURE__ */ new Map(),
26970        styles: /* @__PURE__ */ new Map(),
26971        injectedStyles: /* @__PURE__ */ new WeakMap()
26972      };
26973      if (typeof document !== "undefined") {
26974        registerDocument26(document);
26975      }
26976      return globalScope.__wpStyleRuntime;
26977    }
26978    function documentContainsStyleHash26(targetDocument, hash) {
26979      if (!targetDocument.head) {
26980        return false;
26981      }
26982      for (const style of targetDocument.head.querySelectorAll(
26983        `style[$STYLE_HASH_ATTRIBUTE26}]`
26984      )) {
26985        if (style.getAttribute(STYLE_HASH_ATTRIBUTE26) === hash) {
26986          return true;
26987        }
26988      }
26989      return false;
26990    }
26991    function injectStyle26(targetDocument, hash, css) {
26992      if (!targetDocument.head) {
26993        return;
26994      }
26995      const runtime = getRuntime26();
26996      let injectedStyles = runtime.injectedStyles.get(targetDocument);
26997      if (!injectedStyles) {
26998        injectedStyles = /* @__PURE__ */ new Set();
26999        runtime.injectedStyles.set(targetDocument, injectedStyles);
27000      }
27001      if (injectedStyles.has(hash)) {
27002        return;
27003      }
27004      if (documentContainsStyleHash26(targetDocument, hash)) {
27005        injectedStyles.add(hash);
27006        return;
27007      }
27008      const style = targetDocument.createElement("style");
27009      style.setAttribute(STYLE_HASH_ATTRIBUTE26, hash);
27010      style.appendChild(targetDocument.createTextNode(css));
27011      targetDocument.head.appendChild(style);
27012      injectedStyles.add(hash);
27013    }
27014    function registerDocument26(targetDocument) {
27015      const runtime = getRuntime26();
27016      runtime.documents.set(
27017        targetDocument,
27018        (runtime.documents.get(targetDocument) ?? 0) + 1
27019      );
27020      for (const [hash, css] of runtime.styles) {
27021        injectStyle26(targetDocument, hash, css);
27022      }
27023      return () => {
27024        const count = runtime.documents.get(targetDocument);
27025        if (count === void 0) {
27026          return;
27027        }
27028        if (count <= 1) {
27029          runtime.documents.delete(targetDocument);
27030          return;
27031        }
27032        runtime.documents.set(targetDocument, count - 1);
27033      };
27034    }
27035    function registerStyle26(hash, css) {
27036      const runtime = getRuntime26();
27037      runtime.styles.set(hash, css);
27038      for (const targetDocument of runtime.documents.keys()) {
27039        injectStyle26(targetDocument, hash, css);
27040      }
27041    }
27042    if (typeof process === "undefined" || true) {
27043      registerStyle26("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}");
27044    }
27045    var style_default25 = { "stack": "_19ce0419607e1896__stack" };
27046    var gapTokens = {
27047      xs: "var(--wpds-dimension-gap-xs, 4px)",
27048      sm: "var(--wpds-dimension-gap-sm, 8px)",
27049      md: "var(--wpds-dimension-gap-md, 12px)",
27050      lg: "var(--wpds-dimension-gap-lg, 16px)",
27051      xl: "var(--wpds-dimension-gap-xl, 24px)",
27052      "2xl": "var(--wpds-dimension-gap-2xl, 32px)",
27053      "3xl": "var(--wpds-dimension-gap-3xl, 40px)"
27054    };
27055    var Stack = (0, import_element54.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) {
27056      const style = {
27057        gap: gap && gapTokens[gap],
27058        alignItems: align,
27059        justifyContent: justify,
27060        flexDirection: direction,
27061        flexWrap: wrap
27062      };
27063      const element = useRender({
27064        render: render4,
27065        ref,
27066        props: mergeProps(props, { style, className: style_default25.stack })
27067      });
27068      return element;
27069    });
27070  
27071    // packages/ui/build-module/form/primitives/input/input.mjs
27072    var import_element57 = __toESM(require_element(), 1);
27073  
27074    // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs
27075    var import_element55 = __toESM(require_element(), 1);
27076    var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1);
27077    var STYLE_HASH_ATTRIBUTE27 = "data-wp-hash";
27078    function getRuntime27() {
27079      const globalScope = globalThis;
27080      if (globalScope.__wpStyleRuntime) {
27081        return globalScope.__wpStyleRuntime;
27082      }
27083      globalScope.__wpStyleRuntime = {
27084        documents: /* @__PURE__ */ new Map(),
27085        styles: /* @__PURE__ */ new Map(),
27086        injectedStyles: /* @__PURE__ */ new WeakMap()
27087      };
27088      if (typeof document !== "undefined") {
27089        registerDocument27(document);
27090      }
27091      return globalScope.__wpStyleRuntime;
27092    }
27093    function documentContainsStyleHash27(targetDocument, hash) {
27094      if (!targetDocument.head) {
27095        return false;
27096      }
27097      for (const style of targetDocument.head.querySelectorAll(
27098        `style[$STYLE_HASH_ATTRIBUTE27}]`
27099      )) {
27100        if (style.getAttribute(STYLE_HASH_ATTRIBUTE27) === hash) {
27101          return true;
27102        }
27103      }
27104      return false;
27105    }
27106    function injectStyle27(targetDocument, hash, css) {
27107      if (!targetDocument.head) {
27108        return;
27109      }
27110      const runtime = getRuntime27();
27111      let injectedStyles = runtime.injectedStyles.get(targetDocument);
27112      if (!injectedStyles) {
27113        injectedStyles = /* @__PURE__ */ new Set();
27114        runtime.injectedStyles.set(targetDocument, injectedStyles);
27115      }
27116      if (injectedStyles.has(hash)) {
27117        return;
27118      }
27119      if (documentContainsStyleHash27(targetDocument, hash)) {
27120        injectedStyles.add(hash);
27121        return;
27122      }
27123      const style = targetDocument.createElement("style");
27124      style.setAttribute(STYLE_HASH_ATTRIBUTE27, hash);
27125      style.appendChild(targetDocument.createTextNode(css));
27126      targetDocument.head.appendChild(style);
27127      injectedStyles.add(hash);
27128    }
27129    function registerDocument27(targetDocument) {
27130      const runtime = getRuntime27();
27131      runtime.documents.set(
27132        targetDocument,
27133        (runtime.documents.get(targetDocument) ?? 0) + 1
27134      );
27135      for (const [hash, css] of runtime.styles) {
27136        injectStyle27(targetDocument, hash, css);
27137      }
27138      return () => {
27139        const count = runtime.documents.get(targetDocument);
27140        if (count === void 0) {
27141          return;
27142        }
27143        if (count <= 1) {
27144          runtime.documents.delete(targetDocument);
27145          return;
27146        }
27147        runtime.documents.set(targetDocument, count - 1);
27148      };
27149    }
27150    function registerStyle27(hash, css) {
27151      const runtime = getRuntime27();
27152      runtime.styles.set(hash, css);
27153      for (const targetDocument of runtime.documents.keys()) {
27154        injectStyle27(targetDocument, hash, css);
27155      }
27156    }
27157    if (typeof process === "undefined" || true) {
27158      registerStyle27("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
27159    }
27160    var global_css_defense_default6 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
27161    if (typeof process === "undefined" || true) {
27162      registerStyle27("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
27163    }
27164    var resets_default11 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
27165    if (typeof process === "undefined" || true) {
27166      registerStyle27("e4f4f9600b", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:max(var(--wpds-typography-font-size-md,13px),16px);height:var(--wpds-dimension-size-lg,40px);line-height:1;@media (min-width:600px){font-size:var(--wpds-typography-font-size-md,13px)}&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}');
27167    }
27168    var style_default26 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" };
27169    var InputLayout = (0, import_element55.forwardRef)(
27170      function InputLayout2({
27171        className,
27172        children,
27173        visuallyDisabled,
27174        size: size4 = "default",
27175        isBorderless,
27176        prefix,
27177        suffix,
27178        ...restProps
27179      }, ref) {
27180        return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(
27181          "div",
27182          {
27183            ref,
27184            className: clsx_default(
27185              global_css_defense_default6.div,
27186              resets_default11["box-sizing"],
27187              style_default26["input-layout"],
27188              style_default26[`is-size-$size4}`],
27189              visuallyDisabled && style_default26["is-disabled"],
27190              isBorderless && style_default26["is-borderless"],
27191              className
27192            ),
27193            ...restProps,
27194            children: [
27195              import_element55.Children.count(prefix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
27196                "div",
27197                {
27198                  className: style_default26["slot-wrapper"],
27199                  "data-slot-type": "prefix",
27200                  children: prefix
27201                }
27202              ),
27203              children,
27204              import_element55.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
27205                "div",
27206                {
27207                  className: style_default26["slot-wrapper"],
27208                  "data-slot-type": "suffix",
27209                  children: suffix
27210                }
27211              )
27212            ]
27213          }
27214        );
27215      }
27216    );
27217  
27218    // packages/ui/build-module/form/primitives/input-layout/slot.mjs
27219    var import_element56 = __toESM(require_element(), 1);
27220    var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1);
27221    var STYLE_HASH_ATTRIBUTE28 = "data-wp-hash";
27222    function getRuntime28() {
27223      const globalScope = globalThis;
27224      if (globalScope.__wpStyleRuntime) {
27225        return globalScope.__wpStyleRuntime;
27226      }
27227      globalScope.__wpStyleRuntime = {
27228        documents: /* @__PURE__ */ new Map(),
27229        styles: /* @__PURE__ */ new Map(),
27230        injectedStyles: /* @__PURE__ */ new WeakMap()
27231      };
27232      if (typeof document !== "undefined") {
27233        registerDocument28(document);
27234      }
27235      return globalScope.__wpStyleRuntime;
27236    }
27237    function documentContainsStyleHash28(targetDocument, hash) {
27238      if (!targetDocument.head) {
27239        return false;
27240      }
27241      for (const style of targetDocument.head.querySelectorAll(
27242        `style[$STYLE_HASH_ATTRIBUTE28}]`
27243      )) {
27244        if (style.getAttribute(STYLE_HASH_ATTRIBUTE28) === hash) {
27245          return true;
27246        }
27247      }
27248      return false;
27249    }
27250    function injectStyle28(targetDocument, hash, css) {
27251      if (!targetDocument.head) {
27252        return;
27253      }
27254      const runtime = getRuntime28();
27255      let injectedStyles = runtime.injectedStyles.get(targetDocument);
27256      if (!injectedStyles) {
27257        injectedStyles = /* @__PURE__ */ new Set();
27258        runtime.injectedStyles.set(targetDocument, injectedStyles);
27259      }
27260      if (injectedStyles.has(hash)) {
27261        return;
27262      }
27263      if (documentContainsStyleHash28(targetDocument, hash)) {
27264        injectedStyles.add(hash);
27265        return;
27266      }
27267      const style = targetDocument.createElement("style");
27268      style.setAttribute(STYLE_HASH_ATTRIBUTE28, hash);
27269      style.appendChild(targetDocument.createTextNode(css));
27270      targetDocument.head.appendChild(style);
27271      injectedStyles.add(hash);
27272    }
27273    function registerDocument28(targetDocument) {
27274      const runtime = getRuntime28();
27275      runtime.documents.set(
27276        targetDocument,
27277        (runtime.documents.get(targetDocument) ?? 0) + 1
27278      );
27279      for (const [hash, css] of runtime.styles) {
27280        injectStyle28(targetDocument, hash, css);
27281      }
27282      return () => {
27283        const count = runtime.documents.get(targetDocument);
27284        if (count === void 0) {
27285          return;
27286        }
27287        if (count <= 1) {
27288          runtime.documents.delete(targetDocument);
27289          return;
27290        }
27291        runtime.documents.set(targetDocument, count - 1);
27292      };
27293    }
27294    function registerStyle28(hash, css) {
27295      const runtime = getRuntime28();
27296      runtime.styles.set(hash, css);
27297      for (const targetDocument of runtime.documents.keys()) {
27298        injectStyle28(targetDocument, hash, css);
27299      }
27300    }
27301    if (typeof process === "undefined" || true) {
27302      registerStyle28("e4f4f9600b", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:max(var(--wpds-typography-font-size-md,13px),16px);height:var(--wpds-dimension-size-lg,40px);line-height:1;@media (min-width:600px){font-size:var(--wpds-typography-font-size-md,13px)}&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}');
27303    }
27304    var style_default27 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" };
27305    var InputLayoutSlot = (0, import_element56.forwardRef)(function InputLayoutSlot2({ padding = "default", className, ...restProps }, ref) {
27306      return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
27307        "div",
27308        {
27309          ref,
27310          className: clsx_default(
27311            style_default27["input-layout-slot"],
27312            style_default27[`is-padding-$padding}`],
27313            className
27314          ),
27315          ...restProps
27316        }
27317      );
27318    });
27319    InputLayoutSlot.displayName = "InputLayout.Slot";
27320  
27321    // packages/ui/build-module/form/primitives/input-layout/index.mjs
27322    var InputLayout3 = Object.assign(InputLayout, {
27323      Slot: InputLayoutSlot
27324    });
27325  
27326    // packages/ui/build-module/form/primitives/input/input.mjs
27327    var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1);
27328    var STYLE_HASH_ATTRIBUTE29 = "data-wp-hash";
27329    function getRuntime29() {
27330      const globalScope = globalThis;
27331      if (globalScope.__wpStyleRuntime) {
27332        return globalScope.__wpStyleRuntime;
27333      }
27334      globalScope.__wpStyleRuntime = {
27335        documents: /* @__PURE__ */ new Map(),
27336        styles: /* @__PURE__ */ new Map(),
27337        injectedStyles: /* @__PURE__ */ new WeakMap()
27338      };
27339      if (typeof document !== "undefined") {
27340        registerDocument29(document);
27341      }
27342      return globalScope.__wpStyleRuntime;
27343    }
27344    function documentContainsStyleHash29(targetDocument, hash) {
27345      if (!targetDocument.head) {
27346        return false;
27347      }
27348      for (const style of targetDocument.head.querySelectorAll(
27349        `style[$STYLE_HASH_ATTRIBUTE29}]`
27350      )) {
27351        if (style.getAttribute(STYLE_HASH_ATTRIBUTE29) === hash) {
27352          return true;
27353        }
27354      }
27355      return false;
27356    }
27357    function injectStyle29(targetDocument, hash, css) {
27358      if (!targetDocument.head) {
27359        return;
27360      }
27361      const runtime = getRuntime29();
27362      let injectedStyles = runtime.injectedStyles.get(targetDocument);
27363      if (!injectedStyles) {
27364        injectedStyles = /* @__PURE__ */ new Set();
27365        runtime.injectedStyles.set(targetDocument, injectedStyles);
27366      }
27367      if (injectedStyles.has(hash)) {
27368        return;
27369      }
27370      if (documentContainsStyleHash29(targetDocument, hash)) {
27371        injectedStyles.add(hash);
27372        return;
27373      }
27374      const style = targetDocument.createElement("style");
27375      style.setAttribute(STYLE_HASH_ATTRIBUTE29, hash);
27376      style.appendChild(targetDocument.createTextNode(css));
27377      targetDocument.head.appendChild(style);
27378      injectedStyles.add(hash);
27379    }
27380    function registerDocument29(targetDocument) {
27381      const runtime = getRuntime29();
27382      runtime.documents.set(
27383        targetDocument,
27384        (runtime.documents.get(targetDocument) ?? 0) + 1
27385      );
27386      for (const [hash, css] of runtime.styles) {
27387        injectStyle29(targetDocument, hash, css);
27388      }
27389      return () => {
27390        const count = runtime.documents.get(targetDocument);
27391        if (count === void 0) {
27392          return;
27393        }
27394        if (count <= 1) {
27395          runtime.documents.delete(targetDocument);
27396          return;
27397        }
27398        runtime.documents.set(targetDocument, count - 1);
27399      };
27400    }
27401    function registerStyle29(hash, css) {
27402      const runtime = getRuntime29();
27403      runtime.styles.set(hash, css);
27404      for (const targetDocument of runtime.documents.keys()) {
27405        injectStyle29(targetDocument, hash, css);
27406      }
27407    }
27408    if (typeof process === "undefined" || true) {
27409      registerStyle29("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
27410    }
27411    var global_css_defense_default7 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
27412    if (typeof process === "undefined" || true) {
27413      registerStyle29("08122b3d53", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within,:focus-visible ._81935a08e952f267__outset-ring--focus-parent-visible{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}");
27414    }
27415    var focus_module_default4 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-parent-visible": "_81935a08e952f267__outset-ring--focus-parent-visible", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" };
27416    if (typeof process === "undefined" || true) {
27417      registerStyle29("1a25f6a232", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._2ae7be2fc1bb17a3__input{--_gcd-input-padding:var(--wp-ui-input-padding-block,0px) var(--wp-ui-input-layout-padding-inline,0px);background:transparent;border:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding-block:var(--wp-ui-input-padding-block,0);padding-inline:var(--wp-ui-input-layout-padding-inline,0);width:100%;&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}&:disabled,&[aria-disabled=true]{--_gcd-input-placeholder-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}@media (forced-colors:active){color:GrayText}}&[type=email],&[type=url]{direction:ltr}&[type=number]{appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{appearance:none;margin:0}}}}}");
27418    }
27419    var style_default28 = { "input": "_2ae7be2fc1bb17a3__input" };
27420    var Input3 = (0, import_element57.forwardRef)(function Input22({ className, size: size4 = "default", prefix, suffix, style, ...restProps }, ref) {
27421      return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
27422        InputLayout3,
27423        {
27424          className: clsx_default(
27425            focus_module_default4["outset-ring--focus-within"],
27426            className
27427          ),
27428          style,
27429          size: size4,
27430          visuallyDisabled: restProps.disabled,
27431          prefix,
27432          suffix,
27433          children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
27434            Input,
27435            {
27436              ref,
27437              className: clsx_default(global_css_defense_default7.input, style_default28.input),
27438              ...restProps
27439            }
27440          )
27441        }
27442      );
27443    });
27444  
27445    // packages/ui/build-module/form/primitives/control-with-error/control-with-error.mjs
27446    var import_i18n14 = __toESM(require_i18n(), 1);
27447    var import_element59 = __toESM(require_element(), 1);
27448  
27449    // packages/ui/build-module/spinner/spinner.mjs
27450    var import_element58 = __toESM(require_element(), 1);
27451    var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1);
27452    var STYLE_HASH_ATTRIBUTE30 = "data-wp-hash";
27453    function getRuntime30() {
27454      const globalScope = globalThis;
27455      if (globalScope.__wpStyleRuntime) {
27456        return globalScope.__wpStyleRuntime;
27457      }
27458      globalScope.__wpStyleRuntime = {
27459        documents: /* @__PURE__ */ new Map(),
27460        styles: /* @__PURE__ */ new Map(),
27461        injectedStyles: /* @__PURE__ */ new WeakMap()
27462      };
27463      if (typeof document !== "undefined") {
27464        registerDocument30(document);
27465      }
27466      return globalScope.__wpStyleRuntime;
27467    }
27468    function documentContainsStyleHash30(targetDocument, hash) {
27469      if (!targetDocument.head) {
27470        return false;
27471      }
27472      for (const style of targetDocument.head.querySelectorAll(
27473        `style[$STYLE_HASH_ATTRIBUTE30}]`
27474      )) {
27475        if (style.getAttribute(STYLE_HASH_ATTRIBUTE30) === hash) {
27476          return true;
27477        }
27478      }
27479      return false;
27480    }
27481    function injectStyle30(targetDocument, hash, css) {
27482      if (!targetDocument.head) {
27483        return;
27484      }
27485      const runtime = getRuntime30();
27486      let injectedStyles = runtime.injectedStyles.get(targetDocument);
27487      if (!injectedStyles) {
27488        injectedStyles = /* @__PURE__ */ new Set();
27489        runtime.injectedStyles.set(targetDocument, injectedStyles);
27490      }
27491      if (injectedStyles.has(hash)) {
27492        return;
27493      }
27494      if (documentContainsStyleHash30(targetDocument, hash)) {
27495        injectedStyles.add(hash);
27496        return;
27497      }
27498      const style = targetDocument.createElement("style");
27499      style.setAttribute(STYLE_HASH_ATTRIBUTE30, hash);
27500      style.appendChild(targetDocument.createTextNode(css));
27501      targetDocument.head.appendChild(style);
27502      injectedStyles.add(hash);
27503    }
27504    function registerDocument30(targetDocument) {
27505      const runtime = getRuntime30();
27506      runtime.documents.set(
27507        targetDocument,
27508        (runtime.documents.get(targetDocument) ?? 0) + 1
27509      );
27510      for (const [hash, css] of runtime.styles) {
27511        injectStyle30(targetDocument, hash, css);
27512      }
27513      return () => {
27514        const count = runtime.documents.get(targetDocument);
27515        if (count === void 0) {
27516          return;
27517        }
27518        if (count <= 1) {
27519          runtime.documents.delete(targetDocument);
27520          return;
27521        }
27522        runtime.documents.set(targetDocument, count - 1);
27523      };
27524    }
27525    function registerStyle30(hash, css) {
27526      const runtime = getRuntime30();
27527      runtime.styles.set(hash, css);
27528      for (const targetDocument of runtime.documents.keys()) {
27529        injectStyle30(targetDocument, hash, css);
27530      }
27531    }
27532    if (typeof process === "undefined" || true) {
27533      registerStyle30("bbbecfe373", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.ab4d64c07c0ba587__spinner{background-color:transparent;display:inline-block;height:var(--wpds-dimension-size-2xs,16px);opacity:1;overflow:visible;position:relative;width:var(--wpds-dimension-size-2xs,16px)}.a7654e10245bb7d2__indicator,.dc51f80c84b35fe2__track{fill:transparent;stroke-width:1.5px}.dc51f80c84b35fe2__track{stroke:var(--wpds-color-background-track-neutral,#dbdbdb)}.a7654e10245bb7d2__indicator{stroke:var(--wpds-color-background-thumb-brand,var(--wp-admin-theme-color,#3858e9));stroke-linecap:round;animation:_02322d973909703c__spinner-spin 1.4s linear infinite both;transform-origin:50% 50%}@keyframes _02322d973909703c__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}");
27534    }
27535    var style_default29 = { "spinner": "ab4d64c07c0ba587__spinner", "track": "dc51f80c84b35fe2__track", "indicator": "a7654e10245bb7d2__indicator", "spinner-spin": "_02322d973909703c__spinner-spin" };
27536    var Spinner = (0, import_element58.forwardRef)(
27537      function Spinner2({ className, ...props }, ref) {
27538        return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
27539          "svg",
27540          {
27541            className: clsx_default(style_default29.spinner, className),
27542            viewBox: "0 0 100 100",
27543            xmlns: "http://www.w3.org/2000/svg",
27544            role: "presentation",
27545            focusable: "false",
27546            ...props,
27547            ref,
27548            children: [
27549              /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
27550                "circle",
27551                {
27552                  className: style_default29.track,
27553                  cx: "50",
27554                  cy: "50",
27555                  r: "50",
27556                  vectorEffect: "non-scaling-stroke"
27557                }
27558              ),
27559              /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
27560                "path",
27561                {
27562                  className: style_default29.indicator,
27563                  d: "m 50 0 a 50 50 0 0 1 50 50",
27564                  vectorEffect: "non-scaling-stroke"
27565                }
27566              )
27567            ]
27568          }
27569        );
27570      }
27571    );
27572  
27573    // packages/ui/build-module/form/primitives/validity-indicator/validity-indicator.mjs
27574    var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1);
27575    var STYLE_HASH_ATTRIBUTE31 = "data-wp-hash";
27576    function getRuntime31() {
27577      const globalScope = globalThis;
27578      if (globalScope.__wpStyleRuntime) {
27579        return globalScope.__wpStyleRuntime;
27580      }
27581      globalScope.__wpStyleRuntime = {
27582        documents: /* @__PURE__ */ new Map(),
27583        styles: /* @__PURE__ */ new Map(),
27584        injectedStyles: /* @__PURE__ */ new WeakMap()
27585      };
27586      if (typeof document !== "undefined") {
27587        registerDocument31(document);
27588      }
27589      return globalScope.__wpStyleRuntime;
27590    }
27591    function documentContainsStyleHash31(targetDocument, hash) {
27592      if (!targetDocument.head) {
27593        return false;
27594      }
27595      for (const style of targetDocument.head.querySelectorAll(
27596        `style[$STYLE_HASH_ATTRIBUTE31}]`
27597      )) {
27598        if (style.getAttribute(STYLE_HASH_ATTRIBUTE31) === hash) {
27599          return true;
27600        }
27601      }
27602      return false;
27603    }
27604    function injectStyle31(targetDocument, hash, css) {
27605      if (!targetDocument.head) {
27606        return;
27607      }
27608      const runtime = getRuntime31();
27609      let injectedStyles = runtime.injectedStyles.get(targetDocument);
27610      if (!injectedStyles) {
27611        injectedStyles = /* @__PURE__ */ new Set();
27612        runtime.injectedStyles.set(targetDocument, injectedStyles);
27613      }
27614      if (injectedStyles.has(hash)) {
27615        return;
27616      }
27617      if (documentContainsStyleHash31(targetDocument, hash)) {
27618        injectedStyles.add(hash);
27619        return;
27620      }
27621      const style = targetDocument.createElement("style");
27622      style.setAttribute(STYLE_HASH_ATTRIBUTE31, hash);
27623      style.appendChild(targetDocument.createTextNode(css));
27624      targetDocument.head.appendChild(style);
27625      injectedStyles.add(hash);
27626    }
27627    function registerDocument31(targetDocument) {
27628      const runtime = getRuntime31();
27629      runtime.documents.set(
27630        targetDocument,
27631        (runtime.documents.get(targetDocument) ?? 0) + 1
27632      );
27633      for (const [hash, css] of runtime.styles) {
27634        injectStyle31(targetDocument, hash, css);
27635      }
27636      return () => {
27637        const count = runtime.documents.get(targetDocument);
27638        if (count === void 0) {
27639          return;
27640        }
27641        if (count <= 1) {
27642          runtime.documents.delete(targetDocument);
27643          return;
27644        }
27645        runtime.documents.set(targetDocument, count - 1);
27646      };
27647    }
27648    function registerStyle31(hash, css) {
27649      const runtime = getRuntime31();
27650      runtime.styles.set(hash, css);
27651      for (const targetDocument of runtime.documents.keys()) {
27652        injectStyle31(targetDocument, hash, css);
27653      }
27654    }
27655    if (typeof process === "undefined" || true) {
27656      registerStyle31("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
27657    }
27658    var global_css_defense_default8 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
27659    if (typeof process === "undefined" || true) {
27660      registerStyle31("bd510b0d40", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7a7ac88e306348e7__indicator{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);align-items:flex-start;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);gap:var(--wpds-dimension-gap-xs,4px);line-height:var(--wpds-typography-line-height-xs,16px);@media not (prefers-reduced-motion){animation:_48722cc5dd090ce4__indicator-jump var(--wpds-motion-duration-md,.2s) cubic-bezier(.68,-.55,.27,1.55)}}._57a3bbbfbe38a5c6__is-invalid{color:var(--wpds-color-foreground-content-error-weak,#cc1818)}._9e944dc198aac10b__is-valid{color:var(--wpds-color-foreground-content-success-weak,#007f2f)}.e482806667437c6a__indicator-icon{flex-shrink:0}._6e46434cc23019d2__indicator-spinner{height:var(--wpds-dimension-size-3xs,12px);margin:2px;width:var(--wpds-dimension-size-3xs,12px)}@keyframes _48722cc5dd090ce4__indicator-jump{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}}}');
27661    }
27662    var style_default30 = { "indicator": "_7a7ac88e306348e7__indicator", "indicator-jump": "_48722cc5dd090ce4__indicator-jump", "is-invalid": "_57a3bbbfbe38a5c6__is-invalid", "is-valid": "_9e944dc198aac10b__is-valid", "indicator-icon": "e482806667437c6a__indicator-icon", "indicator-spinner": "_6e46434cc23019d2__indicator-spinner" };
27663    var ICON = {
27664      valid: published_default,
27665      invalid: error_default
27666    };
27667    function ValidityIndicator({
27668      id,
27669      type,
27670      message: message2
27671    }) {
27672      return /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
27673        "p",
27674        {
27675          id,
27676          className: clsx_default(
27677            global_css_defense_default8.p,
27678            style_default30.indicator,
27679            style_default30[`is-$type}`]
27680          ),
27681          children: [
27682            type === "validating" ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(Spinner, { className: style_default30["indicator-spinner"] }) : /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
27683              Icon,
27684              {
27685                className: style_default30["indicator-icon"],
27686                icon: ICON[type],
27687                size: 16,
27688                fill: "currentColor"
27689              }
27690            ),
27691            message2
27692          ]
27693        }
27694      );
27695    }
27696  
27697    // packages/ui/build-module/form/primitives/control-with-error/control-with-error.mjs
27698    var import_jsx_runtime105 = __toESM(require_jsx_runtime(), 1);
27699    var DEFAULT_RENDER = (props) => /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(Stack, { ...props, direction: "column", gap: "sm" });
27700    function appendRequiredIndicator(label, required, markWhenOptional) {
27701      let suffix;
27702      if (required && !markWhenOptional) {
27703        suffix = `(${(0, import_i18n14.__)("Required")})`;
27704      } else if (!required && markWhenOptional) {
27705        suffix = `(${(0, import_i18n14.__)("Optional")})`;
27706      }
27707      if (!suffix) {
27708        return label;
27709      }
27710      if (typeof label === "string") {
27711        return `$label} $suffix}`;
27712      }
27713      return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_jsx_runtime105.Fragment, { children: [
27714        label,
27715        " ",
27716        suffix
27717      ] });
27718    }
27719    var VALIDITY_VISIBLE_ATTRIBUTE = "data-validity-visible";
27720    var ControlWithError = (0, import_element59.forwardRef)(function ControlWithError2({
27721      required,
27722      markWhenOptional,
27723      customValidity,
27724      getValidityTarget,
27725      children,
27726      render: render4 = DEFAULT_RENDER,
27727      ...restProps
27728    }, forwardedRef) {
27729      const [errorMessage, setErrorMessage] = (0, import_element59.useState)();
27730      const [statusMessage, setStatusMessage] = (0, import_element59.useState)();
27731      const [showMessage, setShowMessage] = (0, import_element59.useState)(false);
27732      const [isTouched, setIsTouched] = (0, import_element59.useState)(false);
27733      const wrapperRef = (0, import_element59.useRef)(null);
27734      (0, import_element59.useEffect)(() => {
27735        const validityTarget = getValidityTarget();
27736        const handler = () => {
27737          if (customValidity?.type !== "validating") {
27738            setErrorMessage(validityTarget?.validationMessage);
27739          }
27740          setShowMessage(true);
27741          validityTarget?.setAttribute(VALIDITY_VISIBLE_ATTRIBUTE, "");
27742        };
27743        validityTarget?.addEventListener("invalid", handler);
27744        return () => validityTarget?.removeEventListener("invalid", handler);
27745      }, [customValidity?.type, getValidityTarget]);
27746      (0, import_element59.useEffect)(() => {
27747        const validityTarget = getValidityTarget();
27748        const suppressNativePopover = (event) => {
27749          event.preventDefault();
27750          if (!event.isTrusted) {
27751            return;
27752          }
27753          const target = event.target;
27754          const firstErrorInForm = Array.from(
27755            target.form?.elements ?? []
27756          ).find((el) => !el.validity.valid);
27757          if (!target.form || firstErrorInForm === target) {
27758            target.focus();
27759          }
27760        };
27761        const radioSiblings = validityTarget?.type === "radio" && validityTarget?.name ? Array.from(
27762          wrapperRef.current?.querySelectorAll(
27763            `input[type="radio"][name="$validityTarget?.name}"]`
27764          ) ?? []
27765        ).filter((sibling) => sibling !== validityTarget) : [];
27766        validityTarget?.addEventListener("invalid", suppressNativePopover);
27767        radioSiblings.forEach(
27768          (sibling) => sibling.addEventListener("invalid", suppressNativePopover)
27769        );
27770        return () => {
27771          validityTarget?.removeEventListener(
27772            "invalid",
27773            suppressNativePopover
27774          );
27775          radioSiblings.forEach(
27776            (sibling) => sibling.removeEventListener("invalid", suppressNativePopover)
27777          );
27778        };
27779      }, [getValidityTarget]);
27780      (0, import_element59.useEffect)(() => {
27781        const validityTarget = getValidityTarget();
27782        if (!customValidity?.type) {
27783          validityTarget?.setCustomValidity("");
27784          setErrorMessage(validityTarget?.validationMessage);
27785          setStatusMessage(void 0);
27786          return;
27787        }
27788        switch (customValidity.type) {
27789          case "validating": {
27790            validityTarget?.setCustomValidity("");
27791            setErrorMessage(void 0);
27792            setStatusMessage({
27793              type: "validating",
27794              message: customValidity.message
27795            });
27796            break;
27797          }
27798          case "valid": {
27799            validityTarget?.setCustomValidity("");
27800            setErrorMessage(validityTarget?.validationMessage);
27801            setStatusMessage({
27802              type: "valid",
27803              message: customValidity.message
27804            });
27805            break;
27806          }
27807          case "invalid": {
27808            validityTarget?.setCustomValidity(
27809              customValidity.message ?? ""
27810            );
27811            setErrorMessage(validityTarget?.validationMessage);
27812            setStatusMessage(void 0);
27813            break;
27814          }
27815        }
27816      }, [customValidity, getValidityTarget]);
27817      (0, import_element59.useEffect)(() => {
27818        if (!isTouched || showMessage) {
27819          return;
27820        }
27821        if (customValidity?.type === "validating") {
27822          const timer = setTimeout(() => {
27823            setShowMessage(true);
27824          }, 1e3);
27825          return () => clearTimeout(timer);
27826        }
27827        setShowMessage(true);
27828      }, [isTouched, customValidity?.type, showMessage]);
27829      const onBlur = (event) => {
27830        if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) {
27831          return;
27832        }
27833        if (!isTouched) {
27834          setIsTouched(true);
27835          getValidityTarget()?.setAttribute(VALIDITY_VISIBLE_ATTRIBUTE, "");
27836        }
27837        const validityTarget = getValidityTarget();
27838        const isValidating = customValidity?.type === "validating";
27839        window.queueMicrotask(() => {
27840          if (!isValidating) {
27841            setErrorMessage(validityTarget?.validationMessage);
27842          }
27843        });
27844      };
27845      const messageId = (0, import_element59.useId)();
27846      const message2 = (() => {
27847        if (errorMessage) {
27848          return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
27849            ValidityIndicator,
27850            {
27851              id: messageId,
27852              type: "invalid",
27853              message: errorMessage
27854            }
27855          );
27856        }
27857        if (statusMessage?.type) {
27858          return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
27859            ValidityIndicator,
27860            {
27861              id: messageId,
27862              type: statusMessage.type,
27863              message: statusMessage.message
27864            }
27865          );
27866        }
27867        return null;
27868      })();
27869      const visibleMessage = showMessage ? message2 : null;
27870      (0, import_element59.useEffect)(() => {
27871        const target = getValidityTarget();
27872        if (!target) {
27873          return;
27874        }
27875        function setDescribedBy(el, shouldAdd) {
27876          const ids = (el.getAttribute("aria-describedby") ?? "").split(" ").filter((id) => id && id !== messageId);
27877          if (shouldAdd) {
27878            ids.push(messageId);
27879          }
27880          if (ids.length) {
27881            el.setAttribute("aria-describedby", ids.join(" "));
27882          } else {
27883            el.removeAttribute("aria-describedby");
27884          }
27885        }
27886        setDescribedBy(target, !!visibleMessage);
27887        return () => setDescribedBy(target, false);
27888      }, [visibleMessage, messageId, getValidityTarget]);
27889      return useRender({
27890        render: render4,
27891        ref: [forwardedRef, wrapperRef],
27892        props: mergeProps(restProps, {
27893          onBlur,
27894          children: /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(import_jsx_runtime105.Fragment, { children: [
27895            (0, import_element59.cloneElement)(children, {
27896              label: appendRequiredIndicator(
27897                children.props.label,
27898                required,
27899                markWhenOptional
27900              ),
27901              required
27902            }),
27903            visibleMessage
27904          ] })
27905        })
27906      });
27907    });
27908  
27909    // packages/ui/build-module/form/primitives/field/index.mjs
27910    var field_exports = {};
27911    __export(field_exports, {
27912      Control: () => Control,
27913      Description: () => Description,
27914      Details: () => Details,
27915      Item: () => Item2,
27916      Label: () => Label,
27917      Root: () => Root5,
27918      VisualLabel: () => VisualLabel
27919    });
27920  
27921    // packages/ui/build-module/form/primitives/field/root.mjs
27922    var import_element60 = __toESM(require_element(), 1);
27923    var import_jsx_runtime106 = __toESM(require_jsx_runtime(), 1);
27924    var STYLE_HASH_ATTRIBUTE32 = "data-wp-hash";
27925    function getRuntime32() {
27926      const globalScope = globalThis;
27927      if (globalScope.__wpStyleRuntime) {
27928        return globalScope.__wpStyleRuntime;
27929      }
27930      globalScope.__wpStyleRuntime = {
27931        documents: /* @__PURE__ */ new Map(),
27932        styles: /* @__PURE__ */ new Map(),
27933        injectedStyles: /* @__PURE__ */ new WeakMap()
27934      };
27935      if (typeof document !== "undefined") {
27936        registerDocument32(document);
27937      }
27938      return globalScope.__wpStyleRuntime;
27939    }
27940    function documentContainsStyleHash32(targetDocument, hash) {
27941      if (!targetDocument.head) {
27942        return false;
27943      }
27944      for (const style of targetDocument.head.querySelectorAll(
27945        `style[$STYLE_HASH_ATTRIBUTE32}]`
27946      )) {
27947        if (style.getAttribute(STYLE_HASH_ATTRIBUTE32) === hash) {
27948          return true;
27949        }
27950      }
27951      return false;
27952    }
27953    function injectStyle32(targetDocument, hash, css) {
27954      if (!targetDocument.head) {
27955        return;
27956      }
27957      const runtime = getRuntime32();
27958      let injectedStyles = runtime.injectedStyles.get(targetDocument);
27959      if (!injectedStyles) {
27960        injectedStyles = /* @__PURE__ */ new Set();
27961        runtime.injectedStyles.set(targetDocument, injectedStyles);
27962      }
27963      if (injectedStyles.has(hash)) {
27964        return;
27965      }
27966      if (documentContainsStyleHash32(targetDocument, hash)) {
27967        injectedStyles.add(hash);
27968        return;
27969      }
27970      const style = targetDocument.createElement("style");
27971      style.setAttribute(STYLE_HASH_ATTRIBUTE32, hash);
27972      style.appendChild(targetDocument.createTextNode(css));
27973      targetDocument.head.appendChild(style);
27974      injectedStyles.add(hash);
27975    }
27976    function registerDocument32(targetDocument) {
27977      const runtime = getRuntime32();
27978      runtime.documents.set(
27979        targetDocument,
27980        (runtime.documents.get(targetDocument) ?? 0) + 1
27981      );
27982      for (const [hash, css] of runtime.styles) {
27983        injectStyle32(targetDocument, hash, css);
27984      }
27985      return () => {
27986        const count = runtime.documents.get(targetDocument);
27987        if (count === void 0) {
27988          return;
27989        }
27990        if (count <= 1) {
27991          runtime.documents.delete(targetDocument);
27992          return;
27993        }
27994        runtime.documents.set(targetDocument, count - 1);
27995      };
27996    }
27997    function registerStyle32(hash, css) {
27998      const runtime = getRuntime32();
27999      runtime.styles.set(hash, css);
28000      for (const targetDocument of runtime.documents.keys()) {
28001        injectStyle32(targetDocument, hash, css);
28002      }
28003    }
28004    if (typeof process === "undefined" || true) {
28005      registerStyle32("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}");
28006    }
28007    var resets_default12 = { "box-sizing": "_336cd3e4e743482f__box-sizing" };
28008    var DEFAULT_RENDER2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(Stack, { ...props, direction: "column", gap: "sm" });
28009    var Root5 = (0, import_element60.forwardRef)(function Root22({ className, render: render4 = DEFAULT_RENDER2, ...restProps }, ref) {
28010      return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
28011        index_parts_exports2.Root,
28012        {
28013          ref,
28014          className: clsx_default(resets_default12["box-sizing"], className),
28015          render: render4,
28016          ...restProps
28017        }
28018      );
28019    });
28020  
28021    // packages/ui/build-module/form/primitives/field/item.mjs
28022    var import_element61 = __toESM(require_element(), 1);
28023    var import_jsx_runtime107 = __toESM(require_jsx_runtime(), 1);
28024    var Item2 = (0, import_element61.forwardRef)(function Item22(props, ref) {
28025      return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(index_parts_exports2.Item, { ref, ...props });
28026    });
28027  
28028    // packages/ui/build-module/form/primitives/field/label.mjs
28029    var import_element62 = __toESM(require_element(), 1);
28030    var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1);
28031    var STYLE_HASH_ATTRIBUTE33 = "data-wp-hash";
28032    function getRuntime33() {
28033      const globalScope = globalThis;
28034      if (globalScope.__wpStyleRuntime) {
28035        return globalScope.__wpStyleRuntime;
28036      }
28037      globalScope.__wpStyleRuntime = {
28038        documents: /* @__PURE__ */ new Map(),
28039        styles: /* @__PURE__ */ new Map(),
28040        injectedStyles: /* @__PURE__ */ new WeakMap()
28041      };
28042      if (typeof document !== "undefined") {
28043        registerDocument33(document);
28044      }
28045      return globalScope.__wpStyleRuntime;
28046    }
28047    function documentContainsStyleHash33(targetDocument, hash) {
28048      if (!targetDocument.head) {
28049        return false;
28050      }
28051      for (const style of targetDocument.head.querySelectorAll(
28052        `style[$STYLE_HASH_ATTRIBUTE33}]`
28053      )) {
28054        if (style.getAttribute(STYLE_HASH_ATTRIBUTE33) === hash) {
28055          return true;
28056        }
28057      }
28058      return false;
28059    }
28060    function injectStyle33(targetDocument, hash, css) {
28061      if (!targetDocument.head) {
28062        return;
28063      }
28064      const runtime = getRuntime33();
28065      let injectedStyles = runtime.injectedStyles.get(targetDocument);
28066      if (!injectedStyles) {
28067        injectedStyles = /* @__PURE__ */ new Set();
28068        runtime.injectedStyles.set(targetDocument, injectedStyles);
28069      }
28070      if (injectedStyles.has(hash)) {
28071        return;
28072      }
28073      if (documentContainsStyleHash33(targetDocument, hash)) {
28074        injectedStyles.add(hash);
28075        return;
28076      }
28077      const style = targetDocument.createElement("style");
28078      style.setAttribute(STYLE_HASH_ATTRIBUTE33, hash);
28079      style.appendChild(targetDocument.createTextNode(css));
28080      targetDocument.head.appendChild(style);
28081      injectedStyles.add(hash);
28082    }
28083    function registerDocument33(targetDocument) {
28084      const runtime = getRuntime33();
28085      runtime.documents.set(
28086        targetDocument,
28087        (runtime.documents.get(targetDocument) ?? 0) + 1
28088      );
28089      for (const [hash, css] of runtime.styles) {
28090        injectStyle33(targetDocument, hash, css);
28091      }
28092      return () => {
28093        const count = runtime.documents.get(targetDocument);
28094        if (count === void 0) {
28095          return;
28096        }
28097        if (count <= 1) {
28098          runtime.documents.delete(targetDocument);
28099          return;
28100        }
28101        runtime.documents.set(targetDocument, count - 1);
28102      };
28103    }
28104    function registerStyle33(hash, css) {
28105      const runtime = getRuntime33();
28106      runtime.styles.set(hash, css);
28107      for (const targetDocument of runtime.documents.keys()) {
28108        injectStyle33(targetDocument, hash, css);
28109      }
28110    }
28111    if (typeof process === "undefined" || true) {
28112      registerStyle33("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
28113    }
28114    var field_default = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
28115    var Label = (0, import_element62.forwardRef)(
28116      function Label2({ className, hideFromVision, variant, ...restProps }, ref) {
28117        const label = /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
28118          index_parts_exports2.Label,
28119          {
28120            ref,
28121            className: clsx_default(
28122              field_default.label,
28123              variant && field_default[`is-$variant}`],
28124              className
28125            ),
28126            ...restProps
28127          }
28128        );
28129        if (hideFromVision) {
28130          return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(VisuallyHidden, { render: label });
28131        }
28132        return label;
28133      }
28134    );
28135  
28136    // packages/ui/build-module/form/primitives/field/description.mjs
28137    var import_element63 = __toESM(require_element(), 1);
28138    var import_jsx_runtime109 = __toESM(require_jsx_runtime(), 1);
28139    var STYLE_HASH_ATTRIBUTE34 = "data-wp-hash";
28140    function getRuntime34() {
28141      const globalScope = globalThis;
28142      if (globalScope.__wpStyleRuntime) {
28143        return globalScope.__wpStyleRuntime;
28144      }
28145      globalScope.__wpStyleRuntime = {
28146        documents: /* @__PURE__ */ new Map(),
28147        styles: /* @__PURE__ */ new Map(),
28148        injectedStyles: /* @__PURE__ */ new WeakMap()
28149      };
28150      if (typeof document !== "undefined") {
28151        registerDocument34(document);
28152      }
28153      return globalScope.__wpStyleRuntime;
28154    }
28155    function documentContainsStyleHash34(targetDocument, hash) {
28156      if (!targetDocument.head) {
28157        return false;
28158      }
28159      for (const style of targetDocument.head.querySelectorAll(
28160        `style[$STYLE_HASH_ATTRIBUTE34}]`
28161      )) {
28162        if (style.getAttribute(STYLE_HASH_ATTRIBUTE34) === hash) {
28163          return true;
28164        }
28165      }
28166      return false;
28167    }
28168    function injectStyle34(targetDocument, hash, css) {
28169      if (!targetDocument.head) {
28170        return;
28171      }
28172      const runtime = getRuntime34();
28173      let injectedStyles = runtime.injectedStyles.get(targetDocument);
28174      if (!injectedStyles) {
28175        injectedStyles = /* @__PURE__ */ new Set();
28176        runtime.injectedStyles.set(targetDocument, injectedStyles);
28177      }
28178      if (injectedStyles.has(hash)) {
28179        return;
28180      }
28181      if (documentContainsStyleHash34(targetDocument, hash)) {
28182        injectedStyles.add(hash);
28183        return;
28184      }
28185      const style = targetDocument.createElement("style");
28186      style.setAttribute(STYLE_HASH_ATTRIBUTE34, hash);
28187      style.appendChild(targetDocument.createTextNode(css));
28188      targetDocument.head.appendChild(style);
28189      injectedStyles.add(hash);
28190    }
28191    function registerDocument34(targetDocument) {
28192      const runtime = getRuntime34();
28193      runtime.documents.set(
28194        targetDocument,
28195        (runtime.documents.get(targetDocument) ?? 0) + 1
28196      );
28197      for (const [hash, css] of runtime.styles) {
28198        injectStyle34(targetDocument, hash, css);
28199      }
28200      return () => {
28201        const count = runtime.documents.get(targetDocument);
28202        if (count === void 0) {
28203          return;
28204        }
28205        if (count <= 1) {
28206          runtime.documents.delete(targetDocument);
28207          return;
28208        }
28209        runtime.documents.set(targetDocument, count - 1);
28210      };
28211    }
28212    function registerStyle34(hash, css) {
28213      const runtime = getRuntime34();
28214      runtime.styles.set(hash, css);
28215      for (const targetDocument of runtime.documents.keys()) {
28216        injectStyle34(targetDocument, hash, css);
28217      }
28218    }
28219    if (typeof process === "undefined" || true) {
28220      registerStyle34("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
28221    }
28222    var global_css_defense_default9 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
28223    if (typeof process === "undefined" || true) {
28224      registerStyle34("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
28225    }
28226    var field_default2 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
28227    var Description = (0, import_element63.forwardRef)(function Description2({ className, ...restProps }, ref) {
28228      return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
28229        index_parts_exports2.Description,
28230        {
28231          ref,
28232          className: clsx_default(
28233            global_css_defense_default9.p,
28234            field_default2.description,
28235            className
28236          ),
28237          ...restProps
28238        }
28239      );
28240    });
28241  
28242    // packages/ui/build-module/form/primitives/field/details.mjs
28243    var import_element64 = __toESM(require_element(), 1);
28244    var import_i18n15 = __toESM(require_i18n(), 1);
28245    var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1);
28246    var STYLE_HASH_ATTRIBUTE35 = "data-wp-hash";
28247    function getRuntime35() {
28248      const globalScope = globalThis;
28249      if (globalScope.__wpStyleRuntime) {
28250        return globalScope.__wpStyleRuntime;
28251      }
28252      globalScope.__wpStyleRuntime = {
28253        documents: /* @__PURE__ */ new Map(),
28254        styles: /* @__PURE__ */ new Map(),
28255        injectedStyles: /* @__PURE__ */ new WeakMap()
28256      };
28257      if (typeof document !== "undefined") {
28258        registerDocument35(document);
28259      }
28260      return globalScope.__wpStyleRuntime;
28261    }
28262    function documentContainsStyleHash35(targetDocument, hash) {
28263      if (!targetDocument.head) {
28264        return false;
28265      }
28266      for (const style of targetDocument.head.querySelectorAll(
28267        `style[$STYLE_HASH_ATTRIBUTE35}]`
28268      )) {
28269        if (style.getAttribute(STYLE_HASH_ATTRIBUTE35) === hash) {
28270          return true;
28271        }
28272      }
28273      return false;
28274    }
28275    function injectStyle35(targetDocument, hash, css) {
28276      if (!targetDocument.head) {
28277        return;
28278      }
28279      const runtime = getRuntime35();
28280      let injectedStyles = runtime.injectedStyles.get(targetDocument);
28281      if (!injectedStyles) {
28282        injectedStyles = /* @__PURE__ */ new Set();
28283        runtime.injectedStyles.set(targetDocument, injectedStyles);
28284      }
28285      if (injectedStyles.has(hash)) {
28286        return;
28287      }
28288      if (documentContainsStyleHash35(targetDocument, hash)) {
28289        injectedStyles.add(hash);
28290        return;
28291      }
28292      const style = targetDocument.createElement("style");
28293      style.setAttribute(STYLE_HASH_ATTRIBUTE35, hash);
28294      style.appendChild(targetDocument.createTextNode(css));
28295      targetDocument.head.appendChild(style);
28296      injectedStyles.add(hash);
28297    }
28298    function registerDocument35(targetDocument) {
28299      const runtime = getRuntime35();
28300      runtime.documents.set(
28301        targetDocument,
28302        (runtime.documents.get(targetDocument) ?? 0) + 1
28303      );
28304      for (const [hash, css] of runtime.styles) {
28305        injectStyle35(targetDocument, hash, css);
28306      }
28307      return () => {
28308        const count = runtime.documents.get(targetDocument);
28309        if (count === void 0) {
28310          return;
28311        }
28312        if (count <= 1) {
28313          runtime.documents.delete(targetDocument);
28314          return;
28315        }
28316        runtime.documents.set(targetDocument, count - 1);
28317      };
28318    }
28319    function registerStyle35(hash, css) {
28320      const runtime = getRuntime35();
28321      runtime.styles.set(hash, css);
28322      for (const targetDocument of runtime.documents.keys()) {
28323        injectStyle35(targetDocument, hash, css);
28324      }
28325    }
28326    if (typeof process === "undefined" || true) {
28327      registerStyle35("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
28328    }
28329    var field_default3 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
28330    var Details = (0, import_element64.forwardRef)(
28331      function Details2({ className, ...restProps }, ref) {
28332        return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
28333          /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(index_parts_exports2.Description, {}), children: (0, import_i18n15.__)("More details follow the field.") }),
28334          /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
28335            "div",
28336            {
28337              ref,
28338              className: clsx_default(field_default3.description, className),
28339              ...restProps
28340            }
28341          )
28342        ] });
28343      }
28344    );
28345  
28346    // packages/ui/build-module/form/primitives/field/control.mjs
28347    var import_element65 = __toESM(require_element(), 1);
28348    var import_jsx_runtime111 = __toESM(require_jsx_runtime(), 1);
28349    var Control = (0, import_element65.forwardRef)(
28350      function Control2(props, ref) {
28351        return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(index_parts_exports2.Control, { ref, ...props });
28352      }
28353    );
28354  
28355    // packages/ui/build-module/form/primitives/field/visual-label.mjs
28356    var import_element66 = __toESM(require_element(), 1);
28357    var STYLE_HASH_ATTRIBUTE36 = "data-wp-hash";
28358    function getRuntime36() {
28359      const globalScope = globalThis;
28360      if (globalScope.__wpStyleRuntime) {
28361        return globalScope.__wpStyleRuntime;
28362      }
28363      globalScope.__wpStyleRuntime = {
28364        documents: /* @__PURE__ */ new Map(),
28365        styles: /* @__PURE__ */ new Map(),
28366        injectedStyles: /* @__PURE__ */ new WeakMap()
28367      };
28368      if (typeof document !== "undefined") {
28369        registerDocument36(document);
28370      }
28371      return globalScope.__wpStyleRuntime;
28372    }
28373    function documentContainsStyleHash36(targetDocument, hash) {
28374      if (!targetDocument.head) {
28375        return false;
28376      }
28377      for (const style of targetDocument.head.querySelectorAll(
28378        `style[$STYLE_HASH_ATTRIBUTE36}]`
28379      )) {
28380        if (style.getAttribute(STYLE_HASH_ATTRIBUTE36) === hash) {
28381          return true;
28382        }
28383      }
28384      return false;
28385    }
28386    function injectStyle36(targetDocument, hash, css) {
28387      if (!targetDocument.head) {
28388        return;
28389      }
28390      const runtime = getRuntime36();
28391      let injectedStyles = runtime.injectedStyles.get(targetDocument);
28392      if (!injectedStyles) {
28393        injectedStyles = /* @__PURE__ */ new Set();
28394        runtime.injectedStyles.set(targetDocument, injectedStyles);
28395      }
28396      if (injectedStyles.has(hash)) {
28397        return;
28398      }
28399      if (documentContainsStyleHash36(targetDocument, hash)) {
28400        injectedStyles.add(hash);
28401        return;
28402      }
28403      const style = targetDocument.createElement("style");
28404      style.setAttribute(STYLE_HASH_ATTRIBUTE36, hash);
28405      style.appendChild(targetDocument.createTextNode(css));
28406      targetDocument.head.appendChild(style);
28407      injectedStyles.add(hash);
28408    }
28409    function registerDocument36(targetDocument) {
28410      const runtime = getRuntime36();
28411      runtime.documents.set(
28412        targetDocument,
28413        (runtime.documents.get(targetDocument) ?? 0) + 1
28414      );
28415      for (const [hash, css] of runtime.styles) {
28416        injectStyle36(targetDocument, hash, css);
28417      }
28418      return () => {
28419        const count = runtime.documents.get(targetDocument);
28420        if (count === void 0) {
28421          return;
28422        }
28423        if (count <= 1) {
28424          runtime.documents.delete(targetDocument);
28425          return;
28426        }
28427        runtime.documents.set(targetDocument, count - 1);
28428      };
28429    }
28430    function registerStyle36(hash, css) {
28431      const runtime = getRuntime36();
28432      runtime.styles.set(hash, css);
28433      for (const targetDocument of runtime.documents.keys()) {
28434        injectStyle36(targetDocument, hash, css);
28435      }
28436    }
28437    if (typeof process === "undefined" || true) {
28438      registerStyle36("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}');
28439    }
28440    var field_default4 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" };
28441    var VisualLabel = (0, import_element66.forwardRef)(
28442      function VisualLabel2({ className, render: render4, variant, ...restProps }, ref) {
28443        return useRender({
28444          defaultTagName: "span",
28445          render: render4,
28446          ref,
28447          props: mergeProps(restProps, {
28448            className: clsx_default(
28449              field_default4.label,
28450              variant && field_default4[`is-$variant}`],
28451              className
28452            )
28453          })
28454        });
28455      }
28456    );
28457    VisualLabel.displayName = "Field.VisualLabel";
28458  
28459    // packages/ui/build-module/form/primitives/textarea/textarea.mjs
28460    var import_element67 = __toESM(require_element(), 1);
28461    var import_jsx_runtime112 = __toESM(require_jsx_runtime(), 1);
28462    var STYLE_HASH_ATTRIBUTE37 = "data-wp-hash";
28463    function getRuntime37() {
28464      const globalScope = globalThis;
28465      if (globalScope.__wpStyleRuntime) {
28466        return globalScope.__wpStyleRuntime;
28467      }
28468      globalScope.__wpStyleRuntime = {
28469        documents: /* @__PURE__ */ new Map(),
28470        styles: /* @__PURE__ */ new Map(),
28471        injectedStyles: /* @__PURE__ */ new WeakMap()
28472      };
28473      if (typeof document !== "undefined") {
28474        registerDocument37(document);
28475      }
28476      return globalScope.__wpStyleRuntime;
28477    }
28478    function documentContainsStyleHash37(targetDocument, hash) {
28479      if (!targetDocument.head) {
28480        return false;
28481      }
28482      for (const style of targetDocument.head.querySelectorAll(
28483        `style[$STYLE_HASH_ATTRIBUTE37}]`
28484      )) {
28485        if (style.getAttribute(STYLE_HASH_ATTRIBUTE37) === hash) {
28486          return true;
28487        }
28488      }
28489      return false;
28490    }
28491    function injectStyle37(targetDocument, hash, css) {
28492      if (!targetDocument.head) {
28493        return;
28494      }
28495      const runtime = getRuntime37();
28496      let injectedStyles = runtime.injectedStyles.get(targetDocument);
28497      if (!injectedStyles) {
28498        injectedStyles = /* @__PURE__ */ new Set();
28499        runtime.injectedStyles.set(targetDocument, injectedStyles);
28500      }
28501      if (injectedStyles.has(hash)) {
28502        return;
28503      }
28504      if (documentContainsStyleHash37(targetDocument, hash)) {
28505        injectedStyles.add(hash);
28506        return;
28507      }
28508      const style = targetDocument.createElement("style");
28509      style.setAttribute(STYLE_HASH_ATTRIBUTE37, hash);
28510      style.appendChild(targetDocument.createTextNode(css));
28511      targetDocument.head.appendChild(style);
28512      injectedStyles.add(hash);
28513    }
28514    function registerDocument37(targetDocument) {
28515      const runtime = getRuntime37();
28516      runtime.documents.set(
28517        targetDocument,
28518        (runtime.documents.get(targetDocument) ?? 0) + 1
28519      );
28520      for (const [hash, css] of runtime.styles) {
28521        injectStyle37(targetDocument, hash, css);
28522      }
28523      return () => {
28524        const count = runtime.documents.get(targetDocument);
28525        if (count === void 0) {
28526          return;
28527        }
28528        if (count <= 1) {
28529          runtime.documents.delete(targetDocument);
28530          return;
28531        }
28532        runtime.documents.set(targetDocument, count - 1);
28533      };
28534    }
28535    function registerStyle37(hash, css) {
28536      const runtime = getRuntime37();
28537      runtime.styles.set(hash, css);
28538      for (const targetDocument of runtime.documents.keys()) {
28539        injectStyle37(targetDocument, hash, css);
28540      }
28541    }
28542    if (typeof process === "undefined" || true) {
28543      registerStyle37("1540cbc709", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._1e441c22c9dc5d28__wrapper{--wp-ui-textarea-min-height:var(--wpds-dimension-size-lg,40px)}._414844876c32ecee__textarea{min-height:calc(var(--wp-ui-textarea-min-height) - 2px);resize:block}}@layer compositions{._1e441c22c9dc5d28__wrapper{--wp-ui-input-padding-block:9.9px;height:auto;line-height:1.4}}}");
28544    }
28545    var style_default31 = { "wrapper": "_1e441c22c9dc5d28__wrapper", "textarea": "_414844876c32ecee__textarea" };
28546    if (typeof process === "undefined" || true) {
28547      registerStyle37("e8e31009f5", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}");
28548    }
28549    var global_css_defense_default10 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li" };
28550    var wrappedRender = (render4, restProps) => {
28551      return function textareaRender(props) {
28552        return typeof render4 === "function" ? render4(mergeProps(props, restProps)) : (0, import_element67.cloneElement)(render4, mergeProps(props, restProps));
28553      };
28554    };
28555    var Textarea = (0, import_element67.forwardRef)(
28556      function Textarea2({
28557        className,
28558        defaultValue: defaultValue2,
28559        disabled: disabled2,
28560        onValueChange,
28561        render: render4,
28562        rows = 4,
28563        style,
28564        value,
28565        ...restProps
28566      }, ref) {
28567        return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
28568          Input3,
28569          {
28570            className: clsx_default(style_default31.wrapper, className),
28571            style,
28572            render: wrappedRender(
28573              render4 || ((props) => /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("textarea", { ...props })),
28574              {
28575                className: clsx_default(
28576                  global_css_defense_default10.textarea,
28577                  style_default31.textarea
28578                ),
28579                ref,
28580                rows,
28581                ...restProps
28582              }
28583            ),
28584            value,
28585            defaultValue: defaultValue2,
28586            onValueChange,
28587            disabled: disabled2
28588          }
28589        );
28590      }
28591    );
28592  
28593    // packages/ui/build-module/form/input-control/input-control.mjs
28594    var import_element68 = __toESM(require_element(), 1);
28595    var import_jsx_runtime113 = __toESM(require_jsx_runtime(), 1);
28596    var STYLE_HASH_ATTRIBUTE38 = "data-wp-hash";
28597    function getRuntime38() {
28598      const globalScope = globalThis;
28599      if (globalScope.__wpStyleRuntime) {
28600        return globalScope.__wpStyleRuntime;
28601      }
28602      globalScope.__wpStyleRuntime = {
28603        documents: /* @__PURE__ */ new Map(),
28604        styles: /* @__PURE__ */ new Map(),
28605        injectedStyles: /* @__PURE__ */ new WeakMap()
28606      };
28607      if (typeof document !== "undefined") {
28608        registerDocument38(document);
28609      }
28610      return globalScope.__wpStyleRuntime;
28611    }
28612    function documentContainsStyleHash38(targetDocument, hash) {
28613      if (!targetDocument.head) {
28614        return false;
28615      }
28616      for (const style of targetDocument.head.querySelectorAll(
28617        `style[$STYLE_HASH_ATTRIBUTE38}]`
28618      )) {
28619        if (style.getAttribute(STYLE_HASH_ATTRIBUTE38) === hash) {
28620          return true;
28621        }
28622      }
28623      return false;
28624    }
28625    function injectStyle38(targetDocument, hash, css) {
28626      if (!targetDocument.head) {
28627        return;
28628      }
28629      const runtime = getRuntime38();
28630      let injectedStyles = runtime.injectedStyles.get(targetDocument);
28631      if (!injectedStyles) {
28632        injectedStyles = /* @__PURE__ */ new Set();
28633        runtime.injectedStyles.set(targetDocument, injectedStyles);
28634      }
28635      if (injectedStyles.has(hash)) {
28636        return;
28637      }
28638      if (documentContainsStyleHash38(targetDocument, hash)) {
28639        injectedStyles.add(hash);
28640        return;
28641      }
28642      const style = targetDocument.createElement("style");
28643      style.setAttribute(STYLE_HASH_ATTRIBUTE38, hash);
28644      style.appendChild(targetDocument.createTextNode(css));
28645      targetDocument.head.appendChild(style);
28646      injectedStyles.add(hash);
28647    }
28648    function registerDocument38(targetDocument) {
28649      const runtime = getRuntime38();
28650      runtime.documents.set(
28651        targetDocument,
28652        (runtime.documents.get(targetDocument) ?? 0) + 1
28653      );
28654      for (const [hash, css] of runtime.styles) {
28655        injectStyle38(targetDocument, hash, css);
28656      }
28657      return () => {
28658        const count = runtime.documents.get(targetDocument);
28659        if (count === void 0) {
28660          return;
28661        }
28662        if (count <= 1) {
28663          runtime.documents.delete(targetDocument);
28664          return;
28665        }
28666        runtime.documents.set(targetDocument, count - 1);
28667      };
28668    }
28669    function registerStyle38(hash, css) {
28670      const runtime = getRuntime38();
28671      runtime.styles.set(hash, css);
28672      for (const targetDocument of runtime.documents.keys()) {
28673        injectStyle38(targetDocument, hash, css);
28674      }
28675    }
28676    if (typeof process === "undefined" || true) {
28677      registerStyle38("0c752c3d08", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.a9211a7e6af24bed__root input[type=date]:not([data-filled]):not(:focus),.a9211a7e6af24bed__root input[type=datetime-local]:not([data-filled]):not(:focus),.a9211a7e6af24bed__root input[type=time]:not([data-filled]):not(:focus){--_gcd-input-color:transparent;--_gcd-input-color-disabled:transparent;color:transparent;&:disabled::-webkit-datetime-edit-text{color:transparent}}}}}");
28678    }
28679    var style_default32 = { "root": "a9211a7e6af24bed__root" };
28680    var InputControl = (0, import_element68.forwardRef)(
28681      function InputControl2({
28682        className,
28683        label,
28684        description,
28685        details,
28686        hideLabelFromVision,
28687        ...restProps
28688      }, ref) {
28689        return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(field_exports.Root, { className: clsx_default(style_default32.root, className), children: [
28690          /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }),
28691          /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Input3, { ref, ...restProps }),
28692          description && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(field_exports.Description, { children: description }),
28693          details && /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(field_exports.Details, { children: details })
28694        ] });
28695      }
28696    );
28697  
28698    // packages/ui/build-module/form/textarea-control/textarea-control.mjs
28699    var import_element69 = __toESM(require_element(), 1);
28700    var import_jsx_runtime114 = __toESM(require_jsx_runtime(), 1);
28701    var TextareaControl = (0, import_element69.forwardRef)(function TextareaControl2({
28702      className,
28703      label,
28704      description,
28705      details,
28706      hideLabelFromVision,
28707      ...restProps
28708    }, ref) {
28709      return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(field_exports.Root, { className, children: [
28710        /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }),
28711        /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Textarea, { ref, ...restProps }),
28712        description && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(field_exports.Description, { children: description }),
28713        details && /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(field_exports.Details, { children: details })
28714      ] });
28715    });
28716  
28717    // packages/ui/build-module/form/with-validation/validated-input-control/validated-input-control.mjs
28718    var import_element70 = __toESM(require_element(), 1);
28719    var import_compose3 = __toESM(require_compose(), 1);
28720    var import_jsx_runtime115 = __toESM(require_jsx_runtime(), 1);
28721    var ValidatedInputControl = (0, import_element70.forwardRef)(function ValidatedInputControl2({ required, markWhenOptional, customValidity, ...restProps }, forwardedRef) {
28722      const validityTargetRef = (0, import_element70.useRef)(null);
28723      const mergedRefs = (0, import_compose3.useMergeRefs)([forwardedRef, validityTargetRef]);
28724      return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
28725        ControlWithError,
28726        {
28727          required,
28728          markWhenOptional,
28729          customValidity,
28730          getValidityTarget: () => validityTargetRef.current,
28731          children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(InputControl, { ref: mergedRefs, ...restProps })
28732        }
28733      );
28734    });
28735  
28736    // packages/ui/build-module/form/with-validation/validated-textarea-control/validated-textarea-control.mjs
28737    var import_element71 = __toESM(require_element(), 1);
28738    var import_compose4 = __toESM(require_compose(), 1);
28739    var import_jsx_runtime116 = __toESM(require_jsx_runtime(), 1);
28740    var ValidatedTextareaControl = (0, import_element71.forwardRef)(function ValidatedTextareaControl2({ required, markWhenOptional, customValidity, ...restProps }, forwardedRef) {
28741      const validityTargetRef = (0, import_element71.useRef)(null);
28742      const mergedRefs = (0, import_compose4.useMergeRefs)([forwardedRef, validityTargetRef]);
28743      return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
28744        ControlWithError,
28745        {
28746          required,
28747          markWhenOptional,
28748          customValidity,
28749          getValidityTarget: () => validityTargetRef.current,
28750          children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TextareaControl, { ref: mergedRefs, ...restProps })
28751        }
28752      );
28753    });
28754  
28755    // packages/dataviews/build-module/components/dataviews-context/index.mjs
28756    var import_element72 = __toESM(require_element(), 1);
28757  
28758    // packages/dataviews/build-module/constants.mjs
28759    var import_i18n16 = __toESM(require_i18n(), 1);
28760    var OPERATOR_IS_ANY = "isAny";
28761    var OPERATOR_IS_NONE = "isNone";
28762    var OPERATOR_IS_ALL = "isAll";
28763    var OPERATOR_IS_NOT_ALL = "isNotAll";
28764    var OPERATOR_BETWEEN = "between";
28765    var OPERATOR_IN_THE_PAST = "inThePast";
28766    var OPERATOR_OVER = "over";
28767    var OPERATOR_IS = "is";
28768    var OPERATOR_IS_NOT = "isNot";
28769    var OPERATOR_LESS_THAN = "lessThan";
28770    var OPERATOR_GREATER_THAN = "greaterThan";
28771    var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual";
28772    var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual";
28773    var OPERATOR_BEFORE = "before";
28774    var OPERATOR_AFTER = "after";
28775    var OPERATOR_BEFORE_INC = "beforeInc";
28776    var OPERATOR_AFTER_INC = "afterInc";
28777    var OPERATOR_CONTAINS = "contains";
28778    var OPERATOR_NOT_CONTAINS = "notContains";
28779    var OPERATOR_STARTS_WITH = "startsWith";
28780    var OPERATOR_ON = "on";
28781    var OPERATOR_NOT_ON = "notOn";
28782    var SORTING_DIRECTIONS = ["asc", "desc"];
28783    var sortArrows = { asc: "\u2191", desc: "\u2193" };
28784    var sortValues = { asc: "ascending", desc: "descending" };
28785    var sortLabels = {
28786      asc: (0, import_i18n16.__)("Sort ascending"),
28787      desc: (0, import_i18n16.__)("Sort descending")
28788    };
28789    var sortIcons = {
28790      asc: arrow_up_default,
28791      desc: arrow_down_default
28792    };
28793    var LAYOUT_TABLE = "table";
28794    var LAYOUT_GRID = "grid";
28795    var LAYOUT_LIST = "list";
28796    var LAYOUT_ACTIVITY = "activity";
28797    var LAYOUT_PICKER_GRID = "pickerGrid";
28798    var LAYOUT_PICKER_TABLE = "pickerTable";
28799    var LAYOUT_PICKER_ACTIVITY = "pickerActivity";
28800    var MEDIA_ASPECT_RATIOS = [
28801      "1/1",
28802      "4/3",
28803      "3/4",
28804      "3/2",
28805      "2/3",
28806      "16/9",
28807      "9/16"
28808    ];
28809  
28810    // packages/dataviews/build-module/components/dataviews-context/index.mjs
28811    var DataViewsContext = (0, import_element72.createContext)({
28812      view: { type: LAYOUT_TABLE },
28813      onChangeView: () => {
28814      },
28815      fields: [],
28816      data: [],
28817      paginationInfo: {
28818        totalItems: 0,
28819        totalPages: 0
28820      },
28821      selection: [],
28822      onChangeSelection: () => {
28823      },
28824      setOpenedFilter: () => {
28825      },
28826      openedFilter: null,
28827      getItemId: (item) => item.id,
28828      isItemClickable: () => true,
28829      renderItemLink: void 0,
28830      containerWidth: 0,
28831      containerRef: (0, import_element72.createRef)(),
28832      resizeObserverRef: () => {
28833      },
28834      defaultLayouts: { list: {}, grid: {}, table: {} },
28835      filters: [],
28836      isShowingFilter: false,
28837      setIsShowingFilter: () => {
28838      },
28839      hasInitiallyLoaded: false,
28840      config: {
28841        perPageSizes: []
28842      },
28843      intersectionObserver: null
28844    });
28845    DataViewsContext.displayName = "DataViewsContext";
28846    var dataviews_context_default = DataViewsContext;
28847  
28848    // packages/dataviews/build-module/components/dataviews-layouts/index.mjs
28849    var import_i18n38 = __toESM(require_i18n(), 1);
28850  
28851    // packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs
28852    var import_i18n24 = __toESM(require_i18n(), 1);
28853    var import_components7 = __toESM(require_components(), 1);
28854    var import_element81 = __toESM(require_element(), 1);
28855    var import_keycodes2 = __toESM(require_keycodes(), 1);
28856  
28857    // packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs
28858    var import_components2 = __toESM(require_components(), 1);
28859    var import_i18n17 = __toESM(require_i18n(), 1);
28860    var import_jsx_runtime117 = __toESM(require_jsx_runtime(), 1);
28861    var SELECTION_CHECKBOX_CLASS = "dataviews-selection-checkbox";
28862    function DataViewsSelectionCheckbox({
28863      selection,
28864      onChangeSelection,
28865      item,
28866      getItemId,
28867      titleField,
28868      disabled: disabled2,
28869      ...extraProps
28870    }) {
28871      const id = getItemId(item);
28872      const isInSelectionArray = selection.includes(id);
28873      const checked = !disabled2 && isInSelectionArray;
28874      const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n17.__)("(no title)");
28875      return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
28876        import_components2.CheckboxControl,
28877        {
28878          className: SELECTION_CHECKBOX_CLASS,
28879          "aria-label": selectionLabel,
28880          "aria-disabled": disabled2,
28881          checked,
28882          onChange: () => {
28883            if (disabled2) {
28884              return;
28885            }
28886            onChangeSelection(
28887              isInSelectionArray ? selection.filter((itemId) => id !== itemId) : [...selection, id]
28888            );
28889          },
28890          ...extraProps
28891        }
28892      );
28893    }
28894  
28895    // packages/dataviews/build-module/components/dataviews-item-actions/index.mjs
28896    var import_components3 = __toESM(require_components(), 1);
28897    var import_i18n18 = __toESM(require_i18n(), 1);
28898    var import_element73 = __toESM(require_element(), 1);
28899    var import_data2 = __toESM(require_data(), 1);
28900    var import_compose5 = __toESM(require_compose(), 1);
28901  
28902    // node_modules/tslib/tslib.es6.mjs
28903    var __assign = function() {
28904      __assign = Object.assign || function __assign2(t2) {
28905        for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
28906          s2 = arguments[i2];
28907          for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t2[p2] = s2[p2];
28908        }
28909        return t2;
28910      };
28911      return __assign.apply(this, arguments);
28912    };
28913  
28914    // node_modules/lower-case/dist.es2015/index.js
28915    function lowerCase(str) {
28916      return str.toLowerCase();
28917    }
28918  
28919    // node_modules/no-case/dist.es2015/index.js
28920    var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
28921    var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
28922    function noCase(input, options) {
28923      if (options === void 0) {
28924        options = {};
28925      }
28926      var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
28927      var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
28928      var start = 0;
28929      var end = result.length;
28930      while (result.charAt(start) === "\0")
28931        start++;
28932      while (result.charAt(end - 1) === "\0")
28933        end--;
28934      return result.slice(start, end).split("\0").map(transform).join(delimiter);
28935    }
28936    function replace(input, re2, value) {
28937      if (re2 instanceof RegExp)
28938        return input.replace(re2, value);
28939      return re2.reduce(function(input2, re3) {
28940        return input2.replace(re3, value);
28941      }, input);
28942    }
28943  
28944    // node_modules/dot-case/dist.es2015/index.js
28945    function dotCase(input, options) {
28946      if (options === void 0) {
28947        options = {};
28948      }
28949      return noCase(input, __assign({ delimiter: "." }, options));
28950    }
28951  
28952    // node_modules/param-case/dist.es2015/index.js
28953    function paramCase(input, options) {
28954      if (options === void 0) {
28955        options = {};
28956      }
28957      return dotCase(input, __assign({ delimiter: "-" }, options));
28958    }
28959  
28960    // packages/kebab-case/build-module/index.mjs
28961    function kebabCase(str) {
28962      let input = str?.toString?.() ?? "";
28963      input = input.replace(/['\u2019]/, "");
28964      return paramCase(input, {
28965        splitRegexp: [
28966          /(?!(?:1ST|2ND|3RD|[4-9]TH)(?![a-z]))([a-z0-9])([A-Z])/g,
28967          // fooBar => foo-bar, 3Bar => 3-bar
28968          /(?!(?:1st|2nd|3rd|[4-9]th)(?![a-z]))([0-9])([a-z])/g,
28969          // 3bar => 3-bar
28970          /([A-Za-z])([0-9])/g,
28971          // Foo3 => foo-3, foo3 => foo-3
28972          /([A-Z])([A-Z][a-z])/g
28973          // FOOBar => foo-bar
28974        ]
28975      });
28976    }
28977  
28978    // packages/dataviews/build-module/components/dataviews-item-actions/index.mjs
28979    var import_jsx_runtime118 = __toESM(require_jsx_runtime(), 1);
28980    function ButtonTrigger({
28981      action,
28982      onClick,
28983      items,
28984      variant
28985    }) {
28986      const label = typeof action.label === "string" ? action.label : action.label(items);
28987      return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
28988        import_components3.Button,
28989        {
28990          disabled: !!action.disabled,
28991          accessibleWhenDisabled: true,
28992          size: "compact",
28993          variant,
28994          onClick,
28995          children: label
28996        }
28997      );
28998    }
28999    function MenuItemTrigger({
29000      action,
29001      onClick,
29002      items
29003    }) {
29004      const label = typeof action.label === "string" ? action.label : action.label(items);
29005      return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(menu_exports.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(menu_exports.ItemLabel, { children: label }) });
29006    }
29007    function ActionModal({
29008      action,
29009      items,
29010      closeModal
29011    }) {
29012      const label = typeof action.label === "string" ? action.label : action.label(items);
29013      const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader;
29014      return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29015        import_components3.Modal,
29016        {
29017          title: modalHeader || label,
29018          __experimentalHideHeader: !!action.hideModalHeader,
29019          onRequestClose: closeModal,
29020          focusOnMount: action.modalFocusOnMount ?? true,
29021          size: action.modalSize || "medium",
29022          overlayClassName: `dataviews-action-modal dataviews-action-modal__$kebabCase(
29023            action.id
29024          )}`,
29025          children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(action.RenderModal, { items, closeModal })
29026        }
29027      );
29028    }
29029    function ActionsMenuGroup({
29030      actions,
29031      item,
29032      registry,
29033      setActiveModalAction
29034    }) {
29035      const { primaryActions, regularActions } = (0, import_element73.useMemo)(() => {
29036        return actions.reduce(
29037          (acc, action) => {
29038            (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action);
29039            return acc;
29040          },
29041          {
29042            primaryActions: [],
29043            regularActions: []
29044          }
29045        );
29046      }, [actions]);
29047      const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29048        MenuItemTrigger,
29049        {
29050          action,
29051          onClick: () => {
29052            if ("RenderModal" in action) {
29053              setActiveModalAction(action);
29054              return;
29055            }
29056            action.callback([item], { registry });
29057          },
29058          items: [item]
29059        },
29060        action.id
29061      ));
29062      return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(menu_exports.Group, { children: [
29063        renderActionGroup(primaryActions),
29064        renderActionGroup(regularActions)
29065      ] });
29066    }
29067    function ItemActions({
29068      item,
29069      actions,
29070      isCompact
29071    }) {
29072      const registry = (0, import_data2.useRegistry)();
29073      const { primaryActions, eligibleActions } = (0, import_element73.useMemo)(() => {
29074        const _eligibleActions = actions.filter(
29075          (action) => !action.isEligible || action.isEligible(item)
29076        );
29077        const _primaryActions = _eligibleActions.filter(
29078          (action) => action.isPrimary
29079        );
29080        return {
29081          primaryActions: _primaryActions,
29082          eligibleActions: _eligibleActions
29083        };
29084      }, [actions, item]);
29085      const isMobileViewport = (0, import_compose5.useViewportMatch)("medium", "<");
29086      if (isCompact) {
29087        return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29088          CompactItemActions,
29089          {
29090            item,
29091            actions: eligibleActions,
29092            isSmall: true,
29093            registry
29094          }
29095        );
29096      }
29097      return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
29098        Stack,
29099        {
29100          direction: "row",
29101          justify: "flex-end",
29102          className: "dataviews-item-actions",
29103          style: {
29104            flexShrink: 0,
29105            width: "auto"
29106          },
29107          children: [
29108            /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29109              PrimaryActions,
29110              {
29111                item,
29112                actions: primaryActions,
29113                registry
29114              }
29115            ),
29116            (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu
29117            // there if there are any actions at all.
29118            isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29119              CompactItemActions,
29120              {
29121                item,
29122                actions: eligibleActions,
29123                registry
29124              }
29125            )
29126          ]
29127        }
29128      );
29129    }
29130    function CompactItemActions({
29131      item,
29132      actions,
29133      isSmall,
29134      registry
29135    }) {
29136      const [activeModalAction, setActiveModalAction] = (0, import_element73.useState)(
29137        null
29138      );
29139      return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(import_jsx_runtime118.Fragment, { children: [
29140        /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(menu_exports.Root, { disabled: !actions.length, children: [
29141          /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29142            menu_exports.Trigger,
29143            {
29144              render: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29145                import_components3.Button,
29146                {
29147                  size: isSmall ? "small" : "compact",
29148                  icon: more_vertical_default,
29149                  label: (0, import_i18n18.__)("Actions"),
29150                  accessibleWhenDisabled: true,
29151                  disabled: !actions.length,
29152                  className: "dataviews-all-actions-button"
29153                }
29154              )
29155            }
29156          ),
29157          /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(menu_exports.Popup, { positioner: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(menu_exports.Positioner, { align: "end" }), children: /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29158            ActionsMenuGroup,
29159            {
29160              actions,
29161              item,
29162              registry,
29163              setActiveModalAction
29164            }
29165          ) })
29166        ] }),
29167        !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29168          ActionModal,
29169          {
29170            action: activeModalAction,
29171            items: [item],
29172            closeModal: () => setActiveModalAction(null)
29173          }
29174        )
29175      ] });
29176    }
29177    function PrimaryActions({
29178      item,
29179      actions,
29180      registry,
29181      buttonVariant
29182    }) {
29183      const [activeModalAction, setActiveModalAction] = (0, import_element73.useState)(null);
29184      const isMobileViewport = (0, import_compose5.useViewportMatch)("medium", "<");
29185      if (isMobileViewport) {
29186        return null;
29187      }
29188      if (!Array.isArray(actions) || actions.length === 0) {
29189        return null;
29190      }
29191      return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(import_jsx_runtime118.Fragment, { children: [
29192        actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29193          ButtonTrigger,
29194          {
29195            action,
29196            onClick: () => {
29197              if ("RenderModal" in action) {
29198                setActiveModalAction(action);
29199                return;
29200              }
29201              action.callback([item], { registry });
29202            },
29203            items: [item],
29204            variant: buttonVariant
29205          },
29206          action.id
29207        )),
29208        !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
29209          ActionModal,
29210          {
29211            action: activeModalAction,
29212            items: [item],
29213            closeModal: () => setActiveModalAction(null)
29214          }
29215        )
29216      ] });
29217    }
29218  
29219    // packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs
29220    var import_components4 = __toESM(require_components(), 1);
29221    var import_i18n20 = __toESM(require_i18n(), 1);
29222    var import_element74 = __toESM(require_element(), 1);
29223    var import_data3 = __toESM(require_data(), 1);
29224    var import_compose6 = __toESM(require_compose(), 1);
29225  
29226    // packages/dataviews/build-module/utils/get-footer-message.mjs
29227    var import_i18n19 = __toESM(require_i18n(), 1);
29228    function getFooterMessage(selectionCount, itemsCount, totalItems, onlyTotalCount = false) {
29229      if (selectionCount > 0) {
29230        return (0, import_i18n19.sprintf)(
29231          /* translators: %d: number of items. */
29232          (0, import_i18n19._n)("%d Item selected", "%d Items selected", selectionCount),
29233          selectionCount
29234        );
29235      }
29236      if (onlyTotalCount || totalItems <= itemsCount) {
29237        return (0, import_i18n19.sprintf)(
29238          /* translators: %d: number of items. */
29239          (0, import_i18n19._n)("%d Item", "%d Items", totalItems),
29240          totalItems
29241        );
29242      }
29243      return (0, import_i18n19.sprintf)(
29244        /* translators: %1$d: number of items. %2$d: total number of items. */
29245        (0, import_i18n19._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems),
29246        itemsCount,
29247        totalItems
29248      );
29249    }
29250  
29251    // packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs
29252    var import_jsx_runtime119 = __toESM(require_jsx_runtime(), 1);
29253    function hasAPossibleBulkAction(actions, item) {
29254      return actions.some(
29255        (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item))
29256      );
29257    }
29258    function useHasAPossibleBulkAction(actions, item) {
29259      return (0, import_element74.useMemo)(
29260        () => hasAPossibleBulkAction(actions, item),
29261        [actions, item]
29262      );
29263    }
29264    function useSomeItemHasAPossibleBulkAction(actions, data) {
29265      return (0, import_element74.useMemo)(
29266        () => data.some((item) => hasAPossibleBulkAction(actions, item)),
29267        [actions, data]
29268      );
29269    }
29270    function BulkSelectionCheckbox({
29271      selection,
29272      onChangeSelection,
29273      data,
29274      actions,
29275      getItemId,
29276      disableSelectAll = false
29277    }) {
29278      const selectableItems = (0, import_element74.useMemo)(() => {
29279        return data.filter((item) => {
29280          return actions.some(
29281            (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item))
29282          );
29283        });
29284      }, [data, actions]);
29285      const selectedItems = data.filter(
29286        (item) => selection.includes(getItemId(item)) && selectableItems.includes(item)
29287      );
29288      const hasSelection = selection.length > 0;
29289      const areAllSelected = selectedItems.length === selectableItems.length;
29290      if (disableSelectAll) {
29291        return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
29292          import_components4.CheckboxControl,
29293          {
29294            className: "dataviews-view-table-selection-checkbox",
29295            checked: hasSelection,
29296            disabled: !hasSelection,
29297            onChange: () => {
29298              onChangeSelection([]);
29299            },
29300            "aria-label": (0, import_i18n20.__)("Deselect all")
29301          }
29302        );
29303      }
29304      return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
29305        import_components4.CheckboxControl,
29306        {
29307          className: "dataviews-view-table-selection-checkbox",
29308          checked: areAllSelected,
29309          indeterminate: !areAllSelected && !!selectedItems.length,
29310          onChange: () => {
29311            if (areAllSelected) {
29312              onChangeSelection([]);
29313            } else {
29314              onChangeSelection(
29315                selectableItems.map((item) => getItemId(item))
29316              );
29317            }
29318          },
29319          "aria-label": areAllSelected ? (0, import_i18n20.__)("Deselect all") : (0, import_i18n20.__)("Select all")
29320        }
29321      );
29322    }
29323  
29324    // packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs
29325    var import_i18n21 = __toESM(require_i18n(), 1);
29326    var import_components5 = __toESM(require_components(), 1);
29327    var import_element75 = __toESM(require_element(), 1);
29328  
29329    // packages/dataviews/build-module/utils/get-hideable-fields.mjs
29330    function getHideableFields(view, fields) {
29331      const togglableFields = [
29332        view?.titleField,
29333        view?.mediaField,
29334        view?.descriptionField
29335      ].filter(Boolean);
29336      return fields.filter(
29337        (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false
29338      );
29339    }
29340  
29341    // packages/dataviews/build-module/components/dataviews-layouts/utils/get-table-columns.mjs
29342    function getTableColumns(view, fields) {
29343      return (view.fields ?? []).filter(
29344        (fieldId) => fields.some((field) => field.id === fieldId)
29345      );
29346    }
29347  
29348    // packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs
29349    var import_jsx_runtime120 = __toESM(require_jsx_runtime(), 1);
29350    function WithMenuSeparators({ children }) {
29351      return import_element75.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(import_element75.Fragment, { children: [
29352        i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.Separator, {}),
29353        child
29354      ] }, i2));
29355    }
29356    var _HeaderMenu = (0, import_element75.forwardRef)(function HeaderMenu({
29357      fieldId,
29358      view,
29359      fields,
29360      onChangeView,
29361      onHide,
29362      setOpenedFilter,
29363      canMove = true,
29364      canInsertLeft = true,
29365      canInsertRight = true
29366    }, ref) {
29367      const isSorted = view.sort?.field === fieldId;
29368      let isHidable = false;
29369      let isSortable = false;
29370      let canAddFilter = false;
29371      let operators = [];
29372      const field = fields.find((f2) => f2.id === fieldId);
29373      const { setIsShowingFilter } = (0, import_element75.useContext)(dataviews_context_default);
29374      if (!field) {
29375        return null;
29376      }
29377      isHidable = field.enableHiding !== false;
29378      isSortable = field.enableSorting !== false;
29379      const header = field.header;
29380      operators = !!field.filterBy && field.filterBy?.operators || [];
29381      canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary;
29382      if (!isSortable && !canMove && !isHidable && !canAddFilter) {
29383        return header;
29384      }
29385      const visibleFieldIds = getTableColumns(view, fields);
29386      const index2 = visibleFieldIds.indexOf(fieldId);
29387      const hiddenFields = getHideableFields(view, fields).filter(
29388        (f2) => !visibleFieldIds.includes(f2.id)
29389      );
29390      const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length;
29391      const isRtl = (0, import_i18n21.isRTL)();
29392      return /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(menu_exports.Root, { children: [
29393        /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(
29394          menu_exports.Trigger,
29395          {
29396            render: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29397              import_components5.Button,
29398              {
29399                size: "compact",
29400                className: "dataviews-view-table-header-button",
29401                ref,
29402                variant: "tertiary"
29403              }
29404            ),
29405            children: [
29406              header,
29407              view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] })
29408            ]
29409          }
29410        ),
29411        /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.Popup, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(WithMenuSeparators, { children: [
29412          isSortable && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29413            menu_exports.RadioGroup,
29414            {
29415              value: isSorted && view.sort ? view.sort.direction : null,
29416              onValueChange: (direction) => {
29417                onChangeView({
29418                  ...view,
29419                  sort: {
29420                    field: fieldId,
29421                    direction
29422                  },
29423                  showLevels: false
29424                });
29425              },
29426              children: SORTING_DIRECTIONS.map(
29427                (direction) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29428                  menu_exports.RadioItem,
29429                  {
29430                    value: direction,
29431                    children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: sortLabels[direction] })
29432                  },
29433                  direction
29434                )
29435              )
29436            }
29437          ),
29438          canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29439            menu_exports.Item,
29440            {
29441              prefix: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.PrefixIcon, { icon: funnel_default }),
29442              onClick: () => {
29443                setOpenedFilter(fieldId);
29444                setIsShowingFilter(true);
29445                onChangeView({
29446                  ...view,
29447                  page: 1,
29448                  filters: [
29449                    ...view.filters || [],
29450                    {
29451                      field: fieldId,
29452                      value: void 0,
29453                      operator: operators[0]
29454                    }
29455                  ]
29456                });
29457              },
29458              children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n21.__)("Add filter") })
29459            }
29460          ) }),
29461          (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(menu_exports.Group, { children: [
29462            canMove && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29463              menu_exports.Item,
29464              {
29465                prefix: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.PrefixIcon, { icon: arrow_left_default }),
29466                disabled: isRtl ? index2 >= visibleFieldIds.length - 1 : index2 < 1,
29467                onClick: () => {
29468                  const targetIndex = isRtl ? index2 + 1 : index2 - 1;
29469                  const newFields = [
29470                    ...visibleFieldIds
29471                  ];
29472                  newFields.splice(index2, 1);
29473                  newFields.splice(
29474                    targetIndex,
29475                    0,
29476                    fieldId
29477                  );
29478                  onChangeView({
29479                    ...view,
29480                    fields: newFields
29481                  });
29482                },
29483                children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n21.__)("Move left") })
29484              }
29485            ),
29486            canMove && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29487              menu_exports.Item,
29488              {
29489                prefix: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.PrefixIcon, { icon: arrow_right_default }),
29490                disabled: isRtl ? index2 < 1 : index2 >= visibleFieldIds.length - 1,
29491                onClick: () => {
29492                  const targetIndex = isRtl ? index2 - 1 : index2 + 1;
29493                  const newFields = [
29494                    ...visibleFieldIds
29495                  ];
29496                  newFields.splice(index2, 1);
29497                  newFields.splice(
29498                    targetIndex,
29499                    0,
29500                    fieldId
29501                  );
29502                  onChangeView({
29503                    ...view,
29504                    fields: newFields
29505                  });
29506                },
29507                children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n21.__)("Move right") })
29508              }
29509            ),
29510            canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(menu_exports.SubmenuRoot, { children: [
29511              /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.SubmenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n21.__)("Insert left") }) }),
29512              /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.Popup, { children: hiddenFields.map((hiddenField) => {
29513                const insertIndex = isRtl ? index2 + 1 : index2;
29514                return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29515                  menu_exports.Item,
29516                  {
29517                    onClick: () => {
29518                      onChangeView({
29519                        ...view,
29520                        fields: [
29521                          ...visibleFieldIds.slice(
29522                            0,
29523                            insertIndex
29524                          ),
29525                          hiddenField.id,
29526                          ...visibleFieldIds.slice(
29527                            insertIndex
29528                          )
29529                        ]
29530                      });
29531                    },
29532                    children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: hiddenField.label })
29533                  },
29534                  hiddenField.id
29535                );
29536              }) })
29537            ] }),
29538            canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime120.jsxs)(menu_exports.SubmenuRoot, { children: [
29539              /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.SubmenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n21.__)("Insert right") }) }),
29540              /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.Popup, { children: hiddenFields.map((hiddenField) => {
29541                const insertIndex = isRtl ? index2 : index2 + 1;
29542                return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29543                  menu_exports.Item,
29544                  {
29545                    onClick: () => {
29546                      onChangeView({
29547                        ...view,
29548                        fields: [
29549                          ...visibleFieldIds.slice(
29550                            0,
29551                            insertIndex
29552                          ),
29553                          hiddenField.id,
29554                          ...visibleFieldIds.slice(
29555                            insertIndex
29556                          )
29557                        ]
29558                      });
29559                    },
29560                    children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: hiddenField.label })
29561                  },
29562                  hiddenField.id
29563                );
29564              }) })
29565            ] }),
29566            isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
29567              menu_exports.Item,
29568              {
29569                prefix: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.PrefixIcon, { icon: unseen_default }),
29570                onClick: () => {
29571                  onHide(field);
29572                  onChangeView({
29573                    ...view,
29574                    fields: visibleFieldIds.filter(
29575                      (id) => id !== fieldId
29576                    )
29577                  });
29578                },
29579                children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n21.__)("Hide column") })
29580              }
29581            )
29582          ] })
29583        ] }) })
29584      ] });
29585    });
29586    var ColumnHeaderMenu = _HeaderMenu;
29587    var column_header_menu_default = ColumnHeaderMenu;
29588  
29589    // packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs
29590    var import_element76 = __toESM(require_element(), 1);
29591    var import_jsx_runtime121 = __toESM(require_jsx_runtime(), 1);
29592    function getClickableItemProps({
29593      item,
29594      isItemClickable: isItemClickable2,
29595      onClickItem,
29596      className
29597    }) {
29598      if (!isItemClickable2(item) || !onClickItem) {
29599        return { className };
29600      }
29601      return {
29602        className: className ? `$className} $className}--clickable` : void 0,
29603        role: "button",
29604        tabIndex: 0,
29605        onClick: (event) => {
29606          event.stopPropagation();
29607          onClickItem(item);
29608        },
29609        onKeyDown: (event) => {
29610          if (event.key === "Enter" || event.key === "" || event.key === " ") {
29611            event.stopPropagation();
29612            onClickItem(item);
29613          }
29614        }
29615      };
29616    }
29617    function ItemClickWrapper({
29618      item,
29619      isItemClickable: isItemClickable2,
29620      onClickItem,
29621      renderItemLink,
29622      className,
29623      children,
29624      ...extraProps
29625    }) {
29626      if (!isItemClickable2(item)) {
29627        return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { className, ...extraProps, children });
29628      }
29629      if (renderItemLink) {
29630        const renderedElement = renderItemLink({
29631          item,
29632          className: `$className} $className}--clickable`,
29633          ...extraProps,
29634          children
29635        });
29636        return (0, import_element76.cloneElement)(renderedElement, {
29637          onClick: (event) => {
29638            event.stopPropagation();
29639            if (renderedElement.props.onClick) {
29640              renderedElement.props.onClick(event);
29641            }
29642          },
29643          onKeyDown: (event) => {
29644            if (event.key === "Enter" || event.key === "" || event.key === " ") {
29645              event.stopPropagation();
29646              if (renderedElement.props.onKeyDown) {
29647                renderedElement.props.onKeyDown(event);
29648              }
29649            }
29650          }
29651        });
29652      }
29653      const clickProps = getClickableItemProps({
29654        item,
29655        isItemClickable: isItemClickable2,
29656        onClickItem,
29657        className
29658      });
29659      return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("div", { ...clickProps, ...extraProps, children });
29660    }
29661  
29662    // packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs
29663    var import_jsx_runtime122 = __toESM(require_jsx_runtime(), 1);
29664    function ColumnPrimary({
29665      item,
29666      level,
29667      titleField,
29668      mediaField,
29669      mediaAspectRatio,
29670      descriptionField: descriptionField2,
29671      onClickItem,
29672      renderItemLink,
29673      isItemClickable: isItemClickable2
29674    }) {
29675      let mediaSizes = "32px";
29676      if (mediaAspectRatio) {
29677        const [ratioWidth, ratioHeight] = mediaAspectRatio.split("/").map(Number);
29678        mediaSizes = `$Math.min(
29679          60,
29680          Math.round(32 * ratioWidth / ratioHeight)
29681        )}px`;
29682      }
29683      return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [
29684        mediaField && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
29685          ItemClickWrapper,
29686          {
29687            item,
29688            isItemClickable: isItemClickable2,
29689            onClickItem,
29690            renderItemLink,
29691            className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media",
29692            "aria-label": isItemClickable2(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0,
29693            children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
29694              mediaField.render,
29695              {
29696                item,
29697                field: mediaField,
29698                config: { sizes: mediaSizes }
29699              }
29700            )
29701          }
29702        ),
29703        /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
29704          Stack,
29705          {
29706            direction: "column",
29707            align: "flex-start",
29708            className: "dataviews-view-table__primary-column-content",
29709            children: [
29710              titleField && /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(
29711                ItemClickWrapper,
29712                {
29713                  item,
29714                  isItemClickable: isItemClickable2,
29715                  onClickItem,
29716                  renderItemLink,
29717                  className: "dataviews-view-table__cell-content-wrapper dataviews-title-field",
29718                  children: [
29719                    level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)("span", { className: "dataviews-view-table__level", children: [
29720                      Array(level).fill("\u2014").join(" "),
29721                      "\xA0"
29722                    ] }),
29723                    /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(titleField.render, { item, field: titleField })
29724                  ]
29725                }
29726              ),
29727              descriptionField2 && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
29728                descriptionField2.render,
29729                {
29730                  item,
29731                  field: descriptionField2
29732                }
29733              )
29734            ]
29735          }
29736        )
29737      ] });
29738    }
29739    var column_primary_default = ColumnPrimary;
29740  
29741    // packages/dataviews/build-module/components/dataviews-layouts/table/use-scroll-state.mjs
29742    var import_element77 = __toESM(require_element(), 1);
29743    var import_i18n22 = __toESM(require_i18n(), 1);
29744    var isScrolledToEnd = (element) => {
29745      if ((0, import_i18n22.isRTL)()) {
29746        const scrollLeft = Math.abs(element.scrollLeft);
29747        return scrollLeft <= 1;
29748      }
29749      return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;
29750    };
29751    function useScrollState({
29752      scrollContainerRef,
29753      enabledHorizontal = false
29754    }) {
29755      const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element77.useState)(false);
29756      const [isVerticallyScrolled, setIsVerticallyScrolled] = (0, import_element77.useState)(false);
29757      const handleScroll = (0, import_element77.useCallback)(() => {
29758        const scrollContainer = scrollContainerRef.current;
29759        if (!scrollContainer) {
29760          return;
29761        }
29762        if (enabledHorizontal) {
29763          setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer));
29764        }
29765        setIsVerticallyScrolled(scrollContainer.scrollTop > 0);
29766      }, [scrollContainerRef, enabledHorizontal]);
29767      (0, import_element77.useEffect)(() => {
29768        if (typeof window === "undefined" || !scrollContainerRef.current) {
29769          return () => {
29770          };
29771        }
29772        const scrollContainer = scrollContainerRef.current;
29773        handleScroll();
29774        scrollContainer.addEventListener("scroll", handleScroll);
29775        window.addEventListener("resize", handleScroll);
29776        return () => {
29777          scrollContainer.removeEventListener("scroll", handleScroll);
29778          window.removeEventListener("resize", handleScroll);
29779        };
29780      }, [scrollContainerRef, enabledHorizontal, handleScroll]);
29781      return { isHorizontalScrollEnd, isVerticallyScrolled };
29782    }
29783  
29784    // packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs
29785    function getDataByGroup(data, groupByField) {
29786      return data.reduce((groups, item) => {
29787        const groupName = groupByField.getValue({ item });
29788        if (!groups.has(groupName)) {
29789          groups.set(groupName, []);
29790        }
29791        groups.get(groupName)?.push(item);
29792        return groups;
29793      }, /* @__PURE__ */ new Map());
29794    }
29795  
29796    // packages/dataviews/build-module/components/dataviews-layouts/utils/use-selection-props.mjs
29797    var import_element78 = __toESM(require_element(), 1);
29798    var import_keycodes = __toESM(require_keycodes(), 1);
29799    function getRange(orderedIds, fromIndex, toIndex) {
29800      return orderedIds.slice(
29801        Math.min(fromIndex, toIndex),
29802        Math.max(fromIndex, toIndex) + 1
29803      );
29804    }
29805    function getRangeSelection({
29806      anchorId,
29807      targetId,
29808      lastTargetId,
29809      orderedIds,
29810      selection
29811    }) {
29812      const targetIndex = orderedIds.indexOf(targetId);
29813      if (targetIndex === -1) {
29814        return selection;
29815      }
29816      const anchorIndex = anchorId === null ? -1 : orderedIds.indexOf(anchorId);
29817      const hasAnchor = anchorIndex !== -1;
29818      const rangeStart = hasAnchor ? anchorIndex : targetIndex;
29819      const lastTargetIndex = hasAnchor && lastTargetId !== null ? orderedIds.indexOf(lastTargetId) : -1;
29820      const lastRange = lastTargetIndex === -1 ? [] : getRange(orderedIds, rangeStart, lastTargetIndex);
29821      const base = selection.filter((id) => !lastRange.includes(id));
29822      return [
29823        .../* @__PURE__ */ new Set([
29824          ...base,
29825          ...getRange(orderedIds, rangeStart, targetIndex)
29826        ])
29827      ];
29828    }
29829    function getClosestSelectedId({
29830      targetId,
29831      orderedIds,
29832      selection
29833    }) {
29834      const targetIndex = orderedIds.indexOf(targetId);
29835      if (targetIndex === -1) {
29836        return null;
29837      }
29838      const selectedIds = new Set(selection);
29839      let closestId = null;
29840      let closestDistance = Infinity;
29841      orderedIds.forEach((id, index2) => {
29842        if (!selectedIds.has(id)) {
29843          return;
29844        }
29845        const distance = Math.abs(index2 - targetIndex);
29846        if (distance < closestDistance) {
29847          closestDistance = distance;
29848          closestId = id;
29849        }
29850      });
29851      return closestId;
29852    }
29853    function useSelectionProps({
29854      data,
29855      getItemId,
29856      isItemSelectable,
29857      selection,
29858      onChangeSelection,
29859      selectionMode,
29860      shouldSelectOnClick
29861    }) {
29862      const isMultiselect = selectionMode === "multi";
29863      const allowDeselect = selectionMode !== "single-required";
29864      const gestureRef = (0, import_element78.useRef)(null);
29865      const anchorTo = (id) => {
29866        gestureRef.current = { anchorId: id, lastTargetId: null };
29867      };
29868      const isTouchDeviceRef = (0, import_element78.useRef)(false);
29869      (0, import_element78.useEffect)(() => {
29870        const markTouchDevice = () => {
29871          isTouchDeviceRef.current = true;
29872        };
29873        document.addEventListener("touchstart", markTouchDevice, {
29874          once: true
29875        });
29876        return () => document.removeEventListener("touchstart", markTouchDevice);
29877      }, []);
29878      const selectableIds = data.filter(isItemSelectable).map(getItemId);
29879      const selectableIdSet = new Set(selectableIds);
29880      const hasSelectableItems = selectableIds.length > 0;
29881      const hasRangeGesture = hasSelectableItems && isMultiselect;
29882      const getSelectionProps = (id) => {
29883        const isSelectable = selectableIdSet.has(id);
29884        return {
29885          // When a plain click selects, that click is also what anchors the
29886          // range a following Shift+Click extends from. Modifier clicks never
29887          // reach here: `onClickCapture` stops them.
29888          ...shouldSelectOnClick && {
29889            onClick: () => {
29890              if (allowDeselect && selection.includes(id)) {
29891                onChangeSelection(
29892                  selection.filter((itemId) => id !== itemId)
29893                );
29894              } else {
29895                onChangeSelection(
29896                  isMultiselect ? [...selection, id] : [id]
29897                );
29898              }
29899              anchorTo(id);
29900            }
29901          },
29902          onMouseDown: (event) => {
29903            if (event.button === 0 && event.shiftKey && hasRangeGesture) {
29904              event.preventDefault();
29905            }
29906          },
29907          onClickCapture: (event) => {
29908            if (!hasRangeGesture) {
29909              return;
29910            }
29911            const isModifierKeyPressed = (0, import_keycodes.isAppleOS)() ? event.metaKey : event.ctrlKey;
29912            const isSelectionCheckboxClick = event.target instanceof Element && !!event.target.closest(`.$SELECTION_CHECKBOX_CLASS}`);
29913            if (!isModifierKeyPressed && !event.shiftKey) {
29914              if (isSelectable && isSelectionCheckboxClick) {
29915                anchorTo(id);
29916              }
29917              return;
29918            }
29919            if (isTouchDeviceRef.current || document.getSelection()?.type === "Range") {
29920              return;
29921            }
29922            event.stopPropagation();
29923            if (!isSelectionCheckboxClick) {
29924              event.preventDefault();
29925            }
29926            if (!isSelectable) {
29927              return;
29928            }
29929            if (event.shiftKey) {
29930              let gesture = gestureRef.current;
29931              if (!gesture || !selectableIdSet.has(gesture.anchorId)) {
29932                gesture = {
29933                  anchorId: getClosestSelectedId({
29934                    targetId: id,
29935                    orderedIds: selectableIds,
29936                    selection
29937                  }) ?? id,
29938                  lastTargetId: null
29939                };
29940              }
29941              onChangeSelection(
29942                getRangeSelection({
29943                  anchorId: gesture.anchorId,
29944                  targetId: id,
29945                  lastTargetId: gesture.lastTargetId,
29946                  orderedIds: selectableIds,
29947                  selection
29948                })
29949              );
29950              gestureRef.current = {
29951                anchorId: gesture.anchorId,
29952                lastTargetId: id
29953              };
29954            } else {
29955              onChangeSelection(
29956                selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id]
29957              );
29958              anchorTo(id);
29959            }
29960          }
29961        };
29962      };
29963      return { getSelectionProps };
29964    }
29965  
29966    // packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs
29967    var import_components6 = __toESM(require_components(), 1);
29968    var import_i18n23 = __toESM(require_i18n(), 1);
29969    var import_element79 = __toESM(require_element(), 1);
29970    var import_jsx_runtime123 = __toESM(require_jsx_runtime(), 1);
29971    function FieldItem3({
29972      field,
29973      isVisible: isVisible2,
29974      onToggleVisibility
29975    }) {
29976      return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_components6.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [
29977        /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_components6.Icon, { icon: check_default }) }),
29978        /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("span", { className: "dataviews-view-config__label", children: field.label })
29979      ] }) });
29980    }
29981    function isDefined(item) {
29982      return !!item;
29983    }
29984    function PropertiesSection({
29985      showLabel = true
29986    }) {
29987      const { view, fields, onChangeView } = (0, import_element79.useContext)(dataviews_context_default);
29988      const regularFields = getHideableFields(view, fields);
29989      if (!regularFields?.length) {
29990        return null;
29991      }
29992      const titleField = fields.find((f2) => f2.id === view.titleField);
29993      const previewField = fields.find((f2) => f2.id === view.mediaField);
29994      const descriptionField2 = fields.find(
29995        (f2) => f2.id === view.descriptionField
29996      );
29997      const lockedFields = [
29998        {
29999          field: titleField,
30000          isVisibleFlag: "showTitle"
30001        },
30002        {
30003          field: previewField,
30004          isVisibleFlag: "showMedia"
30005        },
30006        {
30007          field: descriptionField2,
30008          isVisibleFlag: "showDescription"
30009        }
30010      ].filter(({ field }) => isDefined(field));
30011      const visibleFieldIds = view.fields ?? [];
30012      const visibleRegularFieldsCount = regularFields.filter(
30013        (f2) => visibleFieldIds.includes(f2.id)
30014      ).length;
30015      const visibleLockedFields = lockedFields.filter(
30016        ({ isVisibleFlag }) => view[isVisibleFlag] ?? true
30017      );
30018      const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount;
30019      const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1;
30020      return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [
30021        showLabel && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_components6.BaseControl.VisualLabel, { children: (0, import_i18n23.__)("Properties") }),
30022        /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
30023          Stack,
30024          {
30025            direction: "column",
30026            className: "dataviews-view-config__properties",
30027            children: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_components6.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [
30028              lockedFields.map(({ field, isVisibleFlag }) => {
30029                const isVisible2 = view[isVisibleFlag] ?? true;
30030                const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field;
30031                return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
30032                  FieldItem3,
30033                  {
30034                    field: fieldToRender,
30035                    isVisible: isVisible2,
30036                    onToggleVisibility: () => {
30037                      onChangeView({
30038                        ...view,
30039                        [isVisibleFlag]: !isVisible2
30040                      });
30041                    }
30042                  },
30043                  field.id
30044                );
30045              }),
30046              regularFields.map((field) => {
30047                const isVisible2 = visibleFieldIds.includes(field.id);
30048                const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field;
30049                return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
30050                  FieldItem3,
30051                  {
30052                    field: fieldToRender,
30053                    isVisible: isVisible2,
30054                    onToggleVisibility: () => {
30055                      onChangeView({
30056                        ...view,
30057                        fields: isVisible2 ? visibleFieldIds.filter(
30058                          (fieldId) => fieldId !== field.id
30059                        ) : [...visibleFieldIds, field.id]
30060                      });
30061                    }
30062                  },
30063                  field.id
30064                );
30065              })
30066            ] })
30067          }
30068        )
30069      ] });
30070    }
30071  
30072    // packages/dataviews/build-module/hooks/use-delayed-loading.mjs
30073    var import_element80 = __toESM(require_element(), 1);
30074    function useDelayedLoading(isLoading, options = { delay: 400 }) {
30075      const [showLoader, setShowLoader] = (0, import_element80.useState)(false);
30076      (0, import_element80.useEffect)(() => {
30077        if (!isLoading) {
30078          return;
30079        }
30080        const timeout = setTimeout(() => {
30081          setShowLoader(true);
30082        }, options.delay);
30083        return () => {
30084          clearTimeout(timeout);
30085          setShowLoader(false);
30086        };
30087      }, [isLoading, options.delay]);
30088      return showLoader;
30089    }
30090  
30091    // packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs
30092    var import_jsx_runtime124 = __toESM(require_jsx_runtime(), 1);
30093    function getEffectiveAlign(explicitAlign, fieldType) {
30094      if (explicitAlign) {
30095        return explicitAlign;
30096      }
30097      if (fieldType === "integer" || fieldType === "number") {
30098        return "end";
30099      }
30100      return void 0;
30101    }
30102    function TableColumnField({
30103      item,
30104      fields,
30105      column,
30106      align
30107    }) {
30108      const field = fields.find((f2) => f2.id === column);
30109      if (!field) {
30110        return null;
30111      }
30112      const className = clsx_default("dataviews-view-table__cell-content-wrapper", {
30113        "dataviews-view-table__cell-align-end": align === "end",
30114        "dataviews-view-table__cell-align-center": align === "center"
30115      });
30116      return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(field.render, { item, field }) });
30117    }
30118    function TableRow({
30119      hasBulkActions,
30120      item,
30121      level,
30122      actions,
30123      fields,
30124      id,
30125      view,
30126      titleField,
30127      mediaField,
30128      mediaAspectRatio,
30129      descriptionField: descriptionField2,
30130      selection,
30131      getItemId,
30132      isItemClickable: isItemClickable2,
30133      onClickItem,
30134      renderItemLink,
30135      onChangeSelection,
30136      onMouseDown,
30137      onClickCapture,
30138      isActionsColumnSticky,
30139      posinset
30140    }) {
30141      const { paginationInfo } = (0, import_element81.useContext)(dataviews_context_default);
30142      const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item);
30143      const isSelected2 = hasPossibleBulkAction && selection.includes(id);
30144      const {
30145        showTitle = true,
30146        showMedia = true,
30147        showDescription = true,
30148        infiniteScrollEnabled
30149      } = view;
30150      const columns = getTableColumns(view, fields);
30151      const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription;
30152      return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
30153        "tr",
30154        {
30155          className: clsx_default("dataviews-view-table__row", {
30156            "is-selected": hasPossibleBulkAction && isSelected2,
30157            "has-bulk-actions": hasPossibleBulkAction
30158          }),
30159          "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0,
30160          "aria-posinset": posinset,
30161          role: infiniteScrollEnabled ? "article" : void 0,
30162          onClickCapture,
30163          onMouseDown: (event) => {
30164            const isMetaClick = (0, import_keycodes2.isAppleOS)() ? event.metaKey : event.ctrlKey;
30165            if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) {
30166              event.preventDefault();
30167            }
30168            onMouseDown(event);
30169          },
30170          children: [
30171            hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30172              DataViewsSelectionCheckbox,
30173              {
30174                item,
30175                selection,
30176                onChangeSelection,
30177                getItemId,
30178                titleField,
30179                disabled: !hasPossibleBulkAction
30180              }
30181            ) }) }),
30182            hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30183              column_primary_default,
30184              {
30185                item,
30186                level,
30187                titleField: showTitle ? titleField : void 0,
30188                mediaField: showMedia ? mediaField : void 0,
30189                mediaAspectRatio,
30190                descriptionField: showDescription ? descriptionField2 : void 0,
30191                isItemClickable: isItemClickable2,
30192                onClickItem,
30193                renderItemLink
30194              }
30195            ) }),
30196            columns.map((column) => {
30197              const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
30198              const field = fields.find((f2) => f2.id === column);
30199              const effectiveAlign = getEffectiveAlign(align, field?.type);
30200              return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30201                "td",
30202                {
30203                  style: {
30204                    width,
30205                    maxWidth,
30206                    minWidth
30207                  },
30208                  children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30209                    TableColumnField,
30210                    {
30211                      fields,
30212                      item,
30213                      column,
30214                      align: effectiveAlign
30215                    }
30216                  )
30217                },
30218                column
30219              );
30220            }),
30221            !!actions?.length && // Disable reason: we are not making the element interactive,
30222            // but preventing any click events from bubbling up to the
30223            // table row. This allows us to add a click handler to the row
30224            // itself (to toggle row selection) without erroneously
30225            // intercepting click events from ItemActions.
30226            /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30227              "td",
30228              {
30229                className: clsx_default("dataviews-view-table__actions-column", {
30230                  "dataviews-view-table__actions-column--sticky": true,
30231                  "dataviews-view-table__actions-column--stuck": isActionsColumnSticky
30232                }),
30233                onClick: (e2) => e2.stopPropagation(),
30234                children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(ItemActions, { item, actions })
30235              }
30236            )
30237          ]
30238        }
30239      );
30240    }
30241    function ViewTable({
30242      actions,
30243      data,
30244      fields,
30245      getItemId,
30246      getItemLevel,
30247      isLoading = false,
30248      onChangeView,
30249      onChangeSelection,
30250      selection,
30251      setOpenedFilter,
30252      onClickItem,
30253      isItemClickable: isItemClickable2,
30254      renderItemLink,
30255      view,
30256      className,
30257      empty
30258    }) {
30259      const { containerRef } = (0, import_element81.useContext)(dataviews_context_default);
30260      const isDelayedLoading = useDelayedLoading(isLoading);
30261      const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null;
30262      const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
30263      const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
30264      const { getSelectionProps } = useSelectionProps({
30265        data: orderedData,
30266        getItemId,
30267        isItemSelectable: (item) => hasAPossibleBulkAction(actions, item),
30268        selection,
30269        onChangeSelection,
30270        selectionMode: "multi",
30271        shouldSelectOnClick: false
30272      });
30273      const headerMenuRefs = (0, import_element81.useRef)(/* @__PURE__ */ new Map());
30274      const headerMenuToFocusRef = (0, import_element81.useRef)(void 0);
30275      const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element81.useState)();
30276      const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element81.useState)(null);
30277      (0, import_element81.useEffect)(() => {
30278        if (headerMenuToFocusRef.current) {
30279          headerMenuToFocusRef.current.focus();
30280          headerMenuToFocusRef.current = void 0;
30281        }
30282      });
30283      const tableNoticeId = (0, import_element81.useId)();
30284      const { isHorizontalScrollEnd, isVerticallyScrolled } = useScrollState({
30285        scrollContainerRef: containerRef,
30286        enabledHorizontal: !!actions?.length
30287      });
30288      const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data);
30289      if (nextHeaderMenuToFocus) {
30290        headerMenuToFocusRef.current = nextHeaderMenuToFocus;
30291        setNextHeaderMenuToFocus(void 0);
30292        return;
30293      }
30294      const onHide = (field) => {
30295        const hidden = headerMenuRefs.current.get(field.id);
30296        const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0;
30297        setNextHeaderMenuToFocus(fallback?.node);
30298      };
30299      const handleHeaderContextMenu = (event) => {
30300        event.preventDefault();
30301        event.stopPropagation();
30302        const virtualAnchor = {
30303          getBoundingClientRect: () => ({
30304            x: event.clientX,
30305            y: event.clientY,
30306            top: event.clientY,
30307            left: event.clientX,
30308            right: event.clientX,
30309            bottom: event.clientY,
30310            width: 0,
30311            height: 0,
30312            toJSON: () => ({})
30313          })
30314        };
30315        window.requestAnimationFrame(() => {
30316          setContextMenuAnchor(virtualAnchor);
30317        });
30318      };
30319      const hasData = !!data?.length;
30320      const titleField = fields.find((field) => field.id === view.titleField);
30321      const mediaField = fields.find((field) => field.id === view.mediaField);
30322      const descriptionField2 = fields.find(
30323        (field) => field.id === view.descriptionField
30324      );
30325      const { showTitle = true, showMedia = true, showDescription = true } = view;
30326      const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription;
30327      const columns = getTableColumns(view, fields);
30328      const headerMenuRef = (column, index2) => (node) => {
30329        if (node) {
30330          headerMenuRefs.current.set(column, {
30331            node,
30332            fallback: columns[index2 > 0 ? index2 - 1 : 1]
30333          });
30334        } else {
30335          headerMenuRefs.current.delete(column);
30336        }
30337      };
30338      const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
30339      const isRtl = (0, import_i18n24.isRTL)();
30340      const mediaAspectRatio = view.layout?.aspectRatio && MEDIA_ASPECT_RATIOS.includes(view.layout.aspectRatio) ? view.layout.aspectRatio : void 0;
30341      const tableStyle = {
30342        "--wp-dataviews-media-aspect-ratio": mediaAspectRatio ?? "1/1"
30343      };
30344      if (!hasData) {
30345        return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30346          "div",
30347          {
30348            className: clsx_default("dataviews-no-results", {
30349              "is-refreshing": isDelayedLoading
30350            }),
30351            id: tableNoticeId,
30352            children: empty
30353          }
30354        );
30355      }
30356      return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(import_jsx_runtime124.Fragment, { children: [
30357        /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(
30358          "table",
30359          {
30360            className: clsx_default("dataviews-view-table", className, {
30361              [`has-$view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
30362                view.layout.density
30363              ),
30364              "has-bulk-actions": hasBulkActions,
30365              "is-refreshing": !isInfiniteScroll && isDelayedLoading,
30366              "has-media-aspect-ratio": !!mediaAspectRatio
30367            }),
30368            style: tableStyle,
30369            "aria-busy": isLoading,
30370            "aria-describedby": tableNoticeId,
30371            role: isInfiniteScroll ? "feed" : void 0,
30372            inert: !isInfiniteScroll && isLoading ? "true" : void 0,
30373            children: [
30374              /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("colgroup", { children: [
30375                hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("col", { className: "dataviews-view-table__col-checkbox" }),
30376                hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("col", { className: "dataviews-view-table__col-first-data" }),
30377                columns.map((column, index2) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30378                  "col",
30379                  {
30380                    className: clsx_default(
30381                      `dataviews-view-table__col-$column}`,
30382                      {
30383                        "dataviews-view-table__col-expand": !hasPrimaryColumn && index2 === columns.length - 1
30384                      }
30385                    )
30386                  },
30387                  `col-$column}`
30388                )),
30389                !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("col", { className: "dataviews-view-table__col-actions" })
30390              ] }),
30391              contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30392                import_components7.Popover,
30393                {
30394                  anchor: contextMenuAnchor,
30395                  onClose: () => setContextMenuAnchor(null),
30396                  placement: "bottom-start",
30397                  children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(PropertiesSection, { showLabel: false })
30398                }
30399              ),
30400              /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30401                "thead",
30402                {
30403                  className: clsx_default({
30404                    "dataviews-view-table__thead--stuck": isVerticallyScrolled
30405                  }),
30406                  onContextMenu: handleHeaderContextMenu,
30407                  children: /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("tr", { className: "dataviews-view-table__row", children: [
30408                    hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30409                      "th",
30410                      {
30411                        className: "dataviews-view-table__checkbox-column",
30412                        scope: "col",
30413                        onContextMenu: handleHeaderContextMenu,
30414                        children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30415                          BulkSelectionCheckbox,
30416                          {
30417                            selection,
30418                            onChangeSelection,
30419                            data,
30420                            actions,
30421                            getItemId
30422                          }
30423                        )
30424                      }
30425                    ),
30426                    hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30427                      column_header_menu_default,
30428                      {
30429                        ref: headerMenuRef(
30430                          titleField.id,
30431                          0
30432                        ),
30433                        fieldId: titleField.id,
30434                        view,
30435                        fields,
30436                        onChangeView,
30437                        onHide,
30438                        setOpenedFilter,
30439                        canMove: false,
30440                        canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false,
30441                        canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true
30442                      }
30443                    ) }),
30444                    columns.map((column, index2) => {
30445                      const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
30446                      const field = fields.find(
30447                        (f2) => f2.id === column
30448                      );
30449                      const effectiveAlign = getEffectiveAlign(
30450                        align,
30451                        field?.type
30452                      );
30453                      const canInsertOrMove = view.layout?.enableMoving ?? true;
30454                      return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30455                        "th",
30456                        {
30457                          style: {
30458                            width,
30459                            maxWidth,
30460                            minWidth,
30461                            textAlign: effectiveAlign
30462                          },
30463                          "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0,
30464                          scope: "col",
30465                          children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30466                            column_header_menu_default,
30467                            {
30468                              ref: headerMenuRef(column, index2),
30469                              fieldId: column,
30470                              view,
30471                              fields,
30472                              onChangeView,
30473                              onHide,
30474                              setOpenedFilter,
30475                              canMove: canInsertOrMove,
30476                              canInsertLeft: canInsertOrMove,
30477                              canInsertRight: canInsertOrMove
30478                            }
30479                          )
30480                        },
30481                        column
30482                      );
30483                    }),
30484                    !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30485                      "th",
30486                      {
30487                        className: clsx_default(
30488                          "dataviews-view-table__actions-column",
30489                          {
30490                            "dataviews-view-table__actions-column--sticky": true,
30491                            "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd
30492                          }
30493                        ),
30494                        children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n24.__)("Actions") })
30495                      }
30496                    )
30497                  ] })
30498                }
30499              ),
30500              hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map(
30501                ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)("tbody", { children: [
30502                  /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30503                    "td",
30504                    {
30505                      colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0),
30506                      className: "dataviews-view-table__group-header-cell",
30507                      children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n24.sprintf)(
30508                        // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
30509                        (0, import_i18n24.__)("%1$s: %2$s"),
30510                        groupField.label,
30511                        groupName
30512                      )
30513                    }
30514                  ) }),
30515                  groupItems.map((item, index2) => {
30516                    const id = getItemId(item) || index2.toString();
30517                    return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30518                      TableRow,
30519                      {
30520                        item,
30521                        level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0,
30522                        hasBulkActions,
30523                        actions,
30524                        fields,
30525                        id,
30526                        view,
30527                        titleField,
30528                        mediaField,
30529                        mediaAspectRatio,
30530                        descriptionField: descriptionField2,
30531                        selection,
30532                        getItemId,
30533                        onChangeSelection,
30534                        ...getSelectionProps(id),
30535                        onClickItem,
30536                        renderItemLink,
30537                        isItemClickable: isItemClickable2,
30538                        isActionsColumnSticky: !isHorizontalScrollEnd
30539                      },
30540                      getItemId(item)
30541                    );
30542                  })
30543                ] }, `group-$groupName}`)
30544              ) : /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("tbody", { children: hasData && data.map((item, index2) => {
30545                const id = getItemId(item) || index2.toString();
30546                return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
30547                  TableRow,
30548                  {
30549                    item,
30550                    level: view.showLevels && typeof getItemLevel === "function" ? getItemLevel(item) : void 0,
30551                    hasBulkActions,
30552                    actions,
30553                    fields,
30554                    id,
30555                    view,
30556                    titleField,
30557                    mediaField,
30558                    mediaAspectRatio,
30559                    descriptionField: descriptionField2,
30560                    selection,
30561                    getItemId,
30562                    onChangeSelection,
30563                    ...getSelectionProps(id),
30564                    onClickItem,
30565                    renderItemLink,
30566                    isItemClickable: isItemClickable2,
30567                    isActionsColumnSticky: !isHorizontalScrollEnd,
30568                    posinset: isInfiniteScroll ? index2 + 1 : void 0
30569                  },
30570                  getItemId(item)
30571                );
30572              }) })
30573            ]
30574          }
30575        ),
30576        isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_components7.Spinner, {}) }) })
30577      ] });
30578    }
30579    var table_default = ViewTable;
30580  
30581    // packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs
30582    var import_components10 = __toESM(require_components(), 1);
30583    var import_i18n27 = __toESM(require_i18n(), 1);
30584  
30585    // packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs
30586    var import_components9 = __toESM(require_components(), 1);
30587    var import_i18n26 = __toESM(require_i18n(), 1);
30588    var import_compose7 = __toESM(require_compose(), 1);
30589    var import_element85 = __toESM(require_element(), 1);
30590  
30591    // packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs
30592    var import_components8 = __toESM(require_components(), 1);
30593    var import_i18n25 = __toESM(require_i18n(), 1);
30594    var import_element82 = __toESM(require_element(), 1);
30595    var import_jsx_runtime125 = __toESM(require_jsx_runtime(), 1);
30596    var imageSizes = [
30597      {
30598        value: 120,
30599        breakpoint: 1
30600      },
30601      {
30602        value: 170,
30603        breakpoint: 1
30604      },
30605      {
30606        value: 230,
30607        breakpoint: 1
30608      },
30609      {
30610        value: 290,
30611        breakpoint: 1112
30612        // at minimum image width, 4 images display at this container size
30613      },
30614      {
30615        value: 350,
30616        breakpoint: 1636
30617        // at minimum image width, 6 images display at this container size
30618      },
30619      {
30620        value: 430,
30621        breakpoint: 588
30622        // at minimum image width, 2 images display at this container size
30623      }
30624    ];
30625    var DEFAULT_PREVIEW_SIZE = imageSizes[2].value;
30626    function useGridColumns() {
30627      const context = (0, import_element82.useContext)(dataviews_context_default);
30628      const view = context.view;
30629      return (0, import_element82.useMemo)(() => {
30630        const containerWidth = context.containerWidth;
30631        const gap = 32;
30632        const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE;
30633        const columns = Math.floor(
30634          (containerWidth + gap) / (previewSize + gap)
30635        );
30636        return Math.max(1, columns);
30637      }, [context.containerWidth, view.layout?.previewSize]);
30638    }
30639  
30640    // packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs
30641    var import_element83 = __toESM(require_element(), 1);
30642    var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1);
30643    var GridItems = (0, import_element83.forwardRef)(({ className, previewSize, style, ...props }, ref) => {
30644      return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
30645        "div",
30646        {
30647          ref,
30648          className: clsx_default("dataviews-view-grid-items", className),
30649          style: {
30650            gridTemplateColumns: previewSize && `repeat(auto-fill, minmax($previewSize}px, 1fr))`,
30651            ...style
30652          },
30653          ...props
30654        }
30655      );
30656    });
30657  
30658    // packages/dataviews/build-module/components/dataviews-layouts/utils/use-infinite-scroll.mjs
30659    var import_element84 = __toESM(require_element(), 1);
30660    function useIntersectionObserver(elementRef, posinset) {
30661      const { intersectionObserver } = (0, import_element84.useContext)(dataviews_context_default);
30662      (0, import_element84.useEffect)(() => {
30663        const element = elementRef.current;
30664        if (!element || posinset === void 0 || !intersectionObserver) {
30665          return;
30666        }
30667        intersectionObserver.observe(element);
30668        return () => {
30669          intersectionObserver.unobserve(element);
30670        };
30671      }, [elementRef, intersectionObserver, posinset]);
30672    }
30673    function usePlaceholdersNeeded(data, isInfiniteScroll, gridColumns) {
30674      const hasData = !!data?.length;
30675      const firstItemPosition = hasData && isInfiniteScroll ? data[0].position : void 0;
30676      return firstItemPosition && gridColumns ? (firstItemPosition - 1) % gridColumns : 0;
30677    }
30678  
30679    // packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs
30680    var import_jsx_runtime127 = __toESM(require_jsx_runtime(), 1);
30681    function chunk(array, size4) {
30682      const chunks = [];
30683      for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size4) {
30684        chunks.push(array.slice(i2, i2 + size4));
30685      }
30686      return chunks;
30687    }
30688    var GridItem = (0, import_element85.forwardRef)(
30689      function GridItem2({
30690        view,
30691        selection,
30692        onChangeSelection,
30693        onClickItem,
30694        isItemClickable: isItemClickable2,
30695        renderItemLink,
30696        getItemId,
30697        item,
30698        actions,
30699        mediaField,
30700        titleField,
30701        descriptionField: descriptionField2,
30702        regularFields,
30703        badgeFields,
30704        hasBulkActions,
30705        config,
30706        posinset,
30707        setsize,
30708        ...props
30709      }, forwardedRef) {
30710        const {
30711          showTitle = true,
30712          showMedia = true,
30713          showDescription = true
30714        } = view;
30715        const hasBulkAction = useHasAPossibleBulkAction(actions, item);
30716        const id = getItemId(item);
30717        const elementRef = (0, import_element85.useRef)(null);
30718        const setRefs = (0, import_element85.useCallback)(
30719          (node) => {
30720            elementRef.current = node;
30721            if (typeof forwardedRef === "function") {
30722              forwardedRef(node);
30723            } else if (forwardedRef) {
30724              forwardedRef.current = node;
30725            }
30726          },
30727          [forwardedRef]
30728        );
30729        useIntersectionObserver(elementRef, posinset);
30730        const instanceId = (0, import_compose7.useInstanceId)(GridItem2);
30731        const isSelected2 = selection.includes(id);
30732        const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { className: "dataviews-view-grid__media-placeholder" });
30733        const rendersMediaField = showMedia && mediaField?.render;
30734        const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30735          mediaField.render,
30736          {
30737            item,
30738            field: mediaField,
30739            config
30740          }
30741        ) : mediaPlaceholder;
30742        const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(titleField.render, { item, field: titleField }) : null;
30743        let mediaA11yProps;
30744        let titleA11yProps;
30745        if (isItemClickable2(item) && onClickItem) {
30746          if (renderedTitleField) {
30747            mediaA11yProps = {
30748              "aria-labelledby": `dataviews-view-grid__title-field-$instanceId}`
30749            };
30750            titleA11yProps = {
30751              id: `dataviews-view-grid__title-field-$instanceId}`
30752            };
30753          } else {
30754            mediaA11yProps = {
30755              "aria-label": (0, import_i18n26.__)("Navigate to item")
30756            };
30757          }
30758        }
30759        return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
30760          Stack,
30761          {
30762            direction: "column",
30763            ...props,
30764            ref: setRefs,
30765            "aria-setsize": setsize,
30766            "aria-posinset": posinset,
30767            className: clsx_default(
30768              props.className,
30769              "dataviews-view-grid__row__gridcell",
30770              "dataviews-view-grid__card",
30771              {
30772                "is-selected": hasBulkAction && isSelected2
30773              }
30774            ),
30775            children: [
30776              /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30777                ItemClickWrapper,
30778                {
30779                  item,
30780                  isItemClickable: isItemClickable2,
30781                  onClickItem,
30782                  renderItemLink,
30783                  className: clsx_default("dataviews-view-grid__media", {
30784                    "dataviews-view-grid__media--placeholder": !rendersMediaField
30785                  }),
30786                  ...mediaA11yProps,
30787                  children: renderedMediaField
30788                }
30789              ),
30790              hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30791                DataViewsSelectionCheckbox,
30792                {
30793                  item,
30794                  selection,
30795                  onChangeSelection,
30796                  getItemId,
30797                  titleField,
30798                  disabled: !hasBulkAction
30799                }
30800              ),
30801              !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30802                ItemActions,
30803                {
30804                  item,
30805                  actions,
30806                  isCompact: true
30807                }
30808              ) }),
30809              showTitle && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("div", { className: "dataviews-view-grid__title-actions", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30810                ItemClickWrapper,
30811                {
30812                  item,
30813                  isItemClickable: isItemClickable2,
30814                  onClickItem,
30815                  renderItemLink,
30816                  className: "dataviews-view-grid__title-field dataviews-title-field",
30817                  ...titleA11yProps,
30818                  title: titleField?.getValueFormatted({
30819                    item,
30820                    field: titleField
30821                  }) || void 0,
30822                  children: renderedTitleField
30823                }
30824              ) }),
30825              /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Stack, { direction: "column", gap: "xs", children: [
30826                showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30827                  descriptionField2.render,
30828                  {
30829                    item,
30830                    field: descriptionField2
30831                  }
30832                ),
30833                !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30834                  Stack,
30835                  {
30836                    direction: "row",
30837                    className: "dataviews-view-grid__badge-fields",
30838                    gap: "sm",
30839                    wrap: "wrap",
30840                    align: "top",
30841                    justify: "flex-start",
30842                    children: badgeFields.map((field) => {
30843                      return (
30844                        /* @ts-expect-error `Badge` is text-only, but a badge field renders whatever its `render` returns. */
30845                        /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30846                          Badge,
30847                          {
30848                            className: "dataviews-view-grid__field-value",
30849                            children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30850                              field.render,
30851                              {
30852                                item,
30853                                field
30854                              }
30855                            )
30856                          },
30857                          field.id
30858                        )
30859                      );
30860                    })
30861                  }
30862                ),
30863                !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30864                  Stack,
30865                  {
30866                    direction: "column",
30867                    className: "dataviews-view-grid__fields",
30868                    gap: "xs",
30869                    children: regularFields.map((field) => {
30870                      return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30871                        import_components9.Flex,
30872                        {
30873                          className: "dataviews-view-grid__field",
30874                          gap: 1,
30875                          justify: "flex-start",
30876                          expanded: true,
30877                          style: { height: "auto" },
30878                          direction: "row",
30879                          children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
30880                            /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(tooltip_exports.Root, { children: [
30881                              /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30882                                tooltip_exports.Trigger,
30883                                {
30884                                  render: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_components9.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header })
30885                                }
30886                              ),
30887                              /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(tooltip_exports.Popup, { children: field.label })
30888                            ] }),
30889                            /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30890                              import_components9.FlexItem,
30891                              {
30892                                className: "dataviews-view-grid__field-value",
30893                                style: { maxHeight: "none" },
30894                                children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30895                                  field.render,
30896                                  {
30897                                    item,
30898                                    field
30899                                  }
30900                                )
30901                              }
30902                            )
30903                          ] })
30904                        },
30905                        field.id
30906                      );
30907                    })
30908                  }
30909                )
30910              ] })
30911            ]
30912          }
30913        );
30914      }
30915    );
30916    function CompositeGrid({
30917      data,
30918      isInfiniteScroll,
30919      className,
30920      inert,
30921      isLoading,
30922      view,
30923      fields,
30924      selection,
30925      onChangeSelection,
30926      onClickItem,
30927      isItemClickable: isItemClickable2,
30928      renderItemLink,
30929      getItemId,
30930      actions,
30931      getSelectionProps
30932    }) {
30933      const { paginationInfo, resizeObserverRef } = (0, import_element85.useContext)(dataviews_context_default);
30934      const gridColumns = useGridColumns();
30935      const gridStyle = {
30936        "--wp-dataviews-media-aspect-ratio": view.layout?.aspectRatio && MEDIA_ASPECT_RATIOS.includes(view.layout.aspectRatio) ? view.layout.aspectRatio : "1/1"
30937      };
30938      const isMediaContain = view.layout?.mediaFit === "contain";
30939      const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data);
30940      const titleField = fields.find(
30941        (field) => field.id === view?.titleField
30942      );
30943      const mediaField = fields.find(
30944        (field) => field.id === view?.mediaField
30945      );
30946      const descriptionField2 = fields.find(
30947        (field) => field.id === view?.descriptionField
30948      );
30949      const otherFields = view.fields ?? [];
30950      const { regularFields, badgeFields } = otherFields.reduce(
30951        (accumulator, fieldId) => {
30952          const field = fields.find((f2) => f2.id === fieldId);
30953          if (!field) {
30954            return accumulator;
30955          }
30956          const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields";
30957          accumulator[key].push(field);
30958          return accumulator;
30959        },
30960        { regularFields: [], badgeFields: [] }
30961      );
30962      const size4 = "900px";
30963      const totalRows = Math.ceil(data.length / gridColumns);
30964      const placeholdersNeeded = usePlaceholdersNeeded(
30965        data,
30966        isInfiniteScroll,
30967        gridColumns
30968      );
30969      return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, {
30970        // Render infinite scroll layout (no rows, feed semantics)
30971        children: [
30972          isInfiniteScroll && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
30973            import_components9.Composite,
30974            {
30975              render: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
30976                GridItems,
30977                {
30978                  className: clsx_default(
30979                    "dataviews-view-grid-infinite-scroll",
30980                    className,
30981                    {
30982                      [`has-$view.layout?.density}-density`]: view.layout?.density && [
30983                        "compact",
30984                        "comfortable"
30985                      ].includes(view.layout.density),
30986                      "has-media-fit-contain": isMediaContain
30987                    }
30988                  ),
30989                  previewSize: view.layout?.previewSize,
30990                  style: gridStyle,
30991                  "aria-busy": isLoading,
30992                  ref: resizeObserverRef
30993                }
30994              ),
30995              role: "feed",
30996              focusWrap: true,
30997              inert,
30998              children: [
30999                Array.from({ length: placeholdersNeeded }).map(
31000                  (_, index2) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31001                    import_components9.Composite.Item,
31002                    {
31003                      render: (props) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31004                        Stack,
31005                        {
31006                          ...props,
31007                          direction: "column",
31008                          role: "article",
31009                          className: "dataviews-view-grid__row__gridcell dataviews-view-grid__card dataviews-view-grid__placeholder"
31010                        }
31011                      ),
31012                      "aria-hidden": true,
31013                      tabIndex: -1
31014                    },
31015                    `placeholder-$index2}`
31016                  )
31017                ),
31018                data.map((item) => {
31019                  const itemId = getItemId(item);
31020                  const selectionProps = getSelectionProps(itemId);
31021                  const stablePosition = item.position;
31022                  return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31023                    import_components9.Composite.Item,
31024                    {
31025                      render: (props) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31026                        GridItem,
31027                        {
31028                          ...props,
31029                          id: itemId,
31030                          role: "article",
31031                          view,
31032                          selection,
31033                          onChangeSelection,
31034                          onClickItem,
31035                          isItemClickable: isItemClickable2,
31036                          renderItemLink,
31037                          getItemId,
31038                          item,
31039                          actions,
31040                          onMouseDown: (event) => {
31041                            props.onMouseDown?.(event);
31042                            selectionProps.onMouseDown(
31043                              event
31044                            );
31045                          },
31046                          onClickCapture: (event) => {
31047                            props.onClickCapture?.(event);
31048                            selectionProps.onClickCapture(
31049                              event
31050                            );
31051                          },
31052                          mediaField,
31053                          titleField,
31054                          descriptionField: descriptionField2,
31055                          regularFields,
31056                          badgeFields,
31057                          hasBulkActions,
31058                          posinset: stablePosition,
31059                          setsize: paginationInfo.totalItems,
31060                          config: {
31061                            sizes: size4
31062                          }
31063                        }
31064                      )
31065                    },
31066                    itemId
31067                  );
31068                })
31069              ]
31070            }
31071          ),
31072          // Render standard grid layout (with rows, grid semantics)
31073          !isInfiniteScroll && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31074            import_components9.Composite,
31075            {
31076              role: "grid",
31077              style: gridStyle,
31078              className: clsx_default("dataviews-view-grid", className, {
31079                [`has-$view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
31080                  view.layout.density
31081                ),
31082                "has-media-fit-contain": isMediaContain
31083              }),
31084              focusWrap: true,
31085              "aria-busy": isLoading,
31086              "aria-rowcount": totalRows,
31087              ref: resizeObserverRef,
31088              inert,
31089              children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31090                import_components9.Composite.Row,
31091                {
31092                  render: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31093                    "div",
31094                    {
31095                      role: "row",
31096                      "aria-rowindex": i2 + 1,
31097                      "aria-label": (0, import_i18n26.sprintf)(
31098                        /* translators: %d: The row number in the grid */
31099                        (0, import_i18n26.__)("Row %d"),
31100                        i2 + 1
31101                      ),
31102                      className: "dataviews-view-grid__row",
31103                      style: {
31104                        gridTemplateColumns: `repeat( $gridColumns}, minmax(0, 1fr) )`
31105                      }
31106                    }
31107                  ),
31108                  children: row.map((item) => {
31109                    const itemId = getItemId(item);
31110                    const selectionProps = getSelectionProps(itemId);
31111                    return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31112                      import_components9.Composite.Item,
31113                      {
31114                        render: (props) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
31115                          GridItem,
31116                          {
31117                            ...props,
31118                            id: itemId,
31119                            role: "gridcell",
31120                            view,
31121                            selection,
31122                            onChangeSelection,
31123                            onClickItem,
31124                            isItemClickable: isItemClickable2,
31125                            renderItemLink,
31126                            getItemId,
31127                            item,
31128                            actions,
31129                            onMouseDown: (event) => {
31130                              props.onMouseDown?.(
31131                                event
31132                              );
31133                              selectionProps.onMouseDown(
31134                                event
31135                              );
31136                            },
31137                            onClickCapture: (event) => {
31138                              props.onClickCapture?.(
31139                                event
31140                              );
31141                              selectionProps.onClickCapture(
31142                                event
31143                              );
31144                            },
31145                            mediaField,
31146                            titleField,
31147                            descriptionField: descriptionField2,
31148                            regularFields,
31149                            badgeFields,
31150                            hasBulkActions,
31151                            config: {
31152                              sizes: size4
31153                            }
31154                          }
31155                        )
31156                      },
31157                      itemId
31158                    );
31159                  })
31160                },
31161                i2
31162              ))
31163            }
31164          )
31165        ]
31166      });
31167    }
31168  
31169    // packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs
31170    var import_jsx_runtime128 = __toESM(require_jsx_runtime(), 1);
31171    function ViewGrid({
31172      actions,
31173      data,
31174      fields,
31175      getItemId,
31176      isLoading,
31177      onChangeSelection,
31178      onClickItem,
31179      isItemClickable: isItemClickable2,
31180      renderItemLink,
31181      selection,
31182      view,
31183      className,
31184      empty
31185    }) {
31186      const isDelayedLoading = useDelayedLoading(!!isLoading);
31187      const hasData = !!data?.length;
31188      const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null;
31189      const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
31190      const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
31191      const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
31192      const { getSelectionProps } = useSelectionProps({
31193        data: orderedData,
31194        getItemId,
31195        isItemSelectable: (item) => hasAPossibleBulkAction(actions, item),
31196        selection,
31197        onChangeSelection,
31198        selectionMode: "multi",
31199        shouldSelectOnClick: false
31200      });
31201      if (!hasData) {
31202        return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
31203          "div",
31204          {
31205            className: clsx_default("dataviews-no-results", {
31206              "is-refreshing": isDelayedLoading
31207            }),
31208            children: empty
31209          }
31210        );
31211      }
31212      const gridProps = {
31213        className: clsx_default(className, {
31214          "is-refreshing": !isInfiniteScroll && isDelayedLoading
31215        }),
31216        inert: !isInfiniteScroll && !!isLoading ? "true" : void 0,
31217        isLoading,
31218        view,
31219        fields,
31220        selection,
31221        onChangeSelection,
31222        onClickItem,
31223        isItemClickable: isItemClickable2,
31224        renderItemLink,
31225        getItemId,
31226        actions,
31227        getSelectionProps
31228      };
31229      return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, {
31230        // Render multiple groups.
31231        children: [
31232          hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map(
31233            ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
31234              Stack,
31235              {
31236                direction: "column",
31237                gap: "sm",
31238                children: [
31239                  /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n27.sprintf)(
31240                    // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
31241                    (0, import_i18n27.__)("%1$s: %2$s"),
31242                    groupField.label,
31243                    groupName
31244                  ) }),
31245                  /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
31246                    CompositeGrid,
31247                    {
31248                      ...gridProps,
31249                      data: groupItems,
31250                      isInfiniteScroll: false
31251                    }
31252                  )
31253                ]
31254              },
31255              groupName
31256            )
31257          ) }),
31258          // Render a single grid with all data.
31259          !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
31260            CompositeGrid,
31261            {
31262              ...gridProps,
31263              data,
31264              isInfiniteScroll: !!isInfiniteScroll
31265            }
31266          ),
31267          isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_components10.Spinner, {}) })
31268        ]
31269      });
31270    }
31271    var grid_default = ViewGrid;
31272  
31273    // packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs
31274    var import_compose8 = __toESM(require_compose(), 1);
31275    var import_components11 = __toESM(require_components(), 1);
31276    var import_element86 = __toESM(require_element(), 1);
31277    var import_i18n28 = __toESM(require_i18n(), 1);
31278    var import_data4 = __toESM(require_data(), 1);
31279    var import_jsx_runtime129 = __toESM(require_jsx_runtime(), 1);
31280    function generateItemWrapperCompositeId(idPrefix) {
31281      return `$idPrefix}-item-wrapper`;
31282    }
31283    function generatePrimaryActionCompositeId(idPrefix, primaryActionId) {
31284      return `$idPrefix}-primary-action-$primaryActionId}`;
31285    }
31286    function generateDropdownTriggerCompositeId(idPrefix) {
31287      return `$idPrefix}-dropdown`;
31288    }
31289    function PrimaryActionGridCell({
31290      idPrefix,
31291      primaryAction,
31292      item
31293    }) {
31294      const registry = (0, import_data4.useRegistry)();
31295      const [isModalOpen, setIsModalOpen] = (0, import_element86.useState)(false);
31296      const compositeItemId = generatePrimaryActionCompositeId(
31297        idPrefix,
31298        primaryAction.id
31299      );
31300      const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]);
31301      return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31302        import_components11.Composite.Item,
31303        {
31304          id: compositeItemId,
31305          render: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31306            import_components11.Button,
31307            {
31308              disabled: !!primaryAction.disabled,
31309              accessibleWhenDisabled: true,
31310              text: label,
31311              size: "small",
31312              onClick: () => setIsModalOpen(true)
31313            }
31314          ),
31315          children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31316            ActionModal,
31317            {
31318              action: primaryAction,
31319              items: [item],
31320              closeModal: () => setIsModalOpen(false)
31321            }
31322          )
31323        }
31324      ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31325        import_components11.Composite.Item,
31326        {
31327          id: compositeItemId,
31328          render: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31329            import_components11.Button,
31330            {
31331              disabled: !!primaryAction.disabled,
31332              accessibleWhenDisabled: true,
31333              size: "small",
31334              onClick: () => {
31335                primaryAction.callback([item], { registry });
31336              },
31337              children: label
31338            }
31339          )
31340        }
31341      ) }, primaryAction.id);
31342    }
31343    function ListItem({
31344      view,
31345      actions,
31346      idPrefix,
31347      isSelected: isSelected2,
31348      item,
31349      titleField,
31350      mediaField,
31351      descriptionField: descriptionField2,
31352      selectionProps,
31353      otherFields,
31354      onDropdownTriggerKeyDown,
31355      posinset
31356    }) {
31357      const {
31358        showTitle = true,
31359        showMedia = true,
31360        showDescription = true,
31361        infiniteScrollEnabled
31362      } = view;
31363      const itemRef = (0, import_element86.useRef)(null);
31364      const labelId = `$idPrefix}-label`;
31365      const descriptionId = `$idPrefix}-description`;
31366      const registry = (0, import_data4.useRegistry)();
31367      const [isHovered, setIsHovered] = (0, import_element86.useState)(false);
31368      const [activeModalAction, setActiveModalAction] = (0, import_element86.useState)(
31369        null
31370      );
31371      const handleHover = ({ type }) => {
31372        const isHover = type === "mouseenter";
31373        setIsHovered(isHover);
31374      };
31375      const { paginationInfo } = (0, import_element86.useContext)(dataviews_context_default);
31376      (0, import_element86.useEffect)(() => {
31377        if (isSelected2) {
31378          itemRef.current?.scrollIntoView({
31379            behavior: "auto",
31380            block: "nearest",
31381            inline: "nearest"
31382          });
31383        }
31384      }, [isSelected2]);
31385      const { primaryAction, eligibleActions } = (0, import_element86.useMemo)(() => {
31386        const _eligibleActions = actions.filter(
31387          (action) => !action.isEligible || action.isEligible(item)
31388        );
31389        const _primaryActions = _eligibleActions.filter(
31390          (action) => action.isPrimary
31391        );
31392        return {
31393          primaryAction: _primaryActions[0],
31394          eligibleActions: _eligibleActions
31395        };
31396      }, [actions, item]);
31397      const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;
31398      const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31399        mediaField.render,
31400        {
31401          item,
31402          field: mediaField,
31403          config: { sizes: "52px" }
31404        }
31405      ) }) : null;
31406      const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(titleField.render, { item, field: titleField }) : null;
31407      const renderDescription = showDescription && descriptionField2?.render;
31408      const hasOnlyMediaAndTitle = !!renderedMediaField && !renderDescription && !otherFields.length;
31409      const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
31410        Stack,
31411        {
31412          direction: "row",
31413          gap: "md",
31414          className: "dataviews-view-list__item-actions",
31415          children: [
31416            primaryAction && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31417              PrimaryActionGridCell,
31418              {
31419                idPrefix,
31420                primaryAction,
31421                item
31422              }
31423            ),
31424            !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)("div", { role: "gridcell", children: [
31425              /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(menu_exports.Root, { disabled: !actions.length, children: [
31426                /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31427                  menu_exports.Trigger,
31428                  {
31429                    render: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31430                      import_components11.Composite.Item,
31431                      {
31432                        id: generateDropdownTriggerCompositeId(
31433                          idPrefix
31434                        ),
31435                        accessibleWhenDisabled: true,
31436                        render: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31437                          import_components11.Button,
31438                          {
31439                            size: "small",
31440                            icon: more_vertical_default,
31441                            label: (0, import_i18n28.__)("Actions"),
31442                            accessibleWhenDisabled: true,
31443                            disabled: !actions.length,
31444                            onKeyDownCapture: onDropdownTriggerKeyDown
31445                          }
31446                        )
31447                      }
31448                    )
31449                  }
31450                ),
31451                /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31452                  menu_exports.Popup,
31453                  {
31454                    positioner: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(menu_exports.Positioner, { align: "end" }),
31455                    children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31456                      ActionsMenuGroup,
31457                      {
31458                        actions: eligibleActions,
31459                        item,
31460                        registry,
31461                        setActiveModalAction
31462                      }
31463                    )
31464                  }
31465                )
31466              ] }),
31467              !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31468                ActionModal,
31469                {
31470                  action: activeModalAction,
31471                  items: [item],
31472                  closeModal: () => setActiveModalAction(null)
31473                }
31474              )
31475            ] })
31476          ]
31477        }
31478      );
31479      return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31480        import_components11.Composite.Row,
31481        {
31482          ref: itemRef,
31483          render: (
31484            /* aria-posinset breaks Composite.Row if passed to it directly. */
31485            /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31486              "div",
31487              {
31488                "aria-posinset": posinset,
31489                "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0
31490              }
31491            )
31492          ),
31493          role: infiniteScrollEnabled ? "article" : "row",
31494          className: clsx_default({
31495            "is-selected": isSelected2,
31496            "is-hovered": isHovered
31497          }),
31498          onMouseEnter: handleHover,
31499          onMouseLeave: handleHover,
31500          children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
31501            Stack,
31502            {
31503              direction: "row",
31504              className: "dataviews-view-list__item-wrapper",
31505              children: [
31506                /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31507                  import_components11.Composite.Item,
31508                  {
31509                    id: generateItemWrapperCompositeId(idPrefix),
31510                    "aria-pressed": isSelected2,
31511                    "aria-labelledby": labelId,
31512                    "aria-describedby": descriptionId,
31513                    className: "dataviews-view-list__item",
31514                    ...selectionProps
31515                  }
31516                ) }),
31517                /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
31518                  Stack,
31519                  {
31520                    direction: "row",
31521                    gap: "md",
31522                    justify: "start",
31523                    align: hasOnlyMediaAndTitle ? "center" : "flex-start",
31524                    style: { flex: 1, minWidth: 0 },
31525                    children: [
31526                      renderedMediaField,
31527                      /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
31528                        Stack,
31529                        {
31530                          direction: "column",
31531                          gap: "xs",
31532                          className: "dataviews-view-list__field-wrapper",
31533                          children: [
31534                            /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(Stack, { direction: "row", align: "center", children: [
31535                              /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31536                                "div",
31537                                {
31538                                  className: "dataviews-title-field dataviews-view-list__title-field",
31539                                  id: labelId,
31540                                  children: renderedTitleField
31541                                }
31542                              ),
31543                              usedActions
31544                            ] }),
31545                            renderDescription && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31546                              descriptionField2.render,
31547                              {
31548                                item,
31549                                field: descriptionField2
31550                              }
31551                            ) }),
31552                            /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31553                              "div",
31554                              {
31555                                className: "dataviews-view-list__fields",
31556                                id: descriptionId,
31557                                children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
31558                                  "div",
31559                                  {
31560                                    className: "dataviews-view-list__field",
31561                                    children: [
31562                                      /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31563                                        VisuallyHidden,
31564                                        {
31565                                          className: "dataviews-view-list__field-label",
31566                                          render: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", {}),
31567                                          children: field.label
31568                                        }
31569                                      ),
31570                                      /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31571                                        field.render,
31572                                        {
31573                                          item,
31574                                          field
31575                                        }
31576                                      ) })
31577                                    ]
31578                                  },
31579                                  field.id
31580                                ))
31581                              }
31582                            )
31583                          ]
31584                        }
31585                      )
31586                    ]
31587                  }
31588                )
31589              ]
31590            }
31591          )
31592        }
31593      );
31594    }
31595    function isDefined2(item) {
31596      return !!item;
31597    }
31598    function ViewList(props) {
31599      const {
31600        actions,
31601        data,
31602        fields,
31603        getItemId,
31604        isLoading,
31605        onChangeSelection,
31606        selection,
31607        view,
31608        className,
31609        empty
31610      } = props;
31611      const baseId = (0, import_compose8.useInstanceId)(ViewList, "view-list");
31612      const isDelayedLoading = useDelayedLoading(!!isLoading);
31613      const { paginationInfo } = (0, import_element86.useContext)(dataviews_context_default);
31614      const selectedItem = data?.findLast(
31615        (item) => selection.includes(getItemId(item))
31616      );
31617      const titleField = fields.find((field) => field.id === view.titleField);
31618      const mediaField = fields.find((field) => field.id === view.mediaField);
31619      const descriptionField2 = fields.find(
31620        (field) => field.id === view.descriptionField
31621      );
31622      const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2);
31623      const { getSelectionProps } = useSelectionProps({
31624        data,
31625        getItemId,
31626        isItemSelectable: () => true,
31627        selection,
31628        onChangeSelection,
31629        selectionMode: "single-required",
31630        shouldSelectOnClick: true
31631      });
31632      const generateCompositeItemIdPrefix = (0, import_element86.useCallback)(
31633        (item) => `$baseId}-$getItemId(item)}`,
31634        [baseId, getItemId]
31635      );
31636      const isActiveCompositeItem = (0, import_element86.useCallback)(
31637        (item, idToCheck) => {
31638          return idToCheck.startsWith(
31639            generateCompositeItemIdPrefix(item)
31640          );
31641        },
31642        [generateCompositeItemIdPrefix]
31643      );
31644      const [activeCompositeId, setActiveCompositeId] = (0, import_element86.useState)(void 0);
31645      const compositeRef = (0, import_element86.useRef)(null);
31646      (0, import_element86.useEffect)(() => {
31647        if (selectedItem) {
31648          setActiveCompositeId(
31649            generateItemWrapperCompositeId(
31650              generateCompositeItemIdPrefix(selectedItem)
31651            )
31652          );
31653        }
31654      }, [selectedItem, generateCompositeItemIdPrefix]);
31655      const activeItemIndex = data.findIndex(
31656        (item) => isActiveCompositeItem(item, activeCompositeId ?? "")
31657      );
31658      const previousActiveItemIndex = (0, import_compose8.usePrevious)(activeItemIndex);
31659      const isActiveIdInList = activeItemIndex !== -1;
31660      const selectCompositeItem = (0, import_element86.useCallback)(
31661        (targetIndex, generateCompositeId) => {
31662          const clampedIndex = Math.min(
31663            data.length - 1,
31664            Math.max(0, targetIndex)
31665          );
31666          if (!data[clampedIndex]) {
31667            return;
31668          }
31669          const itemIdPrefix = generateCompositeItemIdPrefix(
31670            data[clampedIndex]
31671          );
31672          const targetCompositeItemId = generateCompositeId(itemIdPrefix);
31673          setActiveCompositeId(targetCompositeItemId);
31674          if (compositeRef.current?.contains(
31675            compositeRef.current.ownerDocument.activeElement
31676          )) {
31677            document.getElementById(targetCompositeItemId)?.focus();
31678          }
31679        },
31680        [data, generateCompositeItemIdPrefix]
31681      );
31682      (0, import_element86.useEffect)(() => {
31683        const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1;
31684        if (!isActiveIdInList && wasActiveIdInList) {
31685          selectCompositeItem(
31686            previousActiveItemIndex,
31687            generateItemWrapperCompositeId
31688          );
31689        }
31690      }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]);
31691      const onDropdownTriggerKeyDown = (0, import_element86.useCallback)(
31692        (event) => {
31693          if (event.key === "ArrowDown") {
31694            event.preventDefault();
31695            event.stopPropagation();
31696            selectCompositeItem(
31697              activeItemIndex + 1,
31698              generateDropdownTriggerCompositeId
31699            );
31700          }
31701          if (event.key === "ArrowUp") {
31702            event.preventDefault();
31703            event.stopPropagation();
31704            selectCompositeItem(
31705              activeItemIndex - 1,
31706              generateDropdownTriggerCompositeId
31707            );
31708          }
31709        },
31710        [selectCompositeItem, activeItemIndex]
31711      );
31712      const hasData = !!data?.length;
31713      const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null;
31714      const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null;
31715      const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
31716      const hasMoreItems = isInfiniteScroll && (view.startPosition ?? 1) + (view.perPage ?? 0) < paginationInfo.totalItems;
31717      const listClassName = clsx_default("dataviews-view-list", className, {
31718        [`has-$view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(view.layout.density),
31719        "is-refreshing": !isInfiniteScroll && isDelayedLoading
31720      });
31721      const compositeProps = {
31722        ref: compositeRef,
31723        id: baseId,
31724        render: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", {}),
31725        activeId: activeCompositeId,
31726        setActiveId: setActiveCompositeId,
31727        inert: !isInfiniteScroll && !!isLoading ? "true" : void 0
31728      };
31729      if (!hasData) {
31730        return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31731          "div",
31732          {
31733            className: clsx_default("dataviews-no-results", {
31734              "is-refreshing": isDelayedLoading
31735            }),
31736            children: empty
31737          }
31738        );
31739      }
31740      if (hasData && groupField && dataByGroup) {
31741        return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31742          import_components11.Composite,
31743          {
31744            ...compositeProps,
31745            className: "dataviews-view-list__group",
31746            role: "grid",
31747            children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(Stack, { direction: "column", gap: "lg", className: listClassName, children: Array.from(dataByGroup.entries()).map(
31748              ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(Stack, { direction: "column", children: [
31749                /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n28.sprintf)(
31750                  // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
31751                  (0, import_i18n28.__)("%1$s: %2$s"),
31752                  groupField.label,
31753                  groupName
31754                ) }),
31755                groupItems.map((item) => {
31756                  const id = generateCompositeItemIdPrefix(item);
31757                  return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31758                    ListItem,
31759                    {
31760                      view,
31761                      idPrefix: id,
31762                      actions,
31763                      item,
31764                      isSelected: item === selectedItem,
31765                      selectionProps: getSelectionProps(
31766                        getItemId(item)
31767                      ),
31768                      mediaField,
31769                      titleField,
31770                      descriptionField: descriptionField2,
31771                      otherFields,
31772                      onDropdownTriggerKeyDown
31773                    },
31774                    id
31775                  );
31776                })
31777              ] }, groupName)
31778            ) })
31779          }
31780        );
31781      }
31782      return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_jsx_runtime129.Fragment, { children: [
31783        /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31784          import_components11.Composite,
31785          {
31786            ...compositeProps,
31787            className: listClassName,
31788            role: view.infiniteScrollEnabled ? "feed" : "grid",
31789            children: data.map((item, index2) => {
31790              const id = generateCompositeItemIdPrefix(item);
31791              return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31792                ListItem,
31793                {
31794                  view,
31795                  idPrefix: id,
31796                  actions,
31797                  item,
31798                  isSelected: item === selectedItem,
31799                  selectionProps: getSelectionProps(
31800                    getItemId(item)
31801                  ),
31802                  mediaField,
31803                  titleField,
31804                  descriptionField: descriptionField2,
31805                  otherFields,
31806                  onDropdownTriggerKeyDown,
31807                  posinset: view.infiniteScrollEnabled ? index2 + 1 : void 0
31808                },
31809                id
31810              );
31811            })
31812          }
31813        ),
31814        (hasMoreItems || isInfiniteScroll && isLoading) && // Keep the spinner's height reserved while loading more so the
31815        // scroll position doesn't bounce. Hidden, and silent to a11y,
31816        // while idle.
31817        /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
31818          "p",
31819          {
31820            className: "dataviews-loading-more",
31821            "aria-hidden": !isLoading,
31822            children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_components11.Spinner, {})
31823          }
31824        )
31825      ] });
31826    }
31827  
31828    // packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs
31829    var import_components12 = __toESM(require_components(), 1);
31830  
31831    // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs
31832    var import_i18n29 = __toESM(require_i18n(), 1);
31833    var import_element87 = __toESM(require_element(), 1);
31834    var import_jsx_runtime130 = __toESM(require_jsx_runtime(), 1);
31835    function ActivityGroup({
31836      groupName,
31837      groupData,
31838      groupField,
31839      showLabel = true,
31840      children
31841    }) {
31842      const groupHeader = showLabel ? (0, import_element87.createInterpolateElement)(
31843        // translators: %s: The label of the field e.g. "Status".
31844        (0, import_i18n29.sprintf)((0, import_i18n29.__)("%s: <groupName />"), groupField.label).trim(),
31845        {
31846          groupName: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
31847            groupField.render,
31848            {
31849              item: groupData[0],
31850              field: groupField
31851            }
31852          )
31853        }
31854      ) : /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(groupField.render, { item: groupData[0], field: groupField });
31855      return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
31856        Stack,
31857        {
31858          direction: "column",
31859          className: "dataviews-view-activity__group",
31860          children: [
31861            /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }),
31862            children
31863          ]
31864        },
31865        groupName
31866      );
31867    }
31868  
31869    // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs
31870    var import_element88 = __toESM(require_element(), 1);
31871    var import_data5 = __toESM(require_data(), 1);
31872    var import_compose9 = __toESM(require_compose(), 1);
31873    var import_jsx_runtime131 = __toESM(require_jsx_runtime(), 1);
31874    function ActivityItem(props) {
31875      const {
31876        view,
31877        actions,
31878        item,
31879        titleField,
31880        mediaField,
31881        descriptionField: descriptionField2,
31882        otherFields,
31883        posinset,
31884        onClickItem,
31885        renderItemLink,
31886        isItemClickable: isItemClickable2
31887      } = props;
31888      const {
31889        showTitle = true,
31890        showMedia = true,
31891        showDescription = true,
31892        infiniteScrollEnabled
31893      } = view;
31894      const itemRef = (0, import_element88.useRef)(null);
31895      const registry = (0, import_data5.useRegistry)();
31896      const { paginationInfo } = (0, import_element88.useContext)(dataviews_context_default);
31897      const { primaryActions, eligibleActions } = (0, import_element88.useMemo)(() => {
31898        const _eligibleActions = actions.filter(
31899          (action) => !action.isEligible || action.isEligible(item)
31900        );
31901        const _primaryActions = _eligibleActions.filter(
31902          (action) => action.isPrimary
31903        );
31904        return {
31905          primaryActions: _primaryActions,
31906          eligibleActions: _eligibleActions
31907        };
31908      }, [actions, item]);
31909      const isMobileViewport = (0, import_compose9.useViewportMatch)("medium", "<");
31910      const density = view.layout?.density ?? "balanced";
31911      const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31912        mediaField.render,
31913        {
31914          item,
31915          field: mediaField,
31916          config: {
31917            sizes: density === "comfortable" ? "32px" : "24px"
31918          }
31919        }
31920      ) : null;
31921      const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31922        "span",
31923        {
31924          className: "dataviews-view-activity__item-bullet",
31925          "aria-hidden": "true"
31926        }
31927      ) });
31928      const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(titleField.render, { item, field: titleField }) : null;
31929      const verticalGap = (0, import_element88.useMemo)(() => {
31930        switch (density) {
31931          case "comfortable":
31932            return "md";
31933          default:
31934            return "sm";
31935        }
31936      }, [density]);
31937      return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31938        "div",
31939        {
31940          ref: itemRef,
31941          role: infiniteScrollEnabled ? "article" : void 0,
31942          "aria-posinset": posinset,
31943          "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0,
31944          className: clsx_default(
31945            "dataviews-view-activity__item",
31946            density === "compact" && "is-compact",
31947            density === "balanced" && "is-balanced",
31948            density === "comfortable" && "is-comfortable"
31949          ),
31950          children: /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [
31951            /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31952              Stack,
31953              {
31954                direction: "column",
31955                gap: "xs",
31956                align: "center",
31957                className: "dataviews-view-activity__item-type",
31958                children: renderedMediaField
31959              }
31960            ),
31961            /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
31962              Stack,
31963              {
31964                direction: "column",
31965                gap: verticalGap,
31966                align: "flex-start",
31967                className: "dataviews-view-activity__item-content",
31968                children: [
31969                  renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31970                    ItemClickWrapper,
31971                    {
31972                      item,
31973                      isItemClickable: isItemClickable2,
31974                      onClickItem,
31975                      renderItemLink,
31976                      className: "dataviews-view-activity__item-title",
31977                      children: renderedTitleField
31978                    }
31979                  ),
31980                  showDescription && descriptionField2 && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31981                    descriptionField2.render,
31982                    {
31983                      item,
31984                      field: descriptionField2
31985                    }
31986                  ) }),
31987                  /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(
31988                    "div",
31989                    {
31990                      className: "dataviews-view-activity__item-field",
31991                      children: [
31992                        /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
31993                          VisuallyHidden,
31994                          {
31995                            className: "dataviews-view-activity__item-field-label",
31996                            render: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", {}),
31997                            children: field.label
31998                          }
31999                        ),
32000                        /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
32001                          field.render,
32002                          {
32003                            item,
32004                            field
32005                          }
32006                        ) })
32007                      ]
32008                    },
32009                    field.id
32010                  )) }),
32011                  !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
32012                    PrimaryActions,
32013                    {
32014                      item,
32015                      actions: primaryActions,
32016                      registry,
32017                      buttonVariant: "secondary"
32018                    }
32019                  )
32020                ]
32021              }
32022            ),
32023            (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu
32024            // there if there are any actions at all.
32025            isMobileViewport && // At the same time, only show the menu if there are actions to show.
32026            eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(
32027              ItemActions,
32028              {
32029                item,
32030                actions: eligibleActions,
32031                isCompact: true
32032              }
32033            ) })
32034          ] })
32035        }
32036      );
32037    }
32038    var activity_item_default = ActivityItem;
32039  
32040    // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs
32041    var import_react45 = __toESM(require_react(), 1);
32042    function isDefined3(item) {
32043      return !!item;
32044    }
32045    function ActivityItems(props) {
32046      const { data, fields, getItemId, view } = props;
32047      const titleField = fields.find((field) => field.id === view.titleField);
32048      const mediaField = fields.find((field) => field.id === view.mediaField);
32049      const descriptionField2 = fields.find(
32050        (field) => field.id === view.descriptionField
32051      );
32052      const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3);
32053      return data.map((item, index2) => {
32054        return /* @__PURE__ */ (0, import_react45.createElement)(
32055          activity_item_default,
32056          {
32057            ...props,
32058            key: getItemId(item),
32059            item,
32060            mediaField,
32061            titleField,
32062            descriptionField: descriptionField2,
32063            otherFields,
32064            posinset: view.infiniteScrollEnabled ? index2 + 1 : void 0
32065          }
32066        );
32067      });
32068    }
32069  
32070    // packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs
32071    var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1);
32072    function ViewActivity(props) {
32073      const { empty, data, fields, isLoading, view, className } = props;
32074      const isDelayedLoading = useDelayedLoading(!!isLoading);
32075      const hasData = !!data?.length;
32076      const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null;
32077      const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null;
32078      const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
32079      if (!hasData) {
32080        return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
32081          "div",
32082          {
32083            className: clsx_default("dataviews-no-results", {
32084              "is-refreshing": isDelayedLoading
32085            }),
32086            children: empty
32087          }
32088        );
32089      }
32090      const isInert = !isInfiniteScroll && !!isLoading;
32091      const wrapperClassName = clsx_default("dataviews-view-activity", className, {
32092        "is-refreshing": !isInfiniteScroll && isDelayedLoading
32093      });
32094      const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : [];
32095      if (hasData && groupField && dataByGroup) {
32096        return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
32097          Stack,
32098          {
32099            direction: "column",
32100            gap: "sm",
32101            className: wrapperClassName,
32102            inert: isInert ? "true" : void 0,
32103            children: groupedEntries.map(
32104              ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
32105                ActivityGroup,
32106                {
32107                  groupName,
32108                  groupData,
32109                  groupField,
32110                  showLabel: view.groupBy?.showLabel !== false,
32111                  children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
32112                    ActivityItems,
32113                    {
32114                      ...props,
32115                      data: groupData
32116                    }
32117                  )
32118                },
32119                groupName
32120              )
32121            )
32122          }
32123        );
32124      }
32125      return /* @__PURE__ */ (0, import_jsx_runtime132.jsxs)(import_jsx_runtime132.Fragment, { children: [
32126        /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
32127          "div",
32128          {
32129            className: wrapperClassName,
32130            role: view.infiniteScrollEnabled ? "feed" : void 0,
32131            inert: isInert ? "true" : void 0,
32132            children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(ActivityItems, { ...props })
32133          }
32134        ),
32135        isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_components12.Spinner, {}) })
32136      ] });
32137    }
32138  
32139    // packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs
32140    var import_components15 = __toESM(require_components(), 1);
32141    var import_i18n32 = __toESM(require_i18n(), 1);
32142    var import_compose10 = __toESM(require_compose(), 1);
32143    var import_element91 = __toESM(require_element(), 1);
32144  
32145    // packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs
32146    var import_components14 = __toESM(require_components(), 1);
32147    var import_data6 = __toESM(require_data(), 1);
32148    var import_element90 = __toESM(require_element(), 1);
32149    var import_i18n31 = __toESM(require_i18n(), 1);
32150  
32151    // packages/dataviews/build-module/components/dataviews-pagination/index.mjs
32152    var import_components13 = __toESM(require_components(), 1);
32153    var import_element89 = __toESM(require_element(), 1);
32154    var import_i18n30 = __toESM(require_i18n(), 1);
32155    var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1);
32156    function hasPaginationControls(view, paginationInfo) {
32157      return !view.infiniteScrollEnabled && paginationInfo.totalItems > 0 && paginationInfo.totalPages > 1;
32158    }
32159    function DataViewsPagination() {
32160      const { view, onChangeView, paginationInfo } = (0, import_element89.useContext)(dataviews_context_default);
32161      if (!hasPaginationControls(view, paginationInfo)) {
32162        return null;
32163      }
32164      const { totalPages } = paginationInfo;
32165      const currentPage = view.page ?? 1;
32166      const pageSelectOptions = Array.from(Array(totalPages)).map(
32167        (_, i2) => {
32168          const page = i2 + 1;
32169          return {
32170            value: page.toString(),
32171            label: page.toString(),
32172            "aria-label": currentPage === page ? (0, import_i18n30.sprintf)(
32173              // translators: 1: current page number. 2: total number of pages.
32174              (0, import_i18n30.__)("Page %1$d of %2$d"),
32175              currentPage,
32176              totalPages
32177            ) : page.toString()
32178          };
32179        }
32180      );
32181      return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(
32182        Stack,
32183        {
32184          direction: "row",
32185          className: "dataviews-pagination",
32186          justify: "end",
32187          align: "center",
32188          gap: "xl",
32189          children: [
32190            /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
32191              Stack,
32192              {
32193                direction: "row",
32194                justify: "flex-start",
32195                align: "center",
32196                gap: "xs",
32197                className: "dataviews-pagination__page-select",
32198                children: (0, import_element89.createInterpolateElement)(
32199                  (0, import_i18n30.sprintf)(
32200                    // translators: 1: Current page number, 2: Total number of pages.
32201                    (0, import_i18n30._x)("<div>Page</div>%1$s<div>of %2$d</div>", "paging"),
32202                    "<CurrentPage />",
32203                    totalPages
32204                  ),
32205                  {
32206                    div: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)("div", { "aria-hidden": true }),
32207                    // @ts-expect-error — Tag injected via sprintf argument, not visible in format string.
32208                    CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
32209                      import_components13.SelectControl,
32210                      {
32211                        "aria-label": (0, import_i18n30.__)("Current page"),
32212                        value: currentPage.toString(),
32213                        options: pageSelectOptions,
32214                        onChange: (newValue) => {
32215                          onChangeView({
32216                            ...view,
32217                            page: +newValue
32218                          });
32219                        },
32220                        size: "small",
32221                        variant: "minimal"
32222                      }
32223                    )
32224                  }
32225                )
32226              }
32227            ),
32228            /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [
32229              /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
32230                import_components13.Button,
32231                {
32232                  onClick: () => onChangeView({
32233                    ...view,
32234                    page: currentPage - 1
32235                  }),
32236                  disabled: currentPage === 1,
32237                  accessibleWhenDisabled: true,
32238                  label: (0, import_i18n30.__)("Previous page"),
32239                  icon: (0, import_i18n30.isRTL)() ? next_default : previous_default,
32240                  showTooltip: true,
32241                  size: "compact",
32242                  tooltipPosition: "top"
32243                }
32244              ),
32245              /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
32246                import_components13.Button,
32247                {
32248                  onClick: () => onChangeView({ ...view, page: currentPage + 1 }),
32249                  disabled: currentPage >= totalPages,
32250                  accessibleWhenDisabled: true,
32251                  label: (0, import_i18n30.__)("Next page"),
32252                  icon: (0, import_i18n30.isRTL)() ? previous_default : next_default,
32253                  showTooltip: true,
32254                  size: "compact",
32255                  tooltipPosition: "top"
32256                }
32257              )
32258            ] })
32259          ]
32260        }
32261      );
32262    }
32263    var dataviews_pagination_default = (0, import_element89.memo)(DataViewsPagination);
32264  
32265    // packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs
32266    var import_jsx_runtime134 = __toESM(require_jsx_runtime(), 1);
32267    var EMPTY_ARRAY2 = [];
32268    function useIsMultiselectPicker(actions) {
32269      return (0, import_element90.useMemo)(() => {
32270        return !!actions?.length && actions?.every((action) => action.supportsBulk);
32271      }, [actions]);
32272    }
32273    function BulkSelectionCheckbox2({
32274      selection,
32275      selectedItems,
32276      onChangeSelection,
32277      data,
32278      getItemId,
32279      disableSelectAll = false
32280    }) {
32281      const hasSelection = selection.length > 0;
32282      const areAllSelected = selectedItems.length === data.length;
32283      if (disableSelectAll) {
32284        return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
32285          import_components14.CheckboxControl,
32286          {
32287            className: "dataviews-view-table-selection-checkbox",
32288            checked: hasSelection,
32289            disabled: !hasSelection,
32290            onChange: () => {
32291              onChangeSelection([]);
32292            },
32293            "aria-label": (0, import_i18n31.__)("Deselect all")
32294          }
32295        );
32296      }
32297      return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
32298        import_components14.CheckboxControl,
32299        {
32300          className: "dataviews-view-table-selection-checkbox",
32301          checked: areAllSelected,
32302          indeterminate: !areAllSelected && !!selectedItems.length,
32303          onChange: () => {
32304            if (areAllSelected) {
32305              onChangeSelection(
32306                selection.filter(
32307                  (id) => !data.some(
32308                    (item) => id === getItemId(item)
32309                  )
32310                )
32311              );
32312            } else {
32313              const selectionSet = /* @__PURE__ */ new Set([
32314                ...selection,
32315                ...data.map((item) => getItemId(item))
32316              ]);
32317              onChangeSelection(Array.from(selectionSet));
32318            }
32319          },
32320          "aria-label": areAllSelected ? (0, import_i18n31.__)("Deselect all") : (0, import_i18n31.__)("Select all")
32321        }
32322      );
32323    }
32324    function ActionButtons({
32325      actions,
32326      items,
32327      selection
32328    }) {
32329      const registry = (0, import_data6.useRegistry)();
32330      const [actionInProgress, setActionInProgress] = (0, import_element90.useState)(
32331        null
32332      );
32333      return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(Stack, { direction: "row", gap: "xs", children: actions.map((action) => {
32334        if (!("callback" in action)) {
32335          return null;
32336        }
32337        const { id, label, icon, isPrimary, callback } = action;
32338        const _label = typeof label === "string" ? label : label(items);
32339        const variant = isPrimary ? "primary" : "tertiary";
32340        const isInProgress = id === actionInProgress;
32341        return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
32342          import_components14.Button,
32343          {
32344            accessibleWhenDisabled: true,
32345            icon,
32346            disabled: isInProgress || !selection?.length,
32347            isBusy: isInProgress,
32348            onClick: async () => {
32349              setActionInProgress(id);
32350              await callback(items, {
32351                registry
32352              });
32353              setActionInProgress(null);
32354            },
32355            size: "compact",
32356            variant,
32357            children: _label
32358          },
32359          id
32360        );
32361      }) });
32362    }
32363    function PickerBulkSelectionInfo() {
32364      const {
32365        data,
32366        selection,
32367        onChangeSelection,
32368        getItemId,
32369        actions = EMPTY_ARRAY2,
32370        paginationInfo,
32371        view
32372      } = (0, import_element90.useContext)(dataviews_context_default);
32373      const isMultiselect = useIsMultiselectPicker(actions);
32374      const selectedItems = (0, import_element90.useMemo)(
32375        () => data.filter((item) => selection.includes(getItemId(item))),
32376        [selection, getItemId, data]
32377      );
32378      if (!actions.length) {
32379        return null;
32380      }
32381      const message2 = getFooterMessage(
32382        selection.length,
32383        data.length,
32384        paginationInfo.totalItems,
32385        !!view.infiniteScrollEnabled
32386      );
32387      return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(
32388        Stack,
32389        {
32390          direction: "row",
32391          className: "dataviews-picker-footer__bulk-selection",
32392          gap: "md",
32393          align: "center",
32394          children: [
32395            isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
32396              BulkSelectionCheckbox2,
32397              {
32398                selection,
32399                selectedItems,
32400                onChangeSelection,
32401                data,
32402                getItemId,
32403                disableSelectAll: !!view.infiniteScrollEnabled
32404              }
32405            ),
32406            /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 })
32407          ]
32408        }
32409      );
32410    }
32411    function PickerActions() {
32412      const {
32413        data,
32414        selection,
32415        getItemId,
32416        actions = EMPTY_ARRAY2
32417      } = (0, import_element90.useContext)(dataviews_context_default);
32418      const selectedItems = (0, import_element90.useMemo)(
32419        () => data.filter((item) => selection.includes(getItemId(item))),
32420        [selection, getItemId, data]
32421      );
32422      if (!actions.length) {
32423        return null;
32424      }
32425      return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)("div", { className: "dataviews-picker-footer__actions", children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
32426        ActionButtons,
32427        {
32428          actions,
32429          items: selectedItems,
32430          selection
32431        }
32432      ) });
32433    }
32434    function DataViewsPickerBulkActionToolbar() {
32435      return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(Stack, { direction: "row", gap: "md", align: "center", children: [
32436        /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(PickerBulkSelectionInfo, {}),
32437        /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(PickerActions, {})
32438      ] });
32439    }
32440    function DataViewsPickerFooter() {
32441      const {
32442        actions = EMPTY_ARRAY2,
32443        paginationInfo,
32444        view
32445      } = (0, import_element90.useContext)(dataviews_context_default);
32446      const hasPagination = !view.infiniteScrollEnabled && !!paginationInfo.totalItems && paginationInfo.totalPages > 1;
32447      if (!actions.length && !hasPagination) {
32448        return null;
32449      }
32450      return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(
32451        Stack,
32452        {
32453          direction: "row",
32454          justify: "space-between",
32455          align: "center",
32456          className: "dataviews-footer",
32457          gap: "sm",
32458          children: [
32459            /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(PickerBulkSelectionInfo, {}),
32460            /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(dataviews_pagination_default, {}),
32461            /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(PickerActions, {})
32462          ]
32463        }
32464      );
32465    }
32466  
32467    // packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs
32468    var import_jsx_runtime135 = __toESM(require_jsx_runtime(), 1);
32469    function GridItem3({
32470      view,
32471      selection,
32472      onChangeSelection,
32473      selectionProps,
32474      getItemId,
32475      item,
32476      mediaField,
32477      titleField,
32478      descriptionField: descriptionField2,
32479      regularFields,
32480      badgeFields,
32481      config,
32482      posinset,
32483      setsize
32484    }) {
32485      const { showTitle = true, showMedia = true, showDescription = true } = view;
32486      const id = getItemId(item);
32487      const elementRef = (0, import_element91.useRef)(null);
32488      const isSelected2 = selection.includes(id);
32489      useIntersectionObserver(elementRef, posinset);
32490      const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32491        mediaField.render,
32492        {
32493          item,
32494          field: mediaField,
32495          config
32496        }
32497      ) : null;
32498      const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(titleField.render, { item, field: titleField }) : null;
32499      return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
32500        import_components15.Composite.Item,
32501        {
32502          ref: elementRef,
32503          "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n32.__)("(no title)") : void 0,
32504          render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Stack, { direction: "column", children, ...props }),
32505          role: "option",
32506          "aria-posinset": posinset,
32507          "aria-setsize": setsize,
32508          className: clsx_default("dataviews-view-picker-grid__card", {
32509            "is-selected": isSelected2
32510          }),
32511          "aria-selected": isSelected2,
32512          ...selectionProps,
32513          children: [
32514            showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }),
32515            showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32516              DataViewsSelectionCheckbox,
32517              {
32518                item,
32519                selection,
32520                onChangeSelection,
32521                getItemId,
32522                titleField,
32523                disabled: false,
32524                "aria-hidden": true,
32525                tabIndex: -1
32526              }
32527            ),
32528            showTitle && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32529              Stack,
32530              {
32531                direction: "row",
32532                justify: "space-between",
32533                className: "dataviews-view-picker-grid__title-actions",
32534                children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField })
32535              }
32536            ),
32537            /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(Stack, { direction: "column", gap: "xs", children: [
32538              showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32539                descriptionField2.render,
32540                {
32541                  item,
32542                  field: descriptionField2
32543                }
32544              ),
32545              !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32546                Stack,
32547                {
32548                  direction: "row",
32549                  className: "dataviews-view-picker-grid__badge-fields",
32550                  gap: "sm",
32551                  wrap: "wrap",
32552                  align: "top",
32553                  justify: "flex-start",
32554                  children: badgeFields.map((field) => {
32555                    return (
32556                      /* @ts-expect-error `Badge` is text-only, but a badge field renders whatever its `render` returns. */
32557                      /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32558                        Badge,
32559                        {
32560                          className: "dataviews-view-picker-grid__field-value",
32561                          children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32562                            field.render,
32563                            {
32564                              item,
32565                              field
32566                            }
32567                          )
32568                        },
32569                        field.id
32570                      )
32571                    );
32572                  })
32573                }
32574              ),
32575              !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32576                Stack,
32577                {
32578                  direction: "column",
32579                  className: "dataviews-view-picker-grid__fields",
32580                  gap: "xs",
32581                  children: regularFields.map((field) => {
32582                    return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32583                      import_components15.Flex,
32584                      {
32585                        className: "dataviews-view-picker-grid__field",
32586                        gap: 1,
32587                        justify: "flex-start",
32588                        expanded: true,
32589                        style: { height: "auto" },
32590                        direction: "row",
32591                        children: /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, { children: [
32592                          /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_components15.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }),
32593                          /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32594                            import_components15.FlexItem,
32595                            {
32596                              className: "dataviews-view-picker-grid__field-value",
32597                              style: { maxHeight: "none" },
32598                              children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32599                                field.render,
32600                                {
32601                                  item,
32602                                  field
32603                                }
32604                              )
32605                            }
32606                          )
32607                        ] })
32608                      },
32609                      field.id
32610                    );
32611                  })
32612                }
32613              )
32614            ] })
32615          ]
32616        },
32617        id
32618      );
32619    }
32620    function GridGroup({
32621      groupName,
32622      groupField,
32623      showLabel = true,
32624      children
32625    }) {
32626      const headerId = (0, import_compose10.useInstanceId)(
32627        GridGroup,
32628        "dataviews-view-picker-grid-group__header"
32629      );
32630      return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
32631        Stack,
32632        {
32633          direction: "column",
32634          gap: "sm",
32635          role: "group",
32636          "aria-labelledby": headerId,
32637          children: [
32638            /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32639              "h3",
32640              {
32641                className: "dataviews-view-picker-grid-group__header",
32642                id: headerId,
32643                children: showLabel ? (0, import_i18n32.sprintf)(
32644                  // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
32645                  (0, import_i18n32.__)("%1$s: %2$s"),
32646                  groupField.label,
32647                  groupName
32648                ) : groupName
32649              }
32650            ),
32651            children
32652          ]
32653        },
32654        groupName
32655      );
32656    }
32657    function ViewPickerGrid({
32658      actions,
32659      data,
32660      fields,
32661      getItemId,
32662      isLoading,
32663      onChangeSelection,
32664      selection,
32665      view,
32666      className,
32667      empty
32668    }) {
32669      const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element91.useContext)(dataviews_context_default);
32670      const titleField = fields.find(
32671        (field) => field.id === view?.titleField
32672      );
32673      const mediaField = fields.find(
32674        (field) => field.id === view?.mediaField
32675      );
32676      const descriptionField2 = fields.find(
32677        (field) => field.id === view?.descriptionField
32678      );
32679      const otherFields = view.fields ?? [];
32680      const { regularFields, badgeFields } = otherFields.reduce(
32681        (accumulator, fieldId) => {
32682          const field = fields.find((f2) => f2.id === fieldId);
32683          if (!field) {
32684            return accumulator;
32685          }
32686          const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields";
32687          accumulator[key].push(field);
32688          return accumulator;
32689        },
32690        { regularFields: [], badgeFields: [] }
32691      );
32692      const hasData = !!data?.length;
32693      const usedPreviewSize = view.layout?.previewSize;
32694      const isMultiselect = useIsMultiselectPicker(actions);
32695      const size4 = "900px";
32696      const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null;
32697      const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
32698      const isInfiniteScroll = (view.infiniteScrollEnabled && !dataByGroup) ?? false;
32699      const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
32700      const { getSelectionProps } = useSelectionProps({
32701        data: orderedData,
32702        getItemId,
32703        isItemSelectable: () => true,
32704        selection,
32705        onChangeSelection,
32706        selectionMode: isMultiselect ? "multi" : "single-clearable",
32707        shouldSelectOnClick: true
32708      });
32709      const currentPage = view?.page ?? 1;
32710      const perPage = view?.perPage ?? 0;
32711      const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0;
32712      const isMediaContain = view.layout?.mediaFit === "contain";
32713      const gridColumns = useGridColumns();
32714      const placeholdersNeeded = usePlaceholdersNeeded(
32715        data,
32716        isInfiniteScroll,
32717        gridColumns
32718      );
32719      return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, {
32720        // Render multiple groups.
32721        children: [
32722          hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32723            import_components15.Composite,
32724            {
32725              virtualFocus: true,
32726              orientation: "horizontal",
32727              role: "listbox",
32728              "aria-multiselectable": isMultiselect,
32729              className: clsx_default(
32730                "dataviews-view-picker-grid",
32731                className,
32732                {
32733                  [`has-$view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
32734                    view.layout.density
32735                  ),
32736                  "has-media-fit-contain": isMediaContain
32737                }
32738              ),
32739              "aria-label": itemListLabel,
32740              render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32741                Stack,
32742                {
32743                  direction: "column",
32744                  gap: "lg",
32745                  children,
32746                  ...props
32747                }
32748              ),
32749              children: Array.from(dataByGroup.entries()).map(
32750                ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32751                  GridGroup,
32752                  {
32753                    groupName,
32754                    groupField,
32755                    showLabel: view.groupBy?.showLabel !== false,
32756                    children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32757                      GridItems,
32758                      {
32759                        previewSize: usedPreviewSize,
32760                        "aria-busy": isLoading,
32761                        ref: resizeObserverRef,
32762                        children: groupItems.map((item) => {
32763                          const posInSet = item.position ?? (currentPage - 1) * perPage + data.indexOf(item) + 1;
32764                          return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32765                            GridItem3,
32766                            {
32767                              view,
32768                              selection,
32769                              onChangeSelection,
32770                              selectionProps: getSelectionProps(
32771                                getItemId(item)
32772                              ),
32773                              getItemId,
32774                              item,
32775                              mediaField,
32776                              titleField,
32777                              descriptionField: descriptionField2,
32778                              regularFields,
32779                              badgeFields,
32780                              config: {
32781                                sizes: size4
32782                              },
32783                              posinset: posInSet,
32784                              setsize: setSize
32785                            },
32786                            getItemId(item)
32787                          );
32788                        })
32789                      }
32790                    )
32791                  },
32792                  groupName
32793                )
32794              )
32795            }
32796          ),
32797          // Render a single grid with all data.
32798          hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(
32799            import_components15.Composite,
32800            {
32801              render: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32802                GridItems,
32803                {
32804                  className: clsx_default(
32805                    "dataviews-view-picker-grid",
32806                    className,
32807                    {
32808                      [`has-$view.layout?.density}-density`]: view.layout?.density && [
32809                        "compact",
32810                        "comfortable"
32811                      ].includes(view.layout.density),
32812                      "has-media-fit-contain": isMediaContain
32813                    }
32814                  ),
32815                  previewSize: usedPreviewSize,
32816                  "aria-busy": isLoading,
32817                  ref: resizeObserverRef
32818                }
32819              ),
32820              virtualFocus: true,
32821              orientation: "horizontal",
32822              role: "listbox",
32823              "aria-multiselectable": isMultiselect,
32824              "aria-label": itemListLabel,
32825              children: [
32826                Array.from({ length: placeholdersNeeded }).map(
32827                  (_, index2) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32828                    import_components15.Composite.Item,
32829                    {
32830                      render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32831                        Stack,
32832                        {
32833                          direction: "column",
32834                          children,
32835                          ...props
32836                        }
32837                      ),
32838                      role: "option",
32839                      "aria-hidden": true,
32840                      tabIndex: -1,
32841                      className: "dataviews-view-picker-grid__card dataviews-view-picker-grid__placeholder"
32842                    },
32843                    `placeholder-$index2}`
32844                  )
32845                ),
32846                data.map((item) => {
32847                  const posinset = item.position;
32848                  return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32849                    GridItem3,
32850                    {
32851                      view,
32852                      selection,
32853                      onChangeSelection,
32854                      selectionProps: getSelectionProps(
32855                        getItemId(item)
32856                      ),
32857                      getItemId,
32858                      item,
32859                      mediaField,
32860                      titleField,
32861                      descriptionField: descriptionField2,
32862                      regularFields,
32863                      badgeFields,
32864                      config: {
32865                        sizes: size4
32866                      },
32867                      posinset,
32868                      setsize: setSize
32869                    },
32870                    getItemId(item)
32871                  );
32872                })
32873              ]
32874            }
32875          ),
32876          // Render empty state.
32877          !hasData && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(
32878            "div",
32879            {
32880              className: clsx_default({
32881                "dataviews-loading": isLoading,
32882                "dataviews-no-results": !isLoading
32883              }),
32884              children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_components15.Spinner, {}) }) : empty
32885            }
32886          ),
32887          hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_components15.Spinner, {}) })
32888        ]
32889      });
32890    }
32891    var picker_grid_default = ViewPickerGrid;
32892  
32893    // packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs
32894    var import_i18n33 = __toESM(require_i18n(), 1);
32895    var import_components16 = __toESM(require_components(), 1);
32896    var import_element92 = __toESM(require_element(), 1);
32897    var import_jsx_runtime136 = __toESM(require_jsx_runtime(), 1);
32898    function TableColumnField2({
32899      item,
32900      fields,
32901      column,
32902      align
32903    }) {
32904      const field = fields.find((f2) => f2.id === column);
32905      if (!field) {
32906        return null;
32907      }
32908      const className = clsx_default("dataviews-view-table__cell-content-wrapper", {
32909        "dataviews-view-table__cell-align-end": align === "end",
32910        "dataviews-view-table__cell-align-center": align === "center"
32911      });
32912      return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(field.render, { item, field }) });
32913    }
32914    function TableRow2({
32915      item,
32916      fields,
32917      id,
32918      view,
32919      titleField,
32920      mediaField,
32921      descriptionField: descriptionField2,
32922      selection,
32923      getItemId,
32924      onChangeSelection,
32925      selectionProps,
32926      posinset
32927    }) {
32928      const { paginationInfo } = (0, import_element92.useContext)(dataviews_context_default);
32929      const isSelected2 = selection.includes(id);
32930      const [isHovered, setIsHovered] = (0, import_element92.useState)(false);
32931      const elementRef = (0, import_element92.useRef)(null);
32932      useIntersectionObserver(elementRef, posinset);
32933      const {
32934        showTitle = true,
32935        showMedia = true,
32936        showDescription = true,
32937        infiniteScrollEnabled
32938      } = view;
32939      const handleMouseEnter = () => {
32940        setIsHovered(true);
32941      };
32942      const handleMouseLeave = () => {
32943        setIsHovered(false);
32944      };
32945      const columns = getTableColumns(view, fields);
32946      const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription;
32947      return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
32948        import_components16.Composite.Item,
32949        {
32950          ref: elementRef,
32951          render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
32952            "tr",
32953            {
32954              className: clsx_default("dataviews-view-table__row", {
32955                "is-selected": isSelected2,
32956                "is-hovered": isHovered
32957              }),
32958              onMouseEnter: handleMouseEnter,
32959              onMouseLeave: handleMouseLeave,
32960              children,
32961              ...props
32962            }
32963          ),
32964          "aria-selected": isSelected2,
32965          "aria-setsize": paginationInfo.totalItems || void 0,
32966          "aria-posinset": posinset,
32967          role: infiniteScrollEnabled ? "article" : "option",
32968          onClickCapture: selectionProps.onClickCapture,
32969          onClick: selectionProps.onClick,
32970          onMouseDown: (event) => {
32971            if (event.button !== 0) {
32972              return;
32973            }
32974            event.currentTarget.parentElement?.focus({
32975              preventScroll: true
32976            });
32977            selectionProps.onMouseDown(event);
32978          },
32979          children: [
32980            /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
32981              "td",
32982              {
32983                className: "dataviews-view-table__checkbox-column",
32984                role: "presentation",
32985                children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
32986                  DataViewsSelectionCheckbox,
32987                  {
32988                    item,
32989                    selection,
32990                    onChangeSelection,
32991                    getItemId,
32992                    titleField,
32993                    disabled: false,
32994                    "aria-hidden": true,
32995                    tabIndex: -1
32996                  }
32997                ) })
32998              }
32999            ),
33000            hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33001              "td",
33002              {
33003                role: "presentation",
33004                children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33005                  column_primary_default,
33006                  {
33007                    item,
33008                    titleField: showTitle ? titleField : void 0,
33009                    mediaField: showMedia ? mediaField : void 0,
33010                    descriptionField: showDescription ? descriptionField2 : void 0,
33011                    isItemClickable: () => false
33012                  }
33013                )
33014              }
33015            ),
33016            columns.map((column) => {
33017              const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
33018              return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33019                "td",
33020                {
33021                  style: {
33022                    width,
33023                    maxWidth,
33024                    minWidth
33025                  },
33026                  role: "presentation",
33027                  children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33028                    TableColumnField2,
33029                    {
33030                      fields,
33031                      item,
33032                      column,
33033                      align
33034                    }
33035                  )
33036                },
33037                column
33038              );
33039            })
33040          ]
33041        },
33042        id
33043      );
33044    }
33045    function ViewPickerTable({
33046      actions,
33047      data,
33048      fields,
33049      getItemId,
33050      isLoading = false,
33051      onChangeView,
33052      onChangeSelection,
33053      selection,
33054      setOpenedFilter,
33055      view,
33056      className,
33057      empty
33058    }) {
33059      const headerMenuRefs = (0, import_element92.useRef)(/* @__PURE__ */ new Map());
33060      const headerMenuToFocusRef = (0, import_element92.useRef)(void 0);
33061      const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element92.useState)();
33062      const isMultiselect = useIsMultiselectPicker(actions) ?? false;
33063      (0, import_element92.useEffect)(() => {
33064        if (headerMenuToFocusRef.current) {
33065          headerMenuToFocusRef.current.focus();
33066          headerMenuToFocusRef.current = void 0;
33067        }
33068      });
33069      const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null;
33070      const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
33071      const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup;
33072      const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
33073      const { getSelectionProps } = useSelectionProps({
33074        data: orderedData,
33075        getItemId,
33076        isItemSelectable: () => true,
33077        selection,
33078        onChangeSelection,
33079        selectionMode: isMultiselect ? "multi" : "single-clearable",
33080        shouldSelectOnClick: true
33081      });
33082      const tableNoticeId = (0, import_element92.useId)();
33083      if (nextHeaderMenuToFocus) {
33084        headerMenuToFocusRef.current = nextHeaderMenuToFocus;
33085        setNextHeaderMenuToFocus(void 0);
33086        return;
33087      }
33088      const onHide = (field) => {
33089        const hidden = headerMenuRefs.current.get(field.id);
33090        const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0;
33091        setNextHeaderMenuToFocus(fallback?.node);
33092      };
33093      const hasData = !!data?.length;
33094      const titleField = fields.find((field) => field.id === view.titleField);
33095      const mediaField = fields.find((field) => field.id === view.mediaField);
33096      const descriptionField2 = fields.find(
33097        (field) => field.id === view.descriptionField
33098      );
33099      const { showTitle = true, showMedia = true, showDescription = true } = view;
33100      const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription;
33101      const columns = getTableColumns(view, fields);
33102      const headerMenuRef = (column, index2) => (node) => {
33103        if (node) {
33104          headerMenuRefs.current.set(column, {
33105            node,
33106            fallback: columns[index2 > 0 ? index2 - 1 : 1]
33107          });
33108        } else {
33109          headerMenuRefs.current.delete(column);
33110        }
33111      };
33112      return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_jsx_runtime136.Fragment, { children: [
33113        /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
33114          "table",
33115          {
33116            className: clsx_default(
33117              "dataviews-view-table",
33118              "dataviews-view-picker-table",
33119              className,
33120              {
33121                [`has-$view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes(
33122                  view.layout.density
33123                )
33124              }
33125            ),
33126            "aria-busy": isLoading,
33127            "aria-describedby": tableNoticeId,
33128            role: isInfiniteScroll ? "feed" : "listbox",
33129            children: [
33130              /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
33131                "tr",
33132                {
33133                  className: "dataviews-view-table__row",
33134                  role: "presentation",
33135                  children: [
33136                    /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33137                      BulkSelectionCheckbox,
33138                      {
33139                        selection,
33140                        onChangeSelection,
33141                        data,
33142                        actions,
33143                        getItemId,
33144                        disableSelectAll: isInfiniteScroll
33145                      }
33146                    ) }),
33147                    hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33148                      column_header_menu_default,
33149                      {
33150                        ref: headerMenuRef(
33151                          titleField.id,
33152                          0
33153                        ),
33154                        fieldId: titleField.id,
33155                        view,
33156                        fields,
33157                        onChangeView,
33158                        onHide,
33159                        setOpenedFilter,
33160                        canMove: false
33161                      }
33162                    ) }),
33163                    columns.map((column, index2) => {
33164                      const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {};
33165                      return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33166                        "th",
33167                        {
33168                          style: {
33169                            width,
33170                            maxWidth,
33171                            minWidth,
33172                            textAlign: align
33173                          },
33174                          "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0,
33175                          scope: "col",
33176                          children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33177                            column_header_menu_default,
33178                            {
33179                              ref: headerMenuRef(column, index2),
33180                              fieldId: column,
33181                              view,
33182                              fields,
33183                              onChangeView,
33184                              onHide,
33185                              setOpenedFilter,
33186                              canMove: view.layout?.enableMoving ?? true
33187                            }
33188                          )
33189                        },
33190                        column
33191                      );
33192                    })
33193                  ]
33194                }
33195              ) }),
33196              hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map(
33197                ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
33198                  import_components16.Composite,
33199                  {
33200                    virtualFocus: true,
33201                    orientation: "vertical",
33202                    render: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("tbody", { role: "group" }),
33203                    children: [
33204                      /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33205                        "tr",
33206                        {
33207                          className: "dataviews-view-table__group-header-row",
33208                          role: "presentation",
33209                          children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33210                            "td",
33211                            {
33212                              colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1,
33213                              className: "dataviews-view-table__group-header-cell",
33214                              role: "presentation",
33215                              children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n33.sprintf)(
33216                                // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
33217                                (0, import_i18n33.__)("%1$s: %2$s"),
33218                                groupField.label,
33219                                groupName
33220                              )
33221                            }
33222                          )
33223                        }
33224                      ),
33225                      groupItems.map((item, index2) => {
33226                        const id = getItemId(item) || index2.toString();
33227                        return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33228                          TableRow2,
33229                          {
33230                            item,
33231                            fields,
33232                            id,
33233                            view,
33234                            titleField,
33235                            mediaField,
33236                            descriptionField: descriptionField2,
33237                            selection,
33238                            getItemId,
33239                            onChangeSelection,
33240                            selectionProps: getSelectionProps(
33241                              id
33242                            )
33243                          },
33244                          getItemId(item)
33245                        );
33246                      })
33247                    ]
33248                  },
33249                  `group-$groupName}`
33250                )
33251              ) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33252                import_components16.Composite,
33253                {
33254                  render: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("tbody", { role: "presentation" }),
33255                  virtualFocus: true,
33256                  orientation: "vertical",
33257                  children: hasData && data.map((item, index2) => {
33258                    const itemId = getItemId(item);
33259                    const id = itemId || index2.toString();
33260                    const posinset = item.position;
33261                    return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
33262                      TableRow2,
33263                      {
33264                        item,
33265                        fields,
33266                        id,
33267                        view,
33268                        titleField,
33269                        mediaField,
33270                        descriptionField: descriptionField2,
33271                        selection,
33272                        getItemId,
33273                        onChangeSelection,
33274                        selectionProps: getSelectionProps(
33275                          id
33276                        ),
33277                        posinset
33278                      },
33279                      itemId
33280                    );
33281                  })
33282                }
33283              )
33284            ]
33285          }
33286        ),
33287        /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(
33288          "div",
33289          {
33290            className: clsx_default({
33291              "dataviews-loading": isLoading,
33292              "dataviews-no-results": !hasData && !isLoading
33293            }),
33294            id: tableNoticeId,
33295            children: [
33296              !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_components16.Spinner, {}) }) : empty),
33297              hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_components16.Spinner, {}) })
33298            ]
33299          }
33300        )
33301      ] });
33302    }
33303    var picker_table_default = ViewPickerTable;
33304  
33305    // packages/dataviews/build-module/components/dataviews-layouts/picker-activity/index.mjs
33306    var import_components17 = __toESM(require_components(), 1);
33307    var import_element93 = __toESM(require_element(), 1);
33308    var import_compose11 = __toESM(require_compose(), 1);
33309    var import_i18n34 = __toESM(require_i18n(), 1);
33310    var import_jsx_runtime137 = __toESM(require_jsx_runtime(), 1);
33311    function isDefined4(item) {
33312      return !!item;
33313    }
33314    function PickerActivityItem({
33315      view,
33316      selection,
33317      selectionProps,
33318      getItemId,
33319      item,
33320      titleField,
33321      mediaField,
33322      descriptionField: descriptionField2,
33323      otherFields,
33324      posinset,
33325      setsize
33326    }) {
33327      const elementRef = (0, import_element93.useRef)(null);
33328      useIntersectionObserver(elementRef, posinset);
33329      const { showTitle = true, showMedia = true, showDescription = true } = view;
33330      const id = getItemId(item);
33331      const isSelected2 = selection.includes(id);
33332      const density = view.layout?.density ?? "balanced";
33333      const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33334        mediaField.render,
33335        {
33336          item,
33337          field: mediaField,
33338          config: {
33339            sizes: density === "comfortable" ? "32px" : "24px"
33340          }
33341        }
33342      ) : null;
33343      const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "dataviews-view-picker-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33344        "span",
33345        {
33346          className: "dataviews-view-picker-activity__item-bullet",
33347          "aria-hidden": "true"
33348        }
33349      ) });
33350      const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(titleField.render, { item, field: titleField }) : null;
33351      const renderedDescriptionField = showDescription && descriptionField2?.render ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(descriptionField2.render, { item, field: descriptionField2 }) : null;
33352      const verticalGap = (0, import_element93.useMemo)(() => {
33353        switch (density) {
33354          case "comfortable":
33355            return "md";
33356          default:
33357            return "sm";
33358        }
33359      }, [density]);
33360      return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33361        import_components17.Composite.Item,
33362        {
33363          ref: elementRef,
33364          role: "option",
33365          "aria-label": titleField ? titleField.getValue({ item }) || void 0 : void 0,
33366          "aria-posinset": posinset,
33367          "aria-setsize": setsize,
33368          "aria-selected": isSelected2,
33369          className: clsx_default(
33370            "dataviews-view-picker-activity__item",
33371            density === "compact" && "is-compact",
33372            density === "balanced" && "is-balanced",
33373            density === "comfortable" && "is-comfortable",
33374            isSelected2 && "is-selected"
33375          ),
33376          ...selectionProps,
33377          render: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", {}),
33378          children: /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [
33379            /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33380              Stack,
33381              {
33382                direction: "column",
33383                gap: "xs",
33384                align: "center",
33385                className: "dataviews-view-picker-activity__item-type",
33386                children: renderedMediaField
33387              }
33388            ),
33389            /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
33390              Stack,
33391              {
33392                direction: "column",
33393                gap: verticalGap,
33394                align: "flex-start",
33395                className: "dataviews-view-picker-activity__item-content",
33396                children: [
33397                  renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "dataviews-view-picker-activity__item-title", children: renderedTitleField }),
33398                  renderedDescriptionField && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "dataviews-view-picker-activity__item-description", children: renderedDescriptionField }),
33399                  /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("div", { className: "dataviews-view-picker-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
33400                    "div",
33401                    {
33402                      className: "dataviews-view-picker-activity__item-field",
33403                      children: [
33404                        /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33405                          VisuallyHidden,
33406                          {
33407                            render: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", {}),
33408                            className: "dataviews-view-picker-activity__item-field-label",
33409                            children: field.label
33410                          }
33411                        ),
33412                        /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("span", { className: "dataviews-view-picker-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33413                          field.render,
33414                          {
33415                            item,
33416                            field
33417                          }
33418                        ) })
33419                      ]
33420                    },
33421                    field.id
33422                  )) })
33423                ]
33424              }
33425            )
33426          ] })
33427        }
33428      );
33429    }
33430    function PickerActivityGroup({
33431      groupName,
33432      groupField,
33433      showLabel = true,
33434      children
33435    }) {
33436      const headerId = (0, import_compose11.useInstanceId)(
33437        PickerActivityGroup,
33438        "dataviews-view-picker-activity-group__header"
33439      );
33440      return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(
33441        Stack,
33442        {
33443          direction: "column",
33444          role: "group",
33445          "aria-labelledby": headerId,
33446          className: "dataviews-view-picker-activity-group",
33447          children: [
33448            /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33449              "h3",
33450              {
33451                className: "dataviews-view-picker-activity-group__header",
33452                id: headerId,
33453                children: showLabel ? (0, import_i18n34.sprintf)(
33454                  // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022".
33455                  (0, import_i18n34.__)("%1$s: %2$s"),
33456                  groupField.label,
33457                  groupName
33458                ) : groupName
33459              }
33460            ),
33461            children
33462          ]
33463        }
33464      );
33465    }
33466    function ViewPickerActivity({
33467      data,
33468      fields,
33469      getItemId,
33470      isLoading,
33471      onChangeSelection,
33472      selection,
33473      view,
33474      actions,
33475      className,
33476      empty
33477    }) {
33478      const { itemListLabel, paginationInfo } = (0, import_element93.useContext)(dataviews_context_default);
33479      const isMultiselect = useIsMultiselectPicker(actions);
33480      const titleField = fields.find(
33481        (field) => field.id === view?.titleField
33482      );
33483      const mediaField = fields.find(
33484        (field) => field.id === view?.mediaField
33485      );
33486      const descriptionField2 = fields.find(
33487        (field) => field.id === view?.descriptionField
33488      );
33489      const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined4);
33490      const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null;
33491      const dataByGroup = groupField ? getDataByGroup(data, groupField) : null;
33492      const isInfiniteScroll = (view.infiniteScrollEnabled && !dataByGroup) ?? false;
33493      const setsize = isInfiniteScroll ? paginationInfo?.totalItems : void 0;
33494      const hasData = !!data?.length;
33495      const isGrouped = !!(groupField && dataByGroup);
33496      const orderedData = dataByGroup ? Array.from(dataByGroup.values()).flat() : data;
33497      const { getSelectionProps } = useSelectionProps({
33498        data: orderedData,
33499        getItemId,
33500        isItemSelectable: () => true,
33501        selection,
33502        onChangeSelection,
33503        selectionMode: isMultiselect ? "multi" : "single-clearable",
33504        shouldSelectOnClick: true
33505      });
33506      const renderItem = (item) => /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33507        PickerActivityItem,
33508        {
33509          view,
33510          selection,
33511          selectionProps: getSelectionProps(getItemId(item)),
33512          getItemId,
33513          item,
33514          titleField,
33515          mediaField,
33516          descriptionField: descriptionField2,
33517          otherFields,
33518          posinset: item.position,
33519          setsize
33520        },
33521        getItemId(item)
33522      );
33523      if (!hasData) {
33524        return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33525          "div",
33526          {
33527            className: clsx_default({
33528              "dataviews-loading": isLoading,
33529              "dataviews-no-results": !isLoading
33530            }),
33531            children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_components17.Spinner, {}) }) : empty
33532          }
33533        );
33534      }
33535      return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_jsx_runtime137.Fragment, { children: [
33536        /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33537          import_components17.Composite,
33538          {
33539            virtualFocus: true,
33540            orientation: "vertical",
33541            role: "listbox",
33542            "aria-multiselectable": isMultiselect,
33543            "aria-label": itemListLabel,
33544            "aria-busy": isLoading,
33545            render: isGrouped ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(Stack, { direction: "column", gap: "sm" }) : void 0,
33546            className: clsx_default(
33547              "dataviews-view-picker-activity",
33548              className
33549            ),
33550            children: isGrouped && dataByGroup ? Array.from(dataByGroup.entries()).map(
33551              ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
33552                PickerActivityGroup,
33553                {
33554                  groupName,
33555                  groupField,
33556                  showLabel: view.groupBy?.showLabel !== false,
33557                  children: groupItems.map(renderItem)
33558                },
33559                groupName
33560              )
33561            ) : data.map(renderItem)
33562          }
33563        ),
33564        isLoading && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_components17.Spinner, {}) })
33565      ] });
33566    }
33567  
33568    // packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs
33569    var import_components18 = __toESM(require_components(), 1);
33570    var import_i18n35 = __toESM(require_i18n(), 1);
33571    var import_element94 = __toESM(require_element(), 1);
33572    var import_jsx_runtime138 = __toESM(require_jsx_runtime(), 1);
33573    function DensityPicker() {
33574      const context = (0, import_element94.useContext)(dataviews_context_default);
33575      const view = context.view;
33576      return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
33577        import_components18.__experimentalToggleGroupControl,
33578        {
33579          label: (0, import_i18n35.__)("Density"),
33580          value: view.layout?.density || "balanced",
33581          onChange: (value) => {
33582            context.onChangeView({
33583              ...view,
33584              layout: {
33585                ...view.layout,
33586                density: value
33587              }
33588            });
33589          },
33590          isBlock: true,
33591          children: [
33592            /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
33593              import_components18.__experimentalToggleGroupControlOption,
33594              {
33595                value: "comfortable",
33596                label: (0, import_i18n35._x)(
33597                  "Comfortable",
33598                  "Density option for DataView layout"
33599                )
33600              },
33601              "comfortable"
33602            ),
33603            /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
33604              import_components18.__experimentalToggleGroupControlOption,
33605              {
33606                value: "balanced",
33607                label: (0, import_i18n35._x)("Balanced", "Density option for DataView layout")
33608              },
33609              "balanced"
33610            ),
33611            /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
33612              import_components18.__experimentalToggleGroupControlOption,
33613              {
33614                value: "compact",
33615                label: (0, import_i18n35._x)("Compact", "Density option for DataView layout")
33616              },
33617              "compact"
33618            )
33619          ]
33620        }
33621      );
33622    }
33623  
33624    // packages/dataviews/build-module/components/dataviews-layouts/utils/media-fit-control.mjs
33625    var import_components19 = __toESM(require_components(), 1);
33626    var import_i18n36 = __toESM(require_i18n(), 1);
33627    var import_element95 = __toESM(require_element(), 1);
33628    var import_jsx_runtime139 = __toESM(require_jsx_runtime(), 1);
33629    function MediaFitControl() {
33630      const context = (0, import_element95.useContext)(dataviews_context_default);
33631      const view = context.view;
33632      if (!context.config?.mediaFitControl) {
33633        return null;
33634      }
33635      const hasMediaField = view.showMedia !== false && context.fields.some((field) => field.id === view.mediaField);
33636      if (!hasMediaField) {
33637        return null;
33638      }
33639      return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(
33640        import_components19.ToggleControl,
33641        {
33642          label: (0, import_i18n36.__)("Original aspect ratio"),
33643          checked: view.layout?.mediaFit === "contain",
33644          onChange: (isChecked) => {
33645            context.onChangeView({
33646              ...view,
33647              layout: {
33648                ...view.layout,
33649                mediaFit: isChecked ? "contain" : "cover"
33650              }
33651            });
33652          }
33653        }
33654      );
33655    }
33656  
33657    // packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs
33658    var import_components20 = __toESM(require_components(), 1);
33659    var import_i18n37 = __toESM(require_i18n(), 1);
33660    var import_element96 = __toESM(require_element(), 1);
33661    var import_jsx_runtime140 = __toESM(require_jsx_runtime(), 1);
33662    var imageSizes2 = [
33663      {
33664        value: 120,
33665        breakpoint: 1
33666      },
33667      {
33668        value: 170,
33669        breakpoint: 1
33670      },
33671      {
33672        value: 230,
33673        breakpoint: 1
33674      },
33675      {
33676        value: 290,
33677        breakpoint: 1112
33678        // at minimum image width, 4 images display at this container size
33679      },
33680      {
33681        value: 350,
33682        breakpoint: 1636
33683        // at minimum image width, 6 images display at this container size
33684      },
33685      {
33686        value: 430,
33687        breakpoint: 588
33688        // at minimum image width, 2 images display at this container size
33689      }
33690    ];
33691    function PreviewSizePicker() {
33692      const context = (0, import_element96.useContext)(dataviews_context_default);
33693      const view = context.view;
33694      const breakValues = imageSizes2.filter((size4) => {
33695        return context.containerWidth >= size4.breakpoint;
33696      });
33697      const layoutPreviewSize = view.layout?.previewSize ?? 230;
33698      const previewSizeToUse = breakValues.map((size4, index2) => ({ ...size4, index: index2 })).filter((size4) => size4.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0;
33699      const marks = breakValues.map((size4, index2) => {
33700        return {
33701          value: index2
33702        };
33703      });
33704      return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
33705        import_components20.RangeControl,
33706        {
33707          showTooltip: false,
33708          label: (0, import_i18n37.__)("Preview size"),
33709          value: previewSizeToUse,
33710          min: 0,
33711          max: breakValues.length - 1,
33712          withInputField: false,
33713          onChange: (value = 0) => {
33714            context.onChangeView({
33715              ...view,
33716              layout: {
33717                ...view.layout,
33718                previewSize: breakValues[value].value
33719              }
33720            });
33721          },
33722          step: 1,
33723          marks
33724        }
33725      );
33726    }
33727  
33728    // packages/dataviews/build-module/components/dataviews-layouts/utils/grid-config-options.mjs
33729    var import_jsx_runtime141 = __toESM(require_jsx_runtime(), 1);
33730    function GridConfigOptions() {
33731      return /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_jsx_runtime141.Fragment, { children: [
33732        /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(DensityPicker, {}),
33733        /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(MediaFitControl, {}),
33734        /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(PreviewSizePicker, {})
33735      ] });
33736    }
33737  
33738    // packages/dataviews/build-module/components/dataviews-layouts/index.mjs
33739    var VIEW_LAYOUTS = [
33740      {
33741        type: LAYOUT_TABLE,
33742        label: (0, import_i18n38.__)("Table"),
33743        component: table_default,
33744        icon: block_table_default,
33745        viewConfigOptions: DensityPicker
33746      },
33747      {
33748        type: LAYOUT_GRID,
33749        label: (0, import_i18n38.__)("Grid"),
33750        component: grid_default,
33751        icon: category_default,
33752        viewConfigOptions: GridConfigOptions
33753      },
33754      {
33755        type: LAYOUT_LIST,
33756        label: (0, import_i18n38.__)("List"),
33757        component: ViewList,
33758        icon: (0, import_i18n38.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default,
33759        viewConfigOptions: DensityPicker
33760      },
33761      {
33762        type: LAYOUT_ACTIVITY,
33763        label: (0, import_i18n38.__)("Activity"),
33764        component: ViewActivity,
33765        icon: scheduled_default,
33766        viewConfigOptions: DensityPicker
33767      },
33768      {
33769        type: LAYOUT_PICKER_GRID,
33770        label: (0, import_i18n38.__)("Grid"),
33771        component: picker_grid_default,
33772        icon: category_default,
33773        viewConfigOptions: GridConfigOptions,
33774        isPicker: true
33775      },
33776      {
33777        type: LAYOUT_PICKER_TABLE,
33778        label: (0, import_i18n38.__)("Table"),
33779        component: picker_table_default,
33780        icon: block_table_default,
33781        viewConfigOptions: DensityPicker,
33782        isPicker: true
33783      },
33784      {
33785        type: LAYOUT_PICKER_ACTIVITY,
33786        label: (0, import_i18n38.__)("Activity"),
33787        component: ViewPickerActivity,
33788        icon: scheduled_default,
33789        viewConfigOptions: DensityPicker,
33790        isPicker: true
33791      }
33792    ];
33793  
33794    // packages/dataviews/build-module/components/dataviews-filters/filters.mjs
33795    var import_element104 = __toESM(require_element(), 1);
33796  
33797    // packages/dataviews/build-module/components/dataviews-filters/filter.mjs
33798    var import_components23 = __toESM(require_components(), 1);
33799    var import_i18n41 = __toESM(require_i18n(), 1);
33800    var import_element101 = __toESM(require_element(), 1);
33801  
33802    // node_modules/@ariakit/react-components/dist/button/utils.js
33803    function withDefaultButtonType(props) {
33804      const { render: render4, type } = props;
33805      if (render4 || type !== void 0) return props;
33806      return {
33807        ...props,
33808        type: "button"
33809      };
33810    }
33811  
33812    // node_modules/@ariakit/react-components/dist/focusable/focusable-context.js
33813    var import_react46 = __toESM(require_react(), 1);
33814    var FocusableContext = (0, import_react46.createContext)(true);
33815  
33816    // node_modules/@ariakit/utils/dist/index.js
33817    function toArray(arg) {
33818      if (Array.isArray(arg)) return arg;
33819      return typeof arg !== "undefined" ? [arg] : [];
33820    }
33821    function flatten2DArray(array) {
33822      const flattened = [];
33823      for (const row of array) flattened.push(...row);
33824      return flattened;
33825    }
33826    function reverseArray(array) {
33827      return array.slice().reverse();
33828    }
33829    function noop5(..._) {
33830    }
33831    function applyState(argument, currentValue) {
33832      if (isUpdater(argument)) return argument(isLazyValue(currentValue) ? currentValue() : currentValue);
33833      return argument;
33834    }
33835    function isUpdater(argument) {
33836      return typeof argument === "function";
33837    }
33838    function isLazyValue(value) {
33839      return typeof value === "function";
33840    }
33841    function hasOwnProperty(object, prop) {
33842      if (typeof Object.hasOwn === "function") return Object.hasOwn(object, prop);
33843      return Object.prototype.hasOwnProperty.call(object, prop);
33844    }
33845    function chain(...fns) {
33846      return (...args) => {
33847        for (const fn of fns) if (typeof fn === "function") fn(...args);
33848      };
33849    }
33850    function normalizeString(str) {
33851      return str.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
33852    }
33853    function omit(object, keys) {
33854      const result = { ...object };
33855      for (const key of keys) if (hasOwnProperty(result, key)) delete result[key];
33856      return result;
33857    }
33858    function pick(object, paths) {
33859      const result = {};
33860      for (const key of paths) if (hasOwnProperty(object, key)) result[key] = object[key];
33861      return result;
33862    }
33863    function identity(value) {
33864      return value;
33865    }
33866    function afterPaint(cb = noop5) {
33867      let raf = requestAnimationFrame(() => {
33868        raf = requestAnimationFrame(cb);
33869      });
33870      return () => cancelAnimationFrame(raf);
33871    }
33872    var defaultWarnOnceKey = {};
33873    var warningMessages = /* @__PURE__ */ new WeakMap();
33874    function warnOnce(message2, key) {
33875      const warningKey = key || defaultWarnOnceKey;
33876      let messages = warningMessages.get(warningKey);
33877      if (!messages) {
33878        messages = /* @__PURE__ */ new Set();
33879        warningMessages.set(warningKey, messages);
33880      }
33881      if (messages.has(message2)) return;
33882      messages.add(message2);
33883      console.warn(message2);
33884    }
33885    function invariant(condition, message2) {
33886      if (condition) return;
33887      if (typeof message2 !== "string") throw new Error("Invariant failed");
33888      throw new Error(message2);
33889    }
33890    function getKeys(obj) {
33891      return Object.keys(obj);
33892    }
33893    function isFalsyBooleanCallback(booleanOrCallback, ...args) {
33894      const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback;
33895      if (result == null) return false;
33896      return !result;
33897    }
33898    function disabledFromProps(props) {
33899      return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true";
33900    }
33901    function removeUndefinedValues(obj) {
33902      const result = {};
33903      for (const key in obj) {
33904        if (!hasOwnProperty(obj, key)) continue;
33905        if (key === "__proto__") continue;
33906        if (obj[key] !== void 0) result[key] = obj[key];
33907      }
33908      return result;
33909    }
33910    function defaultValue(...values) {
33911      for (const value of values) if (value !== void 0) return value;
33912    }
33913    var canUseDOM = checkIsBrowser();
33914    function checkIsBrowser() {
33915      return typeof window !== "undefined" && !!window.document?.createElement;
33916    }
33917    function getDocument(node) {
33918      if (!node) return document;
33919      if ("self" in node) return node.document;
33920      return node.ownerDocument || document;
33921    }
33922    function getActiveElement(node, activeDescendant = false) {
33923      const { activeElement: activeElement2 } = getDocument(node);
33924      if (!activeElement2?.nodeName) return null;
33925      if (isFrame(activeElement2) && activeElement2.contentDocument?.body) return getActiveElement(activeElement2.contentDocument.body, activeDescendant);
33926      if (activeDescendant) {
33927        const id = activeElement2.getAttribute("aria-activedescendant");
33928        if (id) {
33929          const element = getDocument(activeElement2).getElementById(id);
33930          if (element) return element;
33931        }
33932      }
33933      return activeElement2;
33934    }
33935    function contains2(parent, child) {
33936      return parent === child || parent.contains(child);
33937    }
33938    function isElement2(target) {
33939      return target?.nodeType === 1;
33940    }
33941    function isNode2(target) {
33942      return typeof target?.nodeType === "number";
33943    }
33944    function isFrame(element) {
33945      return element.tagName === "IFRAME";
33946    }
33947    function isButton(element) {
33948      const tagName = element.tagName.toLowerCase();
33949      if (tagName === "button") return true;
33950      if (tagName === "input" && element.type) return buttonInputTypes.indexOf(element.type) !== -1;
33951      return false;
33952    }
33953    var buttonInputTypes = [
33954      "button",
33955      "color",
33956      "file",
33957      "image",
33958      "reset",
33959      "submit"
33960    ];
33961    function isVisible(element) {
33962      if (typeof element.checkVisibility === "function") return element.checkVisibility();
33963      const htmlElement = element;
33964      return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0;
33965    }
33966    function isTextField(element) {
33967      try {
33968        if (element.tagName === "TEXTAREA") return true;
33969        if (element.tagName !== "INPUT") return false;
33970        return element.selectionStart !== null;
33971      } catch (_error) {
33972        return false;
33973      }
33974    }
33975    function isTextbox(element) {
33976      return element.isContentEditable || isTextField(element);
33977    }
33978    function getTextboxValue(element) {
33979      if (isTextField(element)) return element.value;
33980      if (element.isContentEditable) {
33981        const range = getDocument(element).createRange();
33982        range.selectNodeContents(element);
33983        return range.toString();
33984      }
33985      return "";
33986    }
33987    function getTextboxSelection(element) {
33988      let start = 0;
33989      let end = 0;
33990      if (isTextField(element)) {
33991        start = element.selectionStart || 0;
33992        end = element.selectionEnd || 0;
33993      } else if (element.isContentEditable) {
33994        const selection = getDocument(element).getSelection();
33995        if (selection?.rangeCount && selection.anchorNode && contains2(element, selection.anchorNode) && selection.focusNode && contains2(element, selection.focusNode)) {
33996          const range = selection.getRangeAt(0);
33997          const nextRange = range.cloneRange();
33998          nextRange.selectNodeContents(element);
33999          nextRange.setEnd(range.startContainer, range.startOffset);
34000          start = nextRange.toString().length;
34001          nextRange.setEnd(range.endContainer, range.endOffset);
34002          end = nextRange.toString().length;
34003        }
34004      }
34005      return {
34006        start,
34007        end
34008      };
34009    }
34010    var allowedPopupRoles = [
34011      "dialog",
34012      "menu",
34013      "listbox",
34014      "tree",
34015      "grid"
34016    ];
34017    var itemRoleByPopupRole = {
34018      menu: "menuitem",
34019      listbox: "option",
34020      tree: "treeitem"
34021    };
34022    function getPopupRole(element, fallback) {
34023      const role = element?.getAttribute("role");
34024      if (role && allowedPopupRoles.indexOf(role) !== -1) return role;
34025      return fallback;
34026    }
34027    function getItemRoleByPopupRole(popupRole) {
34028      if (popupRole == null) return;
34029      if (!hasOwnProperty(itemRoleByPopupRole, popupRole)) return;
34030      return itemRoleByPopupRole[popupRole];
34031    }
34032    function getScrollingElement(element) {
34033      if (!element) return null;
34034      const isScrollableOverflow = (overflow) => {
34035        if (overflow === "auto") return true;
34036        if (overflow === "scroll") return true;
34037        return false;
34038      };
34039      if (element.clientHeight && element.scrollHeight > element.clientHeight) {
34040        const { overflowY } = getComputedStyle(element);
34041        if (isScrollableOverflow(overflowY)) return element;
34042      } else if (element.clientWidth && element.scrollWidth > element.clientWidth) {
34043        const { overflowX } = getComputedStyle(element);
34044        if (isScrollableOverflow(overflowX)) return element;
34045      }
34046      const doc = getDocument(element);
34047      return getScrollingElement(element.parentElement) || doc.scrollingElement || doc.body;
34048    }
34049    function setSelectionRange(element, ...args) {
34050      if (/text|search|password|tel|url/i.test(element.type)) element.setSelectionRange(...args);
34051    }
34052    function sortBasedOnDOMPosition(items, getElement) {
34053      const pairs = items.map((item, index2) => [index2, item]);
34054      let isOrderDifferent = false;
34055      pairs.sort(([indexA, a2], [indexB, b2]) => {
34056        const elementA = getElement(a2);
34057        const elementB = getElement(b2);
34058        if (elementA === elementB) return 0;
34059        if (!elementA || !elementB) return 0;
34060        if (isElementPreceding(elementA, elementB)) {
34061          if (indexA > indexB) isOrderDifferent = true;
34062          return -1;
34063        }
34064        if (indexA < indexB) isOrderDifferent = true;
34065        return 1;
34066      });
34067      if (isOrderDifferent) return pairs.map(([_, item]) => item);
34068      return items;
34069    }
34070    function isElementPreceding(a2, b2) {
34071      return Boolean(b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING);
34072    }
34073    function isTouchDevice() {
34074      return canUseDOM && !!navigator.maxTouchPoints;
34075    }
34076    function isApple() {
34077      if (!canUseDOM) return false;
34078      return /mac|iphone|ipad|ipod/i.test(navigator.platform);
34079    }
34080    function isSafari() {
34081      return canUseDOM && isApple() && /apple/i.test(navigator.vendor);
34082    }
34083    function isFirefox() {
34084      return canUseDOM && /firefox\//i.test(navigator.userAgent);
34085    }
34086    function isPortalEvent(event) {
34087      const { currentTarget, target } = event;
34088      if (!currentTarget) return false;
34089      if (!isNode2(target)) return true;
34090      return !contains2(currentTarget, target);
34091    }
34092    function isSelfTarget(event) {
34093      return event.target === event.currentTarget;
34094    }
34095    function isActivatableNavigationTarget(element) {
34096      if (!isElement2(element)) return false;
34097      const target = element;
34098      const tagName = target.tagName.toLowerCase();
34099      if (tagName === "a") return true;
34100      if (tagName === "button" && target.type === "submit") return true;
34101      if (tagName === "input" && target.type === "submit") return true;
34102      return false;
34103    }
34104    function isOpeningInNewTab(event) {
34105      const isAppleDevice = isApple();
34106      if (isAppleDevice && !event.metaKey) return false;
34107      if (!isAppleDevice && !event.ctrlKey) return false;
34108      return isActivatableNavigationTarget(event.currentTarget);
34109    }
34110    function isDownloading(event) {
34111      if (!event.altKey) return false;
34112      return isActivatableNavigationTarget(event.currentTarget);
34113    }
34114    function fireBlurEvent(element, eventInit) {
34115      const event = new FocusEvent("blur", eventInit);
34116      const defaultAllowed = element.dispatchEvent(event);
34117      const bubbleInit = {
34118        ...eventInit,
34119        bubbles: true
34120      };
34121      element.dispatchEvent(new FocusEvent("focusout", bubbleInit));
34122      return defaultAllowed;
34123    }
34124    function fireKeyboardEvent(element, type, eventInit) {
34125      const event = new KeyboardEvent(type, eventInit);
34126      return element.dispatchEvent(event);
34127    }
34128    function fireClickEvent(element, eventInit) {
34129      const event = new MouseEvent("click", eventInit);
34130      return element.dispatchEvent(event);
34131    }
34132    function isFocusEventOutside(event, container) {
34133      const containerElement = container || event.currentTarget;
34134      const relatedTarget = event.relatedTarget;
34135      return !isNode2(relatedTarget) || !contains2(containerElement, relatedTarget);
34136    }
34137    function isInputEvent(event) {
34138      return event.type === "input";
34139    }
34140    function queueBeforeEvent(element, type, callback, timeout) {
34141      const createTimer = (callback2) => {
34142        if (timeout) {
34143          const timerId2 = setTimeout(callback2, timeout);
34144          return () => clearTimeout(timerId2);
34145        }
34146        const timerId = requestAnimationFrame(callback2);
34147        return () => cancelAnimationFrame(timerId);
34148      };
34149      const cancelTimer = createTimer(() => {
34150        element.removeEventListener(type, callSync, true);
34151        callback();
34152      });
34153      const callSync = () => {
34154        cancelTimer();
34155        callback();
34156      };
34157      element.addEventListener(type, callSync, {
34158        once: true,
34159        capture: true
34160      });
34161      return () => {
34162        cancelTimer();
34163        element.removeEventListener(type, callSync, true);
34164      };
34165    }
34166    function addGlobalEventListener(type, listener, options, scope = window) {
34167      const children = [];
34168      try {
34169        scope.document.addEventListener(type, listener, options);
34170        for (const frame of Array.from(scope.frames)) children.push(addGlobalEventListener(type, listener, options, frame));
34171      } catch {
34172      }
34173      const removeEventListener = () => {
34174        try {
34175          scope.document.removeEventListener(type, listener, options);
34176        } catch {
34177        }
34178        for (const remove of children) remove();
34179      };
34180      return removeEventListener;
34181    }
34182    var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";
34183    function isFocusable(element) {
34184      if (!element.matches(selector)) return false;
34185      if (!isVisible(element)) return false;
34186      if (element.closest("[inert]")) return false;
34187      return true;
34188    }
34189    function hasFocus(element) {
34190      const activeElement2 = getActiveElement(element);
34191      if (!activeElement2) return false;
34192      if (activeElement2 === element) return true;
34193      const activeDescendant = activeElement2.getAttribute("aria-activedescendant");
34194      if (!activeDescendant) return false;
34195      return activeDescendant === element.id;
34196    }
34197    function hasFocusWithin(element) {
34198      const activeElement2 = getActiveElement(element);
34199      if (!activeElement2) return false;
34200      if (contains2(element, activeElement2)) return true;
34201      const activeDescendant = activeElement2.getAttribute("aria-activedescendant");
34202      if (!activeDescendant) return false;
34203      if (!("id" in element)) return false;
34204      if (activeDescendant === element.id) return true;
34205      return !!element.querySelector(`#$CSS.escape(activeDescendant)}`);
34206    }
34207    function createUndoCallback(callback) {
34208      return async () => {
34209        const redo = await callback?.();
34210        return createUndoCallback(async () => {
34211          await redo?.();
34212          return callback;
34213        });
34214      };
34215    }
34216    var UndoManager = createUndoManager();
34217    function createUndoManager({ limit = 100 } = {}) {
34218      const undoStack = [];
34219      let redoStack = [];
34220      let currentGroup = null;
34221      const canUndo = () => undoStack.length > 0;
34222      const canRedo = () => redoStack.length > 0;
34223      const undo = async () => {
34224        if (!canUndo()) return;
34225        currentGroup = null;
34226        redoStack.push(await undoStack.pop()?.());
34227      };
34228      const redo = async () => {
34229        if (!canRedo()) return;
34230        currentGroup = null;
34231        undoStack.push(await redoStack.pop()?.());
34232      };
34233      const execute = async (callback, group) => {
34234        if (!callback) return;
34235        const sameGroup = group === currentGroup;
34236        currentGroup = group ?? null;
34237        const nextIndex = sameGroup ? Math.max(0, undoStack.length - 1) : undoStack.length;
34238        const undoCallback = await callback();
34239        if (!undoCallback) return;
34240        redoStack = [];
34241        const currentUndo = undoStack[nextIndex];
34242        undoStack[nextIndex] = createUndoCallback(async () => {
34243          await undoCallback?.();
34244          const currentRedo = await currentUndo?.();
34245          return async () => {
34246            await currentRedo?.();
34247            await callback?.();
34248          };
34249        });
34250        while (undoStack.length > limit) undoStack.shift();
34251      };
34252      return {
34253        canUndo,
34254        canRedo,
34255        undo,
34256        redo,
34257        execute
34258      };
34259    }
34260  
34261    // node_modules/@ariakit/react-utils/dist/index.js
34262    var React145 = __toESM(require_react(), 1);
34263    var import_react47 = __toESM(require_react(), 1);
34264    var import_jsx_runtime142 = __toESM(require_jsx_runtime(), 1);
34265    function setRef(ref, value) {
34266      if (typeof ref === "function") {
34267        const cleanup = ref(value);
34268        if (typeof cleanup === "function") return cleanup;
34269      } else if (ref) ref.current = value;
34270    }
34271    function isValidElementWithRef(element) {
34272      if (!element) return false;
34273      if (!(0, import_react47.isValidElement)(element)) return false;
34274      if ("ref" in element.props) return true;
34275      if ("ref" in element) return true;
34276      return false;
34277    }
34278    function getRefProperty(element) {
34279      if (!isValidElementWithRef(element)) return null;
34280      return { ...element.props }.ref || element.ref;
34281    }
34282    function mergeProps2(base, overrides) {
34283      const props = { ...base };
34284      for (const key in overrides) {
34285        if (!hasOwnProperty(overrides, key)) continue;
34286        if (key === "__proto__") continue;
34287        if (key === "className") {
34288          const prop = "className";
34289          const baseClass = base[prop];
34290          const overrideClass = overrides[prop];
34291          if (baseClass && overrideClass) props[prop] = `$baseClass} $overrideClass}`;
34292          else props[prop] = overrideClass || baseClass;
34293          continue;
34294        }
34295        if (key === "style") {
34296          const prop = "style";
34297          props[prop] = base[prop] ? {
34298            ...base[prop],
34299            ...overrides[prop]
34300          } : overrides[prop];
34301          continue;
34302        }
34303        const overrideValue = overrides[key];
34304        if (overrideValue === void 0) continue;
34305        if (key.startsWith("on")) {
34306          if (typeof overrideValue !== "function") continue;
34307          const baseValue = base[key];
34308          if (typeof baseValue === "function") {
34309            props[key] = (...args) => {
34310              overrideValue(...args);
34311              baseValue(...args);
34312            };
34313            continue;
34314          }
34315        }
34316        props[key] = overrideValue;
34317      }
34318      return props;
34319    }
34320    var _React = { ...React145 };
34321    var useReactId = _React.useId;
34322    var useReactDeferredValue = _React.useDeferredValue;
34323    var useReactInsertionEffect = _React.useInsertionEffect;
34324    var useSafeLayoutEffect = canUseDOM ? import_react47.useLayoutEffect : import_react47.useEffect;
34325    function useInitialValue(value) {
34326      const [initialValue] = (0, import_react47.useState)(value);
34327      return initialValue;
34328    }
34329    function useLiveRef(value) {
34330      const ref = (0, import_react47.useRef)(value);
34331      useSafeLayoutEffect(() => {
34332        ref.current = value;
34333      });
34334      return ref;
34335    }
34336    function useEvent(callback) {
34337      const ref = (0, import_react47.useRef)(() => {
34338        throw new Error("Cannot call an event handler while rendering.");
34339      });
34340      if (useReactInsertionEffect) useReactInsertionEffect(() => {
34341        ref.current = callback;
34342      });
34343      else ref.current = callback;
34344      return (0, import_react47.useCallback)((...args) => ref.current?.(...args), []);
34345    }
34346    function useTransactionState(callback) {
34347      const [state, setState] = (0, import_react47.useState)(null);
34348      useSafeLayoutEffect(() => {
34349        if (state == null) return;
34350        if (!callback) return;
34351        let prevState = null;
34352        callback((prev) => {
34353          prevState = prev;
34354          return state;
34355        });
34356        return () => {
34357          callback(prevState);
34358        };
34359      }, [state, callback]);
34360      return [state, setState];
34361    }
34362    function useMergeRefs5(...refs) {
34363      return (0, import_react47.useMemo)(() => {
34364        if (!refs.some(Boolean)) return;
34365        return (value) => {
34366          const refEffects = [];
34367          for (const ref of refs) {
34368            if (!ref) continue;
34369            const cleanup = setRef(ref, value);
34370            refEffects.push({
34371              ref,
34372              cleanup: typeof cleanup === "function" ? cleanup : void 0
34373            });
34374          }
34375          if (!refEffects.some((effect) => effect.cleanup)) return;
34376          return () => {
34377            for (const { ref, cleanup } of refEffects) if (cleanup) cleanup();
34378            else setRef(ref, null);
34379          };
34380        };
34381      }, refs);
34382    }
34383    function useId7(defaultId) {
34384      if (useReactId) {
34385        const reactId = useReactId();
34386        if (defaultId) return defaultId;
34387        return reactId;
34388      }
34389      const [id, setId] = (0, import_react47.useState)(defaultId);
34390      useSafeLayoutEffect(() => {
34391        if (defaultId || id) return;
34392        const random = Math.random().toString(36).slice(2, 8);
34393        setId(`id-$random}`);
34394      }, [defaultId, id]);
34395      return defaultId || id;
34396    }
34397    function useAttribute(refOrElement, attributeName, defaultValue2) {
34398      const initialValue = useInitialValue(defaultValue2);
34399      const [attribute, setAttribute] = (0, import_react47.useState)(initialValue);
34400      (0, import_react47.useEffect)(() => {
34401        const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement;
34402        if (!element) return;
34403        const callback = () => {
34404          const value = element.getAttribute(attributeName);
34405          setAttribute(value == null ? initialValue : value);
34406        };
34407        const observer = new MutationObserver(callback);
34408        observer.observe(element, { attributeFilter: [attributeName] });
34409        callback();
34410        return () => observer.disconnect();
34411      }, [
34412        refOrElement,
34413        attributeName,
34414        initialValue
34415      ]);
34416      return attribute;
34417    }
34418    function useUpdateEffect(effect, deps) {
34419      const mounted = (0, import_react47.useRef)(false);
34420      (0, import_react47.useEffect)(() => {
34421        if (mounted.current) return effect();
34422        mounted.current = true;
34423      }, deps);
34424      (0, import_react47.useEffect)(() => () => {
34425        mounted.current = false;
34426      }, []);
34427    }
34428    function useUpdateLayoutEffect(effect, deps) {
34429      const mounted = (0, import_react47.useRef)(false);
34430      useSafeLayoutEffect(() => {
34431        if (mounted.current) return effect();
34432        mounted.current = true;
34433      }, deps);
34434      useSafeLayoutEffect(() => () => {
34435        mounted.current = false;
34436      }, []);
34437    }
34438    function useForceUpdate() {
34439      return (0, import_react47.useReducer)(() => [], []);
34440    }
34441    function useBooleanEvent(booleanOrCallback) {
34442      return useEvent(typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback);
34443    }
34444    function useWrapElement(props, callback, deps = []) {
34445      const wrapElement = (0, import_react47.useCallback)((element) => {
34446        if (props.wrapElement) element = props.wrapElement(element);
34447        return callback(element);
34448      }, [...deps, props.wrapElement]);
34449      return {
34450        ...props,
34451        wrapElement
34452      };
34453    }
34454    function useMetadataProps(props, key, value) {
34455      const parent = props.onLoadedMetadataCapture;
34456      const onLoadedMetadataCapture = (0, import_react47.useMemo)(() => {
34457        return Object.assign(() => {
34458        }, parent, ...value !== void 0 ? [{ [key]: value }] : []);
34459      }, [
34460        parent,
34461        key,
34462        value
34463      ]);
34464      return [parent?.[key], { onLoadedMetadataCapture }];
34465    }
34466    var hasInstalledGlobalEventListeners = false;
34467    function useIsMouseMoving() {
34468      (0, import_react47.useEffect)(() => {
34469        if (hasInstalledGlobalEventListeners) return;
34470        addGlobalEventListener("mousemove", setMouseMoving, true);
34471        addGlobalEventListener("mousedown", resetMouseMoving, true);
34472        addGlobalEventListener("mouseup", resetMouseMoving, true);
34473        addGlobalEventListener("keydown", resetMouseMoving, true);
34474        addGlobalEventListener("scroll", resetMouseMoving, true);
34475        hasInstalledGlobalEventListeners = true;
34476      }, []);
34477      return useEvent(() => mouseMoving);
34478    }
34479    var mouseMoving = false;
34480    var previousScreenX = 0;
34481    var previousScreenY = 0;
34482    function hasMouseMovement(event) {
34483      const movementX = event.movementX || event.screenX - previousScreenX;
34484      const movementY = event.movementY || event.screenY - previousScreenY;
34485      previousScreenX = event.screenX;
34486      previousScreenY = event.screenY;
34487      return movementX || movementY || false;
34488    }
34489    function setMouseMoving(event) {
34490      if (!hasMouseMovement(event)) return;
34491      mouseMoving = true;
34492    }
34493    function resetMouseMoving() {
34494      mouseMoving = false;
34495    }
34496    function forwardRef89(render4) {
34497      const Role = React145.forwardRef((props, ref) => render4(removeUndefinedValues({
34498        ...props,
34499        ref
34500      })));
34501      Role.displayName = render4.displayName || render4.name;
34502      return Role;
34503    }
34504    function memo4(Component2, propsAreEqual) {
34505      return React145.memo(Component2, propsAreEqual);
34506    }
34507    function createElement3(Type, props) {
34508      const { wrapElement, render: render4, ...rest } = props;
34509      const mergedRef = useMergeRefs5(props.ref, getRefProperty(render4));
34510      let element;
34511      if (React145.isValidElement(render4)) {
34512        const renderProps = {
34513          ...render4.props,
34514          ref: mergedRef
34515        };
34516        element = React145.cloneElement(render4, mergeProps2(rest, renderProps));
34517      } else if (render4) element = render4(rest);
34518      else element = /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(Type, { ...rest });
34519      if (wrapElement) return wrapElement(element);
34520      return element;
34521    }
34522    function createHook(useProps) {
34523      const useRole = (props = {}) => {
34524        return useProps(props);
34525      };
34526      useRole.displayName = useProps.name;
34527      return useRole;
34528    }
34529    function createStoreContext(providers = [], scopedProviders = []) {
34530      const context = React145.createContext(void 0);
34531      const scopedContext = React145.createContext(void 0);
34532      const useContext60 = () => React145.useContext(context);
34533      const useScopedContext = (onlyScoped = false) => {
34534        const scoped = React145.useContext(scopedContext);
34535        const store = useContext60();
34536        if (onlyScoped) return scoped;
34537        return scoped || store;
34538      };
34539      const useProviderContext = () => {
34540        const scoped = React145.useContext(scopedContext);
34541        const store = useContext60();
34542        if (scoped && scoped === store) return;
34543        return store;
34544      };
34545      const ContextProvider = (props) => {
34546        return providers.reduceRight((children, Provider2) => /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(Provider2, {
34547          ...props,
34548          children
34549        }), /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(context.Provider, { ...props }));
34550      };
34551      const ScopedContextProvider = (props) => {
34552        return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(ContextProvider, {
34553          ...props,
34554          children: scopedProviders.reduceRight((children, Provider2) => /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(Provider2, {
34555            ...props,
34556            children
34557          }), /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(scopedContext.Provider, { ...props }))
34558        });
34559      };
34560      return {
34561        context,
34562        scopedContext,
34563        useContext: useContext60,
34564        useScopedContext,
34565        useProviderContext,
34566        ContextProvider,
34567        ScopedContextProvider
34568      };
34569    }
34570  
34571    // node_modules/@ariakit/react-components/dist/__chunks/CKgCZrim.js
34572    var import_react48 = __toESM(require_react(), 1);
34573    function isCompositeMoveKey(key) {
34574      return key === "ArrowUp" || key === "ArrowRight" || key === "ArrowDown" || key === "ArrowLeft" || key === "Home" || key === "End" || key === "PageUp" || key === "PageDown";
34575    }
34576    var TagName = "div";
34577    var accessibleWhenDisabledSymbol = /* @__PURE__ */ Symbol("accessibleWhenDisabled");
34578    var isSafariBrowser = isSafari();
34579    var nativeTabbableMask = 1;
34580    var supportsDisabledMask = 2;
34581    var defaultElementCapabilities = 3;
34582    var alwaysFocusVisibleInputTypes = [
34583      "text",
34584      "search",
34585      "url",
34586      "tel",
34587      "email",
34588      "password",
34589      "number",
34590      "date",
34591      "month",
34592      "week",
34593      "time",
34594      "datetime",
34595      "datetime-local"
34596    ];
34597    function isAlwaysFocusVisible(element) {
34598      const { tagName, readOnly, type } = element;
34599      if (tagName === "TEXTAREA" && !readOnly) return true;
34600      if (tagName === "SELECT" && !readOnly) return true;
34601      if (tagName === "INPUT" && !readOnly) return alwaysFocusVisibleInputTypes.includes(type);
34602      if (element.isContentEditable) return true;
34603      if (element.getAttribute("role") === "combobox" && element.dataset.name) return true;
34604      return false;
34605    }
34606    function isNativeTabbable(tagName) {
34607      if (!tagName) return true;
34608      return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a";
34609    }
34610    function supportsDisabledAttribute(tagName) {
34611      if (!tagName) return true;
34612      return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea";
34613    }
34614    function getElementCapabilities(tagName) {
34615      let capabilities = 0;
34616      if (isNativeTabbable(tagName)) capabilities |= nativeTabbableMask;
34617      if (supportsDisabledAttribute(tagName)) capabilities |= supportsDisabledMask;
34618      return capabilities;
34619    }
34620    function isNativeSubmitControl(element) {
34621      if (element.tagName === "BUTTON") {
34622        const { type } = element;
34623        return type === "submit";
34624      }
34625      if (element.tagName === "INPUT") {
34626        const { type } = element;
34627        return type === "submit" || type === "image";
34628      }
34629      return false;
34630    }
34631    function getTabIndex2({ focusable: focusable2, trulyDisabled, nativeTabbable, supportsDisabled, safariTabIndex, tabIndexProp }) {
34632      if (!focusable2) return tabIndexProp;
34633      if (trulyDisabled) {
34634        if (nativeTabbable && !supportsDisabled) return -1;
34635        return;
34636      }
34637      if (nativeTabbable) {
34638        if (safariTabIndex && tabIndexProp == null) return 0;
34639        return tabIndexProp;
34640      }
34641      return tabIndexProp ?? 0;
34642    }
34643    function useDisableEvent(onEvent, disabled2) {
34644      return useEvent((event) => {
34645        onEvent?.(event);
34646        if (event.defaultPrevented) return;
34647        if (disabled2) {
34648          event.stopPropagation();
34649          event.preventDefault();
34650        }
34651      });
34652    }
34653    var hasInstalledGlobalEventListeners2 = false;
34654    var isKeyboardModality = true;
34655    function onGlobalMouseDown(event) {
34656      const target = event.target;
34657      if (isElement2(target) && !target.hasAttribute("data-focus-visible")) isKeyboardModality = false;
34658    }
34659    function onGlobalKeyDown(event) {
34660      if (isCompositeMoveKey(event.key)) {
34661        isKeyboardModality = true;
34662        return;
34663      }
34664      if (event.metaKey) return;
34665      if (event.ctrlKey) return;
34666      if (event.altKey) {
34667        if (!isSafariBrowser) return;
34668        if (event.key !== "Tab") return;
34669      }
34670      isKeyboardModality = true;
34671    }
34672    var useFocusable = createHook(function useFocusable2({ focusable: focusable2 = true, accessibleWhenDisabled, autoFocus, onFocusVisible, ...props }) {
34673      const ref = (0, import_react48.useRef)(null);
34674      const [parentAccessibleWhenDisabled, metadataProps] = useMetadataProps(props, accessibleWhenDisabledSymbol, accessibleWhenDisabled);
34675      accessibleWhenDisabled ??= parentAccessibleWhenDisabled;
34676      (0, import_react48.useEffect)(() => {
34677        if (!focusable2) return;
34678        if (hasInstalledGlobalEventListeners2) return;
34679        addGlobalEventListener("mousedown", onGlobalMouseDown, true);
34680        addGlobalEventListener("keydown", onGlobalKeyDown, true);
34681        hasInstalledGlobalEventListeners2 = true;
34682      }, [focusable2]);
34683      const disabled2 = focusable2 && disabledFromProps(props);
34684      const trulyDisabled = disabled2 && !accessibleWhenDisabled;
34685      const [focusVisible, setFocusVisible] = (0, import_react48.useState)(false);
34686      const focusVisibleRef = (0, import_react48.useRef)(false);
34687      const nativeSubmitObserverCleanupRef = (0, import_react48.useRef)(null);
34688      const cleanupFocusVisible = useEvent((element) => {
34689        nativeSubmitObserverCleanupRef.current?.();
34690        nativeSubmitObserverCleanupRef.current = null;
34691        focusVisibleRef.current = false;
34692        element?.removeAttribute("data-focus-visible");
34693      });
34694      (0, import_react48.useEffect)(() => {
34695        if (focusable2 && !trulyDisabled) return;
34696        cleanupFocusVisible(ref.current);
34697        if (focusVisible) setFocusVisible(false);
34698      }, [
34699        focusable2,
34700        trulyDisabled,
34701        focusVisible,
34702        cleanupFocusVisible
34703      ]);
34704      (0, import_react48.useEffect)(() => {
34705        if (!focusable2) return;
34706        if (!focusVisible) return;
34707        const element = ref.current;
34708        if (!element) return;
34709        if (typeof IntersectionObserver === "undefined") return;
34710        const observer = new IntersectionObserver(() => {
34711          if (!isFocusable(element)) {
34712            focusVisibleRef.current = false;
34713            setFocusVisible(false);
34714          }
34715        });
34716        observer.observe(element);
34717        return () => observer.disconnect();
34718      }, [focusable2, focusVisible]);
34719      (0, import_react48.useEffect)(() => {
34720        return () => nativeSubmitObserverCleanupRef.current?.();
34721      }, []);
34722      const onKeyPressCapture = useDisableEvent(props.onKeyPressCapture, disabled2);
34723      const onMouseDownCapture = useDisableEvent(props.onMouseDownCapture, disabled2);
34724      const onClickCapture = useDisableEvent(props.onClickCapture, disabled2);
34725      const handleFocusVisible = (event, currentTarget) => {
34726        if (currentTarget) event.currentTarget = currentTarget;
34727        if (!focusable2) return;
34728        const element = event.currentTarget;
34729        if (!element) return;
34730        if (!hasFocus(element)) return;
34731        onFocusVisible?.(event);
34732        if (event.defaultPrevented) return;
34733        element.dataset.focusVisible = "true";
34734        focusVisibleRef.current = true;
34735        if (isNativeSubmitControl(element)) {
34736          nativeSubmitObserverCleanupRef.current?.();
34737          nativeSubmitObserverCleanupRef.current = null;
34738          if (typeof IntersectionObserver !== "undefined") {
34739            const observer = new IntersectionObserver(() => {
34740              if (isFocusable(element)) return;
34741              cleanupFocusVisible(element);
34742            });
34743            observer.observe(element);
34744            nativeSubmitObserverCleanupRef.current = () => observer.disconnect();
34745          }
34746          return;
34747        }
34748        setFocusVisible(true);
34749      };
34750      const onKeyDownCaptureProp = props.onKeyDownCapture;
34751      const onKeyDownCapture = useEvent((event) => {
34752        onKeyDownCaptureProp?.(event);
34753        if (event.defaultPrevented) return;
34754        if (!focusable2) return;
34755        if (focusVisible) return;
34756        if (focusVisibleRef.current) return;
34757        if ((event.metaKey || event.altKey || event.ctrlKey) && !isCompositeMoveKey(event.key)) return;
34758        if (!isSelfTarget(event)) return;
34759        const element = event.currentTarget;
34760        const applyFocusVisible = () => handleFocusVisible(event, element);
34761        queueBeforeEvent(element, "focusout", applyFocusVisible);
34762      });
34763      const onFocusCaptureProp = props.onFocusCapture;
34764      const onFocusCapture = useEvent((event) => {
34765        onFocusCaptureProp?.(event);
34766        if (event.defaultPrevented) return;
34767        if (!focusable2) return;
34768        if (!isSelfTarget(event)) {
34769          setFocusVisible(false);
34770          return;
34771        }
34772        const element = event.currentTarget;
34773        const applyFocusVisible = () => handleFocusVisible(event, element);
34774        if (isKeyboardModality || isAlwaysFocusVisible(event.target)) queueBeforeEvent(event.target, "focusout", applyFocusVisible);
34775        else setFocusVisible(false);
34776      });
34777      const onBlurProp = props.onBlur;
34778      const onBlur = useEvent((event) => {
34779        onBlurProp?.(event);
34780        if (!focusable2) return;
34781        if (!isFocusEventOutside(event)) return;
34782        cleanupFocusVisible(event.currentTarget);
34783        setFocusVisible(false);
34784      });
34785      const autoFocusOnShow = (0, import_react48.useContext)(FocusableContext);
34786      const autoFocusRef = useEvent((element) => {
34787        if (!focusable2) return;
34788        if (!autoFocus) return;
34789        if (!element) return;
34790        if (!autoFocusOnShow) return;
34791        queueMicrotask(() => {
34792          if (hasFocus(element)) return;
34793          if (!isFocusable(element)) return;
34794          element.focus();
34795        });
34796      });
34797      const [elementCapabilities, setElementCapabilities] = (0, import_react48.useState)(defaultElementCapabilities);
34798      useSafeLayoutEffect(() => {
34799        const element = ref.current;
34800        if (!element) return;
34801        const nextCapabilities = getElementCapabilities(element.tagName.toLowerCase());
34802        if (nextCapabilities === defaultElementCapabilities) return;
34803        setElementCapabilities(nextCapabilities);
34804      }, []);
34805      const nativeTabbable = focusable2 && !!(elementCapabilities & nativeTabbableMask);
34806      const supportsDisabled = focusable2 && !!(elementCapabilities & supportsDisabledMask);
34807      const [safariTabIndex, setSafariTabIndex] = (0, import_react48.useState)(false);
34808      if (isSafariBrowser) (0, import_react48.useEffect)(() => {
34809        if (!focusable2) return;
34810        const element = ref.current;
34811        if (!element) return;
34812        const { type } = element;
34813        const isNativeCheckboxOrRadio = element.tagName === "INPUT" && (type === "checkbox" || type === "radio");
34814        setSafariTabIndex(isButton(element) || isNativeCheckboxOrRadio);
34815      }, [focusable2]);
34816      const styleProp = props.style;
34817      const style = (0, import_react48.useMemo)(() => {
34818        if (trulyDisabled) return {
34819          pointerEvents: "none",
34820          ...styleProp
34821        };
34822        return styleProp;
34823      }, [trulyDisabled, styleProp]);
34824      props = {
34825        "data-focus-visible": focusable2 && focusVisible || void 0,
34826        "data-autofocus": autoFocus || void 0,
34827        "aria-disabled": disabled2 || void 0,
34828        ...props,
34829        ...metadataProps,
34830        ref: useMergeRefs5(ref, autoFocusRef, props.ref),
34831        style,
34832        tabIndex: getTabIndex2({
34833          focusable: focusable2,
34834          trulyDisabled,
34835          nativeTabbable,
34836          supportsDisabled,
34837          safariTabIndex,
34838          tabIndexProp: props.tabIndex
34839        }),
34840        disabled: supportsDisabled && trulyDisabled ? true : void 0,
34841        contentEditable: disabled2 ? void 0 : props.contentEditable,
34842        onKeyPressCapture,
34843        onClickCapture,
34844        onMouseDownCapture,
34845        onKeyDownCapture,
34846        onFocusCapture,
34847        onBlur
34848      };
34849      return removeUndefinedValues(props);
34850    });
34851    var Focusable = forwardRef89(function Focusable2(props) {
34852      const htmlProps = useFocusable(props);
34853      return createElement3(TagName, htmlProps);
34854    });
34855  
34856    // node_modules/@ariakit/react-components/dist/command/command.js
34857    var import_react49 = __toESM(require_react(), 1);
34858    var TagName2 = "button";
34859    function isNativeClick(event) {
34860      if (!event.isTrusted) return false;
34861      const element = event.currentTarget;
34862      if (event.key === "Enter") return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A";
34863      if (event.key === " ") return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT";
34864      return false;
34865    }
34866    var symbol = /* @__PURE__ */ Symbol("command");
34867    var useCommand = createHook(function useCommand2({ clickOnEnter = true, clickOnSpace = true, ...props }) {
34868      const ref = (0, import_react49.useRef)(null);
34869      const [isNativeButton, setIsNativeButton] = (0, import_react49.useState)(false);
34870      const type = props.type;
34871      (0, import_react49.useEffect)(() => {
34872        const element = ref.current;
34873        if (!element) return;
34874        const nativeButton = isButton(element);
34875        if (type !== void 0 && nativeButton && element.type === "button") return;
34876        setIsNativeButton(nativeButton);
34877      }, [type]);
34878      const [active, setActive] = (0, import_react49.useState)(false);
34879      const activeRef = (0, import_react49.useRef)(false);
34880      const disabled2 = disabledFromProps(props);
34881      const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true);
34882      useSafeLayoutEffect(() => {
34883        if (!disabled2) return;
34884        activeRef.current = false;
34885        setActive(false);
34886      }, [disabled2]);
34887      const onKeyDownProp = props.onKeyDown;
34888      const onKeyDown = useEvent((event) => {
34889        onKeyDownProp?.(event);
34890        const element = event.currentTarget;
34891        if (event.defaultPrevented) return;
34892        if (isDuplicate) return;
34893        if (disabled2) return;
34894        if (!isSelfTarget(event)) return;
34895        if (isTextField(element)) return;
34896        if (element.isContentEditable) return;
34897        const isEnter = clickOnEnter && event.key === "Enter";
34898        const isSpace = clickOnSpace && event.key === " ";
34899        const shouldPreventEnter = event.key === "Enter" && !clickOnEnter;
34900        const shouldPreventSpace = event.key === " " && !clickOnSpace;
34901        if (shouldPreventEnter || shouldPreventSpace) {
34902          event.preventDefault();
34903          return;
34904        }
34905        if (isEnter || isSpace) {
34906          const nativeClick = isNativeClick(event);
34907          if (isEnter) {
34908            if (!nativeClick) {
34909              event.preventDefault();
34910              const { view, ...eventInit } = event;
34911              const click = () => fireClickEvent(element, eventInit);
34912              if (isFirefox()) queueBeforeEvent(element, "keyup", click);
34913              else queueMicrotask(click);
34914            }
34915          } else if (isSpace) {
34916            activeRef.current = true;
34917            if (!nativeClick) {
34918              event.preventDefault();
34919              setActive(true);
34920            }
34921          }
34922        }
34923      });
34924      const onKeyUpProp = props.onKeyUp;
34925      const onKeyUp = useEvent((event) => {
34926        onKeyUpProp?.(event);
34927        if (isDuplicate) return;
34928        const isSpace = clickOnSpace && event.key === " ";
34929        if (!activeRef.current || !isSpace) return;
34930        const nativeClick = isNativeClick(event);
34931        activeRef.current = false;
34932        if (!nativeClick) setActive(false);
34933        if (event.defaultPrevented) return;
34934        if (!isSelfTarget(event)) return;
34935        if (disabled2) return;
34936        if (event.metaKey) return;
34937        if (nativeClick) return;
34938        event.preventDefault();
34939        const element = event.currentTarget;
34940        const { view, ...eventInit } = event;
34941        queueMicrotask(() => fireClickEvent(element, eventInit));
34942      });
34943      const onBlurProp = props.onBlur;
34944      const onBlur = useEvent((event) => {
34945        onBlurProp?.(event);
34946        if (!activeRef.current) return;
34947        activeRef.current = false;
34948        setActive(false);
34949      });
34950      props = {
34951        "data-active": active || void 0,
34952        type: isNativeButton ? "button" : void 0,
34953        ...metadataProps,
34954        ...props,
34955        ref: useMergeRefs5(ref, props.ref),
34956        onKeyDown,
34957        onKeyUp,
34958        onBlur
34959      };
34960      props = useFocusable(props);
34961      return props;
34962    });
34963    var Command = forwardRef89(function Command2(props) {
34964      const htmlProps = useCommand(withDefaultButtonType(props));
34965      return createElement3(TagName2, htmlProps);
34966    });
34967  
34968    // node_modules/@ariakit/react-components/dist/collection/collection-context.js
34969    var ctx = createStoreContext();
34970    var useCollectionContext = ctx.useContext;
34971    var useCollectionScopedContext = ctx.useScopedContext;
34972    var useCollectionProviderContext = ctx.useProviderContext;
34973    var CollectionContextProvider = ctx.ContextProvider;
34974    var CollectionScopedContextProvider = ctx.ScopedContextProvider;
34975  
34976    // node_modules/@ariakit/react-components/dist/collection/collection-item.js
34977    var import_react50 = __toESM(require_react(), 1);
34978    var TagName3 = "div";
34979    var useCollectionItem = createHook(function useCollectionItem2({ store, shouldRegisterItem = true, getItem = identity, element, ...props }) {
34980      const context = useCollectionContext();
34981      store = store || context;
34982      const id = useId7(props.id);
34983      const ref = (0, import_react50.useRef)(element);
34984      (0, import_react50.useEffect)(() => {
34985        const element2 = ref.current;
34986        if (!id) return;
34987        if (!element2) return;
34988        if (!shouldRegisterItem) return;
34989        const item = getItem({
34990          id,
34991          element: element2
34992        });
34993        return store?.renderItem(item);
34994      }, [
34995        id,
34996        shouldRegisterItem,
34997        getItem,
34998        store
34999      ]);
35000      props = {
35001        ...props,
35002        ref: useMergeRefs5(ref, props.ref)
35003      };
35004      return props;
35005    });
35006    var CollectionItem = forwardRef89(function CollectionItem2(props) {
35007      const htmlProps = useCollectionItem(props);
35008      return createElement3(TagName3, htmlProps);
35009    });
35010  
35011    // node_modules/@ariakit/react-components/dist/composite/composite-context.js
35012    var import_react51 = __toESM(require_react(), 1);
35013    var ctx2 = createStoreContext([CollectionContextProvider], [CollectionScopedContextProvider]);
35014    var useCompositeContext = ctx2.useContext;
35015    var useCompositeScopedContext = ctx2.useScopedContext;
35016    var useCompositeProviderContext = ctx2.useProviderContext;
35017    var CompositeContextProvider = ctx2.ContextProvider;
35018    var CompositeScopedContextProvider = ctx2.ScopedContextProvider;
35019    var CompositeItemContext = (0, import_react51.createContext)(void 0);
35020    var CompositeRowContext = (0, import_react51.createContext)(void 0);
35021  
35022    // node_modules/@ariakit/react-components/dist/composite/utils.js
35023    var import_react52 = __toESM(require_react(), 1);
35024  
35025    // node_modules/@ariakit/store/dist/index.js
35026    function getInternal(store, key) {
35027      const internals = store.__unstableInternals;
35028      invariant(internals, "Invalid store");
35029      return internals[key];
35030    }
35031    function hasUpdatedKey(keys, updatedKey) {
35032      if (!keys) return true;
35033      for (const currentKey of keys) if (updatedKey instanceof Set) {
35034        if (updatedKey.has(currentKey)) return true;
35035      } else if (isSameValue(currentKey, updatedKey)) return true;
35036      return false;
35037    }
35038    function isSameValue(value, other) {
35039      return value === other || value !== value && other !== other;
35040    }
35041    function getCleanupPrevState(prevState, state, stateBeforeCleanup, updatedKey) {
35042      let cleanupPrevState;
35043      for (const key of getKeys(state)) {
35044        if (isSameValue(state[key], stateBeforeCleanup[key])) continue;
35045        if (updatedKey !== void 0 && hasUpdatedKey([key], updatedKey)) continue;
35046        cleanupPrevState ??= { ...prevState };
35047        cleanupPrevState[key] = state[key];
35048      }
35049      return cleanupPrevState;
35050    }
35051    var MAX_REPAIR_PASSES = 100;
35052    function addKeyedListener(map, keys, listener) {
35053      if (!keys) return;
35054      for (const key of keys) {
35055        let listeners = map.get(key);
35056        if (!listeners) {
35057          listeners = /* @__PURE__ */ new Set();
35058          map.set(key, listeners);
35059        }
35060        listeners.add(listener);
35061      }
35062    }
35063    function deleteKeyedListener(map, keys, listener) {
35064      if (!map) return;
35065      if (!keys) return;
35066      for (const key of keys) {
35067        const listeners = map.get(key);
35068        if (!listeners) continue;
35069        listeners.delete(listener);
35070        if (!listeners.size) map.delete(key);
35071      }
35072    }
35073    function getFastPathNotifiedListeners(frame) {
35074      const notifiedListeners = /* @__PURE__ */ new Set();
35075      const currentListener = frame.currentListener;
35076      if (!currentListener) return notifiedListeners;
35077      for (const listener of frame.keyedListeners) {
35078        notifiedListeners.add(listener);
35079        if (listener === currentListener) return notifiedListeners;
35080      }
35081      notifiedListeners.clear();
35082      notifiedListeners.add(currentListener);
35083      return notifiedListeners;
35084    }
35085    function preserveFastPathNotifiedListeners(frame) {
35086      frame.notifiedListeners ??= getFastPathNotifiedListeners(frame);
35087    }
35088    function hasFastPathPassedListener(frame, listener) {
35089      if (!frame.currentListener) return false;
35090      let foundCurrentKeyedListener = false;
35091      for (const currentListener of frame.keyedListeners) {
35092        if (currentListener === frame.currentListener) {
35093          foundCurrentKeyedListener = true;
35094          continue;
35095        }
35096        if (!foundCurrentKeyedListener) continue;
35097        if (currentListener === listener) return false;
35098      }
35099      let foundListener = false;
35100      for (const currentListener of frame.group.listeners) {
35101        if (currentListener === frame.currentListener) return foundListener;
35102        if (currentListener === listener) foundListener = true;
35103      }
35104      return false;
35105    }
35106    function preserveFastPathFrames(fastPathFrames, group, listener) {
35107      for (const frame of fastPathFrames) {
35108        if (frame.group !== group) continue;
35109        if (frame.recovering) continue;
35110        if (listener && !frame.keyedListeners.has(listener)) continue;
35111        preserveFastPathNotifiedListeners(frame);
35112        for (const currentListener of frame.group.listeners) {
35113          if (currentListener === frame.currentListener) break;
35114          if (!hasFastPathPassedListener(frame, currentListener)) continue;
35115          frame.notifiedListeners?.add(currentListener);
35116        }
35117      }
35118    }
35119    function preserveFastPathPassedListeners(fastPathFrames, group, listener) {
35120      for (const frame of fastPathFrames) {
35121        if (frame.group !== group) continue;
35122        if (frame.recovering) continue;
35123        if (!hasFastPathPassedListener(frame, listener)) continue;
35124        preserveFastPathNotifiedListeners(frame);
35125        frame.notifiedListeners?.add(listener);
35126      }
35127    }
35128    function preserveFastPathPassedKeyedListeners({ fastPathFrames, group, keys, listener }) {
35129      const wasRegistered = group.listeners.has(listener);
35130      for (const frame of fastPathFrames) {
35131        if (frame.group !== group) continue;
35132        if (frame.recovering) continue;
35133        if (!keys.includes(frame.updatedKey)) continue;
35134        if (hasFastPathPassedListener(frame, listener)) {
35135          preserveFastPathNotifiedListeners(frame);
35136          frame.notifiedListeners?.add(listener);
35137        } else if (wasRegistered) {
35138          preserveFastPathNotifiedListeners(frame);
35139          frame.recoverToLive = true;
35140        }
35141      }
35142    }
35143    function clearFastPathNotifiedListener(fastPathFrames, group, listener) {
35144      for (const frame of fastPathFrames) {
35145        if (frame.group !== group) continue;
35146        frame.notifiedListeners?.delete(listener);
35147      }
35148    }
35149    function addFastPathKeyedListener({ fastPathFrames, group, keys, listener }) {
35150      for (const frame of fastPathFrames) {
35151        if (frame.group !== group) continue;
35152        if (frame.recovering) continue;
35153        if (!keys.includes(frame.updatedKey)) continue;
35154        frame.keyedListeners.add(listener);
35155      }
35156    }
35157    function runPendingCleanup(group, listener) {
35158      if (!group.disposables.size) return;
35159      const cleanup = group.disposables.get(listener);
35160      if (!cleanup) return;
35161      group.disposables.delete(listener);
35162      cleanup();
35163    }
35164    function setListenerCleanup(group, listener, cleanup) {
35165      const currentCleanup = group.disposables.get(listener);
35166      if (!currentCleanup) {
35167        group.disposables.set(listener, cleanup);
35168        return;
35169      }
35170      group.disposables.set(listener, () => {
35171        currentCleanup();
35172        cleanup();
35173      });
35174    }
35175    function notifyStoreListener(group, listener, state, prevState, getState, updatedKey) {
35176      if (group.suspendCounts?.has(listener)) return;
35177      const { disposables } = group;
35178      const cleanup = disposables.size ? disposables.get(listener) : void 0;
35179      if (cleanup) {
35180        disposables.delete(listener);
35181        const stateBeforeCleanup = state;
35182        cleanup();
35183        state = getState?.() ?? state;
35184        if (state !== stateBeforeCleanup) prevState = getCleanupPrevState(prevState, state, stateBeforeCleanup, updatedKey) ?? prevState;
35185      }
35186      const result = listener(state, prevState);
35187      if (result) setListenerCleanup(group, listener, result);
35188    }
35189    function runLiveListeners({ group, getState, prevState, updatedKey, notifiedListeners }) {
35190      const allKeysListeners = group.allKeysListeners;
35191      for (const listener of group.listeners) {
35192        if (notifiedListeners?.has(listener)) continue;
35193        if (!allKeysListeners?.has(listener)) {
35194          if (!hasUpdatedKey(group.listenerKeys.get(listener), updatedKey)) continue;
35195        }
35196        notifiedListeners?.add(listener);
35197        notifyStoreListener(group, listener, getState(), prevState, getState, updatedKey);
35198      }
35199    }
35200    function createStore(initialState, ...stores) {
35201      let state = initialState;
35202      let prevStateBatch = state;
35203      let destroy = noop5;
35204      let batchPending = false;
35205      let inDispatch = false;
35206      let updatedKeys = /* @__PURE__ */ new Set();
35207      const instances = /* @__PURE__ */ new Set();
35208      const setups = /* @__PURE__ */ new Set();
35209      const syncListenerGroup = {
35210        listeners: /* @__PURE__ */ new Set(),
35211        disposables: /* @__PURE__ */ new Map(),
35212        listenerKeys: /* @__PURE__ */ new WeakMap()
35213      };
35214      const batchListenerGroup = {
35215        listeners: /* @__PURE__ */ new Set(),
35216        disposables: /* @__PURE__ */ new Map(),
35217        listenerKeys: /* @__PURE__ */ new WeakMap()
35218      };
35219      const storeSetup = (callback) => {
35220        setups.add(callback);
35221        return () => setups.delete(callback);
35222      };
35223      const storeInit = () => {
35224        const initializedInstances = instances.size;
35225        const instance = /* @__PURE__ */ Symbol();
35226        instances.add(instance);
35227        const maybeDestroy = () => {
35228          if (!instances.delete(instance)) return;
35229          if (instances.size) return;
35230          destroy();
35231        };
35232        if (initializedInstances) return maybeDestroy;
35233        const stateKeys = getKeys(state);
35234        const desyncs = [];
35235        for (const store of stores) {
35236          const storeState = store?.getState?.();
35237          if (!storeState) continue;
35238          const keys = stateKeys.filter((key) => hasOwnProperty(storeState, key));
35239          if (!keys.length) continue;
35240          if (stores.length === 1 || keys.length === stateKeys.length) {
35241            for (const key of keys) desyncs.push(sync(store, [key], (state2) => {
35242              setState(key, state2[key], true);
35243            }));
35244            continue;
35245          }
35246          desyncs.push(subscribe(store, keys, (state2, prevState) => {
35247            for (const key of keys) {
35248              if (state2[key] === prevState[key]) continue;
35249              setState(key, state2[key], true);
35250            }
35251          }));
35252          for (const key of keys) {
35253            const liveState = store?.getState?.();
35254            if (!liveState) continue;
35255            setState(key, liveState[key], true);
35256          }
35257        }
35258        const teardowns = [];
35259        for (const setup2 of setups) teardowns.push(setup2());
35260        const cleanups = stores.map(init);
35261        destroy = chain(...desyncs, ...teardowns, ...cleanups);
35262        return maybeDestroy;
35263      };
35264      const deleteListenerIndexes = (group, listener, keys) => {
35265        if (keys === void 0) return;
35266        if (keys) deleteKeyedListener(group.listenersByKey, keys, listener);
35267        else group.allKeysListeners?.delete(listener);
35268      };
35269      const fastPathFrames = [];
35270      const registerListener = (keys, listener, group = syncListenerGroup) => {
35271        const listenerKeysValue = keys ? [...keys] : null;
35272        const wasRegistered = group.listeners.has(listener);
35273        if (!wasRegistered) clearFastPathNotifiedListener(fastPathFrames, group, listener);
35274        if (!listenerKeysValue) {
35275          if (wasRegistered) preserveFastPathFrames(fastPathFrames, group);
35276          preserveFastPathPassedListeners(fastPathFrames, group, listener);
35277        } else preserveFastPathPassedKeyedListeners({
35278          fastPathFrames,
35279          group,
35280          keys: listenerKeysValue,
35281          listener
35282        });
35283        if (wasRegistered) {
35284          preserveFastPathFrames(fastPathFrames, group, listener);
35285          deleteListenerIndexes(group, listener, group.listenerKeys.get(listener));
35286        }
35287        group.listeners.add(listener);
35288        if (listenerKeysValue) {
35289          group.listenersByKey ??= /* @__PURE__ */ new Map();
35290          addKeyedListener(group.listenersByKey, listenerKeysValue, listener);
35291          addFastPathKeyedListener({
35292            fastPathFrames,
35293            group,
35294            keys: listenerKeysValue,
35295            listener
35296          });
35297        } else {
35298          group.allKeysListeners ??= /* @__PURE__ */ new Set();
35299          group.allKeysListeners.add(listener);
35300        }
35301        group.listenerKeys.set(listener, listenerKeysValue);
35302        return () => {
35303          const cleanup = group.disposables.get(listener);
35304          group.disposables.delete(listener);
35305          preserveFastPathFrames(fastPathFrames, group, listener);
35306          const currentKeys = group.listenerKeys.get(listener);
35307          deleteListenerIndexes(group, listener, listenerKeysValue);
35308          if (currentKeys !== listenerKeysValue) deleteListenerIndexes(group, listener, currentKeys);
35309          group.listenerKeys.delete(listener);
35310          group.listeners.delete(listener);
35311          cleanup?.();
35312        };
35313      };
35314      const storeSubscribe = (keys, listener) => registerListener(keys, listener);
35315      const runInitialListener = (group, listener, prevState) => {
35316        const shouldSuspend = group.listeners.has(listener);
35317        if (shouldSuspend) {
35318          group.suspendCounts ??= /* @__PURE__ */ new Map();
35319          const count = group.suspendCounts.get(listener) ?? 0;
35320          group.suspendCounts.set(listener, count + 1);
35321        }
35322        let cleanupPrevState;
35323        try {
35324          const stateBeforeCleanups = state;
35325          runPendingCleanup(group, listener);
35326          if (state !== stateBeforeCleanups) cleanupPrevState = getCleanupPrevState(prevState, state, stateBeforeCleanups);
35327          const cleanup = listener(state, cleanupPrevState ?? prevState);
35328          if (cleanup) setListenerCleanup(group, listener, cleanup);
35329        } finally {
35330          if (shouldSuspend) {
35331            const suspendCounts = group.suspendCounts;
35332            const count = suspendCounts?.get(listener);
35333            if (count && count > 1) suspendCounts?.set(listener, count - 1);
35334            else suspendCounts?.delete(listener);
35335            if (!suspendCounts?.size) delete group.suspendCounts;
35336          }
35337        }
35338      };
35339      const storeSync = (keys, listener) => {
35340        runInitialListener(syncListenerGroup, listener, state);
35341        return registerListener(keys, listener);
35342      };
35343      const storeBatch = (keys, listener) => {
35344        if (!batchListenerGroup.listeners.size && !inDispatch) prevStateBatch = state;
35345        runInitialListener(batchListenerGroup, listener, prevStateBatch);
35346        return registerListener(keys, listener, batchListenerGroup);
35347      };
35348      const storePick = (keys) => createStore(pick(state, keys), finalStore);
35349      const storeOmit = (keys) => createStore(omit(state, keys), finalStore);
35350      const getState = () => state;
35351      const runListeners = (group, prevState, updatedKey) => {
35352        if (!(updatedKey instanceof Set) && !group.allKeysListeners?.size) {
35353          const keyedListeners = group.listenersByKey?.get(updatedKey);
35354          if (!keyedListeners) return;
35355          const frame = {
35356            group,
35357            keyedListeners,
35358            updatedKey,
35359            currentListener: null
35360          };
35361          fastPathFrames.push(frame);
35362          try {
35363            for (const listener of keyedListeners) {
35364              if (frame.notifiedListeners?.has(listener)) continue;
35365              frame.currentListener = listener;
35366              frame.notifiedListeners?.add(listener);
35367              notifyStoreListener(group, listener, state, prevState, getState, updatedKey);
35368              if (!group.allKeysListeners?.size && !frame.recoverToLive) continue;
35369              const notifiedListeners = frame.notifiedListeners ?? getFastPathNotifiedListeners(frame);
35370              frame.notifiedListeners = notifiedListeners;
35371              frame.recovering = true;
35372              runLiveListeners({
35373                group,
35374                getState,
35375                prevState,
35376                updatedKey,
35377                notifiedListeners
35378              });
35379              return;
35380            }
35381          } finally {
35382            fastPathFrames.pop();
35383          }
35384          return;
35385        }
35386        runLiveListeners({
35387          group,
35388          getState,
35389          prevState,
35390          updatedKey
35391        });
35392      };
35393      const setState = (key, value, fromStores = false) => {
35394        if (!hasOwnProperty(state, key)) return;
35395        const currentValue = state[key];
35396        const nextValue = applyState(value, () => currentValue);
35397        if (isSameValue(nextValue, currentValue)) return;
35398        const wasInDispatch = inDispatch;
35399        inDispatch = true;
35400        const prevState = state;
35401        const nextState = {
35402          ...state,
35403          [key]: nextValue
35404        };
35405        state = nextState;
35406        let superseded = false;
35407        try {
35408          if (!fromStores && stores.length) {
35409            for (const store of stores) {
35410              store?.setState?.(key, nextValue);
35411              if (isSameValue(state[key], nextValue)) continue;
35412              superseded = true;
35413              break;
35414            }
35415            if (superseded) {
35416              let pass = 0;
35417              for (; pass < MAX_REPAIR_PASSES; pass += 1) {
35418                let changed = false;
35419                for (const store of stores) {
35420                  const previousValue = state[key];
35421                  store?.setState?.(key, previousValue);
35422                  if (!isSameValue(state[key], previousValue)) changed = true;
35423                }
35424                if (!changed) break;
35425              }
35426              if (pass === MAX_REPAIR_PASSES) console.warn("Parent stores did not converge after a superseded fan-out; a parent listener may be rewriting this key in a cycle.");
35427            }
35428          }
35429          if (!superseded) {
35430            const listenerPrevState = state === nextState ? prevState : {
35431              ...state,
35432              [key]: prevState[key]
35433            };
35434            runListeners(syncListenerGroup, listenerPrevState, key);
35435          }
35436        } finally {
35437          inDispatch = wasInDispatch;
35438        }
35439        if (!batchListenerGroup.listeners.size) {
35440          if (!inDispatch) prevStateBatch = state;
35441          return;
35442        }
35443        updatedKeys.add(key);
35444        if (batchPending) return;
35445        batchPending = true;
35446        queueMicrotask(() => {
35447          batchPending = false;
35448          const snapshot = state;
35449          const updatedKeysSnapshot = updatedKeys;
35450          updatedKeys = /* @__PURE__ */ new Set();
35451          const prevStateBatchBefore = prevStateBatch;
35452          runListeners(batchListenerGroup, prevStateBatchBefore, updatedKeysSnapshot);
35453          if (prevStateBatch === prevStateBatchBefore) prevStateBatch = snapshot;
35454        });
35455      };
35456      const finalStore = {
35457        getState,
35458        setState,
35459        __unstableInternals: {
35460          setup: storeSetup,
35461          init: storeInit,
35462          subscribe: storeSubscribe,
35463          sync: storeSync,
35464          batch: storeBatch,
35465          pick: storePick,
35466          omit: storeOmit
35467        }
35468      };
35469      return finalStore;
35470    }
35471    function setup(store, ...args) {
35472      if (!store) return;
35473      return getInternal(store, "setup")(...args);
35474    }
35475    function init(store, ...args) {
35476      if (!store) return;
35477      return getInternal(store, "init")(...args);
35478    }
35479    function subscribe(store, ...args) {
35480      if (!store) return;
35481      return getInternal(store, "subscribe")(...args);
35482    }
35483    function sync(store, ...args) {
35484      if (!store) return;
35485      return getInternal(store, "sync")(...args);
35486    }
35487    function batch(store, ...args) {
35488      if (!store) return;
35489      return getInternal(store, "batch")(...args);
35490    }
35491    function omit2(store, ...args) {
35492      if (!store) return;
35493      return getInternal(store, "omit")(...args);
35494    }
35495    function pick2(store, ...args) {
35496      if (!store) return;
35497      return getInternal(store, "pick")(...args);
35498    }
35499    function mergeStore(...stores) {
35500      const initialState = {};
35501      for (const store2 of stores) {
35502        const nextState = store2?.getState?.();
35503        if (nextState) Object.assign(initialState, nextState);
35504      }
35505      const store = createStore(initialState, ...stores);
35506      return Object.assign({}, ...stores, store);
35507    }
35508    function throwOnConflictingProps(props, store) {
35509      if (false) return;
35510      if (!store) return;
35511      const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => {
35512        const stateKey = key.replace("default", "");
35513        return `$stateKey[0]?.toLowerCase() || ""}$stateKey.slice(1)}`;
35514      });
35515      if (!defaultKeys.length) return;
35516      const storeState = store.getState();
35517      if (!defaultKeys.filter((key) => hasOwnProperty(storeState, key)).length) return;
35518      throw new Error(`Passing a store prop in conjunction with a default state is not supported.
35519  
35520  const store = useSelectStore();
35521  <SelectProvider store={store} defaultValue="Apple" />
35522                  ^             ^
35523  
35524  Instead, pass the default state to the topmost store:
35525  
35526  const store = useSelectStore({ defaultValue: "Apple" });
35527  <SelectProvider store={store} />
35528  
35529  See https://github.com/ariakit/ariakit/pull/2745 for more details.
35530  
35531  If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit
35532  `);
35533    }
35534  
35535    // node_modules/@ariakit/components/dist/collection/collection-store.js
35536    function getCommonParent(items) {
35537      const firstItem = items.find((item) => !!item.element);
35538      const lastElement = [...items].reverse().find((item) => !!item.element)?.element;
35539      let parentElement = firstItem?.element?.parentElement;
35540      if (!lastElement) return getDocument(parentElement).body;
35541      while (parentElement) {
35542        if (parentElement.contains(lastElement)) return parentElement;
35543        parentElement = parentElement.parentElement;
35544      }
35545      return getDocument(parentElement).body;
35546    }
35547    function getPrivateStore(store) {
35548      return store?.__unstablePrivateStore;
35549    }
35550    var itemIdCacheThreshold = 64;
35551    function getCachedItemIds(items, cache) {
35552      if (items.length < itemIdCacheThreshold) {
35553        if (cache.ids) {
35554          cache.items = void 0;
35555          cache.ids = void 0;
35556        }
35557        return;
35558      }
35559      if (cache.items === items) return cache.ids;
35560      const ids = /* @__PURE__ */ new Set();
35561      for (const item of items) ids.add(item.id);
35562      cache.items = items;
35563      cache.ids = ids;
35564      return ids;
35565    }
35566    function setCachedItemIds(items, cache, ids) {
35567      if (items.length < itemIdCacheThreshold) {
35568        if (cache.ids) {
35569          cache.items = void 0;
35570          cache.ids = void 0;
35571        }
35572        return;
35573      }
35574      if (!ids) {
35575        ids = /* @__PURE__ */ new Set();
35576        for (const item of items) ids.add(item.id);
35577      }
35578      cache.items = items;
35579      cache.ids = ids;
35580    }
35581    function createCollectionStore(props = {}) {
35582      throwOnConflictingProps(props, props.store);
35583      const syncState = props.store?.getState();
35584      const items = defaultValue(props.items, syncState?.items, props.defaultItems, []);
35585      const syncPrivateStore = getPrivateStore(props.store);
35586      const collectionLookup = syncPrivateStore?.__unstableCollectionLookup ?? {
35587        controlledItems: new Map(items.map((item) => [item.id, item])),
35588        registeredItems: /* @__PURE__ */ new Map(),
35589        controlledItemsSource: items,
35590        propagatedItems: items
35591      };
35592      const { controlledItems, registeredItems } = collectionLookup;
35593      const itemIdCache = {};
35594      const renderedItemIdCache = {};
35595      const initialState = {
35596        items,
35597        renderedItems: defaultValue(syncState?.renderedItems, [])
35598      };
35599      const collection = createStore(initialState, props.store);
35600      const privateStore = Object.assign(createStore({
35601        items,
35602        renderedItems: initialState.renderedItems
35603      }, syncPrivateStore), { __unstableCollectionLookup: collectionLookup });
35604      const sortItems = (renderedItems) => {
35605        const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element);
35606        privateStore.setState("renderedItems", sortedItems);
35607        collection.setState("renderedItems", sortedItems);
35608      };
35609      const indexControlledItems = (items2) => {
35610        if (items2 === collectionLookup.controlledItemsSource) return;
35611        collectionLookup.controlledItemsSource = items2;
35612        controlledItems.clear();
35613        for (const item of items2) controlledItems.set(item.id, item);
35614      };
35615      const setState = (key, value) => {
35616        if (key !== "items") {
35617          collection.setState(key, value);
35618          return;
35619        }
35620        collection.setState("items", (items2) => {
35621          const nextItems = applyState(value, items2);
35622          if (nextItems === items2) return items2;
35623          collectionLookup.propagatedItems = nextItems;
35624          indexControlledItems(nextItems);
35625          return nextItems;
35626        });
35627      };
35628      setup(collection, () => init(privateStore));
35629      if (!syncPrivateStore) {
35630        subscribe(collection, ["items"], ({ items: items2 }) => {
35631          if (items2 === collectionLookup.propagatedItems) return;
35632          collectionLookup.propagatedItems = items2;
35633          indexControlledItems(items2);
35634        });
35635        setup(privateStore, () => {
35636          return batch(privateStore, ["items"], ({ items: items2 }) => {
35637            collectionLookup.propagatedItems = items2;
35638            collection.setState("items", items2);
35639          });
35640        });
35641      }
35642      setup(privateStore, () => {
35643        return batch(privateStore, ["renderedItems"], (state) => {
35644          let firstRun = true;
35645          let raf = requestAnimationFrame(() => {
35646            const { renderedItems } = collection.getState();
35647            if (state.renderedItems === renderedItems) return;
35648            sortItems(state.renderedItems);
35649          });
35650          if (typeof IntersectionObserver !== "function") return () => cancelAnimationFrame(raf);
35651          const ioCallback = () => {
35652            if (firstRun) {
35653              firstRun = false;
35654              return;
35655            }
35656            cancelAnimationFrame(raf);
35657            raf = requestAnimationFrame(() => sortItems(state.renderedItems));
35658          };
35659          const root = getCommonParent(state.renderedItems);
35660          const observer = new IntersectionObserver(ioCallback, { root });
35661          for (const item of state.renderedItems) {
35662            if (!item.element) continue;
35663            observer.observe(item.element);
35664          }
35665          return () => {
35666            cancelAnimationFrame(raf);
35667            observer.disconnect();
35668          };
35669        });
35670      });
35671      const createMergeItem = (key, cache, lookup) => {
35672        const registeredItems2 = lookup?.registeredItems;
35673        const controlledItems2 = lookup?.controlledItems;
35674        return (item) => {
35675          const previousRegisteredItem = registeredItems2?.get(item.id);
35676          const wasKnown = !!previousRegisteredItem || !!controlledItems2?.has(item.id);
35677          let prevItem;
35678          privateStore.setState(key, (items2) => {
35679            const ids = !!cache.ids || items2.length >= itemIdCacheThreshold && !wasKnown ? getCachedItemIds(items2, cache) : void 0;
35680            const index2 = ids && !ids.has(item.id) ? -1 : items2.findIndex(({ id }) => id === item.id);
35681            const nextItems = items2.slice();
35682            if (index2 !== -1) {
35683              prevItem = items2[index2];
35684              const nextItem = {
35685                ...prevItem,
35686                ...item
35687              };
35688              nextItems[index2] = nextItem;
35689              registeredItems2?.set(item.id, nextItem);
35690            } else {
35691              nextItems.push(item);
35692              registeredItems2?.set(item.id, item);
35693              ids?.add(item.id);
35694            }
35695            if (cache.ids || index2 === -1 && nextItems.length >= itemIdCacheThreshold) setCachedItemIds(nextItems, cache, ids);
35696            return nextItems;
35697          });
35698          const unmergeItem = () => {
35699            if (registeredItems2) {
35700              if (previousRegisteredItem) registeredItems2.set(item.id, previousRegisteredItem);
35701              else registeredItems2.delete(item.id);
35702            }
35703            privateStore.setState(key, (items2) => {
35704              const ids = cache.ids ? getCachedItemIds(items2, cache) : void 0;
35705              if (!prevItem) {
35706                const nextItems2 = items2.filter(({ id }) => id !== item.id);
35707                ids?.delete(item.id);
35708                if (cache.ids) setCachedItemIds(nextItems2, cache, ids);
35709                return nextItems2;
35710              }
35711              const index2 = items2.findIndex(({ id }) => id === item.id);
35712              if (index2 === -1) return items2;
35713              const nextItems = items2.slice();
35714              nextItems[index2] = prevItem;
35715              if (cache.ids) setCachedItemIds(nextItems, cache, ids);
35716              return nextItems;
35717            });
35718          };
35719          return unmergeItem;
35720        };
35721      };
35722      const registerItem = createMergeItem("items", itemIdCache, collectionLookup);
35723      const mergeRenderedItem = createMergeItem("renderedItems", renderedItemIdCache);
35724      return {
35725        ...collection,
35726        setState,
35727        registerItem,
35728        renderItem: (item) => chain(registerItem(item), mergeRenderedItem(item)),
35729        item: (id) => {
35730          if (!id) return null;
35731          if (!registeredItems.size) return controlledItems.get(id) ?? null;
35732          return registeredItems.get(id) ?? controlledItems.get(id) ?? null;
35733        },
35734        __unstablePrivateStore: privateStore
35735      };
35736    }
35737  
35738    // node_modules/@ariakit/components/dist/composite/composite-store.js
35739    var NULL_ITEM = { id: null };
35740    function findFirstEnabledItem(items, excludeId) {
35741      return items.find((item) => {
35742        if (excludeId) return !item.disabled && item.id !== excludeId;
35743        return !item.disabled;
35744      });
35745    }
35746    function findLastEnabledItem(items) {
35747      for (let i2 = items.length - 1; i2 >= 0; i2 -= 1) {
35748        const item = items[i2];
35749        if (!item) continue;
35750        if (item.disabled) continue;
35751        return item;
35752      }
35753    }
35754    function getEnabledItems(items, excludeId) {
35755      return items.filter((item) => {
35756        if (excludeId) return !item.disabled && item.id !== excludeId;
35757        return !item.disabled;
35758      });
35759    }
35760    function getItemsInRow(items, rowId) {
35761      return items.filter((item) => item.rowId === rowId);
35762    }
35763    function findEnabledItemId({ items, fromIndex, step, rowId, excludeId }) {
35764      for (let i2 = fromIndex; i2 >= 0 && i2 < items.length; i2 += step) {
35765        const item = items[i2];
35766        if (!item) continue;
35767        if (item.rowId !== rowId) continue;
35768        if (item.disabled) continue;
35769        const itemId = item.id;
35770        if (excludeId != null && itemId === excludeId) continue;
35771        return itemId;
35772      }
35773    }
35774    function flipItems(items, activeId, shouldInsertNullItem = false) {
35775      const index2 = items.findIndex((item) => item.id === activeId);
35776      return [
35777        ...items.slice(index2 + 1),
35778        ...shouldInsertNullItem ? [NULL_ITEM] : [],
35779        ...items.slice(0, index2)
35780      ];
35781    }
35782    var rowMapItemThreshold = 48;
35783    var rowMapRowThreshold = 4;
35784    function groupSmallItemsByRows(items) {
35785      const rows = [];
35786      let previousRow;
35787      let previousRowId;
35788      for (const item of items) {
35789        const rowId = item.rowId;
35790        if (previousRow && previousRowId === rowId) {
35791          previousRow.push(item);
35792          continue;
35793        }
35794        const row = rows.find((currentRow) => currentRow[0]?.rowId === rowId);
35795        if (row) {
35796          row.push(item);
35797          previousRow = row;
35798        } else {
35799          previousRow = [item];
35800          rows.push(previousRow);
35801        }
35802        previousRowId = rowId;
35803      }
35804      return rows;
35805    }
35806    function groupLargeItemsByRows(items) {
35807      const firstItem = items[0];
35808      if (!firstItem) return [];
35809      let itemIndex = 1;
35810      while (itemIndex < items.length && items[itemIndex]?.rowId === firstItem.rowId) itemIndex += 1;
35811      const firstRow = items.slice(0, itemIndex);
35812      if (itemIndex === items.length) return [firstRow];
35813      const rows = [firstRow];
35814      let rowsById;
35815      for (; itemIndex < items.length; itemIndex += 1) {
35816        const item = items[itemIndex];
35817        if (!item) continue;
35818        const row = rowsById ? rowsById.get(item.rowId) : rows.find((currentRow) => currentRow[0]?.rowId === item.rowId);
35819        if (row) {
35820          row.push(item);
35821          continue;
35822        }
35823        const newRow = [item];
35824        rows.push(newRow);
35825        if (rowsById) rowsById.set(item.rowId, newRow);
35826        else if (rows.length === rowMapRowThreshold) rowsById = new Map(rows.map((currentRow) => [currentRow[0]?.rowId, currentRow]));
35827      }
35828      return rows;
35829    }
35830    function groupItemsByRows(items) {
35831      if (items.length >= rowMapItemThreshold) return groupLargeItemsByRows(items);
35832      return groupSmallItemsByRows(items);
35833    }
35834    function getMaxRowLength(array) {
35835      let maxLength = 0;
35836      for (const { length } of array) if (length > maxLength) maxLength = length;
35837      return maxLength;
35838    }
35839    function createEmptyItem(rowId) {
35840      return {
35841        id: "__EMPTY_ITEM__",
35842        disabled: true,
35843        rowId
35844      };
35845    }
35846    function normalizeRows(rows, activeId, focusShift) {
35847      const maxLength = getMaxRowLength(rows);
35848      for (const row of rows) for (let i2 = 0; i2 < maxLength; i2 += 1) {
35849        const item = row[i2];
35850        if (!item || focusShift && item.disabled) {
35851          const previousItem = i2 === 0 && focusShift ? findFirstEnabledItem(row) : row[i2 - 1];
35852          row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem?.rowId);
35853        }
35854      }
35855      return rows;
35856    }
35857    function verticalizeItems(items) {
35858      const rows = groupItemsByRows(items);
35859      const maxLength = getMaxRowLength(rows);
35860      const verticalized = [];
35861      for (let i2 = 0; i2 < maxLength; i2 += 1) for (const row of rows) {
35862        const item = row[i2];
35863        if (item) verticalized.push({
35864          ...item,
35865          rowId: item.rowId ? `$i2}` : void 0
35866        });
35867      }
35868      return verticalized;
35869    }
35870    function createCompositeStore(props = {}) {
35871      const syncState = props.store?.getState();
35872      const collection = createCollectionStore(props);
35873      const activeId = defaultValue(props.activeId, syncState?.activeId, props.defaultActiveId);
35874      const compositeElement = defaultValue(syncState?.compositeElement, syncState?.baseElement, null);
35875      const compositeElementInFocusOrder = defaultValue(props.compositeElementInFocusOrder, props.includesBaseElement, syncState?.compositeElementInFocusOrder, syncState?.includesBaseElement, activeId === null);
35876      const initialState = {
35877        ...collection.getState(),
35878        id: defaultValue(props.id, syncState?.id) ?? `id-$Math.random().toString(36).slice(2, 8)}`,
35879        activeId,
35880        compositeElement,
35881        baseElement: compositeElement,
35882        compositeElementInFocusOrder,
35883        includesBaseElement: compositeElementInFocusOrder,
35884        moves: defaultValue(syncState?.moves, 0),
35885        orientation: defaultValue(props.orientation, syncState?.orientation, "both"),
35886        rtl: defaultValue(props.rtl, syncState?.rtl, false),
35887        virtualFocus: defaultValue(props.virtualFocus, syncState?.virtualFocus, false),
35888        focusLoop: defaultValue(props.focusLoop, syncState?.focusLoop, false),
35889        focusWrap: defaultValue(props.focusWrap, syncState?.focusWrap, false),
35890        focusShift: defaultValue(props.focusShift, syncState?.focusShift, false)
35891      };
35892      const composite = createStore(initialState, collection, props.store);
35893      setup(composite, () => chain(sync(composite, ["compositeElement"], (state) => {
35894        composite.setState("baseElement", state.compositeElement);
35895      }), sync(composite, ["baseElement"], (state) => {
35896        composite.setState("compositeElement", state.baseElement);
35897      }), sync(composite, ["compositeElementInFocusOrder"], (state) => {
35898        composite.setState("includesBaseElement", state.compositeElementInFocusOrder);
35899      }), sync(composite, ["includesBaseElement"], (state) => {
35900        composite.setState("compositeElementInFocusOrder", state.includesBaseElement);
35901      })));
35902      setup(composite, () => sync(composite, ["renderedItems", "activeId"], (state) => {
35903        composite.setState("activeId", (activeId2) => {
35904          if (activeId2 !== void 0) return activeId2;
35905          return findFirstEnabledItem(state.renderedItems)?.id;
35906        });
35907      }));
35908      const getNextId = (direction = "next", options = {}) => {
35909        const defaultState = composite.getState();
35910        const compositeElementInFocusOrder2 = defaultValue(options.compositeElementInFocusOrder, options.includesBaseElement, defaultState.compositeElementInFocusOrder);
35911        const { skip = 0, activeId: activeId2 = defaultState.activeId, focusShift = defaultState.focusShift, focusLoop = defaultState.focusLoop, focusWrap = defaultState.focusWrap, renderedItems = defaultState.renderedItems, rtl = defaultState.rtl } = options;
35912        const isVerticalDirection = direction === "up" || direction === "down";
35913        const isNextDirection = direction === "next" || direction === "down";
35914        const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection;
35915        const canShift = focusShift && !skip;
35916        if (!skip && !focusWrap && !compositeElementInFocusOrder2 && activeId2 != null) {
35917          if (!isVerticalDirection ? true : !canShift && !renderedItems.some((item) => item.rowId != null)) {
35918            let activeIndex2 = -1;
35919            if (renderedItems === defaultState.renderedItems) {
35920              const firstItem = renderedItems[0];
35921              if (firstItem && collection.item(firstItem.id) === firstItem) {
35922                const registeredItem = collection.item(activeId2);
35923                if (registeredItem?.id === activeId2) activeIndex2 = renderedItems.indexOf(registeredItem);
35924              }
35925            }
35926            if (activeIndex2 === -1) activeIndex2 = renderedItems.findIndex((item) => item.id === activeId2);
35927            const activeItem2 = renderedItems[activeIndex2];
35928            if (activeItem2) {
35929              const step = canReverse ? -1 : 1;
35930              const nextId = findEnabledItemId({
35931                items: renderedItems,
35932                fromIndex: activeIndex2 + step,
35933                step,
35934                rowId: activeItem2.rowId,
35935                excludeId: activeId2
35936              });
35937              if (nextId !== void 0) return nextId;
35938              if (!(focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"))) return void 0;
35939              return findEnabledItemId({
35940                items: renderedItems,
35941                fromIndex: step === 1 ? 0 : renderedItems.length - 1,
35942                step,
35943                rowId: activeItem2.rowId,
35944                excludeId: activeId2
35945              });
35946            }
35947          }
35948        }
35949        let items = !isVerticalDirection ? renderedItems : flatten2DArray(normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift));
35950        items = canReverse ? reverseArray(items) : items;
35951        items = isVerticalDirection ? verticalizeItems(items) : items;
35952        if (activeId2 == null) return findFirstEnabledItem(items)?.id;
35953        const activeItem = items.find((item) => item.id === activeId2);
35954        if (!activeItem) return findFirstEnabledItem(items)?.id;
35955        const isGrid2 = items.some((item) => item.rowId);
35956        const activeIndex = items.indexOf(activeItem);
35957        const nextItems = items.slice(activeIndex + 1);
35958        const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId);
35959        if (skip) {
35960          const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2);
35961          return (nextEnabledItemsInRow.slice(skip)[0] || nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1])?.id;
35962        }
35963        const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical");
35964        const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical");
35965        const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && compositeElementInFocusOrder2 : isVerticalDirection ? compositeElementInFocusOrder2 : false;
35966        if (canLoop) return findFirstEnabledItem(flipItems(canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId), activeId2, hasNullItem), activeId2)?.id;
35967        if (canWrap) {
35968          const nextItem2 = findFirstEnabledItem(hasNullItem ? nextItemsInRow : nextItems, activeId2);
35969          return hasNullItem ? nextItem2?.id || null : nextItem2?.id;
35970        }
35971        const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2);
35972        if (!nextItem && hasNullItem) return null;
35973        return nextItem?.id;
35974      };
35975      const getNextIdFromOptions = (direction, options) => {
35976        if (typeof options === "number") return getNextId(direction, { skip: options });
35977        return getNextId(direction, options);
35978      };
35979      return {
35980        ...collection,
35981        ...composite,
35982        setCompositeElement: (element) => composite.setState("compositeElement", element),
35983        setBaseElement: (element) => composite.setState("compositeElement", element),
35984        setActiveId: (id) => composite.setState("activeId", id),
35985        move: (id) => {
35986          if (id === void 0) return;
35987          composite.setState("activeId", id);
35988          composite.setState("moves", (moves) => moves + 1);
35989        },
35990        first: () => findFirstEnabledItem(composite.getState().renderedItems)?.id,
35991        last: () => findLastEnabledItem(composite.getState().renderedItems)?.id,
35992        next: (options) => getNextIdFromOptions("next", options),
35993        previous: (options) => getNextIdFromOptions("previous", options),
35994        down: (options) => getNextIdFromOptions("down", options),
35995        up: (options) => getNextIdFromOptions("up", options)
35996      };
35997    }
35998  
35999    // node_modules/@ariakit/react-components/dist/composite/utils.js
36000    var findFirstEnabledItem2 = findFirstEnabledItem;
36001    var groupItemsByRows2 = groupItemsByRows;
36002    var unmountingItems = /* @__PURE__ */ new WeakSet();
36003    function markItemUnmounting(element) {
36004      if (getActiveElement(element) !== element) return;
36005      unmountingItems.add(element);
36006      queueMicrotask(() => unmountingItems.delete(element));
36007    }
36008    function markItemMounted(element) {
36009      unmountingItems.delete(element);
36010    }
36011    function withCompositeScrollPreserved(store, callback) {
36012      const { virtualFocus, compositeElement } = store.getState();
36013      if (!virtualFocus || !compositeElement || !isTextField(compositeElement)) {
36014        callback();
36015        return;
36016      }
36017      const savedScrollLeft = compositeElement.scrollLeft;
36018      const savedScrollTop = compositeElement.scrollTop;
36019      callback();
36020      compositeElement.scrollLeft = savedScrollLeft;
36021      compositeElement.scrollTop = savedScrollTop;
36022    }
36023    function getPopupElement(store) {
36024      const state = store.getState();
36025      if (!("contentElement" in state)) return null;
36026      return state.contentElement;
36027    }
36028    function ownsFocus(store) {
36029      const { compositeElement } = store.getState();
36030      const activeElement2 = getActiveElement(compositeElement);
36031      if (!activeElement2) return false;
36032      if (compositeElement?.contains(activeElement2)) return true;
36033      if (isItem(store, activeElement2)) return true;
36034      return !!getPopupElement(store)?.contains(activeElement2);
36035    }
36036    function presentItem({ store, id, focus, markedOnly, requireFocus, scrollIntoView }) {
36037      let element = null;
36038      let resolvedId;
36039      let focused = false;
36040      let focusLeftElement = false;
36041      let done = false;
36042      let wasMounted = false;
36043      let wasOpen = false;
36044      const compositeAtStart = store.getState().compositeElement;
36045      const activeAtStart = getActiveElement(compositeAtStart);
36046      const owner = requireFocus ? activeAtStart : null;
36047      const startedOnComposite = !!compositeAtStart?.contains(activeAtStart);
36048      const stillOwnsFocus = (target) => {
36049        if (!owner) return true;
36050        const activeElement2 = getActiveElement(owner);
36051        if (activeElement2 === owner) return true;
36052        if (activeElement2 === target) return true;
36053        return ownsFocus(store);
36054      };
36055      const abandonedByState = (state) => {
36056        if ("mounted" in state) {
36057          if (state.mounted) wasMounted = true;
36058          else if (wasMounted) return true;
36059        }
36060        if ("open" in state) {
36061          if (state.open) wasOpen = true;
36062          else if (wasOpen) return true;
36063        }
36064        return id != null && state.activeId != null && state.activeId !== id;
36065      };
36066      const entersClosedPopup = (state, target) => {
36067        if (!("open" in state)) return false;
36068        if (state.open) return false;
36069        const popup = getPopupElement(store);
36070        if (!popup?.contains(target)) return false;
36071        const { compositeElement } = state;
36072        if (!compositeElement) return false;
36073        if (popup.contains(compositeElement)) return false;
36074        return isVisible(target);
36075      };
36076      const resolveElement = (state) => {
36077        const item = getEnabledItem(store, resolvedId ?? (id === void 0 ? state.activeId : id));
36078        if (!item?.element?.isConnected) return null;
36079        resolvedId = item.id;
36080        return item.element;
36081      };
36082      let removeFocusListeners;
36083      let unsubscribe;
36084      const cancel = () => {
36085        done = true;
36086        removeFocusListeners?.();
36087        unsubscribe?.();
36088      };
36089      const present = () => {
36090        if (done) return;
36091        const state = store.getState();
36092        if (abandonedByState(state)) return cancel();
36093        let restoreFocus = false;
36094        if (!element) {
36095          element = resolveElement(state);
36096          if (!element) return;
36097        } else if (!element.isConnected) {
36098          restoreFocus = focused && !focusLeftElement && getActiveElement(element) === getDocument(element).body;
36099          element = resolveElement(state);
36100          if (!element) return cancel();
36101        }
36102        if (restoreFocus) focused = false;
36103        else if (!stillOwnsFocus(element)) return cancel();
36104        const focusWithheld = focus && startedOnComposite && entersClosedPopup(state, element);
36105        if (focusWithheld) {
36106          const { activeId } = state;
36107          if (activeId != null && activeId !== resolvedId) return cancel();
36108        }
36109        if (focus && !focused && !focusWithheld) {
36110          focused = true;
36111          focusLeftElement = false;
36112          const itemElement = element;
36113          removeFocusListeners?.();
36114          const onBlur = () => {
36115            focusLeftElement = !unmountingItems.has(itemElement);
36116          };
36117          const onFocus = () => {
36118            focusLeftElement = false;
36119          };
36120          itemElement.addEventListener("blur", onBlur);
36121          itemElement.addEventListener("focus", onFocus);
36122          removeFocusListeners = () => {
36123            itemElement.removeEventListener("blur", onBlur);
36124            itemElement.removeEventListener("focus", onFocus);
36125          };
36126          withCompositeScrollPreserved(store, () => {
36127            itemElement.focus({ preventScroll: true });
36128          });
36129          if (done) return;
36130        }
36131        if (markedOnly && !element.hasAttribute("data-autofocus")) {
36132          if (focusWithheld) return;
36133          return cancel();
36134        }
36135        if (!isVisible(element)) return;
36136        if ("unstable_placing" in state && state.unstable_placing) return;
36137        if (!focusWithheld) cancel();
36138        if (scrollIntoView) {
36139          scrollIntoView(element);
36140          return;
36141        }
36142        element.scrollIntoView({
36143          block: "nearest",
36144          inline: "nearest"
36145        });
36146      };
36147      unsubscribe = subscribe(store, [
36148        "activeId",
36149        "items",
36150        "mounted",
36151        "open",
36152        "unstable_placing"
36153      ], present);
36154      present();
36155      return cancel;
36156    }
36157    function usePresentItem(store) {
36158      const cancelRef = (0, import_react52.useRef)(null);
36159      const ownerRef = (0, import_react52.useRef)(store);
36160      const cancel = (0, import_react52.useCallback)(() => {
36161        cancelRef.current?.();
36162        cancelRef.current = null;
36163      }, []);
36164      const present = (0, import_react52.useCallback)((params) => {
36165        if (!store) return;
36166        if (ownerRef.current !== store) return;
36167        cancel();
36168        const cancelCurrent = presentItem({
36169          store,
36170          ...params
36171        });
36172        cancelRef.current = cancelCurrent;
36173        return cancelCurrent;
36174      }, [store, cancel]);
36175      useSafeLayoutEffect(() => {
36176        ownerRef.current = store;
36177        return () => {
36178          ownerRef.current = void 0;
36179          cancel();
36180        };
36181      }, [store, cancel]);
36182      return present;
36183    }
36184    function getEnabledItem(store, id) {
36185      if (!id) return null;
36186      return store.item(id) || null;
36187    }
36188    function selectTextField(element, collapseToEnd = false) {
36189      if (isTextField(element)) element.setSelectionRange(collapseToEnd ? element.value.length : 0, element.value.length);
36190      else if (element.isContentEditable) {
36191        const selection = getDocument(element).getSelection();
36192        selection?.selectAllChildren(element);
36193        if (collapseToEnd) selection?.collapseToEnd();
36194      }
36195    }
36196    var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY");
36197    function focusSilently(element) {
36198      element[FOCUS_SILENTLY] = true;
36199      element.focus({ preventScroll: true });
36200    }
36201    function silentlyFocused(element) {
36202      const isSilentlyFocused = element[FOCUS_SILENTLY];
36203      delete element[FOCUS_SILENTLY];
36204      return isSilentlyFocused;
36205    }
36206    function isItem(store, element, exclude) {
36207      if (!element) return false;
36208      if (element === exclude) return false;
36209      const item = store.item(element.id);
36210      if (!item) return false;
36211      if (exclude && item.element === exclude) return false;
36212      return true;
36213    }
36214  
36215    // node_modules/@ariakit/react-components/dist/composite/composite-item.js
36216    var import_react53 = __toESM(require_react(), 1);
36217    var import_jsx_runtime143 = __toESM(require_jsx_runtime(), 1);
36218  
36219    // node_modules/@ariakit/react-store/dist/index.js
36220    var React146 = __toESM(require_react(), 1);
36221    var import_shim3 = __toESM(require_shim(), 1);
36222    var noopSubscribe = () => () => {
36223    };
36224    function isStoreKeyArray(value) {
36225      return Array.isArray(value);
36226    }
36227    function isSameValue2(value, other) {
36228      return value === other || value !== value && other !== other;
36229    }
36230    function hasSameStoreKeys(keys, otherKeys) {
36231      if (keys?.length !== otherKeys.length) return false;
36232      for (let index2 = 0; index2 < keys.length; index2 += 1) {
36233        const key = keys[index2];
36234        if (key === void 0) return false;
36235        if (isSameValue2(key, otherKeys[index2])) continue;
36236        return false;
36237      }
36238      return true;
36239    }
36240    function useStableStoreKeys(keys) {
36241      const keysRef = React146.useRef(null);
36242      const currentKeys = keysRef.current;
36243      if (keys === null) {
36244        keysRef.current = null;
36245        return null;
36246      }
36247      if (hasSameStoreKeys(currentKeys, keys)) return currentKeys;
36248      const nextKeys = [...keys];
36249      keysRef.current = nextKeys;
36250      return nextKeys;
36251    }
36252    function useStoreState(store, keyOrKeysOrSelector = identity, selector2) {
36253      const subscriptionKeys = useStableStoreKeys(isStoreKeyArray(keyOrKeysOrSelector) ? keyOrKeysOrSelector : typeof keyOrKeysOrSelector === "function" ? null : [keyOrKeysOrSelector]);
36254      const storeSubscribe = React146.useCallback((callback) => {
36255        if (!store) return noopSubscribe();
36256        if (subscriptionKeys?.length === 0) return noopSubscribe();
36257        return subscribe(store, subscriptionKeys, callback);
36258      }, [store, subscriptionKeys]);
36259      const getSnapshot = () => {
36260        const state = store?.getState();
36261        if (isStoreKeyArray(keyOrKeysOrSelector)) return selector2?.(state);
36262        if (typeof keyOrKeysOrSelector === "function") return keyOrKeysOrSelector(state);
36263        if (!state) return;
36264        if (!hasOwnProperty(state, keyOrKeysOrSelector)) return;
36265        return state[keyOrKeysOrSelector];
36266      };
36267      return (0, import_shim3.useSyncExternalStore)(storeSubscribe, getSnapshot, getSnapshot);
36268    }
36269    function getStoreStateObjectKeys(object, selectorKeys) {
36270      const keys = [];
36271      let hasSelector = false;
36272      for (const prop in object) {
36273        const keyOrSelector = object[prop];
36274        if (keyOrSelector === void 0) continue;
36275        if (typeof keyOrSelector === "function") {
36276          hasSelector = true;
36277          continue;
36278        }
36279        if (keys.includes(keyOrSelector)) continue;
36280        keys.push(keyOrSelector);
36281      }
36282      if (!hasSelector) return keys;
36283      if (!selectorKeys) return null;
36284      for (const key of selectorKeys) {
36285        if (keys.includes(key)) continue;
36286        keys.push(key);
36287      }
36288      return keys;
36289    }
36290    function useStoreStateObject(store, objectOrKeys, object) {
36291      const stateObject = isStoreKeyArray(objectOrKeys) ? object ?? {} : objectOrKeys;
36292      const selectorKeys = isStoreKeyArray(objectOrKeys) ? objectOrKeys : void 0;
36293      const objRef = React146.useRef({});
36294      const subscriptionKeys = useStableStoreKeys(getStoreStateObjectKeys(stateObject, selectorKeys));
36295      const storeSubscribe = React146.useCallback((callback) => {
36296        if (!store) return noopSubscribe();
36297        if (subscriptionKeys?.length === 0) return noopSubscribe();
36298        return subscribe(store, subscriptionKeys, callback);
36299      }, [store, subscriptionKeys]);
36300      const getSnapshot = () => {
36301        const state = store?.getState();
36302        let updated = false;
36303        const obj = objRef.current;
36304        for (const prop in stateObject) {
36305          const keyOrSelector = stateObject[prop];
36306          if (keyOrSelector === void 0) continue;
36307          if (typeof keyOrSelector === "function") {
36308            const value2 = keyOrSelector(state);
36309            if (!Object.is(value2, obj[prop])) {
36310              obj[prop] = value2;
36311              updated = true;
36312            }
36313          }
36314          if (typeof keyOrSelector === "function") continue;
36315          const value = state && hasOwnProperty(state, keyOrSelector) ? state[keyOrSelector] : void 0;
36316          if (!Object.is(value, obj[prop])) {
36317            obj[prop] = value;
36318            updated = true;
36319          }
36320        }
36321        if (updated) objRef.current = { ...obj };
36322        return objRef.current;
36323      };
36324      return (0, import_shim3.useSyncExternalStore)(storeSubscribe, getSnapshot, getSnapshot);
36325    }
36326    function useStoreProps(store, props, key, setKey) {
36327      const value = hasOwnProperty(props, key) ? props[key] : void 0;
36328      const setValue = setKey ? props[setKey] : void 0;
36329      const hasSetValue = !!setValue;
36330      const propsRef = useLiveRef({
36331        value,
36332        setValue
36333      });
36334      useSafeLayoutEffect(() => {
36335        if (!hasSetValue) return;
36336        return subscribe(store, [key], (state, prev) => {
36337          const { value: value2, setValue: setValue2 } = propsRef.current;
36338          if (!setValue2) return;
36339          if (isSameValue2(state[key], prev[key])) return;
36340          if (isSameValue2(state[key], value2)) return;
36341          setValue2(state[key]);
36342        });
36343      }, [
36344        store,
36345        key,
36346        hasSetValue
36347      ]);
36348      useSafeLayoutEffect(() => {
36349        if (value === void 0) return;
36350        store.setState(key, value);
36351        return batch(store, [key], () => {
36352          if (value === void 0) return;
36353          store.setState(key, value);
36354        });
36355      });
36356    }
36357    function useStore2(createStore2, props) {
36358      const [store, setStore] = React146.useState(() => createStore2(props));
36359      useSafeLayoutEffect(() => init(store), [store]);
36360      const useState58 = React146.useCallback((keyOrSelector) => useStoreState(store, keyOrSelector), [store]);
36361      return [React146.useMemo(() => ({
36362        ...store,
36363        useState: useState58
36364      }), [store, useState58]), useEvent(() => {
36365        setStore((store2) => createStore2({
36366          ...props,
36367          ...store2.getState()
36368        }));
36369      })];
36370    }
36371  
36372    // node_modules/@ariakit/react-components/dist/composite/composite-item.js
36373    var TagName4 = "button";
36374    function isEditableElement(element) {
36375      if (isTextbox(element)) return true;
36376      return element.tagName === "INPUT" && !isButton(element);
36377    }
36378    function getNextPageOffset(scrollingElement, pageUp = false) {
36379      const height = scrollingElement.clientHeight;
36380      const { top } = scrollingElement.getBoundingClientRect();
36381      const pageSize = Math.max(height * 0.875, height - 40) * 1.5;
36382      const pageOffset = pageUp ? height - pageSize + top : pageSize + top;
36383      if (scrollingElement.tagName === "HTML") return pageOffset + scrollingElement.scrollTop;
36384      return pageOffset;
36385    }
36386    function getItemOffset(itemElement, pageUp = false) {
36387      const { top } = itemElement.getBoundingClientRect();
36388      if (pageUp) return top + itemElement.clientHeight;
36389      return top;
36390    }
36391    function findNextPageItemId(element, store, next, pageUp = false) {
36392      if (!store) return;
36393      if (!next) return;
36394      const { renderedItems } = store.getState();
36395      const scrollingElement = getScrollingElement(element);
36396      if (!scrollingElement) return;
36397      const nextPageOffset = getNextPageOffset(scrollingElement, pageUp);
36398      let id;
36399      let prevDifference;
36400      for (let i2 = 0; i2 < renderedItems.length; i2 += 1) {
36401        const previousId = id;
36402        id = next(i2);
36403        if (!id) break;
36404        if (id === previousId) continue;
36405        const itemElement = getEnabledItem(store, id)?.element;
36406        if (!itemElement) continue;
36407        const difference = getItemOffset(itemElement, pageUp) - nextPageOffset;
36408        const absDifference = Math.abs(difference);
36409        if (pageUp && difference <= 0 || !pageUp && difference >= 0) {
36410          if (prevDifference !== void 0 && prevDifference < absDifference) id = previousId;
36411          break;
36412        }
36413        prevDifference = absDifference;
36414      }
36415      return id;
36416    }
36417    function targetIsAnotherItem(event, store) {
36418      if (isSelfTarget(event)) return false;
36419      return isItem(store, event.target);
36420    }
36421    var useCompositeItem2 = createHook(function useCompositeItem3({ store, rowId: rowIdProp, preventScrollOnKeyDown = false, moveOnKeyPress = true, tabbable: tabbable2 = false, getItem: getItemProp, typeaheadText, "aria-setsize": ariaSetSizeProp, "aria-posinset": ariaPosInSetProp, unstable_scrollIntoView: scrollIntoView, ...props }) {
36422      const context = useCompositeScopedContext();
36423      store = store || context;
36424      const id = useId7(props.id);
36425      const ref = (0, import_react53.useRef)(null);
36426      const mountedElementRef = (0, import_react53.useRef)(null);
36427      const markUnmountingRef = (0, import_react53.useCallback)((element) => {
36428        const mountedElement = mountedElementRef.current;
36429        if (!element && mountedElement) markItemUnmounting(mountedElement);
36430        if (element) markItemMounted(element);
36431        mountedElementRef.current = element;
36432      }, []);
36433      const row = (0, import_react53.useContext)(CompositeRowContext);
36434      const trulyDisabled = disabledFromProps(props) && !props.accessibleWhenDisabled;
36435      const shouldRegisterItem = props.shouldRegisterItem;
36436      const getRowId = (state) => {
36437        if (rowIdProp) return rowIdProp;
36438        if (!state) return;
36439        if (!row?.compositeElement) return;
36440        if (row.compositeElement !== state.compositeElement) return;
36441        return row.id;
36442      };
36443      const { rowId, compositeElement, ariaSetSize, ariaPosInSet } = useStoreStateObject(store, ["compositeElement", "renderedItems"], {
36444        rowId: getRowId,
36445        compositeElement(state) {
36446          return state?.compositeElement || void 0;
36447        },
36448        ariaSetSize(state) {
36449          if (ariaSetSizeProp != null) return ariaSetSizeProp;
36450          if (!state) return;
36451          if (!row?.ariaSetSize) return;
36452          if (row.compositeElement !== state.compositeElement) return;
36453          return row.ariaSetSize;
36454        },
36455        ariaPosInSet(state) {
36456          if (ariaPosInSetProp != null) return ariaPosInSetProp;
36457          if (!state) return;
36458          if (!row?.ariaPosInSet) return;
36459          if (row.compositeElement !== state.compositeElement) return;
36460          const rowId2 = getRowId(state);
36461          const itemsInRow = state.renderedItems.filter((item) => item.rowId === rowId2);
36462          return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id);
36463        }
36464      });
36465      const { isActiveItem, isTabbable: isTabbable2 } = useStoreStateObject(store, [
36466        "activeId",
36467        "compositeElement",
36468        "renderedItems",
36469        "virtualFocus",
36470        "items"
36471      ], {
36472        isActiveItem(state) {
36473          return !!state && state.activeId === id;
36474        },
36475        isTabbable(state) {
36476          if (!state) return true;
36477          if (!state.compositeElement && !state.renderedItems.length) return true;
36478          if (state.virtualFocus) return false;
36479          if (!state.renderedItems.length) return true;
36480          if (tabbable2) return true;
36481          if (state.activeId === null) return false;
36482          const item = store?.item(state.activeId);
36483          if (item?.disabled) return true;
36484          if (!item?.element) return true;
36485          return state.activeId === id;
36486        }
36487      });
36488      const getItem = (0, import_react53.useCallback)((item) => {
36489        const nextItem = {
36490          ...item,
36491          id: id || item.id,
36492          rowId,
36493          disabled: trulyDisabled,
36494          children: item.element?.textContent,
36495          typeaheadText
36496        };
36497        if (getItemProp) return getItemProp(nextItem);
36498        return nextItem;
36499      }, [
36500        id,
36501        rowId,
36502        trulyDisabled,
36503        typeaheadText,
36504        getItemProp
36505      ]);
36506      const onFocusProp = props.onFocus;
36507      const hasFocusedComposite = (0, import_react53.useRef)(false);
36508      const cancelScheduledFocusRedirectRef = (0, import_react53.useRef)(null);
36509      const present = usePresentItem(store);
36510      const onFocus = useEvent((event) => {
36511        onFocusProp?.(event);
36512        if (event.defaultPrevented) return;
36513        if (isPortalEvent(event)) return;
36514        if (!id) return;
36515        if (!store) return;
36516        if (targetIsAnotherItem(event, store)) return;
36517        const { virtualFocus, compositeElement: compositeElement2 } = store.getState();
36518        store.setActiveId(id);
36519        if (isTextbox(event.currentTarget)) selectTextField(event.currentTarget);
36520        if (!virtualFocus) {
36521          if (isSelfTarget(event) && store.item(id)) present({
36522            id,
36523            markedOnly: true,
36524            requireFocus: true,
36525            scrollIntoView
36526          });
36527          return;
36528        }
36529        if (!isSelfTarget(event)) return;
36530        if (isEditableElement(event.currentTarget)) return;
36531        const redirectFocusToCompositeElement = (relatedTarget2, compositeElement3) => {
36532          if (!isFocusable(compositeElement3)) {
36533            if (true) warnOnce("A composite widget with `virtualFocus` enabled requires a focusable composite element. Set the `focusable` prop to `true` or the `virtualFocus` option to `false`.", compositeElement3);
36534            return;
36535          }
36536          const fromComposite = relatedTarget2 === compositeElement3 || isItem(store, relatedTarget2);
36537          if (store.item(id)) present({
36538            id,
36539            markedOnly: true,
36540            requireFocus: true,
36541            scrollIntoView
36542          });
36543          hasFocusedComposite.current = true;
36544          if (fromComposite) focusSilently(compositeElement3);
36545          else compositeElement3.focus({ preventScroll: true });
36546        };
36547        if (compositeElement2?.isConnected) {
36548          redirectFocusToCompositeElement(event.relatedTarget, compositeElement2);
36549          return;
36550        }
36551        if (shouldRegisterItem === false) return;
36552        const { currentTarget, relatedTarget } = event;
36553        const cancelScheduledFocusRedirect = () => {
36554          cancelScheduledFocusRedirectRef.current?.();
36555          cancelScheduledFocusRedirectRef.current = null;
36556        };
36557        cancelScheduledFocusRedirect();
36558        cancelScheduledFocusRedirectRef.current = subscribe(store, null, () => {
36559          if (getActiveElement(currentTarget) !== currentTarget) {
36560            cancelScheduledFocusRedirect();
36561            return;
36562          }
36563          const state = store.getState();
36564          const nextCompositeElement = state.compositeElement;
36565          if (!nextCompositeElement?.isConnected) return;
36566          cancelScheduledFocusRedirect();
36567          if (!state.virtualFocus) return;
36568          redirectFocusToCompositeElement(relatedTarget, nextCompositeElement);
36569        });
36570      });
36571      const onBlurCaptureProp = props.onBlurCapture;
36572      const onBlurCapture = useEvent((event) => {
36573        onBlurCaptureProp?.(event);
36574        if (event.defaultPrevented) return;
36575        if (store?.getState()?.virtualFocus && hasFocusedComposite.current) {
36576          hasFocusedComposite.current = false;
36577          event.preventDefault();
36578          event.stopPropagation();
36579        }
36580      });
36581      const onKeyDownProp = props.onKeyDown;
36582      const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown);
36583      const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
36584      const onKeyDown = useEvent((event) => {
36585        onKeyDownProp?.(event);
36586        if (event.defaultPrevented) return;
36587        if (!isSelfTarget(event)) return;
36588        if (!store) return;
36589        const { currentTarget } = event;
36590        const state = store.getState();
36591        const isGrid2 = !!store.item(id)?.rowId;
36592        const isVertical = state.orientation !== "horizontal";
36593        const isHorizontal = state.orientation !== "vertical";
36594        const canHomeEnd = () => {
36595          if (isGrid2) return true;
36596          if (isHorizontal) return true;
36597          if (!state.compositeElement) return true;
36598          if (!isTextField(state.compositeElement)) return true;
36599          return false;
36600        };
36601        const action = {
36602          ArrowUp: (isGrid2 || isVertical) && store.up,
36603          ArrowRight: (isGrid2 || isHorizontal) && store.next,
36604          ArrowDown: (isGrid2 || isVertical) && store.down,
36605          ArrowLeft: (isGrid2 || isHorizontal) && store.previous,
36606          Home: () => {
36607            if (!canHomeEnd()) return;
36608            if (!isGrid2 || event.ctrlKey) return store?.first();
36609            return store?.previous(-1);
36610          },
36611          End: () => {
36612            if (!canHomeEnd()) return;
36613            if (!isGrid2 || event.ctrlKey) return store?.last();
36614            return store?.next(-1);
36615          },
36616          PageUp: () => {
36617            return findNextPageItemId(currentTarget, store, store?.up, true);
36618          },
36619          PageDown: () => {
36620            return findNextPageItemId(currentTarget, store, store?.down);
36621          }
36622        }[event.key];
36623        if (action) {
36624          if (isTextbox(currentTarget)) {
36625            const selection = getTextboxSelection(currentTarget);
36626            const isLeft = isHorizontal && event.key === "ArrowLeft";
36627            const isRight = isHorizontal && event.key === "ArrowRight";
36628            const isUp = isVertical && event.key === "ArrowUp";
36629            const isDown = isVertical && event.key === "ArrowDown";
36630            if (isRight || isDown) {
36631              const { length: valueLength } = getTextboxValue(currentTarget);
36632              if (selection.end !== valueLength) return;
36633            } else if ((isLeft || isUp) && selection.start !== 0) return;
36634          }
36635          const nextId = action();
36636          if (preventScrollOnKeyDownProp(event) || nextId !== void 0) {
36637            if (!moveOnKeyPressProp(event)) return;
36638            event.preventDefault();
36639            store.move(nextId);
36640          }
36641        }
36642      });
36643      const providerValue = (0, import_react53.useMemo)(() => ({
36644        id,
36645        compositeElement
36646      }), [id, compositeElement]);
36647      props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(CompositeItemContext.Provider, {
36648        value: providerValue,
36649        children: element
36650      }), [providerValue]);
36651      props = {
36652        "data-active-item": isActiveItem || void 0,
36653        ...props,
36654        id,
36655        ref: useMergeRefs5(ref, markUnmountingRef, props.ref),
36656        tabIndex: isTabbable2 ? props.tabIndex : -1,
36657        onFocus,
36658        onBlurCapture,
36659        onKeyDown
36660      };
36661      props = useCommand(props);
36662      props = useCollectionItem({
36663        store,
36664        ...props,
36665        getItem,
36666        shouldRegisterItem: id ? shouldRegisterItem : false
36667      });
36668      return {
36669        ...props,
36670        "aria-setsize": ariaSetSize,
36671        "aria-posinset": ariaPosInSet
36672      };
36673    });
36674    var CompositeItem2 = memo4(forwardRef89(function CompositeItem3(props) {
36675      const htmlProps = useCompositeItem2(withDefaultButtonType(props));
36676      return createElement3(TagName4, htmlProps);
36677    }));
36678  
36679    // node_modules/@ariakit/react-components/dist/composite/composite.js
36680    var import_react54 = __toESM(require_react(), 1);
36681    var import_jsx_runtime144 = __toESM(require_jsx_runtime(), 1);
36682    var TagName5 = "div";
36683    function isGrid(items) {
36684      return items.some((item) => !!item.rowId);
36685    }
36686    function isPrintableKey(event) {
36687      const target = event.target;
36688      if (target && !isTextField(target)) return false;
36689      return event.key.length === 1 && !event.ctrlKey && !event.metaKey;
36690    }
36691    function isModifierKey(event) {
36692      return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta";
36693    }
36694    function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) {
36695      return useEvent((event) => {
36696        onKeyboardEvent?.(event);
36697        if (event.defaultPrevented) return;
36698        if (event.isPropagationStopped()) return;
36699        if (!isSelfTarget(event)) return;
36700        if (isModifierKey(event)) return;
36701        if (isPrintableKey(event)) return;
36702        const state = store.getState();
36703        const activeElement2 = getEnabledItem(store, state.activeId)?.element;
36704        if (!activeElement2) return;
36705        const { view, ...eventInit } = event;
36706        if (activeElement2 !== previousElementRef?.current) activeElement2.focus({ preventScroll: true });
36707        if (!fireKeyboardEvent(activeElement2, event.type, eventInit)) event.preventDefault();
36708        if (event.currentTarget.contains(activeElement2)) event.stopPropagation();
36709      });
36710    }
36711    function findFirstEnabledItemInTheLastRow(items) {
36712      return findFirstEnabledItem2(flatten2DArray(reverseArray(groupItemsByRows2(items))));
36713    }
36714    var CompositeFocusOnMove = memo4(function CompositeFocusOnMove2({ store, focusOnMove, previousElementRef, present, scrollIntoView }) {
36715      const moves = useStoreState(store, "moves");
36716      const compositeElement = useStoreState(store, "compositeElement");
36717      (0, import_react54.useEffect)(() => {
36718        if (!moves) return;
36719        if (!focusOnMove) return;
36720        const { activeId } = store.getState();
36721        if (activeId == null) return;
36722        return present({
36723          id: activeId,
36724          requireFocus: ownsFocus(store),
36725          focus: true,
36726          scrollIntoView
36727        });
36728      }, [
36729        store,
36730        moves,
36731        focusOnMove,
36732        compositeElement,
36733        present,
36734        scrollIntoView
36735      ]);
36736      useSafeLayoutEffect(() => {
36737        if (!moves) return;
36738        if (!compositeElement) return;
36739        const { activeId } = store.getState();
36740        if (!(activeId === null)) return;
36741        const previousElement = previousElementRef.current;
36742        previousElementRef.current = null;
36743        if (previousElement) fireBlurEvent(previousElement, { relatedTarget: compositeElement });
36744        if (!hasFocus(compositeElement)) {
36745          if (isFocusable(compositeElement)) compositeElement.scrollIntoView({
36746            block: "nearest",
36747            inline: "nearest"
36748          });
36749          compositeElement.focus({ preventScroll: true });
36750        }
36751      }, [
36752        store,
36753        moves,
36754        compositeElement
36755      ]);
36756      return null;
36757    });
36758    var useComposite = createHook(function useComposite2({ store, composite = true, focusOnMove = composite, moveOnKeyPress = true, unstable_scrollIntoView: scrollIntoView, ...props }) {
36759      const context = useCompositeProviderContext();
36760      store = store || context;
36761      invariant(store, "Composite must receive a `store` prop or be wrapped in a CompositeProvider component.");
36762      const ref = (0, import_react54.useRef)(null);
36763      const previousElementRef = (0, import_react54.useRef)(null);
36764      const present = usePresentItem(store);
36765      const [, setCompositeElement] = useTransactionState(composite ? store.setCompositeElement : null);
36766      const virtualFocus = useStoreState(store, "virtualFocus");
36767      const activeId = useStoreState(store, composite && virtualFocus ? ["activeId"] : [], (state) => composite && virtualFocus ? state.activeId : null);
36768      useSafeLayoutEffect(() => {
36769        if (!store) return;
36770        if (!composite) return;
36771        if (!virtualFocus) return;
36772        const previousElement = previousElementRef.current;
36773        previousElementRef.current = null;
36774        if (!previousElement) return;
36775        const relatedTarget = getEnabledItem(store, activeId)?.element || getActiveElement(previousElement);
36776        if (relatedTarget === previousElement) return;
36777        fireBlurEvent(previousElement, { relatedTarget });
36778      }, [
36779        store,
36780        activeId,
36781        virtualFocus,
36782        composite
36783      ]);
36784      const onKeyDownCapture = useKeyboardEventProxy(store, props.onKeyDownCapture, previousElementRef);
36785      const onKeyUpCapture = useKeyboardEventProxy(store, props.onKeyUpCapture, previousElementRef);
36786      const onFocusCaptureProp = props.onFocusCapture;
36787      const onFocusCapture = useEvent((event) => {
36788        onFocusCaptureProp?.(event);
36789        if (event.defaultPrevented) return;
36790        if (!store) return;
36791        const { virtualFocus: virtualFocus2 } = store.getState();
36792        if (!virtualFocus2) return;
36793        const previousActiveElement = event.relatedTarget;
36794        const isSilentlyFocused = silentlyFocused(event.currentTarget);
36795        if (isSelfTarget(event) && isSilentlyFocused) {
36796          event.stopPropagation();
36797          previousElementRef.current = previousActiveElement;
36798        }
36799      });
36800      const onFocusProp = props.onFocus;
36801      const onFocus = useEvent((event) => {
36802        onFocusProp?.(event);
36803        if (event.defaultPrevented) return;
36804        if (!composite) return;
36805        if (!store) return;
36806        const { relatedTarget } = event;
36807        const { virtualFocus: virtualFocus2 } = store.getState();
36808        if (virtualFocus2) {
36809          if (isSelfTarget(event) && !isItem(store, relatedTarget)) queueMicrotask(() => present({
36810            focus: true,
36811            markedOnly: true,
36812            requireFocus: true,
36813            scrollIntoView
36814          }));
36815        } else if (isSelfTarget(event)) {
36816          if (!isItem(store, relatedTarget)) {
36817            const { activeId: activeId2 } = store.getState();
36818            if (activeId2 != null) present({
36819              id: activeId2,
36820              markedOnly: true,
36821              requireFocus: true,
36822              scrollIntoView
36823            });
36824          }
36825          store.setActiveId(null);
36826        }
36827      });
36828      const onBlurCaptureProp = props.onBlurCapture;
36829      const onBlurCapture = useEvent((event) => {
36830        onBlurCaptureProp?.(event);
36831        if (event.defaultPrevented) return;
36832        if (!store) return;
36833        const { virtualFocus: virtualFocus2, activeId: activeId2, compositeElement } = store.getState();
36834        if (!virtualFocus2) return;
36835        if (event.currentTarget !== compositeElement) return;
36836        const activeElement2 = getEnabledItem(store, activeId2)?.element;
36837        const nextActiveElement = event.relatedTarget;
36838        const nextActiveElementIsItem = isItem(store, nextActiveElement);
36839        const previousElement = previousElementRef.current;
36840        previousElementRef.current = null;
36841        if (isSelfTarget(event) && nextActiveElementIsItem) {
36842          if (nextActiveElement === activeElement2) {
36843            if (previousElement && previousElement !== nextActiveElement) fireBlurEvent(previousElement, event);
36844          } else if (activeElement2) fireBlurEvent(activeElement2, event);
36845          else if (previousElement) fireBlurEvent(previousElement, event);
36846          event.stopPropagation();
36847        } else if (!isItem(store, event.target) && activeElement2) fireBlurEvent(activeElement2, event);
36848      });
36849      const onKeyDownProp = props.onKeyDown;
36850      const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
36851      const onKeyDown = useEvent((event) => {
36852        onKeyDownProp?.(event);
36853        if (event.nativeEvent.isComposing) return;
36854        if (event.defaultPrevented) return;
36855        if (!store) return;
36856        if (!isSelfTarget(event)) return;
36857        const { orientation, items, renderedItems, activeId: activeId2, rtl } = store.getState();
36858        const activeItem = getEnabledItem(store, activeId2);
36859        if (activeItem?.element?.isConnected) return;
36860        const elementlessActiveItem = activeItem && activeId2 != null;
36861        const movementItems = elementlessActiveItem ? items : renderedItems;
36862        const isVertical = orientation !== "horizontal";
36863        const isHorizontal = orientation !== "vertical";
36864        const grid = isGrid(movementItems);
36865        if ((event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End") && isTextField(event.currentTarget)) return;
36866        const up = () => {
36867          if (elementlessActiveItem) return store.up({
36868            activeId: activeId2,
36869            renderedItems: movementItems
36870          });
36871          if (grid) return findFirstEnabledItemInTheLastRow(renderedItems)?.id;
36872          return store?.last();
36873        };
36874        const right = () => {
36875          if (elementlessActiveItem) return store.next({
36876            activeId: activeId2,
36877            renderedItems: movementItems
36878          });
36879          return rtl ? store.last() : store.first();
36880        };
36881        const down = () => {
36882          if (elementlessActiveItem) return store.down({
36883            activeId: activeId2,
36884            renderedItems: movementItems
36885          });
36886          return store.first();
36887        };
36888        const left = () => {
36889          if (elementlessActiveItem) return store.previous({
36890            activeId: activeId2,
36891            renderedItems: movementItems
36892          });
36893          return rtl ? store.first() : store.last();
36894        };
36895        const action = {
36896          ArrowUp: (grid || isVertical) && up,
36897          ArrowRight: (grid || isHorizontal) && right,
36898          ArrowDown: (grid || isVertical) && down,
36899          ArrowLeft: (grid || isHorizontal) && left,
36900          Home: store.first,
36901          End: store.last,
36902          PageUp: store.first,
36903          PageDown: store.last
36904        }[event.key];
36905        if (action) {
36906          const id = action();
36907          if (id !== void 0) {
36908            if (!moveOnKeyPressProp(event)) return;
36909            event.preventDefault();
36910            store.move(id);
36911          }
36912        }
36913      });
36914      props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(CompositeScopedContextProvider, {
36915        value: store,
36916        children: [element, composite && /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(CompositeFocusOnMove, {
36917          store,
36918          focusOnMove,
36919          previousElementRef,
36920          present,
36921          scrollIntoView
36922        })]
36923      }), [
36924        store,
36925        composite,
36926        focusOnMove,
36927        present
36928      ]);
36929      props = {
36930        "aria-activedescendant": useStoreState(store, composite && virtualFocus ? ["items"] : [], () => {
36931          if (!store) return;
36932          if (!composite) return;
36933          if (!virtualFocus) return;
36934          return getEnabledItem(store, activeId)?.id;
36935        }),
36936        ...props,
36937        ref: useMergeRefs5(ref, setCompositeElement, props.ref),
36938        onKeyDownCapture,
36939        onKeyUpCapture,
36940        onFocusCapture,
36941        onFocus,
36942        onBlurCapture,
36943        onKeyDown
36944      };
36945      const focusable2 = useStoreState(store, composite && !virtualFocus ? ["activeId"] : [], (state) => composite && (virtualFocus || state.activeId === null));
36946      props = useFocusable({
36947        focusable: focusable2,
36948        ...props
36949      });
36950      return props;
36951    });
36952    var Composite6 = forwardRef89(function Composite7(props) {
36953      const htmlProps = useComposite(props);
36954      return createElement3(TagName5, htmlProps);
36955    });
36956  
36957    // node_modules/@ariakit/react-components/dist/disclosure/disclosure-context.js
36958    var ctx3 = createStoreContext();
36959    var useDisclosureContext = ctx3.useContext;
36960    var useDisclosureScopedContext = ctx3.useScopedContext;
36961    var useDisclosureProviderContext = ctx3.useProviderContext;
36962    var DisclosureContextProvider = ctx3.ContextProvider;
36963    var DisclosureScopedContextProvider = ctx3.ScopedContextProvider;
36964  
36965    // node_modules/@ariakit/react-components/dist/dialog/dialog-context.js
36966    var import_react55 = __toESM(require_react(), 1);
36967    var ctx4 = createStoreContext([DisclosureContextProvider], [DisclosureScopedContextProvider]);
36968    var useDialogContext = ctx4.useContext;
36969    var useDialogScopedContext = ctx4.useScopedContext;
36970    var useDialogProviderContext = ctx4.useProviderContext;
36971    var DialogContextProvider = ctx4.ContextProvider;
36972    var DialogScopedContextProvider = ctx4.ScopedContextProvider;
36973    var DialogHeadingContext = (0, import_react55.createContext)(void 0);
36974    var DialogDescriptionContext = (0, import_react55.createContext)(void 0);
36975  
36976    // node_modules/@ariakit/react-components/dist/disclosure/disclosure-content.js
36977    var import_react56 = __toESM(require_react(), 1);
36978    var import_jsx_runtime145 = __toESM(require_jsx_runtime(), 1);
36979    var import_react_dom3 = __toESM(require_react_dom(), 1);
36980    var TagName6 = "div";
36981    function afterTimeout(timeoutMs, cb) {
36982      const timeoutId = setTimeout(cb, timeoutMs);
36983      return () => clearTimeout(timeoutId);
36984    }
36985    function parseCSSTime(time) {
36986      const value = time?.trim() || "0s";
36987      const multiplier = value.endsWith("ms") ? 1 : 1e3;
36988      const parsed = Number.parseFloat(value) * multiplier;
36989      return Number.isNaN(parsed) ? 0 : parsed;
36990    }
36991    function getEndTime(names, delays, durations) {
36992      const nameList = names.split(",");
36993      const delayList = delays.split(",");
36994      const durationList = durations.split(",");
36995      let endTime = 0;
36996      for (const [index2, name] of nameList.entries()) {
36997        if (name.trim() === "none") continue;
36998        const delay = parseCSSTime(delayList[index2 % delayList.length]);
36999        const duration = parseCSSTime(durationList[index2 % durationList.length]);
37000        endTime = Math.max(endTime, delay + duration);
37001      }
37002      return endTime;
37003    }
37004    function getElementEndTime(element) {
37005      const { transitionProperty, transitionDuration, transitionDelay, animationName, animationDuration, animationDelay } = getComputedStyle(element);
37006      return Math.max(getEndTime(transitionProperty, transitionDelay, transitionDuration), getEndTime(animationName, animationDelay, animationDuration));
37007    }
37008    function isHidden(mounted, hidden, alwaysVisible) {
37009      return !alwaysVisible && hidden !== false && (!mounted || !!hidden);
37010    }
37011    var useDisclosureContent = createHook(function useDisclosureContent2({ store, alwaysVisible, unstable_otherElementRef: otherElementRef, ...props }) {
37012      const context = useDisclosureProviderContext();
37013      store = store || context;
37014      invariant(store, "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component.");
37015      const ref = (0, import_react56.useRef)(null);
37016      const id = useId7(props.id);
37017      const [transition, setTransition] = (0, import_react56.useState)(null);
37018      const { open, mounted, animated, contentElement } = useStoreStateObject(store, {
37019        open: "open",
37020        mounted: "mounted",
37021        animated: "animated",
37022        contentElement: "contentElement"
37023      });
37024      const otherElement = useStoreState(store.disclosure, "contentElement");
37025      const hasClosedRef = (0, import_react56.useRef)(false);
37026      useSafeLayoutEffect(() => {
37027        if (!ref.current) return;
37028        store?.setContentElement(ref.current);
37029      }, [store]);
37030      useSafeLayoutEffect(() => {
37031        let previousAnimated;
37032        store?.setState("animated", (animated2) => {
37033          previousAnimated = animated2;
37034          return true;
37035        });
37036        return () => {
37037          if (previousAnimated === void 0) return;
37038          store?.setState("animated", previousAnimated);
37039        };
37040      }, [store]);
37041      useSafeLayoutEffect(() => {
37042        if (!animated) {
37043          if (!open) {
37044            hasClosedRef.current = true;
37045            setTransition(null);
37046          } else if (hasClosedRef.current) {
37047            hasClosedRef.current = false;
37048            setTransition("enter");
37049          }
37050          return;
37051        }
37052        if (!contentElement?.isConnected) {
37053          setTransition(null);
37054          return;
37055        }
37056        return afterPaint(() => {
37057          setTransition(open ? "enter" : mounted ? "leave" : null);
37058        });
37059      }, [
37060        animated,
37061        contentElement,
37062        open,
37063        mounted
37064      ]);
37065      useSafeLayoutEffect(() => {
37066        if (!store) return;
37067        if (!animated) return;
37068        if (!transition) return;
37069        if (!contentElement) return;
37070        const stopAnimation = () => store?.setState("animating", false);
37071        const stopAnimationSync = () => (0, import_react_dom3.flushSync)(stopAnimation);
37072        if (transition === "leave" && open) return;
37073        if (transition === "enter" && !open) return;
37074        if (typeof animated === "number") return afterTimeout(animated, stopAnimationSync);
37075        const elements = [contentElement];
37076        if (otherElement) elements.push(otherElement);
37077        const relatedElement = otherElementRef?.current;
37078        if (relatedElement) elements.push(relatedElement);
37079        const timeout = Math.max(...elements.map(getElementEndTime));
37080        if (!timeout) {
37081          if (transition === "enter") store.setState("animated", false);
37082          stopAnimation();
37083          return;
37084        }
37085        return afterTimeout(Math.max(timeout - 1e3 / 60, 0), stopAnimationSync);
37086      }, [
37087        store,
37088        animated,
37089        contentElement,
37090        otherElement,
37091        otherElementRef,
37092        open,
37093        transition
37094      ]);
37095      props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(DialogScopedContextProvider, {
37096        value: store,
37097        children: element
37098      }), [store]);
37099      const hidden = isHidden(mounted, props.hidden, alwaysVisible);
37100      const styleProp = props.style;
37101      const style = (0, import_react56.useMemo)(() => {
37102        if (hidden) return {
37103          ...styleProp,
37104          display: "none"
37105        };
37106        return styleProp;
37107      }, [hidden, styleProp]);
37108      props = {
37109        "data-open": open || void 0,
37110        "data-enter": transition === "enter" || void 0,
37111        "data-leave": transition === "leave" || void 0,
37112        hidden,
37113        ...props,
37114        id,
37115        ref: useMergeRefs5(id ? store.setContentElement : null, ref, props.ref),
37116        style
37117      };
37118      return removeUndefinedValues(props);
37119    });
37120    var DisclosureContentImpl = forwardRef89(function DisclosureContentImpl2(props) {
37121      const htmlProps = useDisclosureContent(props);
37122      return createElement3(TagName6, htmlProps);
37123    });
37124    var DisclosureContent = forwardRef89(function DisclosureContent2({ unmountOnHide, ...props }) {
37125      const context = useDisclosureProviderContext();
37126      const store = props.store || context;
37127      if (useStoreState(store, ["mounted"], (state) => !unmountOnHide || state?.mounted) === false) return null;
37128      return /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(DisclosureContentImpl, { ...props });
37129    });
37130  
37131    // node_modules/@ariakit/components/dist/disclosure/disclosure-store.js
37132    function createDisclosureStore(props = {}) {
37133      const store = props.store || props.disclosure ? mergeStore(props.store, omit2(props.disclosure, ["contentElement", "disclosureElement"])) : void 0;
37134      throwOnConflictingProps(props, store);
37135      const syncState = store?.getState();
37136      const open = defaultValue(props.open, syncState?.open, props.defaultOpen, false);
37137      const animated = defaultValue(props.animated, syncState?.animated, false);
37138      const initialState = {
37139        open,
37140        animated,
37141        animating: !!animated && open,
37142        mounted: open,
37143        contentElement: defaultValue(syncState?.contentElement, null),
37144        disclosureElement: defaultValue(syncState?.disclosureElement, null)
37145      };
37146      const disclosure = store ? createStore(initialState, store) : createStore(initialState);
37147      setup(disclosure, () => sync(disclosure, ["animated", "animating"], (state) => {
37148        if (state.animated) return;
37149        disclosure.setState("animating", false);
37150      }));
37151      setup(disclosure, () => subscribe(disclosure, ["open"], () => {
37152        if (!disclosure.getState().animated) return;
37153        disclosure.setState("animating", true);
37154      }));
37155      setup(disclosure, () => sync(disclosure, ["open", "animating"], (state) => {
37156        disclosure.setState("mounted", state.open || state.animating);
37157      }));
37158      return {
37159        ...disclosure,
37160        disclosure: props.disclosure,
37161        setOpen: (value) => disclosure.setState("open", value),
37162        show: () => disclosure.setState("open", true),
37163        hide: () => disclosure.setState("open", false),
37164        toggle: () => disclosure.setState("open", (open2) => !open2),
37165        stopAnimation: () => disclosure.setState("animating", false),
37166        setContentElement: (value) => disclosure.setState("contentElement", value),
37167        setDisclosureElement: (value) => disclosure.setState("disclosureElement", value)
37168      };
37169    }
37170  
37171    // node_modules/@ariakit/react-components/dist/disclosure/disclosure-store.js
37172    function useDisclosureStoreProps(store, update2, props) {
37173      useUpdateEffect(update2, [props.store, props.disclosure]);
37174      useStoreProps(store, props, "open", "setOpen");
37175      useStoreProps(store, props, "mounted", "setMounted");
37176      useStoreProps(store, props, "animated");
37177      return Object.assign(store, { disclosure: props.disclosure });
37178    }
37179  
37180    // node_modules/@ariakit/react-components/dist/popover/popover-context.js
37181    var ctx5 = createStoreContext([DialogContextProvider], [DialogScopedContextProvider]);
37182    var usePopoverContext = ctx5.useContext;
37183    var usePopoverScopedContext = ctx5.useScopedContext;
37184    var usePopoverProviderContext = ctx5.useProviderContext;
37185    var PopoverContextProvider = ctx5.ContextProvider;
37186    var PopoverScopedContextProvider = ctx5.ScopedContextProvider;
37187  
37188    // node_modules/@ariakit/react-components/dist/combobox/combobox-context.js
37189    var import_react57 = __toESM(require_react(), 1);
37190    var ComboboxListRoleContext = (0, import_react57.createContext)(void 0);
37191    var ctx6 = createStoreContext([PopoverContextProvider, CompositeContextProvider], [PopoverScopedContextProvider, CompositeScopedContextProvider]);
37192    var useComboboxContext = ctx6.useContext;
37193    var useComboboxScopedContext = ctx6.useScopedContext;
37194    var useComboboxProviderContext = ctx6.useProviderContext;
37195    var ComboboxContextProvider = ctx6.ContextProvider;
37196    var ComboboxScopedContextProvider = ctx6.ScopedContextProvider;
37197    var ComboboxItemValueContext = (0, import_react57.createContext)(void 0);
37198    var ComboboxItemCheckedContext = (0, import_react57.createContext)(false);
37199    var ComboboxHeadingContext = (0, import_react57.createContext)(null);
37200  
37201    // node_modules/@ariakit/react-components/dist/collection/collection-store.js
37202    function useCollectionStoreProps(store, update2, props) {
37203      useUpdateEffect(update2, [props.store]);
37204      useStoreProps(store, props, "items", "setItems");
37205      return store;
37206    }
37207  
37208    // node_modules/@ariakit/react-components/dist/composite/composite-store.js
37209    function useCompositeStoreOptions(props) {
37210      return {
37211        id: useId7(props.id),
37212        ...props
37213      };
37214    }
37215    function useCompositeStoreProps(store, update2, props) {
37216      store = useCollectionStoreProps(store, update2, props);
37217      useStoreProps(store, props, "activeId", "setActiveId");
37218      const focusOrderProps = { compositeElementInFocusOrder: props.compositeElementInFocusOrder ?? props.includesBaseElement };
37219      useStoreProps(store, focusOrderProps, "compositeElementInFocusOrder");
37220      useStoreProps(store, props, "virtualFocus");
37221      useStoreProps(store, props, "orientation");
37222      useStoreProps(store, props, "rtl");
37223      useStoreProps(store, props, "focusLoop");
37224      useStoreProps(store, props, "focusWrap");
37225      useStoreProps(store, props, "focusShift");
37226      return store;
37227    }
37228  
37229    // node_modules/@ariakit/components/dist/dialog/dialog-store.js
37230    function createDialogStore(props = {}) {
37231      return createDisclosureStore(props);
37232    }
37233  
37234    // node_modules/@ariakit/react-components/dist/dialog/dialog-store.js
37235    function useDialogStoreProps(store, update2, props) {
37236      return useDisclosureStoreProps(store, update2, props);
37237    }
37238  
37239    // node_modules/@ariakit/components/dist/popover/popover-store.js
37240    function createPopoverStore({ popover: otherPopover, ...props } = {}) {
37241      const store = mergeStore(props.store, omit2(otherPopover, [
37242        "arrowElement",
37243        "anchorElement",
37244        "contentElement",
37245        "popoverElement",
37246        "disclosureElement",
37247        "unstable_placing"
37248      ]));
37249      throwOnConflictingProps(props, store);
37250      const syncState = store?.getState();
37251      const dialog = createDialogStore({
37252        ...props,
37253        store
37254      });
37255      const placement = defaultValue(props.placement, syncState?.placement, "bottom");
37256      const initialState = {
37257        ...dialog.getState(),
37258        placement,
37259        currentPlacement: placement,
37260        anchorElement: defaultValue(syncState?.anchorElement, null),
37261        popoverElement: defaultValue(syncState?.popoverElement, null),
37262        arrowElement: defaultValue(syncState?.arrowElement, null),
37263        rendered: /* @__PURE__ */ Symbol("rendered"),
37264        unstable_placing: false
37265      };
37266      const popover = createStore(initialState, dialog, store);
37267      let syncedAnchorElement = initialState.anchorElement === initialState.disclosureElement ? initialState.anchorElement : null;
37268      setup(popover, () => sync(popover, ["anchorElement", "disclosureElement"], (state) => {
37269        if (state.anchorElement && state.anchorElement !== syncedAnchorElement) {
37270          syncedAnchorElement = null;
37271          return;
37272        }
37273        syncedAnchorElement = state.disclosureElement;
37274        popover.setState("anchorElement", syncedAnchorElement);
37275      }));
37276      return {
37277        ...dialog,
37278        ...popover,
37279        setAnchorElement: (element) => popover.setState("anchorElement", element),
37280        setPopoverElement: (element) => popover.setState("popoverElement", element),
37281        setArrowElement: (element) => popover.setState("arrowElement", element),
37282        render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered"))
37283      };
37284    }
37285  
37286    // node_modules/@ariakit/react-components/dist/popover/popover-store.js
37287    function usePopoverStoreProps(store, update2, props) {
37288      useUpdateEffect(update2, [props.popover]);
37289      useStoreProps(store, props, "placement");
37290      return useDialogStoreProps(store, update2, props);
37291    }
37292  
37293    // node_modules/@ariakit/react-components/dist/composite/composite-hover.js
37294    var import_react58 = __toESM(require_react(), 1);
37295    var TagName7 = "div";
37296    function hoveringInside(event) {
37297      const nextElement = event.relatedTarget;
37298      if (!isElement2(nextElement)) return false;
37299      return contains2(event.currentTarget, nextElement);
37300    }
37301    var symbol2 = /* @__PURE__ */ Symbol("composite-hover");
37302    function movingToAnotherItem(event) {
37303      const { relatedTarget } = event;
37304      if (!isElement2(relatedTarget)) return false;
37305      let dest = relatedTarget;
37306      do {
37307        if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true;
37308        dest = dest.parentElement;
37309      } while (dest);
37310      return false;
37311    }
37312    var useCompositeHover = createHook(function useCompositeHover2({ store, focusOnHover = true, blurOnHoverEnd = !!focusOnHover, ...props }) {
37313      const context = useCompositeScopedContext();
37314      store = store || context;
37315      invariant(store, "CompositeHover must be wrapped in a Composite component.");
37316      const isMouseMoving = useIsMouseMoving();
37317      const onMouseMoveProp = props.onMouseMove;
37318      const focusOnHoverProp = useBooleanEvent(focusOnHover);
37319      const onMouseMove = useEvent((event) => {
37320        onMouseMoveProp?.(event);
37321        if (event.defaultPrevented) return;
37322        if (!isMouseMoving()) return;
37323        if (!focusOnHoverProp(event)) return;
37324        if (!hasFocusWithin(event.currentTarget)) {
37325          const compositeElement = store?.getState().compositeElement;
37326          if (compositeElement && !hasFocus(compositeElement)) compositeElement.focus({ preventScroll: true });
37327        }
37328        store?.setActiveId(event.currentTarget.id);
37329      });
37330      const onMouseLeaveProp = props.onMouseLeave;
37331      const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd);
37332      const onMouseLeave = useEvent((event) => {
37333        onMouseLeaveProp?.(event);
37334        if (event.defaultPrevented) return;
37335        if (!isMouseMoving()) return;
37336        if (hoveringInside(event)) return;
37337        if (movingToAnotherItem(event)) return;
37338        if (!focusOnHoverProp(event)) return;
37339        if (!blurOnHoverEndProp(event)) return;
37340        store?.setActiveId(null);
37341        store?.getState().compositeElement?.focus({ preventScroll: true });
37342      });
37343      const ref = (0, import_react58.useCallback)((element) => {
37344        if (!element) return;
37345        element[symbol2] = true;
37346      }, []);
37347      props = {
37348        ...props,
37349        ref: useMergeRefs5(ref, props.ref),
37350        onMouseMove,
37351        onMouseLeave
37352      };
37353      return props;
37354    });
37355    var CompositeHover = memo4(forwardRef89(function CompositeHover2(props) {
37356      const htmlProps = useCompositeHover(props);
37357      return createElement3(TagName7, htmlProps);
37358    }));
37359  
37360    // node_modules/@ariakit/react-components/dist/__chunks/DSBYX_BC.js
37361    var openingMovesByStore = /* @__PURE__ */ new WeakMap();
37362    var scrollItemIntoViewByStore = /* @__PURE__ */ new WeakMap();
37363    function scrollIntoViewNearest(element) {
37364      element.scrollIntoView({
37365        block: "nearest",
37366        inline: "nearest"
37367      });
37368    }
37369    function getSingleVerticalScrollport(element, popup) {
37370      const view = element.ownerDocument.defaultView;
37371      if (!view) return null;
37372      if (!view.getComputedStyle(popup).writingMode.startsWith("horizontal")) return null;
37373      let scrollport = null;
37374      let inlineScrollport = null;
37375      let current = element.parentElement;
37376      while (current && popup.contains(current)) {
37377        const style = view.getComputedStyle(current);
37378        if (style.overflowY !== "visible" && style.overflowY !== "clip" && current.scrollHeight > current.clientHeight) {
37379          if (scrollport) return null;
37380          scrollport = current;
37381        }
37382        if (style.overflowX !== "visible" && style.overflowX !== "clip" && current.scrollWidth > current.clientWidth) {
37383          if (inlineScrollport) return null;
37384          inlineScrollport = current;
37385        }
37386        if (current === popup) break;
37387        current = current.parentElement;
37388      }
37389      if (inlineScrollport && inlineScrollport !== scrollport) return null;
37390      return scrollport;
37391    }
37392    function centerItemInScrollport(element, scrollport) {
37393      const elementRect = element.getBoundingClientRect();
37394      const scrollportRect = scrollport.getBoundingClientRect();
37395      const scaleX = scrollportRect.width / scrollport.offsetWidth || 1;
37396      const scrollportLeft = scrollportRect.left + scrollport.clientLeft * scaleX;
37397      const scrollportRight = scrollportLeft + scrollport.clientWidth * scaleX;
37398      const scrollportWidth = scrollport.clientWidth * scaleX;
37399      const elementLeftOutside = elementRect.left < scrollportLeft;
37400      const elementRightOutside = elementRect.right > scrollportRight;
37401      const alignLeft = elementLeftOutside && !elementRightOutside && elementRect.width < scrollportWidth || elementRightOutside && !elementLeftOutside && elementRect.width > scrollportWidth;
37402      const alignRight = elementLeftOutside && !elementRightOutside && elementRect.width > scrollportWidth || elementRightOutside && !elementLeftOutside && elementRect.width < scrollportWidth;
37403      let left = 0;
37404      if (alignLeft) left = (elementRect.left - scrollportLeft) / scaleX;
37405      else if (alignRight) left = (elementRect.right - scrollportRight) / scaleX;
37406      const scaleY = scrollportRect.height / scrollport.offsetHeight || 1;
37407      const top = (elementRect.top + elementRect.height / 2 - (scrollportRect.top + (scrollport.clientTop + scrollport.clientHeight / 2) * scaleY)) / scaleY;
37408      scrollport.scrollBy({
37409        left,
37410        top
37411      });
37412    }
37413    function getScrollItemIntoView(store) {
37414      if (!store) return scrollIntoViewNearest;
37415      const cached = scrollItemIntoViewByStore.get(store);
37416      if (cached) return cached;
37417      const scrollItemIntoView = (element) => {
37418        const { contentElement, moves, selectElement } = store.getState();
37419        if (!selectElement) return scrollIntoViewNearest(element);
37420        if (moves !== openingMovesByStore.get(store)) return scrollIntoViewNearest(element);
37421        if (!contentElement?.contains(element)) return scrollIntoViewNearest(element);
37422        const scrollport = getSingleVerticalScrollport(element, contentElement);
37423        if (!scrollport) return scrollIntoViewNearest(element);
37424        centerItemInScrollport(element, scrollport);
37425      };
37426      scrollItemIntoViewByStore.set(store, scrollItemIntoView);
37427      return scrollItemIntoView;
37428    }
37429  
37430    // node_modules/@ariakit/react-components/dist/combobox/combobox.js
37431    var import_react59 = __toESM(require_react(), 1);
37432    var import_jsx_runtime146 = __toESM(require_jsx_runtime(), 1);
37433    var TagName8 = "input";
37434    function isFirstItemAutoSelected(items, activeValue, autoSelect) {
37435      if (!autoSelect) return false;
37436      return items.find((item) => !item.disabled && item.value)?.value === activeValue;
37437    }
37438    function hasCompletionString(value, activeValue) {
37439      if (!activeValue) return false;
37440      if (value == null) return false;
37441      const normalizedValue = normalizeString(value);
37442      const normalizedActiveValue = normalizeString(activeValue);
37443      if (normalizedValue.length !== value.length) return false;
37444      if (normalizedActiveValue.length !== activeValue.length) return false;
37445      return normalizedActiveValue.length > normalizedValue.length && normalizedActiveValue.toLowerCase().startsWith(normalizedValue.toLowerCase());
37446    }
37447    function isAriaAutoCompleteValue(value) {
37448      return value === "inline" || value === "list" || value === "both" || value === "none";
37449    }
37450    function getDefaultAutoSelectId(items) {
37451      return items.find((item) => {
37452        if (item.disabled) return false;
37453        return item.element?.getAttribute("role") !== "tab";
37454      })?.id;
37455    }
37456    var useCombobox = createHook(function useCombobox2({ store, focusable: focusable2 = true, autoSelect: autoSelectProp = false, getAutoSelectId, setValueOnChange, showMinLength = 0, showOnChange, showOnMouseDown, showOnClick = showOnMouseDown, showOnKeyDown, showOnKeyPress = showOnKeyDown, blurActiveItemOnClick, setValueOnClick = true, moveOnKeyPress = true, autoComplete = "list", name, form, disabled: disabled2, ...props }) {
37457      const scopedContext = useComboboxScopedContext(true);
37458      const context = useComboboxProviderContext();
37459      store = store || context || scopedContext;
37460      invariant(store, "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component.");
37461      const ref = (0, import_react59.useRef)(null);
37462      const [valueUpdated, forceValueUpdate] = useForceUpdate();
37463      const canAutoSelectRef = (0, import_react59.useRef)(false);
37464      const composingRef = (0, import_react59.useRef)(false);
37465      const compositionEndFrameRef = (0, import_react59.useRef)(null);
37466      const cancelCompositionEndFrame = () => {
37467        const frame = compositionEndFrameRef.current;
37468        if (frame == null) return;
37469        cancelAnimationFrame(frame);
37470        compositionEndFrameRef.current = null;
37471      };
37472      const autoSelect = useStoreState(store, ["virtualFocus"], (state) => state.virtualFocus && autoSelectProp);
37473      const inline4 = autoComplete === "inline" || autoComplete === "both";
37474      const [canInline, setCanInline] = (0, import_react59.useState)(inline4);
37475      useUpdateLayoutEffect(() => {
37476        if (!inline4) return;
37477        setCanInline(true);
37478      }, [inline4]);
37479      const storeInputValue = useStoreState(store, "inputValue");
37480      const selectedValue = useStoreState(store, ["selectedValue"], (state) => {
37481        if (!name) return;
37482        if (!Array.isArray(state.selectedValue)) return;
37483        return state.selectedValue;
37484      });
37485      const multiSelectable = Array.isArray(selectedValue);
37486      const prevSelectedValueRef = (0, import_react59.useRef)(void 0);
37487      (0, import_react59.useEffect)(() => {
37488        return sync(store, ["selectedValue", "activeId"], (_, prev) => {
37489          prevSelectedValueRef.current = prev.selectedValue;
37490        });
37491      }, [store]);
37492      const inlineActiveValue = useStoreState(store, [
37493        "activeValue",
37494        "selectedValue",
37495        "activeId"
37496      ], (state) => {
37497        if (!inline4) return;
37498        if (!canInline) return;
37499        if (state.activeValue && Array.isArray(state.selectedValue)) {
37500          if (state.selectedValue.includes(state.activeValue)) return;
37501          if (prevSelectedValueRef.current?.includes(state.activeValue)) return;
37502        }
37503        return state.activeValue;
37504      });
37505      const items = useStoreState(store, "renderedItems");
37506      const open = useStoreState(store, "open");
37507      const contentElement = useStoreState(store, "contentElement");
37508      const placing = useStoreState(store, "unstable_placing");
37509      const firstItemAutoSelected = isFirstItemAutoSelected(items, inlineActiveValue, autoSelect);
37510      const inputValue = (0, import_react59.useMemo)(() => {
37511        if (!inline4) return storeInputValue;
37512        if (!canInline) return storeInputValue;
37513        if (firstItemAutoSelected) {
37514          if (hasCompletionString(storeInputValue, inlineActiveValue)) {
37515            const slice = inlineActiveValue?.slice(storeInputValue.length) || "";
37516            return storeInputValue + slice;
37517          }
37518          return storeInputValue;
37519        }
37520        return inlineActiveValue || storeInputValue;
37521      }, [
37522        inline4,
37523        canInline,
37524        firstItemAutoSelected,
37525        inlineActiveValue,
37526        storeInputValue
37527      ]);
37528      (0, import_react59.useEffect)(() => {
37529        const element = ref.current;
37530        if (!element) return;
37531        const onCompositeItemMove = () => setCanInline(true);
37532        element.addEventListener("combobox-item-move", onCompositeItemMove);
37533        return () => {
37534          element.removeEventListener("combobox-item-move", onCompositeItemMove);
37535        };
37536      }, []);
37537      (0, import_react59.useEffect)(() => {
37538        if (!inline4) return;
37539        if (!canInline) return;
37540        if (!inlineActiveValue) return;
37541        if (!firstItemAutoSelected) return;
37542        if (!hasCompletionString(storeInputValue, inlineActiveValue)) return;
37543        let cleanup = noop5;
37544        queueMicrotask(() => {
37545          const element = ref.current;
37546          if (!element) return;
37547          const { start: prevStart, end: prevEnd } = getTextboxSelection(element);
37548          const nextStart = storeInputValue.length;
37549          const nextEnd = inlineActiveValue.length;
37550          setSelectionRange(element, nextStart, nextEnd);
37551          cleanup = () => {
37552            if (!hasFocus(element)) return;
37553            const { start, end } = getTextboxSelection(element);
37554            if (start !== nextStart) return;
37555            if (end !== nextEnd) return;
37556            setSelectionRange(element, prevStart, prevEnd);
37557          };
37558        });
37559        return () => cleanup();
37560      }, [
37561        valueUpdated,
37562        inline4,
37563        canInline,
37564        inlineActiveValue,
37565        firstItemAutoSelected,
37566        storeInputValue
37567      ]);
37568      const getAutoSelectIdProp = useEvent(getAutoSelectId);
37569      const autoSelectIdRef = (0, import_react59.useRef)(null);
37570      const autoSelectMovedRef = (0, import_react59.useRef)(void 0);
37571      const userScrolledRef = (0, import_react59.useRef)(false);
37572      const isAutoScrollingRef = (0, import_react59.useRef)(false);
37573      (0, import_react59.useEffect)(() => {
37574        if (!open) return;
37575        if (!contentElement) return;
37576        const scrollingElement = getScrollingElement(contentElement);
37577        if (!scrollingElement) return;
37578        const onUserScroll = () => {
37579          canAutoSelectRef.current = false;
37580          userScrolledRef.current = true;
37581        };
37582        const onScroll = () => {
37583          if (!isAutoScrollingRef.current) userScrolledRef.current = true;
37584          if (!store) return;
37585          if (!canAutoSelectRef.current) return;
37586          const { activeId } = store.getState();
37587          if (activeId === null) return;
37588          if (activeId === autoSelectIdRef.current) return;
37589          canAutoSelectRef.current = false;
37590        };
37591        const options = {
37592          passive: true,
37593          capture: true
37594        };
37595        scrollingElement.addEventListener("wheel", onUserScroll, options);
37596        scrollingElement.addEventListener("touchmove", onUserScroll, options);
37597        scrollingElement.addEventListener("scroll", onScroll, options);
37598        return () => {
37599          scrollingElement.removeEventListener("wheel", onUserScroll, true);
37600          scrollingElement.removeEventListener("touchmove", onUserScroll, true);
37601          scrollingElement.removeEventListener("scroll", onScroll, true);
37602        };
37603      }, [
37604        open,
37605        contentElement,
37606        store
37607      ]);
37608      useSafeLayoutEffect(() => {
37609        userScrolledRef.current = false;
37610        if (!storeInputValue) return;
37611        if (composingRef.current) return;
37612        canAutoSelectRef.current = true;
37613      }, [storeInputValue]);
37614      useSafeLayoutEffect(() => {
37615        if (autoSelect !== "always" && open) return;
37616        canAutoSelectRef.current = open;
37617      }, [autoSelect, open]);
37618      useSafeLayoutEffect(() => {
37619        if (open) return;
37620        autoSelectMovedRef.current = void 0;
37621      }, [open]);
37622      const resetValueOnSelect = useStoreState(store, "resetValueOnSelect");
37623      useUpdateEffect(() => {
37624        const canAutoSelect = canAutoSelectRef.current;
37625        if (!store) return;
37626        if (!open) return;
37627        if (composingRef.current) return;
37628        if (!canAutoSelect && (!resetValueOnSelect || userScrolledRef.current)) return;
37629        const state = store.getState();
37630        const { compositeElement: compositeElement2, activeId, selectElement, selectedValue: selectedValue2 } = state;
37631        if (compositeElement2 && !hasFocus(compositeElement2)) return;
37632        if (state.unstable_placing) return;
37633        const activeValue = store.item(activeId)?.value;
37634        const activeValueSelected = activeValue != null && (Array.isArray(selectedValue2) ? selectedValue2.includes(activeValue) : selectedValue2 === activeValue);
37635        if (autoSelect && canAutoSelect && !(!!selectElement && !storeInputValue && activeValueSelected)) {
37636          const userAutoSelectId = getAutoSelectIdProp(items);
37637          const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : getDefaultAutoSelectId(items) ?? store.first();
37638          autoSelectIdRef.current = autoSelectId;
37639          const nextActiveId = autoSelectId ?? null;
37640          const nextActiveValue = store.item(nextActiveId)?.value;
37641          const moved = autoSelectMovedRef.current;
37642          if (nextActiveId !== activeId || moved?.id !== nextActiveId || moved?.value !== nextActiveValue) {
37643            autoSelectMovedRef.current = {
37644              id: nextActiveId,
37645              value: nextActiveValue
37646            };
37647            store.move(nextActiveId);
37648          } else store.setState("activeValue", nextActiveValue);
37649        } else {
37650          const element = store.item(activeId || store.first())?.element;
37651          if (element && "scrollIntoView" in element) {
37652            isAutoScrollingRef.current = true;
37653            element.scrollIntoView({
37654              block: "nearest",
37655              inline: "nearest"
37656            });
37657            requestAnimationFrame(() => {
37658              isAutoScrollingRef.current = false;
37659            });
37660          }
37661        }
37662      }, [
37663        store,
37664        open,
37665        placing,
37666        valueUpdated,
37667        storeInputValue,
37668        autoSelect,
37669        resetValueOnSelect,
37670        getAutoSelectIdProp,
37671        items
37672      ]);
37673      (0, import_react59.useEffect)(() => {
37674        if (!inline4) return;
37675        const combobox = ref.current;
37676        if (!combobox) return;
37677        const elements = [combobox, contentElement].filter((value) => !!value);
37678        const onBlur2 = (event) => {
37679          if (elements.every((el) => isFocusEventOutside(event, el))) store?.setInputValue(inputValue);
37680        };
37681        for (const element of elements) element.addEventListener("focusout", onBlur2);
37682        return () => {
37683          for (const element of elements) element.removeEventListener("focusout", onBlur2);
37684        };
37685      }, [
37686        inline4,
37687        contentElement,
37688        store,
37689        inputValue
37690      ]);
37691      const canShow = (event) => {
37692        return event.currentTarget.value.length >= showMinLength;
37693      };
37694      const onChangeProp = props.onChange;
37695      const showOnChangeProp = useBooleanEvent(showOnChange ?? canShow);
37696      const setValueOnChangeProp = useBooleanEvent(setValueOnChange ?? !store.tag);
37697      const onChange = useEvent((event) => {
37698        onChangeProp?.(event);
37699        if (event.defaultPrevented) return;
37700        if (!store) return;
37701        const currentTarget = event.currentTarget;
37702        const { value, selectionStart, selectionEnd } = currentTarget;
37703        const nativeEvent = event.nativeEvent;
37704        canAutoSelectRef.current = true;
37705        if (isInputEvent(nativeEvent)) {
37706          if (nativeEvent.isComposing) {
37707            canAutoSelectRef.current = false;
37708            composingRef.current = true;
37709          }
37710          if (inline4) {
37711            const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText";
37712            const caretAtEnd = selectionStart === value.length;
37713            setCanInline(textInserted && caretAtEnd);
37714          }
37715        }
37716        if (setValueOnChangeProp(event)) {
37717          const isSameValue3 = value === store.getState().inputValue;
37718          store.setInputValue(value);
37719          queueMicrotask(() => {
37720            setSelectionRange(currentTarget, selectionStart, selectionEnd);
37721          });
37722          if (inline4 && autoSelect && isSameValue3) forceValueUpdate();
37723        }
37724        if (showOnChangeProp(event)) store.show();
37725        if (!autoSelect || !canAutoSelectRef.current) store.setActiveId(null);
37726      });
37727      (0, import_react59.useEffect)(() => cancelCompositionEndFrame, []);
37728      const onCompositionStartProp = props.onCompositionStart;
37729      const onCompositionStart = useEvent((event) => {
37730        cancelCompositionEndFrame();
37731        canAutoSelectRef.current = false;
37732        composingRef.current = true;
37733        onCompositionStartProp?.(event);
37734      });
37735      const onCompositionEndProp = props.onCompositionEnd;
37736      const onCompositionEnd = useEvent((event) => {
37737        canAutoSelectRef.current = true;
37738        composingRef.current = false;
37739        onCompositionEndProp?.(event);
37740        if (event.defaultPrevented) return;
37741        if (!autoSelect) return;
37742        cancelCompositionEndFrame();
37743        compositionEndFrameRef.current = requestAnimationFrame(() => {
37744          compositionEndFrameRef.current = null;
37745          if (composingRef.current) return;
37746          forceValueUpdate();
37747        });
37748      });
37749      const onMouseDownProp = props.onMouseDown;
37750      const blurActiveItemOnClickProp = useBooleanEvent(blurActiveItemOnClick ?? (() => store.getState().compositeElementInFocusOrder));
37751      const setValueOnClickProp = useBooleanEvent(setValueOnClick);
37752      const showOnClickProp = useBooleanEvent(showOnClick ?? canShow);
37753      const onMouseDown = useEvent((event) => {
37754        onMouseDownProp?.(event);
37755        if (event.defaultPrevented) return;
37756        if (event.button) return;
37757        if (event.ctrlKey) return;
37758        if (!store) return;
37759        if (blurActiveItemOnClickProp(event)) store.setActiveId(null);
37760        if (setValueOnClickProp(event)) store.setInputValue(inputValue);
37761        if (showOnClickProp(event)) queueBeforeEvent(event.currentTarget, "mouseup", store.show);
37762      });
37763      const onKeyDownProp = props.onKeyDown;
37764      const showOnKeyPressProp = useBooleanEvent(showOnKeyPress ?? canShow);
37765      const onKeyDown = useEvent((event) => {
37766        onKeyDownProp?.(event);
37767        if (!event.repeat) canAutoSelectRef.current = false;
37768        if (event.defaultPrevented) return;
37769        if (!store) return;
37770        const { open: open2 } = store.getState();
37771        if (open2 && event.key === "Enter") {
37772          event.preventDefault();
37773          return;
37774        }
37775        if (event.ctrlKey) return;
37776        if (event.altKey) return;
37777        if (event.shiftKey) return;
37778        if (event.metaKey) return;
37779        if (open2) return;
37780        if (event.key === "ArrowUp" || event.key === "ArrowDown") {
37781          if (showOnKeyPressProp(event)) {
37782            event.preventDefault();
37783            store.show();
37784          }
37785        }
37786      });
37787      const onBlurProp = props.onBlur;
37788      const onBlur = useEvent((event) => {
37789        canAutoSelectRef.current = false;
37790        onBlurProp?.(event);
37791      });
37792      const id = useId7(props.id);
37793      const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;
37794      const isActiveItem = useStoreState(store, ["activeId"], (state) => state.activeId === null);
37795      const formDisabled = disabledFromProps({
37796        disabled: disabled2,
37797        "aria-disabled": props["aria-disabled"]
37798      });
37799      const composite = props.composite !== false;
37800      const [, setCompositeElement] = useTransactionState(composite ? null : store.setCompositeElement);
37801      const compositeElement = useStoreState(store, multiSelectable ? ["compositeElement"] : [], (state) => multiSelectable ? state.compositeElement : null);
37802      props = useWrapElement(props, (element) => {
37803        if (!name) return element;
37804        if (!Array.isArray(selectedValue)) return element;
37805        if (composite && !compositeElement) return element;
37806        return /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(import_jsx_runtime146.Fragment, { children: [element, selectedValue.map((value, index2) => /* @__PURE__ */ (0, import_jsx_runtime146.jsx)("input", {
37807          type: "hidden",
37808          name,
37809          form,
37810          disabled: formDisabled,
37811          value
37812        }, index2))] });
37813      }, [
37814        name,
37815        form,
37816        formDisabled,
37817        composite,
37818        compositeElement,
37819        selectedValue
37820      ]);
37821      props = {
37822        role: "combobox",
37823        "aria-autocomplete": ariaAutoComplete,
37824        "aria-haspopup": getPopupRole(contentElement, "listbox"),
37825        "aria-expanded": open,
37826        "aria-controls": contentElement?.id,
37827        "data-active-item": isActiveItem || void 0,
37828        value: inputValue,
37829        ...props,
37830        id,
37831        name: multiSelectable ? void 0 : name,
37832        form,
37833        disabled: disabled2,
37834        ref: useMergeRefs5(ref, store.setInputElement, composite ? void 0 : setCompositeElement, props.ref),
37835        onChange,
37836        onCompositionStart,
37837        onCompositionEnd,
37838        onMouseDown,
37839        onKeyDown,
37840        onBlur
37841      };
37842      const scrollItemIntoView = getScrollItemIntoView(store);
37843      props = useComposite({
37844        store,
37845        unstable_scrollIntoView: scrollItemIntoView,
37846        focusable: focusable2,
37847        ...props,
37848        moveOnKeyPress: (event) => {
37849          if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;
37850          if (inline4) setCanInline(true);
37851          return true;
37852        }
37853      });
37854      return {
37855        autoComplete: "off",
37856        ...props
37857      };
37858    });
37859    var Combobox = forwardRef89(function Combobox2(props) {
37860      const htmlProps = useCombobox(props);
37861      return createElement3(TagName8, htmlProps);
37862    });
37863  
37864    // node_modules/@ariakit/react-components/dist/combobox/combobox-item.js
37865    var import_react60 = __toESM(require_react(), 1);
37866    var import_jsx_runtime147 = __toESM(require_jsx_runtime(), 1);
37867    var TagName9 = "div";
37868    function isSelected(storeValue, itemValue) {
37869      if (itemValue == null) return;
37870      if (storeValue == null) return false;
37871      if (Array.isArray(storeValue)) return storeValue.includes(itemValue);
37872      return storeValue === itemValue;
37873    }
37874    function getItemRole(popupRole) {
37875      return getItemRoleByPopupRole(popupRole) ?? "option";
37876    }
37877    var useComboboxItem = createHook(function useComboboxItem2({ store, value, hideOnClick, setValueOnClick, selectValueOnClick = true, resetValueOnSelect, focusOnHover, moveOnKeyPress = true, preventScrollOnKeyDown, getItem: getItemProp, ...props }) {
37878      const context = useComboboxScopedContext();
37879      store = store || context;
37880      invariant(store, "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component.");
37881      const id = useId7(props.id);
37882      const { resetValueOnSelectState, multiSelectable, selected, autoFocusSelected, selectElement } = useStoreStateObject(store, ["selectedValue"], {
37883        resetValueOnSelectState: "resetValueOnSelect",
37884        multiSelectable(state) {
37885          return Array.isArray(state.selectedValue);
37886        },
37887        selected(state) {
37888          return isSelected(state.selectedValue, value);
37889        },
37890        autoFocusSelected(state) {
37891          if (value == null) return false;
37892          if (!Array.isArray(state.selectedValue)) return state.selectedValue === value;
37893          return state.selectedValue[state.selectedValue.length - 1] === value;
37894        },
37895        selectElement: "selectElement"
37896      });
37897      const autoFocusSelectedItem = !!selectElement;
37898      const selectMode = !!selectElement;
37899      const disabled2 = disabledFromProps(props);
37900      const getItem = (0, import_react60.useCallback)((item) => {
37901        const nextItem = {
37902          ...item,
37903          value: selectMode && disabled2 ? void 0 : value
37904        };
37905        if (getItemProp) return getItemProp(nextItem);
37906        return nextItem;
37907      }, [
37908        selectMode,
37909        disabled2,
37910        value,
37911        getItemProp
37912      ]);
37913      setValueOnClick = setValueOnClick ?? (!selectMode && !multiSelectable);
37914      hideOnClick = hideOnClick ?? (value != null && !multiSelectable);
37915      preventScrollOnKeyDown = preventScrollOnKeyDown ?? selectMode;
37916      const role = getItemRole((0, import_react60.useContext)(ComboboxListRoleContext));
37917      const onClickProp = props.onClick;
37918      const setValueOnClickProp = useBooleanEvent(setValueOnClick);
37919      const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);
37920      const resetValueOnSelectProp = useBooleanEvent(resetValueOnSelect ?? resetValueOnSelectState);
37921      const hideOnClickProp = useBooleanEvent(hideOnClick);
37922      const onClick = useEvent((event) => {
37923        onClickProp?.(event);
37924        if (event.defaultPrevented) return;
37925        if (isDownloading(event)) return;
37926        if (isOpeningInNewTab(event)) return;
37927        if (value != null) {
37928          if (selectValueOnClickProp(event)) {
37929            if (resetValueOnSelectProp(event)) store?.resetInputValue();
37930            store?.setSelectedValue((prevValue) => {
37931              if (!Array.isArray(prevValue)) return value;
37932              if (prevValue.includes(value)) return prevValue.filter((v2) => v2 !== value);
37933              return [...prevValue, value];
37934            });
37935          }
37936          if (setValueOnClickProp(event)) store?.setInputValue(value);
37937        }
37938        if (hideOnClickProp(event)) store?.hide();
37939      });
37940      const onKeyDownProp = props.onKeyDown;
37941      const onKeyDown = useEvent((event) => {
37942        onKeyDownProp?.(event);
37943        if (event.defaultPrevented) return;
37944        const compositeElement = store?.getState().compositeElement;
37945        if (!compositeElement) return;
37946        if (hasFocus(compositeElement)) return;
37947        const printable = event.key.length === 1 && !event.ctrlKey && !event.metaKey;
37948        const paste = (!isApple() ? event.ctrlKey : event.metaKey) && event.key.toLowerCase() === "v";
37949        const deleteKey = event.key === "Backspace" || event.key === "Delete";
37950        if (printable || paste || deleteKey) {
37951          if (compositeElement === selectElement) return;
37952          if (isTextField(compositeElement)) {
37953            queueMicrotask(() => compositeElement.focus());
37954            store?.setInputValue(compositeElement.value);
37955            return;
37956          }
37957          compositeElement.focus();
37958          if ("value" in compositeElement && typeof compositeElement.value === "string") store?.setInputValue(compositeElement.value);
37959        }
37960      });
37961      if ((selectMode || multiSelectable) && selected != null) props = {
37962        "aria-selected": selected,
37963        ...props
37964      };
37965      props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(ComboboxItemValueContext.Provider, {
37966        value,
37967        children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(ComboboxItemCheckedContext.Provider, {
37968          value: selected ?? false,
37969          children: element
37970        })
37971      }), [value, selected]);
37972      const defaultAutoFocus = autoFocusSelectedItem ? autoFocusSelected : void 0;
37973      props = {
37974        role,
37975        children: value,
37976        ...props,
37977        id,
37978        onClick,
37979        onKeyDown
37980      };
37981      if (props.autoFocus === void 0 && defaultAutoFocus !== void 0) {
37982        props.autoFocus = false;
37983        props["data-autofocus"] = defaultAutoFocus || void 0;
37984      }
37985      const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);
37986      const scrollItemIntoView = getScrollItemIntoView(store);
37987      props = useCompositeItem2({
37988        store,
37989        unstable_scrollIntoView: scrollItemIntoView,
37990        ...props,
37991        getItem,
37992        preventScrollOnKeyDown,
37993        moveOnKeyPress: (event) => {
37994          if (!moveOnKeyPressProp(event)) return false;
37995          const moveEvent = new Event("combobox-item-move");
37996          store?.getState().compositeElement?.dispatchEvent(moveEvent);
37997          return true;
37998        }
37999      });
38000      const focusOnHoverProp = useBooleanEvent(focusOnHover ?? false);
38001      props = useCompositeHover({
38002        store,
38003        ...props,
38004        focusOnHover(event) {
38005          if (focusOnHover !== void 0) return focusOnHoverProp(event);
38006          return selectMode && store.getState().open;
38007        }
38008      });
38009      return props;
38010    });
38011    var ComboboxItem = memo4(forwardRef89(function ComboboxItem2(props) {
38012      const htmlProps = useComboboxItem(props);
38013      return createElement3(TagName9, htmlProps);
38014    }));
38015  
38016    // node_modules/@ariakit/react-components/dist/combobox/combobox-item-value.js
38017    var import_react61 = __toESM(require_react(), 1);
38018    var import_jsx_runtime148 = __toESM(require_jsx_runtime(), 1);
38019    var TagName10 = "span";
38020    function normalizeValue(value) {
38021      return normalizeString(value).toLowerCase();
38022    }
38023    function getOffsets(string, values) {
38024      const offsets = [];
38025      for (const value of values) {
38026        if (!value) continue;
38027        let pos = 0;
38028        const length = value.length;
38029        let index2 = string.indexOf(value, pos);
38030        while (index2 !== -1) {
38031          offsets.push([index2, length]);
38032          pos = index2 + 1;
38033          index2 = string.indexOf(value, pos);
38034        }
38035      }
38036      return offsets;
38037    }
38038    function mergeOverlappingOffsets(offsets) {
38039      offsets.sort(([a2], [b2]) => a2 - b2);
38040      const merged = [];
38041      for (const [offset4, length] of offsets) {
38042        const last = merged[merged.length - 1];
38043        if (last && offset4 < last[0] + last[1]) last[1] = Math.max(last[1], offset4 + length - last[0]);
38044        else merged.push([offset4, length]);
38045      }
38046      return merged;
38047    }
38048    function getNormalizedIndexes(itemValue) {
38049      const starts = [];
38050      const ends = [];
38051      let index2 = 0;
38052      for (const char of itemValue) {
38053        const normalizedLength = normalizeValue(char).length;
38054        for (let i2 = 0; i2 < normalizedLength; i2 += 1) {
38055          starts.push(i2 === 0 ? index2 : -1);
38056          ends.push(index2);
38057        }
38058        index2 += char.length;
38059      }
38060      starts.push(itemValue.length);
38061      ends.push(itemValue.length);
38062      let nextBoundary = itemValue.length;
38063      for (let i2 = starts.length - 1; i2 >= 0; i2 -= 1) {
38064        const start = starts[i2];
38065        if (start == null) continue;
38066        if (start === -1) starts[i2] = nextBoundary;
38067        else nextBoundary = start;
38068      }
38069      return {
38070        starts,
38071        ends
38072      };
38073    }
38074    function toOriginalOffsets(itemValue, normalizedOffsets) {
38075      if (!normalizedOffsets.length) return normalizedOffsets;
38076      const { starts, ends } = getNormalizedIndexes(itemValue);
38077      const offsets = [];
38078      for (const [normalizedOffset, normalizedLength] of normalizedOffsets) {
38079        const start = starts[normalizedOffset];
38080        const end = ends[normalizedOffset + normalizedLength];
38081        if (start == null || end == null) continue;
38082        if (end <= start) continue;
38083        offsets.push([start, end - start]);
38084      }
38085      return offsets;
38086    }
38087    function splitValue(itemValue, userValue) {
38088      if (!itemValue) return itemValue;
38089      if (!userValue) return itemValue;
38090      const userValues = toArray(userValue).map(normalizeValue);
38091      const parts = [];
38092      const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime148.jsx)("span", {
38093        "data-autocomplete-value": autocomplete ? "" : void 0,
38094        "data-user-value": autocomplete ? void 0 : "",
38095        children: value
38096      }, parts.length);
38097      const offsets = toOriginalOffsets(itemValue, mergeOverlappingOffsets(getOffsets(normalizeValue(itemValue), new Set(userValues))));
38098      const firstEntry = offsets[0];
38099      if (!firstEntry) {
38100        parts.push(span(itemValue, true));
38101        return parts;
38102      }
38103      const [firstOffset] = firstEntry;
38104      [itemValue.slice(0, firstOffset), ...offsets.flatMap(([offset4, length], i2) => {
38105        const value = itemValue.slice(offset4, offset4 + length);
38106        const nextOffset = offsets[i2 + 1]?.[0];
38107        return [value, itemValue.slice(offset4 + length, nextOffset)];
38108      })].forEach((value, i2) => {
38109        if (!value) return;
38110        parts.push(span(value, i2 % 2 === 0));
38111      });
38112      return parts;
38113    }
38114    var useComboboxItemValue = createHook(function useComboboxItemValue2({ store, value, userValue, ...props }) {
38115      const context = useComboboxScopedContext();
38116      store = store || context;
38117      const itemContext = (0, import_react61.useContext)(ComboboxItemValueContext);
38118      const itemValue = value ?? itemContext;
38119      const inputValue = useStoreState(store, ["inputValue"], (state) => userValue ?? state?.inputValue);
38120      props = {
38121        children: (0, import_react61.useMemo)(() => {
38122          if (!itemValue) return;
38123          if (!inputValue) return itemValue;
38124          return splitValue(itemValue, inputValue);
38125        }, [itemValue, inputValue]),
38126        ...props
38127      };
38128      return props;
38129    });
38130    var ComboboxItemValue = forwardRef89(function ComboboxItemValue2(props) {
38131      const htmlProps = useComboboxItemValue(props);
38132      return createElement3(TagName10, htmlProps);
38133    });
38134  
38135    // node_modules/@ariakit/react-components/dist/combobox/combobox-label.js
38136    var TagName11 = "label";
38137    var useComboboxLabel = createHook(function useComboboxLabel2({ store, ...props }) {
38138      const scopedContext = useComboboxScopedContext(true);
38139      const context = useComboboxProviderContext();
38140      store = store || context || scopedContext;
38141      invariant(store, "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component.");
38142      const inputElement = useStoreState(store, "inputElement");
38143      useAttribute(inputElement, "id");
38144      const comboboxId = inputElement?.id;
38145      const id = useId7(props.id);
38146      props = {
38147        htmlFor: comboboxId,
38148        ...props,
38149        id,
38150        ref: useMergeRefs5(store.setLabelElement, props.ref)
38151      };
38152      return props;
38153    });
38154    var ComboboxLabel = memo4(forwardRef89(function ComboboxLabel2(props) {
38155      const htmlProps = useComboboxLabel(props);
38156      return createElement3(TagName11, htmlProps);
38157    }));
38158  
38159    // node_modules/@ariakit/react-components/dist/combobox/combobox-list.js
38160    var import_react62 = __toESM(require_react(), 1);
38161    var import_jsx_runtime149 = __toESM(require_jsx_runtime(), 1);
38162    var TagName12 = "div";
38163    var useComboboxList = createHook(function useComboboxList2({ store, alwaysVisible, ...props }) {
38164      const scopedContext = useComboboxScopedContext(true);
38165      const context = useComboboxContext();
38166      store = store || context;
38167      const scopedContextSameStore = !!store && store === scopedContext;
38168      invariant(store, "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component.");
38169      const onFocusProp = props.onFocus;
38170      const onFocus = useEvent((event) => {
38171        onFocusProp?.(event);
38172        if (event.defaultPrevented) return;
38173        if (!isSelfTarget(event)) return;
38174        const compositeElement = store.getState().compositeElement;
38175        if (!compositeElement) return;
38176        if (!isFocusable(compositeElement)) return;
38177        const list = event.currentTarget;
38178        queueMicrotask(() => {
38179          if (getDocument(list).activeElement !== list) return;
38180          compositeElement.focus();
38181        });
38182      });
38183      const ref = (0, import_react62.useRef)(null);
38184      const id = useId7(props.id);
38185      const mounted = useStoreState(store, "mounted");
38186      const hidden = isHidden(mounted, props.hidden, alwaysVisible);
38187      const style = hidden ? {
38188        ...props.style,
38189        display: "none"
38190      } : props.style;
38191      const multiSelectable = useStoreState(store, ["selectedValue"], (state) => Array.isArray(state.selectedValue));
38192      const role = useAttribute(ref, "role", props.role);
38193      const ariaMultiSelectable = role === "listbox" || role === "tree" || role === "grid" ? multiSelectable || void 0 : void 0;
38194      const [hasListboxInside, setHasListboxInside] = (0, import_react62.useState)(false);
38195      const contentElement = useStoreState(store, "contentElement");
38196      const parentHeadingContext = (0, import_react62.useContext)(ComboboxHeadingContext);
38197      const headingState = (0, import_react62.useState)();
38198      const [headingId, setHeadingId] = parentHeadingContext || headingState;
38199      const headingContext = (0, import_react62.useMemo)(() => [headingId, setHeadingId], [headingId, setHeadingId]);
38200      useSafeLayoutEffect(() => {
38201        if (!mounted) return;
38202        const element = ref.current;
38203        if (!element) return;
38204        if (contentElement !== element) return;
38205        const callback = () => {
38206          setHasListboxInside(!!element.querySelector("[role='listbox']"));
38207        };
38208        const observer = new MutationObserver(callback);
38209        observer.observe(element, {
38210          subtree: true,
38211          childList: true,
38212          attributeFilter: ["role"]
38213        });
38214        callback();
38215        return () => observer.disconnect();
38216      }, [mounted, contentElement]);
38217      if (!hasListboxInside) props = {
38218        role: "listbox",
38219        "aria-multiselectable": ariaMultiSelectable,
38220        ...props
38221      };
38222      props = useWrapElement(props, (element) => /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(ComboboxScopedContextProvider, {
38223        value: store,
38224        children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(ComboboxHeadingContext.Provider, {
38225          value: headingContext,
38226          children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(DialogHeadingContext.Provider, {
38227            value: setHeadingId,
38228            children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(ComboboxListRoleContext.Provider, {
38229              value: role,
38230              children: element
38231            })
38232          })
38233        })
38234      }), [
38235        store,
38236        role,
38237        headingContext
38238      ]);
38239      const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null;
38240      const labelElement = useStoreState(store, ["labelElement", "selectLabelElement"], (state) => {
38241        if (headingId) return null;
38242        return state.selectLabelElement || state.labelElement;
38243      });
38244      useAttribute(labelElement, "id");
38245      const labelId = headingId || labelElement?.id;
38246      props = {
38247        "aria-labelledby": props["aria-label"] != null ? void 0 : labelId,
38248        hidden,
38249        ...props,
38250        id,
38251        onFocus,
38252        ref: useMergeRefs5(setContentElement, ref, props.ref),
38253        style,
38254        tabIndex: -1
38255      };
38256      return props;
38257    });
38258    var ComboboxList = forwardRef89(function ComboboxList2(props) {
38259      const htmlProps = useComboboxList(props);
38260      return createElement3(TagName12, htmlProps);
38261    });
38262  
38263    // node_modules/@ariakit/react-components/dist/tag/tag-context.js
38264    var import_react63 = __toESM(require_react(), 1);
38265    var TagValueContext = (0, import_react63.createContext)(null);
38266    var TagRemoveIdContext = (0, import_react63.createContext)(null);
38267    var ctx7 = createStoreContext([CompositeContextProvider], [CompositeScopedContextProvider]);
38268    var useTagContext = ctx7.useContext;
38269    var useTagScopedContext = ctx7.useScopedContext;
38270    var useTagProviderContext = ctx7.useProviderContext;
38271    var TagContextProvider = ctx7.ContextProvider;
38272    var TagScopedContextProvider = ctx7.ScopedContextProvider;
38273  
38274    // node_modules/@ariakit/components/dist/combobox/combobox-store.js
38275    var isTouchSafari = isSafari() && isTouchDevice();
38276    function createComboboxStore({ tag, ...props } = {}) {
38277      const store = mergeStore(props.store, pick2(tag, ["value", "rtl"]));
38278      const defaultInputValue = defaultValue(props.defaultInputValue, props.defaultValue);
38279      throwOnConflictingProps({
38280        ...props,
38281        defaultInputValue,
38282        defaultValue: defaultInputValue
38283      }, store);
38284      const tagState = tag?.getState();
38285      const syncState = store?.getState();
38286      const activeId = defaultValue(props.activeId, syncState?.activeId, props.defaultActiveId, null);
38287      const composite = createCompositeStore({
38288        ...props,
38289        activeId,
38290        compositeElementInFocusOrder: defaultValue(props.compositeElementInFocusOrder, props.includesBaseElement, syncState?.compositeElementInFocusOrder, syncState?.includesBaseElement, true),
38291        orientation: defaultValue(props.orientation, syncState?.orientation, "vertical"),
38292        focusLoop: defaultValue(props.focusLoop, syncState?.focusLoop, true),
38293        focusWrap: defaultValue(props.focusWrap, syncState?.focusWrap, true),
38294        virtualFocus: defaultValue(props.virtualFocus, syncState?.virtualFocus, true)
38295      });
38296      const popover = createPopoverStore({
38297        ...props,
38298        placement: defaultValue(props.placement, syncState?.placement, "bottom-start")
38299      });
38300      const inputValue = defaultValue(props.inputValue, props.value, syncState?.inputValue, syncState?.value, defaultInputValue, "");
38301      const selectedValue = defaultValue(props.selectedValue, syncState?.selectedValue, tagState?.values, props.defaultSelectedValue, "");
38302      let shouldSetDefaultSelectedValue = props.selectedValue === void 0 && syncState?.selectedValue === void 0 && tagState?.values === void 0 && props.defaultSelectedValue === void 0;
38303      const multiSelectable = Array.isArray(selectedValue);
38304      const initialState = {
38305        ...composite.getState(),
38306        ...popover.getState(),
38307        inputValue,
38308        value: inputValue,
38309        selectedValue,
38310        resetValueOnSelect: defaultValue(props.resetValueOnSelect, syncState?.resetValueOnSelect, multiSelectable),
38311        resetValueOnHide: defaultValue(props.resetValueOnHide, syncState?.resetValueOnHide, multiSelectable && !tag),
38312        selectOnMove: defaultValue(props.selectOnMove, syncState?.selectOnMove, false),
38313        activeValue: syncState?.activeValue,
38314        inputElement: defaultValue(syncState?.inputElement, null),
38315        labelElement: defaultValue(syncState?.labelElement, null),
38316        selectElement: defaultValue(syncState?.selectElement, null),
38317        selectLabelElement: defaultValue(syncState?.selectLabelElement, null)
38318      };
38319      const combobox = createStore(initialState, composite, popover, store);
38320      setup(combobox, () => chain(sync(combobox, ["inputValue"], (state) => {
38321        combobox.setState("value", state.inputValue);
38322      }), sync(combobox, ["value"], (state) => {
38323        combobox.setState("inputValue", state.value);
38324      })));
38325      let resolveSelectedItemOnOpen = false;
38326      const selectDefaultOptions = /* @__PURE__ */ new Set();
38327      if (props.focusLoop === void 0 && syncState?.focusLoop === void 0) selectDefaultOptions.add("focusLoop");
38328      if (props.focusWrap === void 0 && syncState?.focusWrap === void 0) selectDefaultOptions.add("focusWrap");
38329      if (props.compositeElementInFocusOrder === void 0 && props.includesBaseElement === void 0 && syncState?.compositeElementInFocusOrder === void 0 && syncState?.includesBaseElement === void 0) selectDefaultOptions.add("compositeElementInFocusOrder");
38330      if (props.resetValueOnSelect === void 0 && syncState?.resetValueOnSelect === void 0) selectDefaultOptions.add("resetValueOnSelect");
38331      let syncedSelectElement = initialState.compositeElement === initialState.selectElement ? initialState.selectElement : null;
38332      const initialFallback = initialState.selectElement || initialState.compositeElement || initialState.disclosureElement;
38333      let syncedAnchorElement = initialState.anchorElement === initialFallback ? initialState.anchorElement : null;
38334      setup(combobox, () => sync(combobox, ["compositeElement", "selectElement"], (state) => {
38335        if (!state.selectElement && !syncedSelectElement) return;
38336        if (state.compositeElement && state.compositeElement === state.selectElement) {
38337          syncedSelectElement = state.selectElement;
38338          return;
38339        }
38340        if (state.compositeElement && state.compositeElement !== syncedSelectElement) {
38341          syncedSelectElement = null;
38342          return;
38343        }
38344        syncedSelectElement = state.selectElement;
38345        combobox.setState("compositeElement", syncedSelectElement);
38346      }));
38347      setup(combobox, () => sync(combobox, ["selectElement"], (state) => {
38348        if (!state.selectElement) return;
38349        const { focusLoop, focusWrap, compositeElementInFocusOrder, resetValueOnSelect } = combobox.getState();
38350        if (selectDefaultOptions.has("focusLoop")) composite.setState("focusLoop", false);
38351        if (selectDefaultOptions.has("focusWrap")) composite.setState("focusWrap", false);
38352        if (selectDefaultOptions.has("compositeElementInFocusOrder")) composite.setState("compositeElementInFocusOrder", false);
38353        if (selectDefaultOptions.has("resetValueOnSelect")) combobox.setState("resetValueOnSelect", true);
38354        return () => {
38355          const current = combobox.getState();
38356          if (selectDefaultOptions.has("focusLoop") && !current.focusLoop) composite.setState("focusLoop", focusLoop);
38357          if (selectDefaultOptions.has("focusWrap") && !current.focusWrap) composite.setState("focusWrap", focusWrap);
38358          if (selectDefaultOptions.has("compositeElementInFocusOrder") && !current.compositeElementInFocusOrder) composite.setState("compositeElementInFocusOrder", compositeElementInFocusOrder);
38359          if (selectDefaultOptions.has("resetValueOnSelect") && current.resetValueOnSelect) combobox.setState("resetValueOnSelect", resetValueOnSelect);
38360        };
38361      }));
38362      setup(combobox, () => sync(combobox, [
38363        "anchorElement",
38364        "compositeElement",
38365        "disclosureElement",
38366        "selectElement"
38367      ], (state) => {
38368        if (state.anchorElement && state.anchorElement !== syncedAnchorElement) {
38369          syncedAnchorElement = null;
38370          return;
38371        }
38372        syncedAnchorElement = state.selectElement || state.compositeElement || state.disclosureElement;
38373        combobox.setState("anchorElement", syncedAnchorElement);
38374      }));
38375      setup(combobox, () => sync(combobox, [
38376        "items",
38377        "selectedValue",
38378        "selectElement"
38379      ], (state, prevState) => {
38380        if (!shouldSetDefaultSelectedValue) return;
38381        if (state.selectedValue !== prevState.selectedValue) {
38382          shouldSetDefaultSelectedValue = false;
38383          return;
38384        }
38385        if (!state.selectElement) return;
38386        queueMicrotask(() => {
38387          if (!shouldSetDefaultSelectedValue) return;
38388          const state2 = combobox.getState();
38389          if (!state2.selectElement) return;
38390          const item = state2.items.find((item2) => !item2.disabled && item2.value != null);
38391          if (item?.value == null) return;
38392          shouldSetDefaultSelectedValue = false;
38393          combobox.setState("selectedValue", item.value);
38394        });
38395      }));
38396      if (isTouchSafari) setup(combobox, () => sync(combobox, ["virtualFocus"], () => {
38397        combobox.setState("virtualFocus", false);
38398      }));
38399      setup(combobox, () => {
38400        if (!tag) return;
38401        return chain(sync(combobox, ["selectedValue"], (state) => {
38402          if (!Array.isArray(state.selectedValue)) return;
38403          tag.setValues(state.selectedValue);
38404        }), sync(tag, ["values"], (state) => {
38405          combobox.setState("selectedValue", state.values);
38406        }));
38407      });
38408      setup(combobox, () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => {
38409        if (!state.resetValueOnHide) return;
38410        if (state.mounted) return;
38411        combobox.setState("inputValue", inputValue);
38412      }));
38413      setup(combobox, () => sync(combobox, ["open"], (state) => {
38414        if (state.open) {
38415          resolveSelectedItemOnOpen = true;
38416          return;
38417        }
38418        resolveSelectedItemOnOpen = false;
38419        combobox.setState("activeId", activeId);
38420        combobox.setState("moves", 0);
38421      }));
38422      setup(combobox, () => sync(combobox, ["moves", "activeId"], (state, prevState) => {
38423        if (state.moves !== prevState.moves) resolveSelectedItemOnOpen = false;
38424        if (state.activeId !== prevState.activeId) resolveSelectedItemOnOpen = false;
38425        if (state.moves === prevState.moves) combobox.setState("activeValue", void 0);
38426      }));
38427      setup(combobox, () => batch(combobox, ["moves", "renderedItems"], (state, prev) => {
38428        if (state.moves === prev.moves) return;
38429        const { activeId: activeId2 } = combobox.getState();
38430        const activeItem = composite.item(activeId2);
38431        combobox.setState("activeValue", activeItem?.value);
38432      }));
38433      setup(combobox, () => sync(combobox, [
38434        "items",
38435        "mounted",
38436        "open",
38437        "selectedValue",
38438        "selectElement"
38439      ], (state) => {
38440        if (!state.selectElement) return;
38441        if (state.mounted && !resolveSelectedItemOnOpen) return;
38442        const values = Array.isArray(state.selectedValue) ? state.selectedValue : [state.selectedValue];
38443        const lastValue = values[values.length - 1];
38444        if (lastValue == null) return;
38445        const item = state.items.find((item2) => !item2.disabled && item2.value === lastValue);
38446        if (!item) return;
38447        resolveSelectedItemOnOpen = false;
38448        combobox.setState("activeId", item.id);
38449      }));
38450      setup(combobox, () => batch(combobox, ["selectOnMove", "moves"], (state) => {
38451        const { activeId: activeId2, open, selectedValue: selectedValue2, selectElement } = combobox.getState();
38452        if (!selectElement) return;
38453        if (!state.selectOnMove && open) return;
38454        if (Array.isArray(selectedValue2)) return;
38455        if (!state.moves) return;
38456        if (!activeId2) return;
38457        const item = composite.item(activeId2);
38458        if (!item || item.disabled || item.value == null) return;
38459        combobox.setState("selectedValue", item.value);
38460      }));
38461      const setInputValue = (value) => {
38462        combobox.setState("inputValue", value);
38463      };
38464      const resetInputValue = () => setInputValue(initialState.inputValue);
38465      const setState = (key, value) => {
38466        selectDefaultOptions.delete(key);
38467        if (key === "includesBaseElement") selectDefaultOptions.delete("compositeElementInFocusOrder");
38468        if (key === "selectedValue") shouldSetDefaultSelectedValue = false;
38469        combobox.setState(key, value);
38470      };
38471      return {
38472        ...popover,
38473        ...composite,
38474        ...combobox,
38475        setState,
38476        tag,
38477        setInputValue,
38478        resetInputValue,
38479        setValue: setInputValue,
38480        resetValue: resetInputValue,
38481        setSelectedValue: (selectedValue2) => setState("selectedValue", selectedValue2),
38482        setInputElement: (element) => combobox.setState("inputElement", element),
38483        setLabelElement: (element) => combobox.setState("labelElement", element),
38484        setSelectElement: (element) => combobox.setState("selectElement", element),
38485        setSelectLabelElement: (element) => combobox.setState("selectLabelElement", element)
38486      };
38487    }
38488  
38489    // node_modules/@ariakit/react-components/dist/combobox/combobox-store.js
38490    function useComboboxStoreOptions(props) {
38491      const tag = useTagContext();
38492      props = {
38493        ...props,
38494        tag: props.tag !== void 0 ? props.tag : tag
38495      };
38496      return useCompositeStoreOptions(props);
38497    }
38498    function useComboboxStoreProps(store, update2, props) {
38499      useUpdateEffect(update2, [props.tag]);
38500      const inputValueProps = {
38501        inputValue: props.inputValue ?? props.value,
38502        setInputValue: props.setInputValue ?? props.setValue
38503      };
38504      useStoreProps(store, inputValueProps, "inputValue", "setInputValue");
38505      useStoreProps(store, props, "selectedValue", "setSelectedValue");
38506      useStoreProps(store, props, "selectOnMove");
38507      useStoreProps(store, props, "resetValueOnHide");
38508      useStoreProps(store, props, "resetValueOnSelect");
38509      return Object.assign(useCompositeStoreProps(usePopoverStoreProps(store, update2, props), update2, props), { tag: props.tag });
38510    }
38511    function useComboboxStore(props = {}) {
38512      props = useComboboxStoreOptions(props);
38513      const [store, update2] = useStore2(createComboboxStore, props);
38514      return useComboboxStoreProps(store, update2, props);
38515    }
38516  
38517    // node_modules/@ariakit/react-components/dist/combobox/combobox-provider.js
38518    var import_jsx_runtime150 = __toESM(require_jsx_runtime(), 1);
38519    function ComboboxProvider(props = {}) {
38520      const store = useComboboxStore(props);
38521      return /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(ComboboxContextProvider, {
38522        value: store,
38523        children: props.children
38524      });
38525    }
38526  
38527    // packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs
38528    var import_remove_accents = __toESM(require_remove_accents(), 1);
38529    var import_compose12 = __toESM(require_compose(), 1);
38530    var import_i18n39 = __toESM(require_i18n(), 1);
38531    var import_element98 = __toESM(require_element(), 1);
38532    var import_components21 = __toESM(require_components(), 1);
38533  
38534    // packages/dataviews/build-module/components/dataviews-filters/utils.mjs
38535    var EMPTY_ARRAY3 = [];
38536    var getCurrentValue = (filterDefinition, currentFilter) => {
38537      if (filterDefinition.singleSelection) {
38538        return currentFilter?.value;
38539      }
38540      if (Array.isArray(currentFilter?.value)) {
38541        return currentFilter.value;
38542      }
38543      if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) {
38544        return [currentFilter.value];
38545      }
38546      return EMPTY_ARRAY3;
38547    };
38548  
38549    // packages/dataviews/build-module/hooks/use-elements.mjs
38550    var import_element97 = __toESM(require_element(), 1);
38551    var EMPTY_ARRAY4 = [];
38552    function useElements({
38553      elements,
38554      getElements
38555    }) {
38556      const staticElements = Array.isArray(elements) && elements.length > 0 ? elements : EMPTY_ARRAY4;
38557      const [records, setRecords] = (0, import_element97.useState)(staticElements);
38558      const [isLoading, setIsLoading] = (0, import_element97.useState)(false);
38559      (0, import_element97.useEffect)(() => {
38560        if (!getElements) {
38561          setRecords(staticElements);
38562          return;
38563        }
38564        let cancelled = false;
38565        setIsLoading(true);
38566        getElements().then((fetchedElements) => {
38567          if (!cancelled) {
38568            const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements;
38569            setRecords(dynamicElements);
38570          }
38571        }).catch(() => {
38572          if (!cancelled) {
38573            setRecords(staticElements);
38574          }
38575        }).finally(() => {
38576          if (!cancelled) {
38577            setIsLoading(false);
38578          }
38579        });
38580        return () => {
38581          cancelled = true;
38582        };
38583      }, [getElements, staticElements]);
38584      return {
38585        elements: records,
38586        isLoading
38587      };
38588    }
38589  
38590    // packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs
38591    var import_jsx_runtime151 = __toESM(require_jsx_runtime(), 1);
38592    function normalizeSearchInput(input = "") {
38593      return (0, import_remove_accents.default)(input.trim().toLowerCase());
38594    }
38595    var getNewValue = (filterDefinition, currentFilter, value) => {
38596      if (filterDefinition.singleSelection) {
38597        return value;
38598      }
38599      if (Array.isArray(currentFilter?.value)) {
38600        return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value];
38601      }
38602      return [value];
38603    };
38604    function generateFilterElementCompositeItemId(prefix, filterElementValue) {
38605      return `$prefix}-$filterElementValue}`;
38606    }
38607    var MultiSelectionOption = ({ selected }) => {
38608      return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38609        "span",
38610        {
38611          className: clsx_default(
38612            "dataviews-filters__search-widget-listitem-multi-selection",
38613            { "is-selected": selected }
38614          ),
38615          children: selected && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(import_components21.Icon, { icon: check_default })
38616        }
38617      );
38618    };
38619    var SingleSelectionOption = ({ selected }) => {
38620      return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38621        "span",
38622        {
38623          className: clsx_default(
38624            "dataviews-filters__search-widget-listitem-single-selection",
38625            { "is-selected": selected }
38626          )
38627        }
38628      );
38629    };
38630    function ListBox({ view, filter, onChangeView }) {
38631      const baseId = (0, import_compose12.useInstanceId)(ListBox, "dataviews-filter-list-box");
38632      const [activeCompositeId, setActiveCompositeId] = (0, import_element98.useState)(
38633        // When there are one or less operators, the first item is set as active
38634        // (by setting the initial `activeId` to `undefined`).
38635        // With 2 or more operators, the focus is moved on the operators control
38636        // (by setting the initial `activeId` to `null`), meaning that there won't
38637        // be an active item initially. Focus is then managed via the
38638        // `onFocusVisible` callback.
38639        filter.operators?.length === 1 ? void 0 : null
38640      );
38641      const currentFilter = view.filters?.find(
38642        (f2) => f2.field === filter.field
38643      );
38644      const currentValue = getCurrentValue(filter, currentFilter);
38645      return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38646        import_components21.Composite,
38647        {
38648          virtualFocus: true,
38649          focusLoop: true,
38650          activeId: activeCompositeId,
38651          setActiveId: setActiveCompositeId,
38652          role: "listbox",
38653          className: "dataviews-filters__search-widget-listbox",
38654          "aria-label": (0, import_i18n39.sprintf)(
38655            /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */
38656            (0, import_i18n39.__)("List of: %1$s"),
38657            filter.name
38658          ),
38659          onFocusVisible: () => {
38660            if (!activeCompositeId && filter.elements.length) {
38661              setActiveCompositeId(
38662                generateFilterElementCompositeItemId(
38663                  baseId,
38664                  filter.elements[0].value
38665                )
38666              );
38667            }
38668          },
38669          render: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(import_components21.Composite.Typeahead, {}),
38670          children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(
38671            import_components21.Composite.Hover,
38672            {
38673              render: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38674                import_components21.Composite.Item,
38675                {
38676                  id: generateFilterElementCompositeItemId(
38677                    baseId,
38678                    element.value
38679                  ),
38680                  render: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38681                    "div",
38682                    {
38683                      "aria-label": element.label,
38684                      role: "option",
38685                      className: "dataviews-filters__search-widget-listitem"
38686                    }
38687                  ),
38688                  onClick: () => {
38689                    const newFilters = currentFilter ? [
38690                      ...(view.filters ?? []).map(
38691                        (_filter) => {
38692                          if (_filter.field === filter.field) {
38693                            return {
38694                              ..._filter,
38695                              operator: currentFilter.operator || filter.operators[0],
38696                              value: getNewValue(
38697                                filter,
38698                                currentFilter,
38699                                element.value
38700                              )
38701                            };
38702                          }
38703                          return _filter;
38704                        }
38705                      )
38706                    ] : [
38707                      ...view.filters ?? [],
38708                      {
38709                        field: filter.field,
38710                        operator: filter.operators[0],
38711                        value: getNewValue(
38712                          filter,
38713                          currentFilter,
38714                          element.value
38715                        )
38716                      }
38717                    ];
38718                    onChangeView({
38719                      ...view,
38720                      page: 1,
38721                      filters: newFilters
38722                    });
38723                  }
38724                }
38725              ),
38726              children: [
38727                filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38728                  SingleSelectionOption,
38729                  {
38730                    selected: currentValue === element.value
38731                  }
38732                ),
38733                !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38734                  MultiSelectionOption,
38735                  {
38736                    selected: currentValue.includes(element.value)
38737                  }
38738                ),
38739                /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38740                  "span",
38741                  {
38742                    className: "dataviews-filters__search-widget-listitem-value",
38743                    title: element.label,
38744                    children: element.label
38745                  }
38746                )
38747              ]
38748            },
38749            element.value
38750          ))
38751        }
38752      );
38753    }
38754    function ComboboxList22({ view, filter, onChangeView }) {
38755      const [searchValue, setSearchValue] = (0, import_element98.useState)("");
38756      const deferredSearchValue = (0, import_element98.useDeferredValue)(searchValue);
38757      const currentFilter = view.filters?.find(
38758        (_filter) => _filter.field === filter.field
38759      );
38760      const currentValue = getCurrentValue(filter, currentFilter);
38761      const matches = (0, import_element98.useMemo)(() => {
38762        const normalizedSearch = normalizeSearchInput(deferredSearchValue);
38763        return filter.elements.filter(
38764          (item) => normalizeSearchInput(item.label).includes(normalizedSearch)
38765        );
38766      }, [filter.elements, deferredSearchValue]);
38767      return /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(
38768        ComboboxProvider,
38769        {
38770          selectedValue: currentValue,
38771          setSelectedValue: (value) => {
38772            const newFilters = currentFilter ? [
38773              ...(view.filters ?? []).map((_filter) => {
38774                if (_filter.field === filter.field) {
38775                  return {
38776                    ..._filter,
38777                    operator: currentFilter.operator || filter.operators[0],
38778                    value
38779                  };
38780                }
38781                return _filter;
38782              })
38783            ] : [
38784              ...view.filters ?? [],
38785              {
38786                field: filter.field,
38787                operator: filter.operators[0],
38788                value
38789              }
38790            ];
38791            onChangeView({
38792              ...view,
38793              page: 1,
38794              filters: newFilters
38795            });
38796          },
38797          setValue: setSearchValue,
38798          children: [
38799            /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [
38800              /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(ComboboxLabel, {}), children: (0, import_i18n39.__)("Search items") }),
38801              /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38802                Combobox,
38803                {
38804                  autoSelect: "always",
38805                  placeholder: (0, import_i18n39.__)("Search"),
38806                  className: "dataviews-filters__search-widget-filter-combobox__input"
38807                }
38808              ),
38809              /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(import_components21.Icon, { icon: search_default }) })
38810            ] }),
38811            /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(
38812              ComboboxList,
38813              {
38814                className: "dataviews-filters__search-widget-filter-combobox-list",
38815                alwaysVisible: true,
38816                children: [
38817                  matches.map((element) => {
38818                    return /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(
38819                      ComboboxItem,
38820                      {
38821                        resetValueOnSelect: false,
38822                        value: element.value,
38823                        className: "dataviews-filters__search-widget-listitem",
38824                        hideOnClick: false,
38825                        setValueOnClick: false,
38826                        focusOnHover: true,
38827                        children: [
38828                          filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38829                            SingleSelectionOption,
38830                            {
38831                              selected: currentValue === element.value
38832                            }
38833                          ),
38834                          !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38835                            MultiSelectionOption,
38836                            {
38837                              selected: currentValue.includes(
38838                                element.value
38839                              )
38840                            }
38841                          ),
38842                          /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(
38843                            "span",
38844                            {
38845                              className: "dataviews-filters__search-widget-listitem-value",
38846                              title: element.label,
38847                              children: [
38848                                /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(
38849                                  ComboboxItemValue,
38850                                  {
38851                                    className: "dataviews-filters__search-widget-filter-combobox-item-value",
38852                                    value: element.label
38853                                  }
38854                                ),
38855                                !!element.description && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description })
38856                              ]
38857                            }
38858                          )
38859                        ]
38860                      },
38861                      element.value
38862                    );
38863                  }),
38864                  !matches.length && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("p", { children: (0, import_i18n39.__)("No results found") })
38865                ]
38866              }
38867            )
38868          ]
38869        }
38870      );
38871    }
38872    function SearchWidget(props) {
38873      const { elements, isLoading } = useElements({
38874        elements: props.filter.elements,
38875        getElements: props.filter.getElements
38876      });
38877      if (isLoading) {
38878        return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(import_components21.Spinner, {}) });
38879      }
38880      if (elements.length === 0) {
38881        return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n39.__)("No elements found") });
38882      }
38883      const Widget = elements.length > 10 ? ComboboxList22 : ListBox;
38884      return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)(Widget, { ...props, filter: { ...props.filter, elements } });
38885    }
38886  
38887    // packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs
38888    var import_es6 = __toESM(require_es6(), 1);
38889    var import_compose13 = __toESM(require_compose(), 1);
38890    var import_element99 = __toESM(require_element(), 1);
38891    var import_components22 = __toESM(require_components(), 1);
38892    var import_jsx_runtime152 = __toESM(require_jsx_runtime(), 1);
38893    function InputWidget({
38894      filter,
38895      view,
38896      onChangeView,
38897      fields
38898    }) {
38899      const currentFilter = view.filters?.find(
38900        (f2) => f2.field === filter.field
38901      );
38902      const currentValue = getCurrentValue(filter, currentFilter);
38903      const field = (0, import_element99.useMemo)(() => {
38904        const currentField = fields.find((f2) => f2.id === filter.field);
38905        if (currentField) {
38906          return {
38907            ...currentField,
38908            // Deactivate validation for filters.
38909            isValid: {},
38910            // Filter controls are always enabled.
38911            isDisabled: () => false,
38912            // Filter controls are always visible.
38913            isVisible: () => true,
38914            // Configure getValue/setValue as if Item was a plain object.
38915            getValue: ({ item }) => item[currentField.id],
38916            setValue: ({ value }) => ({
38917              [currentField.id]: value
38918            })
38919          };
38920        }
38921        return currentField;
38922      }, [fields, filter.field]);
38923      const data = (0, import_element99.useMemo)(() => {
38924        return (view.filters ?? []).reduce(
38925          (acc, activeFilter) => {
38926            acc[activeFilter.field] = activeFilter.value;
38927            return acc;
38928          },
38929          {}
38930        );
38931      }, [view.filters]);
38932      const handleChange = (0, import_compose13.useEvent)((updatedData) => {
38933        if (!field || !currentFilter) {
38934          return;
38935        }
38936        const nextValue = field.getValue({ item: updatedData });
38937        if ((0, import_es6.default)(nextValue, currentValue)) {
38938          return;
38939        }
38940        onChangeView({
38941          ...view,
38942          filters: (view.filters ?? []).map(
38943            (_filter) => _filter.field === filter.field ? {
38944              ..._filter,
38945              operator: currentFilter.operator || filter.operators[0],
38946              // Consider empty strings as undefined:
38947              //
38948              // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records
38949              // - empty string as value means "search empty string": returns only the records that have an empty string as value
38950              //
38951              // In practice, this means the filter will not be able to find an empty string as the value.
38952              value: nextValue === "" ? void 0 : nextValue
38953            } : _filter
38954          )
38955        });
38956      });
38957      if (!field || !field.Edit || !currentFilter) {
38958        return null;
38959      }
38960      return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(
38961        import_components22.Flex,
38962        {
38963          className: "dataviews-filters__user-input-widget",
38964          gap: 2.5,
38965          direction: "column",
38966          children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(
38967            field.Edit,
38968            {
38969              hideLabelFromVision: true,
38970              data,
38971              field,
38972              operator: currentFilter.operator,
38973              onChange: handleChange
38974            }
38975          )
38976        }
38977      );
38978    }
38979  
38980    // packages/dataviews/build-module/utils/operators.mjs
38981    var import_i18n40 = __toESM(require_i18n(), 1);
38982    var import_element100 = __toESM(require_element(), 1);
38983    var import_date2 = __toESM(require_date(), 1);
38984  
38985    // packages/dataviews/build-module/field-types/utils/parse-time.mjs
38986    var ZONE_DESIGNATOR = /(?:[Zz]|[+-](?:[01]\d|2[0-3]):?[0-5]\d)$/;
38987    var TIME_FORMATS = ["HH:mm", "HH:mm:ss"];
38988    var REFERENCE_DATE = new Date(2e3, 0, 1);
38989    function parseTime2(value) {
38990      if (typeof value !== "string") {
38991        return null;
38992      }
38993      const time = value.trim().replace(ZONE_DESIGNATOR, "");
38994      for (const timeFormat of TIME_FORMATS) {
38995        const parsed = parse(time, timeFormat, REFERENCE_DATE);
38996        if (isValid(parsed)) {
38997          return parsed.getHours() * 3600 + parsed.getMinutes() * 60 + parsed.getSeconds();
38998        }
38999      }
39000      return null;
39001    }
39002  
39003    // packages/dataviews/build-module/utils/operators.mjs
39004    var import_jsx_runtime153 = __toESM(require_jsx_runtime(), 1);
39005    var filterTextWrappers = {
39006      Name: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }),
39007      Value: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" })
39008    };
39009    function toComparableTemporals(fieldValue, filterValue) {
39010      const filterTime = parseTime2(filterValue);
39011      if (filterTime !== null) {
39012        return [parseTime2(fieldValue) ?? NaN, filterTime];
39013      }
39014      return [
39015        (0, import_date2.getDate)(fieldValue).getTime(),
39016        (0, import_date2.getDate)(filterValue).getTime()
39017      ];
39018    }
39019    function getRelativeDate(value, unit) {
39020      switch (unit) {
39021        case "days":
39022          return subDays(/* @__PURE__ */ new Date(), value);
39023        case "weeks":
39024          return subWeeks(/* @__PURE__ */ new Date(), value);
39025        case "months":
39026          return subMonths(/* @__PURE__ */ new Date(), value);
39027        case "years":
39028          return subYears(/* @__PURE__ */ new Date(), value);
39029        default:
39030          return /* @__PURE__ */ new Date();
39031      }
39032    }
39033    var isNoneOperatorDefinition = {
39034      /* translators: DataViews operator name */
39035      label: (0, import_i18n40.__)("Is none of"),
39036      filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39037        (0, import_i18n40.sprintf)(
39038          /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */
39039          (0, import_i18n40.__)("<Name>%1$s is none of: </Name><Value>%2$s</Value>"),
39040          filter.name,
39041          activeElements.map((element) => element.label).join(", ")
39042        ),
39043        filterTextWrappers
39044      ),
39045      filter: ((item, field, filterValue) => {
39046        if (!filterValue?.length) {
39047          return true;
39048        }
39049        const fieldValue = field.getValue({ item });
39050        if (Array.isArray(fieldValue)) {
39051          return !filterValue.some(
39052            (fv) => fieldValue.includes(fv)
39053          );
39054        } else if (typeof fieldValue === "string" || typeof fieldValue === "number") {
39055          return !filterValue.includes(fieldValue);
39056        }
39057        return false;
39058      }),
39059      selection: "multi"
39060    };
39061    var OPERATORS = [
39062      {
39063        name: OPERATOR_IS_ANY,
39064        /* translators: DataViews operator name */
39065        label: (0, import_i18n40.__)("Includes"),
39066        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39067          (0, import_i18n40.sprintf)(
39068            /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */
39069            (0, import_i18n40.__)("<Name>%1$s includes: </Name><Value>%2$s</Value>"),
39070            filter.name,
39071            activeElements.map((element) => element.label).join(", ")
39072          ),
39073          filterTextWrappers
39074        ),
39075        filter(item, field, filterValue) {
39076          if (!filterValue?.length) {
39077            return true;
39078          }
39079          const fieldValue = field.getValue({ item });
39080          if (Array.isArray(fieldValue)) {
39081            return filterValue.some(
39082              (fv) => fieldValue.includes(fv)
39083            );
39084          } else if (typeof fieldValue === "string" || typeof fieldValue === "number") {
39085            return filterValue.includes(fieldValue);
39086          }
39087          return false;
39088        },
39089        selection: "multi"
39090      },
39091      {
39092        name: OPERATOR_IS_NONE,
39093        ...isNoneOperatorDefinition
39094      },
39095      {
39096        name: OPERATOR_IS_ALL,
39097        /* translators: DataViews operator name */
39098        label: (0, import_i18n40.__)("Includes all"),
39099        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39100          (0, import_i18n40.sprintf)(
39101            /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */
39102            (0, import_i18n40.__)("<Name>%1$s includes all: </Name><Value>%2$s</Value>"),
39103            filter.name,
39104            activeElements.map((element) => element.label).join(", ")
39105          ),
39106          filterTextWrappers
39107        ),
39108        filter(item, field, filterValue) {
39109          if (!filterValue?.length) {
39110            return true;
39111          }
39112          const fieldValue = field.getValue({ item });
39113          if (!Array.isArray(fieldValue)) {
39114            return false;
39115          }
39116          return filterValue.every(
39117            (value) => fieldValue.includes(value)
39118          );
39119        },
39120        selection: "multi"
39121      },
39122      {
39123        name: OPERATOR_IS_NOT_ALL,
39124        ...isNoneOperatorDefinition
39125      },
39126      {
39127        name: OPERATOR_BETWEEN,
39128        /* translators: DataViews operator name */
39129        label: (0, import_i18n40.__)("Between (inc)"),
39130        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39131          (0, import_i18n40.sprintf)(
39132            /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */
39133            (0, import_i18n40.__)(
39134              "<Name>%1$s between (inc): </Name><Value>%2$s and %3$s</Value>"
39135            ),
39136            filter.name,
39137            activeElements[0].label[0],
39138            activeElements[0].label[1]
39139          ),
39140          filterTextWrappers
39141        ),
39142        filter(item, field, filterValue) {
39143          if (!Array.isArray(filterValue) || filterValue.length !== 2 || // An unfilled bound is `undefined` from the controls, `''`
39144          // when it arrives from a persisted view, or `null` once
39145          // `undefined` round-trips through JSON persistence.
39146          filterValue.includes(void 0) || filterValue.includes("") || filterValue.includes(null)) {
39147            return true;
39148          }
39149          const fieldValue = field.getValue({ item });
39150          const [min3, max3] = filterValue.map(parseTime2);
39151          if (min3 !== null && max3 !== null) {
39152            const value = parseTime2(fieldValue);
39153            return value !== null && value >= min3 && value <= max3;
39154          }
39155          if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") {
39156            return fieldValue >= filterValue[0] && fieldValue <= filterValue[1];
39157          }
39158          return false;
39159        },
39160        selection: "custom"
39161      },
39162      {
39163        name: OPERATOR_IN_THE_PAST,
39164        /* translators: DataViews operator name */
39165        label: (0, import_i18n40.__)("In the past"),
39166        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39167          (0, import_i18n40.sprintf)(
39168            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */
39169            (0, import_i18n40.__)(
39170              "<Name>%1$s is in the past: </Name><Value>%2$s</Value>"
39171            ),
39172            filter.name,
39173            `$activeElements[0].value.value} $activeElements[0].value.unit}`
39174          ),
39175          filterTextWrappers
39176        ),
39177        filter(item, field, filterValue) {
39178          if (filterValue?.value === void 0 || filterValue?.unit === void 0) {
39179            return true;
39180          }
39181          const targetDate = getRelativeDate(
39182            filterValue.value,
39183            filterValue.unit
39184          );
39185          const fieldValue = (0, import_date2.getDate)(field.getValue({ item }));
39186          return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date();
39187        },
39188        selection: "custom"
39189      },
39190      {
39191        name: OPERATOR_OVER,
39192        /* translators: DataViews operator name */
39193        label: (0, import_i18n40.__)("Over"),
39194        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39195          (0, import_i18n40.sprintf)(
39196            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */
39197            (0, import_i18n40.__)("<Name>%1$s is over: </Name><Value>%2$s</Value>"),
39198            filter.name,
39199            `$activeElements[0].value.value} $activeElements[0].value.unit}`
39200          ),
39201          filterTextWrappers
39202        ),
39203        filter(item, field, filterValue) {
39204          if (filterValue?.value === void 0 || filterValue?.unit === void 0) {
39205            return true;
39206          }
39207          const targetDate = getRelativeDate(
39208            filterValue.value,
39209            filterValue.unit
39210          );
39211          const fieldValue = (0, import_date2.getDate)(field.getValue({ item }));
39212          return fieldValue < targetDate;
39213        },
39214        selection: "custom"
39215      },
39216      {
39217        name: OPERATOR_IS,
39218        /* translators: DataViews operator name */
39219        label: (0, import_i18n40.__)("Is"),
39220        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39221          (0, import_i18n40.sprintf)(
39222            /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */
39223            (0, import_i18n40.__)("<Name>%1$s is: </Name><Value>%2$s</Value>"),
39224            filter.name,
39225            activeElements[0].label
39226          ),
39227          filterTextWrappers
39228        ),
39229        filter(item, field, filterValue) {
39230          return filterValue === field.getValue({ item }) || filterValue === void 0;
39231        },
39232        selection: "single"
39233      },
39234      {
39235        name: OPERATOR_IS_NOT,
39236        /* translators: DataViews operator name */
39237        label: (0, import_i18n40.__)("Is not"),
39238        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39239          (0, import_i18n40.sprintf)(
39240            /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */
39241            (0, import_i18n40.__)("<Name>%1$s is not: </Name><Value>%2$s</Value>"),
39242            filter.name,
39243            activeElements[0].label
39244          ),
39245          filterTextWrappers
39246        ),
39247        filter(item, field, filterValue) {
39248          return filterValue !== field.getValue({ item });
39249        },
39250        selection: "single"
39251      },
39252      {
39253        name: OPERATOR_LESS_THAN,
39254        /* translators: DataViews operator name */
39255        label: (0, import_i18n40.__)("Less than"),
39256        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39257          (0, import_i18n40.sprintf)(
39258            /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */
39259            (0, import_i18n40.__)("<Name>%1$s is less than: </Name><Value>%2$s</Value>"),
39260            filter.name,
39261            activeElements[0].label
39262          ),
39263          filterTextWrappers
39264        ),
39265        filter(item, field, filterValue) {
39266          if (filterValue === void 0) {
39267            return true;
39268          }
39269          const fieldValue = field.getValue({ item });
39270          return fieldValue < filterValue;
39271        },
39272        selection: "single"
39273      },
39274      {
39275        name: OPERATOR_GREATER_THAN,
39276        /* translators: DataViews operator name */
39277        label: (0, import_i18n40.__)("Greater than"),
39278        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39279          (0, import_i18n40.sprintf)(
39280            /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */
39281            (0, import_i18n40.__)(
39282              "<Name>%1$s is greater than: </Name><Value>%2$s</Value>"
39283            ),
39284            filter.name,
39285            activeElements[0].label
39286          ),
39287          filterTextWrappers
39288        ),
39289        filter(item, field, filterValue) {
39290          if (filterValue === void 0) {
39291            return true;
39292          }
39293          const fieldValue = field.getValue({ item });
39294          return fieldValue > filterValue;
39295        },
39296        selection: "single"
39297      },
39298      {
39299        name: OPERATOR_LESS_THAN_OR_EQUAL,
39300        /* translators: DataViews operator name */
39301        label: (0, import_i18n40.__)("Less than or equal"),
39302        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39303          (0, import_i18n40.sprintf)(
39304            /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */
39305            (0, import_i18n40.__)(
39306              "<Name>%1$s is less than or equal to: </Name><Value>%2$s</Value>"
39307            ),
39308            filter.name,
39309            activeElements[0].label
39310          ),
39311          filterTextWrappers
39312        ),
39313        filter(item, field, filterValue) {
39314          if (filterValue === void 0) {
39315            return true;
39316          }
39317          const fieldValue = field.getValue({ item });
39318          return fieldValue <= filterValue;
39319        },
39320        selection: "single"
39321      },
39322      {
39323        name: OPERATOR_GREATER_THAN_OR_EQUAL,
39324        /* translators: DataViews operator name */
39325        label: (0, import_i18n40.__)("Greater than or equal"),
39326        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39327          (0, import_i18n40.sprintf)(
39328            /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */
39329            (0, import_i18n40.__)(
39330              "<Name>%1$s is greater than or equal to: </Name><Value>%2$s</Value>"
39331            ),
39332            filter.name,
39333            activeElements[0].label
39334          ),
39335          filterTextWrappers
39336        ),
39337        filter(item, field, filterValue) {
39338          if (filterValue === void 0) {
39339            return true;
39340          }
39341          const fieldValue = field.getValue({ item });
39342          return fieldValue >= filterValue;
39343        },
39344        selection: "single"
39345      },
39346      {
39347        name: OPERATOR_BEFORE,
39348        /* translators: DataViews operator name */
39349        label: (0, import_i18n40.__)("Before"),
39350        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39351          (0, import_i18n40.sprintf)(
39352            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */
39353            (0, import_i18n40.__)("<Name>%1$s is before: </Name><Value>%2$s</Value>"),
39354            filter.name,
39355            activeElements[0].label
39356          ),
39357          filterTextWrappers
39358        ),
39359        filter(item, field, filterValue) {
39360          if (filterValue === void 0) {
39361            return true;
39362          }
39363          const [fieldTemporal, filterTemporal] = toComparableTemporals(
39364            field.getValue({ item }),
39365            filterValue
39366          );
39367          return fieldTemporal < filterTemporal;
39368        },
39369        selection: "single"
39370      },
39371      {
39372        name: OPERATOR_AFTER,
39373        /* translators: DataViews operator name */
39374        label: (0, import_i18n40.__)("After"),
39375        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39376          (0, import_i18n40.sprintf)(
39377            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */
39378            (0, import_i18n40.__)("<Name>%1$s is after: </Name><Value>%2$s</Value>"),
39379            filter.name,
39380            activeElements[0].label
39381          ),
39382          filterTextWrappers
39383        ),
39384        filter(item, field, filterValue) {
39385          if (filterValue === void 0) {
39386            return true;
39387          }
39388          const [fieldTemporal, filterTemporal] = toComparableTemporals(
39389            field.getValue({ item }),
39390            filterValue
39391          );
39392          return fieldTemporal > filterTemporal;
39393        },
39394        selection: "single"
39395      },
39396      {
39397        name: OPERATOR_BEFORE_INC,
39398        /* translators: DataViews operator name */
39399        label: (0, import_i18n40.__)("Before (inc)"),
39400        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39401          (0, import_i18n40.sprintf)(
39402            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */
39403            (0, import_i18n40.__)(
39404              "<Name>%1$s is on or before: </Name><Value>%2$s</Value>"
39405            ),
39406            filter.name,
39407            activeElements[0].label
39408          ),
39409          filterTextWrappers
39410        ),
39411        filter(item, field, filterValue) {
39412          if (filterValue === void 0) {
39413            return true;
39414          }
39415          const [fieldTemporal, filterTemporal] = toComparableTemporals(
39416            field.getValue({ item }),
39417            filterValue
39418          );
39419          return fieldTemporal <= filterTemporal;
39420        },
39421        selection: "single"
39422      },
39423      {
39424        name: OPERATOR_AFTER_INC,
39425        /* translators: DataViews operator name */
39426        label: (0, import_i18n40.__)("After (inc)"),
39427        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39428          (0, import_i18n40.sprintf)(
39429            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */
39430            (0, import_i18n40.__)(
39431              "<Name>%1$s is on or after: </Name><Value>%2$s</Value>"
39432            ),
39433            filter.name,
39434            activeElements[0].label
39435          ),
39436          filterTextWrappers
39437        ),
39438        filter(item, field, filterValue) {
39439          if (filterValue === void 0) {
39440            return true;
39441          }
39442          const [fieldTemporal, filterTemporal] = toComparableTemporals(
39443            field.getValue({ item }),
39444            filterValue
39445          );
39446          return fieldTemporal >= filterTemporal;
39447        },
39448        selection: "single"
39449      },
39450      {
39451        name: OPERATOR_CONTAINS,
39452        /* translators: DataViews operator name */
39453        label: (0, import_i18n40.__)("Contains"),
39454        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39455          (0, import_i18n40.sprintf)(
39456            /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */
39457            (0, import_i18n40.__)("<Name>%1$s contains: </Name><Value>%2$s</Value>"),
39458            filter.name,
39459            activeElements[0].label
39460          ),
39461          filterTextWrappers
39462        ),
39463        filter(item, field, filterValue) {
39464          if (filterValue === void 0) {
39465            return true;
39466          }
39467          const fieldValue = field.getValue({ item });
39468          return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase());
39469        },
39470        selection: "single"
39471      },
39472      {
39473        name: OPERATOR_NOT_CONTAINS,
39474        /* translators: DataViews operator name */
39475        label: (0, import_i18n40.__)("Doesn't contain"),
39476        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39477          (0, import_i18n40.sprintf)(
39478            /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */
39479            (0, import_i18n40.__)(
39480              "<Name>%1$s doesn't contain: </Name><Value>%2$s</Value>"
39481            ),
39482            filter.name,
39483            activeElements[0].label
39484          ),
39485          filterTextWrappers
39486        ),
39487        filter(item, field, filterValue) {
39488          if (filterValue === void 0) {
39489            return true;
39490          }
39491          const fieldValue = field.getValue({ item });
39492          return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase());
39493        },
39494        selection: "single"
39495      },
39496      {
39497        name: OPERATOR_STARTS_WITH,
39498        /* translators: DataViews operator name */
39499        label: (0, import_i18n40.__)("Starts with"),
39500        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39501          (0, import_i18n40.sprintf)(
39502            /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */
39503            (0, import_i18n40.__)("<Name>%1$s starts with: </Name><Value>%2$s</Value>"),
39504            filter.name,
39505            activeElements[0].label
39506          ),
39507          filterTextWrappers
39508        ),
39509        filter(item, field, filterValue) {
39510          if (filterValue === void 0) {
39511            return true;
39512          }
39513          const fieldValue = field.getValue({ item });
39514          return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase());
39515        },
39516        selection: "single"
39517      },
39518      {
39519        name: OPERATOR_ON,
39520        /* translators: DataViews operator name */
39521        label: (0, import_i18n40.__)("On"),
39522        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39523          (0, import_i18n40.sprintf)(
39524            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */
39525            (0, import_i18n40.__)("<Name>%1$s is: </Name><Value>%2$s</Value>"),
39526            filter.name,
39527            activeElements[0].label
39528          ),
39529          filterTextWrappers
39530        ),
39531        filter(item, field, filterValue) {
39532          if (filterValue === void 0) {
39533            return true;
39534          }
39535          const [fieldTemporal, filterTemporal] = toComparableTemporals(
39536            field.getValue({ item }),
39537            filterValue
39538          );
39539          return fieldTemporal === filterTemporal;
39540        },
39541        selection: "single"
39542      },
39543      {
39544        name: OPERATOR_NOT_ON,
39545        /* translators: DataViews operator name */
39546        label: (0, import_i18n40.__)("Not on"),
39547        filterText: (filter, activeElements) => (0, import_element100.createInterpolateElement)(
39548          (0, import_i18n40.sprintf)(
39549            /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */
39550            (0, import_i18n40.__)("<Name>%1$s is not: </Name><Value>%2$s</Value>"),
39551            filter.name,
39552            activeElements[0].label
39553          ),
39554          filterTextWrappers
39555        ),
39556        filter(item, field, filterValue) {
39557          if (filterValue === void 0) {
39558            return true;
39559          }
39560          const [fieldTemporal, filterTemporal] = toComparableTemporals(
39561            field.getValue({ item }),
39562            filterValue
39563          );
39564          return fieldTemporal !== filterTemporal;
39565        },
39566        selection: "single"
39567      }
39568    ];
39569    var getOperatorByName = (name) => OPERATORS.find((op) => op.name === name);
39570    var getAllOperatorNames = () => OPERATORS.map((op) => op.name);
39571    var isSingleSelectionOperator = (name) => OPERATORS.filter((op) => op.selection === "single").some(
39572      (op) => op.name === name
39573    );
39574    var isRegisteredOperator = (name) => OPERATORS.some((op) => op.name === name);
39575  
39576    // packages/dataviews/build-module/components/dataviews-filters/filter.mjs
39577    var import_jsx_runtime154 = __toESM(require_jsx_runtime(), 1);
39578    var ENTER = "Enter";
39579    var SPACE = " ";
39580    var FilterText = ({
39581      activeElements,
39582      filterInView,
39583      filter
39584    }) => {
39585      if (activeElements === void 0 || activeElements.length === 0) {
39586        return filter.name;
39587      }
39588      const operator = getOperatorByName(filterInView?.operator);
39589      if (operator !== void 0) {
39590        return operator.filterText(filter, activeElements);
39591      }
39592      return (0, import_i18n41.sprintf)(
39593        /* translators: 1: Filter name e.g.: "Unknown status for Author". */
39594        (0, import_i18n41.__)("Unknown status for %1$s"),
39595        filter.name
39596      );
39597    };
39598    function OperatorSelector({
39599      filter,
39600      view,
39601      onChangeView
39602    }) {
39603      const operatorOptions = filter.operators?.map((operator) => ({
39604        value: operator,
39605        label: getOperatorByName(operator)?.label || operator
39606      }));
39607      const currentFilter = view.filters?.find(
39608        (_filter) => _filter.field === filter.field
39609      );
39610      const value = currentFilter?.operator || filter.operators[0];
39611      return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)(
39612        Stack,
39613        {
39614          direction: "row",
39615          gap: "sm",
39616          justify: "flex-start",
39617          className: "dataviews-filters__summary-operators-container",
39618          align: "center",
39619          children: [
39620            /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(import_components23.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }),
39621            /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39622              import_components23.SelectControl,
39623              {
39624                className: "dataviews-filters__summary-operators-filter-select",
39625                label: (0, import_i18n41.__)("Conditions"),
39626                value,
39627                options: operatorOptions,
39628                onChange: (newValue) => {
39629                  const newOperator = newValue;
39630                  const currentOperator = currentFilter?.operator;
39631                  const newFilters = currentFilter ? [
39632                    ...(view.filters ?? []).map(
39633                      (_filter) => {
39634                        if (_filter.field === filter.field) {
39635                          const currentOpSelectionModel = getOperatorByName(
39636                            currentOperator
39637                          )?.selection;
39638                          const newOpSelectionModel = getOperatorByName(
39639                            newOperator
39640                          )?.selection;
39641                          const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [
39642                            currentOpSelectionModel,
39643                            newOpSelectionModel
39644                          ].includes("custom");
39645                          return {
39646                            ..._filter,
39647                            value: shouldResetValue ? void 0 : _filter.value,
39648                            operator: newOperator
39649                          };
39650                        }
39651                        return _filter;
39652                      }
39653                    )
39654                  ] : [
39655                    ...view.filters ?? [],
39656                    {
39657                      field: filter.field,
39658                      operator: newOperator,
39659                      value: void 0
39660                    }
39661                  ];
39662                  onChangeView({
39663                    ...view,
39664                    page: 1,
39665                    filters: newFilters
39666                  });
39667                },
39668                size: "small",
39669                variant: "minimal",
39670                hideLabelFromVision: true
39671              }
39672            )
39673          ]
39674        }
39675      );
39676    }
39677    function Filter({
39678      addFilterRef,
39679      openedFilter,
39680      fields,
39681      ...commonProps
39682    }) {
39683      const toggleRef = (0, import_element101.useRef)(null);
39684      const { filter, view, onChangeView } = commonProps;
39685      const filterInView = view.filters?.find(
39686        (f2) => f2.field === filter.field
39687      );
39688      let activeElements = [];
39689      const field = (0, import_element101.useMemo)(() => {
39690        const currentField = fields.find((f2) => f2.id === filter.field);
39691        if (currentField) {
39692          return {
39693            ...currentField,
39694            // Configure getValue as if Item was a plain object.
39695            // See related input-widget.tsx
39696            getValue: ({ item }) => item[currentField.id]
39697          };
39698        }
39699        return currentField;
39700      }, [fields, filter.field]);
39701      const { elements } = useElements({
39702        elements: filter.elements,
39703        getElements: filter.getElements
39704      });
39705      if (elements.length > 0) {
39706        activeElements = elements.filter((element) => {
39707          if (filter.singleSelection) {
39708            return element.value === filterInView?.value;
39709          }
39710          return filterInView?.value?.includes(element.value);
39711        });
39712      } else if (Array.isArray(filterInView?.value)) {
39713        const isComplete = !filterInView.value.some(
39714          (v2) => v2 === void 0 || v2 === null || v2 === ""
39715        );
39716        if (isComplete) {
39717          const label = filterInView.value.map((v2) => {
39718            const formattedValue = field?.getValueFormatted({
39719              item: { [field.id]: v2 },
39720              field
39721            });
39722            return formattedValue || String(v2);
39723          });
39724          activeElements = [
39725            {
39726              value: filterInView.value,
39727              // @ts-expect-error `label` is a `string[]` here, but the element type expects a `string`.
39728              label
39729            }
39730          ];
39731        }
39732      } else if (typeof filterInView?.value === "object") {
39733        activeElements = [
39734          { value: filterInView.value, label: filterInView.value }
39735        ];
39736      } else if (filterInView?.value !== void 0) {
39737        const label = field !== void 0 ? field.getValueFormatted({
39738          item: { [field.id]: filterInView.value },
39739          field
39740        }) : String(filterInView.value);
39741        activeElements = [
39742          {
39743            value: filterInView.value,
39744            label
39745          }
39746        ];
39747      }
39748      const isPrimary = filter.isPrimary;
39749      const isLocked = filterInView?.isLocked;
39750      const hasValues = !isLocked && filterInView?.value !== void 0;
39751      const canResetOrRemove = !isLocked && (!isPrimary || hasValues);
39752      const resetOrRemoveLabel = isPrimary ? (0, import_i18n41.__)("Reset") : (0, import_i18n41.__)("Remove");
39753      return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39754        import_components23.Dropdown,
39755        {
39756          defaultOpen: openedFilter === filter.field,
39757          contentClassName: "dataviews-filters__summary-popover",
39758          popoverProps: { placement: "bottom-start", role: "dialog" },
39759          onClose: () => {
39760            toggleRef.current?.focus();
39761          },
39762          renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [
39763            /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)(tooltip_exports.Root, { children: [
39764              /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39765                tooltip_exports.Trigger,
39766                {
39767                  render: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39768                    "div",
39769                    {
39770                      className: clsx_default(
39771                        "dataviews-filters__summary-chip",
39772                        {
39773                          "has-reset": canResetOrRemove,
39774                          "has-values": hasValues,
39775                          "is-not-clickable": isLocked
39776                        }
39777                      ),
39778                      role: "button",
39779                      tabIndex: isLocked ? -1 : 0,
39780                      onClick: () => {
39781                        if (!isLocked) {
39782                          onToggle();
39783                        }
39784                      },
39785                      onKeyDown: (event) => {
39786                        if (!isLocked && [ENTER, SPACE].includes(
39787                          event.key
39788                        )) {
39789                          onToggle();
39790                          event.preventDefault();
39791                        }
39792                      },
39793                      "aria-disabled": isLocked,
39794                      "aria-pressed": isOpen,
39795                      "aria-expanded": isOpen,
39796                      ref: toggleRef,
39797                      children: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39798                        FilterText,
39799                        {
39800                          activeElements,
39801                          filterInView,
39802                          filter
39803                        }
39804                      )
39805                    }
39806                  )
39807                }
39808              ),
39809              /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(tooltip_exports.Popup, { children: (0, import_i18n41.sprintf)(
39810                /* translators: 1: Filter name. */
39811                (0, import_i18n41.__)("Filter by: %1$s"),
39812                filter.name.toLowerCase()
39813              ) })
39814            ] }),
39815            canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)(tooltip_exports.Root, { children: [
39816              /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39817                tooltip_exports.Trigger,
39818                {
39819                  render: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39820                    "button",
39821                    {
39822                      className: clsx_default(
39823                        "dataviews-filters__summary-chip-remove",
39824                        { "has-values": hasValues }
39825                      ),
39826                      "aria-label": resetOrRemoveLabel,
39827                      onClick: () => {
39828                        onChangeView({
39829                          ...view,
39830                          page: 1,
39831                          filters: view.filters?.filter(
39832                            (_filter) => _filter.field !== filter.field
39833                          )
39834                        });
39835                        if (!isPrimary) {
39836                          addFilterRef.current?.focus();
39837                        } else {
39838                          toggleRef.current?.focus();
39839                        }
39840                      },
39841                      children: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(import_components23.Icon, { icon: close_small_default })
39842                    }
39843                  )
39844                }
39845              ),
39846              /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(tooltip_exports.Popup, { children: resetOrRemoveLabel })
39847            ] })
39848          ] }),
39849          renderContent: () => {
39850            return /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [
39851              /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(OperatorSelector, { ...commonProps }),
39852              commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
39853                SearchWidget,
39854                {
39855                  ...commonProps,
39856                  filter: {
39857                    ...commonProps.filter,
39858                    elements
39859                  }
39860                }
39861              ) : /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(InputWidget, { ...commonProps, fields })
39862            ] });
39863          }
39864        }
39865      );
39866    }
39867  
39868    // packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs
39869    var import_components24 = __toESM(require_components(), 1);
39870    var import_i18n42 = __toESM(require_i18n(), 1);
39871    var import_element102 = __toESM(require_element(), 1);
39872    var import_jsx_runtime155 = __toESM(require_jsx_runtime(), 1);
39873    function AddFilterMenu({
39874      filters,
39875      view,
39876      onChangeView,
39877      setOpenedFilter,
39878      triggerProps
39879    }) {
39880      const inactiveFilters = filters.filter((filter) => !filter.isVisible);
39881      return (
39882        // The `disabled` prop on `Menu.Root` (rather than on the trigger)
39883        // keeps the menu from opening while letting the trigger button stay
39884        // focusable via its own `accessibleWhenDisabled`.
39885        /* @__PURE__ */ (0, import_jsx_runtime155.jsxs)(menu_exports.Root, { disabled: !inactiveFilters.length, children: [
39886          /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(menu_exports.Trigger, { ...triggerProps }),
39887          /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(menu_exports.Popup, { children: inactiveFilters.map((filter) => {
39888            return /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
39889              menu_exports.Item,
39890              {
39891                onClick: () => {
39892                  setOpenedFilter(filter.field);
39893                  onChangeView({
39894                    ...view,
39895                    page: 1,
39896                    filters: [
39897                      ...view.filters || [],
39898                      {
39899                        field: filter.field,
39900                        value: void 0,
39901                        operator: filter.operators[0]
39902                      }
39903                    ]
39904                  });
39905                },
39906                children: /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(menu_exports.ItemLabel, { children: filter.name })
39907              },
39908              filter.field
39909            );
39910          }) })
39911        ] })
39912      );
39913    }
39914    function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) {
39915      if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) {
39916        return null;
39917      }
39918      const inactiveFilters = filters.filter((filter) => !filter.isVisible);
39919      return /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
39920        AddFilterMenu,
39921        {
39922          triggerProps: {
39923            render: /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(
39924              import_components24.Button,
39925              {
39926                accessibleWhenDisabled: true,
39927                size: "compact",
39928                className: "dataviews-filters-button",
39929                variant: "tertiary",
39930                disabled: !inactiveFilters.length,
39931                ref
39932              }
39933            ),
39934            children: (0, import_i18n42.__)("Add filter")
39935          },
39936          ...{ filters, view, onChangeView, setOpenedFilter }
39937        }
39938      );
39939    }
39940    var add_filter_default = (0, import_element102.forwardRef)(AddFilter);
39941  
39942    // packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs
39943    var import_components25 = __toESM(require_components(), 1);
39944    var import_i18n43 = __toESM(require_i18n(), 1);
39945    var import_jsx_runtime156 = __toESM(require_jsx_runtime(), 1);
39946    function ResetFilter({
39947      filters,
39948      view,
39949      onChangeView
39950    }) {
39951      const isPrimary = (field) => filters.some(
39952        (_filter) => _filter.field === field && _filter.isPrimary
39953      );
39954      const isDisabled = !view.search && !view.filters?.some(
39955        (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field))
39956      );
39957      return /* @__PURE__ */ (0, import_jsx_runtime156.jsx)(
39958        import_components25.Button,
39959        {
39960          disabled: isDisabled,
39961          accessibleWhenDisabled: true,
39962          size: "compact",
39963          variant: "tertiary",
39964          className: "dataviews-filters__reset-button",
39965          onClick: () => {
39966            onChangeView({
39967              ...view,
39968              page: 1,
39969              search: "",
39970              filters: view.filters?.filter((f2) => !!f2.isLocked) || []
39971            });
39972          },
39973          children: (0, import_i18n43.__)("Reset")
39974        }
39975      );
39976    }
39977  
39978    // packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs
39979    var import_element103 = __toESM(require_element(), 1);
39980    function useFilters(fields, view) {
39981      return (0, import_element103.useMemo)(() => {
39982        const filters = [];
39983        fields.forEach((field) => {
39984          if (field.filterBy === false || !field.hasElements && !field.Edit) {
39985            return;
39986          }
39987          const operators = field.filterBy.operators;
39988          const isPrimary = !!field.filterBy?.isPrimary;
39989          const isLocked = view.filters?.some(
39990            (f2) => f2.field === field.id && !!f2.isLocked
39991          ) ?? false;
39992          filters.push({
39993            field: field.id,
39994            name: field.label,
39995            elements: field.elements,
39996            getElements: field.getElements,
39997            hasElements: field.hasElements,
39998            singleSelection: operators.some(
39999              (op) => isSingleSelectionOperator(op)
40000            ),
40001            operators,
40002            isVisible: isLocked || isPrimary || !!view.filters?.some(
40003              (f2) => f2.field === field.id && isRegisteredOperator(f2.operator)
40004            ),
40005            isPrimary,
40006            isLocked
40007          });
40008        });
40009        filters.sort((a2, b2) => {
40010          if (a2.isLocked && !b2.isLocked) {
40011            return -1;
40012          }
40013          if (!a2.isLocked && b2.isLocked) {
40014            return 1;
40015          }
40016          if (a2.isPrimary && !b2.isPrimary) {
40017            return -1;
40018          }
40019          if (!a2.isPrimary && b2.isPrimary) {
40020            return 1;
40021          }
40022          return a2.name.localeCompare(b2.name);
40023        });
40024        return filters;
40025      }, [fields, view]);
40026    }
40027    var use_filters_default = useFilters;
40028  
40029    // packages/dataviews/build-module/components/dataviews-filters/filters.mjs
40030    var import_jsx_runtime157 = __toESM(require_jsx_runtime(), 1);
40031    function Filters({ className }) {
40032      const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element104.useContext)(dataviews_context_default);
40033      const addFilterRef = (0, import_element104.useRef)(null);
40034      const filters = use_filters_default(fields, view);
40035      const addFilter = /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
40036        add_filter_default,
40037        {
40038          filters,
40039          view,
40040          onChangeView,
40041          ref: addFilterRef,
40042          setOpenedFilter
40043        },
40044        "add-filter"
40045      );
40046      const visibleFilters = filters.filter((filter) => filter.isVisible);
40047      if (visibleFilters.length === 0) {
40048        return null;
40049      }
40050      const filterComponents = [
40051        ...visibleFilters.map((filter) => {
40052          return /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
40053            Filter,
40054            {
40055              filter,
40056              view,
40057              fields,
40058              onChangeView,
40059              addFilterRef,
40060              openedFilter
40061            },
40062            filter.field
40063          );
40064        }),
40065        addFilter
40066      ];
40067      filterComponents.push(
40068        /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
40069          ResetFilter,
40070          {
40071            filters,
40072            view,
40073            onChangeView
40074          },
40075          "reset-filters"
40076        )
40077      );
40078      return /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
40079        Stack,
40080        {
40081          direction: "row",
40082          justify: "flex-start",
40083          gap: "sm",
40084          style: { width: "fit-content" },
40085          wrap: "wrap",
40086          className,
40087          children: filterComponents
40088        }
40089      );
40090    }
40091    var filters_default = (0, import_element104.memo)(Filters);
40092  
40093    // packages/dataviews/build-module/components/dataviews-filters/toggle.mjs
40094    var import_element105 = __toESM(require_element(), 1);
40095    var import_components26 = __toESM(require_components(), 1);
40096    var import_i18n44 = __toESM(require_i18n(), 1);
40097    var import_jsx_runtime158 = __toESM(require_jsx_runtime(), 1);
40098    function FiltersToggle() {
40099      const {
40100        filters,
40101        view,
40102        onChangeView,
40103        setOpenedFilter,
40104        isShowingFilter,
40105        setIsShowingFilter
40106      } = (0, import_element105.useContext)(dataviews_context_default);
40107      const buttonRef = (0, import_element105.useRef)(null);
40108      const onChangeViewWithFilterVisibility = (0, import_element105.useCallback)(
40109        (_view) => {
40110          onChangeView(_view);
40111          setIsShowingFilter(true);
40112        },
40113        [onChangeView, setIsShowingFilter]
40114      );
40115      if (filters.length === 0) {
40116        return null;
40117      }
40118      const hasVisibleFilters = filters.some((filter) => filter.isVisible);
40119      const addFilterButtonProps = {
40120        label: (0, import_i18n44.__)("Add filter"),
40121        "aria-expanded": false,
40122        isPressed: false
40123      };
40124      const toggleFiltersButtonProps = {
40125        label: (0, import_i18n44._x)("Filter", "verb"),
40126        "aria-expanded": isShowingFilter,
40127        isPressed: isShowingFilter,
40128        onClick: () => {
40129          if (!isShowingFilter) {
40130            setOpenedFilter(null);
40131          }
40132          setIsShowingFilter(!isShowingFilter);
40133        }
40134      };
40135      const hasPrimaryOrLockedFilters = filters.some(
40136        (filter) => filter.isPrimary || filter.isLocked
40137      );
40138      const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
40139        import_components26.Button,
40140        {
40141          ref: buttonRef,
40142          className: "dataviews-filters__visibility-toggle",
40143          size: "compact",
40144          icon: funnel_default,
40145          disabled: hasPrimaryOrLockedFilters,
40146          accessibleWhenDisabled: true,
40147          ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps
40148        }
40149      );
40150      return /* @__PURE__ */ (0, import_jsx_runtime158.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
40151        AddFilterMenu,
40152        {
40153          filters,
40154          view,
40155          onChangeView: onChangeViewWithFilterVisibility,
40156          setOpenedFilter,
40157          triggerProps: { render: buttonComponent }
40158        }
40159      ) : /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
40160        FilterVisibilityToggle,
40161        {
40162          buttonRef,
40163          filtersCount: view.filters?.length,
40164          children: buttonComponent
40165        }
40166      ) });
40167    }
40168    function FilterVisibilityToggle({
40169      buttonRef,
40170      filtersCount,
40171      children
40172    }) {
40173      (0, import_element105.useEffect)(
40174        () => () => {
40175          buttonRef.current?.focus();
40176        },
40177        [buttonRef]
40178      );
40179      return /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)(import_jsx_runtime158.Fragment, { children: [
40180        children,
40181        !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime158.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount })
40182      ] });
40183    }
40184    var toggle_default = FiltersToggle;
40185  
40186    // packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs
40187    var import_element106 = __toESM(require_element(), 1);
40188    var import_jsx_runtime159 = __toESM(require_jsx_runtime(), 1);
40189    function FiltersToggled(props) {
40190      const { isShowingFilter } = (0, import_element106.useContext)(dataviews_context_default);
40191      if (!isShowingFilter) {
40192        return null;
40193      }
40194      return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(filters_default, { ...props });
40195    }
40196    var filters_toggled_default = FiltersToggled;
40197  
40198    // packages/dataviews/build-module/components/dataviews-layout/index.mjs
40199    var import_element107 = __toESM(require_element(), 1);
40200    var import_components27 = __toESM(require_components(), 1);
40201    var import_i18n45 = __toESM(require_i18n(), 1);
40202    var import_jsx_runtime160 = __toESM(require_jsx_runtime(), 1);
40203    function DataViewsLayout({ className }) {
40204      const {
40205        actions = [],
40206        data,
40207        fields,
40208        getItemId,
40209        getItemLevel,
40210        hasInitiallyLoaded,
40211        isLoading,
40212        view,
40213        onChangeView,
40214        selection,
40215        onChangeSelection,
40216        setOpenedFilter,
40217        onClickItem,
40218        isItemClickable: isItemClickable2,
40219        renderItemLink,
40220        defaultLayouts: defaultLayouts2,
40221        containerRef,
40222        empty = /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("p", { children: (0, import_i18n45.__)("No results") })
40223      } = (0, import_element107.useContext)(dataviews_context_default);
40224      const isDelayedInitialLoading = useDelayedLoading(!hasInitiallyLoaded, {
40225        delay: 200
40226      });
40227      if (!hasInitiallyLoaded) {
40228        if (!isDelayedInitialLoading) {
40229          return null;
40230        }
40231        return /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("div", { className: "dataviews-loading", children: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(import_components27.Spinner, {}) }) });
40232      }
40233      const ViewComponent = VIEW_LAYOUTS.find(
40234        (v2) => v2.type === view.type && defaultLayouts2[v2.type]
40235      )?.component;
40236      return /* @__PURE__ */ (0, import_jsx_runtime160.jsx)("div", { className: "dataviews-layout__container", ref: containerRef, children: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(
40237        ViewComponent,
40238        {
40239          className,
40240          actions,
40241          data,
40242          fields,
40243          getItemId,
40244          getItemLevel,
40245          isLoading,
40246          onChangeView,
40247          onChangeSelection,
40248          selection,
40249          setOpenedFilter,
40250          onClickItem,
40251          renderItemLink,
40252          isItemClickable: isItemClickable2,
40253          view,
40254          empty
40255        }
40256      ) });
40257    }
40258  
40259    // packages/dataviews/build-module/components/dataviews-search/index.mjs
40260    var import_i18n46 = __toESM(require_i18n(), 1);
40261    var import_element108 = __toESM(require_element(), 1);
40262    var import_components28 = __toESM(require_components(), 1);
40263    var import_compose14 = __toESM(require_compose(), 1);
40264    var import_jsx_runtime161 = __toESM(require_jsx_runtime(), 1);
40265    var DataViewsSearch = (0, import_element108.memo)(function Search({ label }) {
40266      const { view, onChangeView } = (0, import_element108.useContext)(dataviews_context_default);
40267      const [search, setSearch, debouncedSearch] = (0, import_compose14.useDebouncedInput)(
40268        view.search
40269      );
40270      (0, import_element108.useEffect)(() => {
40271        if (view.search !== debouncedSearch) {
40272          setSearch(view.search ?? "");
40273        }
40274      }, [view.search, setSearch]);
40275      const onChangeViewRef = (0, import_element108.useRef)(onChangeView);
40276      const viewRef = (0, import_element108.useRef)(view);
40277      (0, import_element108.useEffect)(() => {
40278        onChangeViewRef.current = onChangeView;
40279        viewRef.current = view;
40280      }, [onChangeView, view]);
40281      (0, import_element108.useEffect)(() => {
40282        if (debouncedSearch !== viewRef.current?.search) {
40283          onChangeViewRef.current({
40284            ...viewRef.current,
40285            page: view.page ? 1 : void 0,
40286            startPosition: view.startPosition ? 1 : void 0,
40287            search: debouncedSearch
40288          });
40289        }
40290      }, [debouncedSearch]);
40291      const searchLabel = label || (0, import_i18n46.__)("Search");
40292      return /* @__PURE__ */ (0, import_jsx_runtime161.jsx)(
40293        import_components28.SearchControl,
40294        {
40295          className: "dataviews-search",
40296          onChange: setSearch,
40297          value: search,
40298          label: searchLabel,
40299          placeholder: searchLabel,
40300          size: "compact"
40301        }
40302      );
40303    });
40304    var dataviews_search_default = DataViewsSearch;
40305  
40306    // packages/dataviews/build-module/components/dataviews-view-config/index.mjs
40307    var import_components29 = __toESM(require_components(), 1);
40308    var import_i18n47 = __toESM(require_i18n(), 1);
40309    var import_element109 = __toESM(require_element(), 1);
40310    var import_warning = __toESM(require_warning(), 1);
40311    var import_compose15 = __toESM(require_compose(), 1);
40312    var import_jsx_runtime162 = __toESM(require_jsx_runtime(), 1);
40313    var DATAVIEWS_CONFIG_POPOVER_PROPS = {
40314      className: "dataviews-config__popover",
40315      placement: "bottom-end",
40316      offset: 9
40317    };
40318    function ViewTypeMenu() {
40319      const { view, onChangeView, defaultLayouts: defaultLayouts2 } = (0, import_element109.useContext)(dataviews_context_default);
40320      const availableLayouts = Object.keys(defaultLayouts2);
40321      if (availableLayouts.length <= 1) {
40322        return null;
40323      }
40324      const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type);
40325      return /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(menu_exports.Root, { children: [
40326        /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40327          menu_exports.Trigger,
40328          {
40329            render: /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40330              import_components29.Button,
40331              {
40332                size: "compact",
40333                icon: activeView?.icon,
40334                label: (0, import_i18n47.__)("Layout")
40335              }
40336            )
40337          }
40338        ),
40339        /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(menu_exports.Popup, { children: /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40340          menu_exports.RadioGroup,
40341          {
40342            value: view.type,
40343            onValueChange: (value) => {
40344              switch (value) {
40345                case "list":
40346                case "grid":
40347                case "table":
40348                case "pickerGrid":
40349                case "pickerTable":
40350                case "pickerActivity":
40351                case "activity":
40352                  const viewWithoutLayout = { ...view };
40353                  if ("layout" in viewWithoutLayout) {
40354                    delete viewWithoutLayout.layout;
40355                  }
40356                  return onChangeView({
40357                    ...viewWithoutLayout,
40358                    type: value,
40359                    ...defaultLayouts2[value]
40360                  });
40361              }
40362              (0, import_warning.default)("Invalid dataview");
40363            },
40364            children: availableLayouts.map((layout) => {
40365              const config = VIEW_LAYOUTS.find(
40366                (v2) => v2.type === layout
40367              );
40368              if (!config) {
40369                return null;
40370              }
40371              return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40372                menu_exports.RadioItem,
40373                {
40374                  value: layout,
40375                  closeOnClick: true,
40376                  children: /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(menu_exports.ItemLabel, { children: config.label })
40377                },
40378                layout
40379              );
40380            })
40381          }
40382        ) })
40383      ] });
40384    }
40385    function SortFieldControl() {
40386      const { view, fields, onChangeView } = (0, import_element109.useContext)(dataviews_context_default);
40387      const orderOptions = (0, import_element109.useMemo)(() => {
40388        const sortableFields = fields.filter(
40389          (field) => field.enableSorting !== false
40390        );
40391        return sortableFields.map((field) => {
40392          return {
40393            label: field.label,
40394            value: field.id
40395          };
40396        });
40397      }, [fields]);
40398      return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40399        import_components29.SelectControl,
40400        {
40401          label: (0, import_i18n47.__)("Sort by"),
40402          value: view.sort?.field,
40403          options: orderOptions,
40404          onChange: (value) => {
40405            onChangeView({
40406              ...view,
40407              sort: {
40408                direction: view?.sort?.direction || "desc",
40409                field: value
40410              },
40411              showLevels: false
40412            });
40413          }
40414        }
40415      );
40416    }
40417    function SortDirectionControl() {
40418      const { view, fields, onChangeView } = (0, import_element109.useContext)(dataviews_context_default);
40419      const sortableFields = fields.filter(
40420        (field) => field.enableSorting !== false
40421      );
40422      if (sortableFields.length === 0) {
40423        return null;
40424      }
40425      let value = view.sort?.direction;
40426      if (!value && view.sort?.field) {
40427        value = "desc";
40428      }
40429      return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40430        import_components29.__experimentalToggleGroupControl,
40431        {
40432          className: "dataviews-view-config__sort-direction",
40433          isBlock: true,
40434          label: (0, import_i18n47.__)("Order"),
40435          value,
40436          onChange: (newDirection) => {
40437            if (newDirection === "asc" || newDirection === "desc") {
40438              onChangeView({
40439                ...view,
40440                sort: {
40441                  direction: newDirection,
40442                  field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field.
40443                  fields.find(
40444                    (field) => field.enableSorting !== false
40445                  )?.id || ""
40446                },
40447                showLevels: false
40448              });
40449              return;
40450            }
40451            (0, import_warning.default)("Invalid direction");
40452          },
40453          children: SORTING_DIRECTIONS.map((direction) => {
40454            return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40455              import_components29.__experimentalToggleGroupControlOptionIcon,
40456              {
40457                value: direction,
40458                icon: sortIcons[direction],
40459                label: sortLabels[direction]
40460              },
40461              direction
40462            );
40463          })
40464        }
40465      );
40466    }
40467    function ItemsPerPageControl() {
40468      const { view, config, onChangeView } = (0, import_element109.useContext)(dataviews_context_default);
40469      const { infiniteScrollEnabled } = view;
40470      if (!config || !config.perPageSizes || config.perPageSizes.length < 2 || config.perPageSizes.length > 6 || infiniteScrollEnabled) {
40471        return null;
40472      }
40473      return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40474        import_components29.__experimentalToggleGroupControl,
40475        {
40476          isBlock: true,
40477          label: (0, import_i18n47.__)("Items per page"),
40478          value: view.perPage || 10,
40479          disabled: !view?.sort?.field,
40480          onChange: (newItemsPerPage) => {
40481            const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10);
40482            onChangeView({
40483              ...view,
40484              perPage: newItemsPerPageNumber,
40485              page: 1
40486            });
40487          },
40488          children: config.perPageSizes.map((value) => {
40489            return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40490              import_components29.__experimentalToggleGroupControlOption,
40491              {
40492                value,
40493                label: value.toString()
40494              },
40495              value
40496            );
40497          })
40498        }
40499      );
40500    }
40501    function ResetViewButton() {
40502      const { onReset } = (0, import_element109.useContext)(dataviews_context_default);
40503      if (onReset === void 0) {
40504        return null;
40505      }
40506      const isDisabled = onReset === false;
40507      return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40508        import_components29.Button,
40509        {
40510          variant: "tertiary",
40511          size: "compact",
40512          disabled: isDisabled,
40513          accessibleWhenDisabled: true,
40514          className: "dataviews-view-config__reset-button",
40515          onClick: () => {
40516            if (typeof onReset === "function") {
40517              onReset();
40518            }
40519          },
40520          children: (0, import_i18n47.__)("Reset view")
40521        }
40522      );
40523    }
40524    function DataviewsViewConfigDropdown() {
40525      const { view, onReset } = (0, import_element109.useContext)(dataviews_context_default);
40526      const popoverId = (0, import_compose15.useInstanceId)(
40527        _DataViewsViewConfig,
40528        "dataviews-view-config-dropdown"
40529      );
40530      const activeLayout = VIEW_LAYOUTS.find(
40531        (layout) => layout.type === view.type
40532      );
40533      const isModified = typeof onReset === "function";
40534      return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40535        import_components29.Dropdown,
40536        {
40537          expandOnMobile: true,
40538          popoverProps: {
40539            ...DATAVIEWS_CONFIG_POPOVER_PROPS,
40540            id: popoverId
40541          },
40542          renderToggle: ({ onToggle, isOpen }) => {
40543            return /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [
40544              /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40545                import_components29.Button,
40546                {
40547                  size: "compact",
40548                  icon: cog_default,
40549                  label: (0, import_i18n47._x)(
40550                    "View options",
40551                    "View is used as a noun"
40552                  ),
40553                  onClick: onToggle,
40554                  "aria-expanded": isOpen ? "true" : "false",
40555                  "aria-controls": popoverId
40556                }
40557              ),
40558              isModified && /* @__PURE__ */ (0, import_jsx_runtime162.jsx)("span", { className: "dataviews-view-config__modified-indicator" })
40559            ] });
40560          },
40561          renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40562            import_components29.__experimentalDropdownContentWrapper,
40563            {
40564              paddingSize: "medium",
40565              className: "dataviews-config__popover-content-wrapper",
40566              children: /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(
40567                Stack,
40568                {
40569                  direction: "column",
40570                  className: "dataviews-view-config",
40571                  gap: "xl",
40572                  children: [
40573                    /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(
40574                      Stack,
40575                      {
40576                        direction: "row",
40577                        justify: "space-between",
40578                        align: "center",
40579                        className: "dataviews-view-config__header",
40580                        children: [
40581                          /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(
40582                            import_components29.__experimentalHeading,
40583                            {
40584                              level: 2,
40585                              className: "dataviews-settings-section__title",
40586                              children: (0, import_i18n47.__)("Appearance")
40587                            }
40588                          ),
40589                          /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(ResetViewButton, {})
40590                        ]
40591                      }
40592                    ),
40593                    /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(Stack, { direction: "column", gap: "lg", children: [
40594                      /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(
40595                        Stack,
40596                        {
40597                          direction: "row",
40598                          gap: "sm",
40599                          className: "dataviews-view-config__sort-controls",
40600                          children: [
40601                            /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(SortFieldControl, {}),
40602                            /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(SortDirectionControl, {})
40603                          ]
40604                        }
40605                      ),
40606                      !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(activeLayout.viewConfigOptions, {}),
40607                      /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(ItemsPerPageControl, {}),
40608                      /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(PropertiesSection, {})
40609                    ] })
40610                  ]
40611                }
40612              )
40613            }
40614          )
40615        }
40616      );
40617    }
40618    function _DataViewsViewConfig() {
40619      return /* @__PURE__ */ (0, import_jsx_runtime162.jsxs)(import_jsx_runtime162.Fragment, { children: [
40620        /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(ViewTypeMenu, {}),
40621        /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(DataviewsViewConfigDropdown, {})
40622      ] });
40623    }
40624    var DataViewsViewConfig = (0, import_element109.memo)(_DataViewsViewConfig);
40625    var dataviews_view_config_default = DataViewsViewConfig;
40626  
40627    // packages/dataviews/build-module/components/dataform-controls/checkbox.mjs
40628    var import_element118 = __toESM(require_element(), 1);
40629  
40630    // packages/dataviews/build-module/components/validated-form-controls/checkbox-control.mjs
40631    var import_element110 = __toESM(require_element(), 1);
40632    var import_compose16 = __toESM(require_compose(), 1);
40633    var import_components30 = __toESM(require_components(), 1);
40634    var import_jsx_runtime163 = __toESM(require_jsx_runtime(), 1);
40635    var UnforwardedValidatedCheckboxControl = ({
40636      required,
40637      customValidity,
40638      markWhenOptional,
40639      ...restProps
40640    }, forwardedRef) => {
40641      const validityTargetRef = (0, import_element110.useRef)(null);
40642      const mergedRefs = (0, import_compose16.useMergeRefs)([forwardedRef, validityTargetRef]);
40643      return /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
40644        ControlWithError,
40645        {
40646          className: "dataviews-validated-control",
40647          required,
40648          markWhenOptional,
40649          ref: mergedRefs,
40650          customValidity,
40651          getValidityTarget: () => validityTargetRef.current?.querySelector(
40652            'input[type="checkbox"]'
40653          ),
40654          children: /* @__PURE__ */ (0, import_jsx_runtime163.jsx)(
40655            import_components30.CheckboxControl,
40656            {
40657              ...restProps
40658            }
40659          )
40660        }
40661      );
40662    };
40663    var ValidatedCheckboxControl = (0, import_element110.forwardRef)(UnforwardedValidatedCheckboxControl);
40664    ValidatedCheckboxControl.displayName = "ValidatedCheckboxControl";
40665  
40666    // packages/dataviews/build-module/components/validated-form-controls/combobox-control.mjs
40667    var import_element111 = __toESM(require_element(), 1);
40668    var import_compose17 = __toESM(require_compose(), 1);
40669    var import_components31 = __toESM(require_components(), 1);
40670    var import_jsx_runtime164 = __toESM(require_jsx_runtime(), 1);
40671    var UnforwardedValidatedComboboxControl = ({
40672      required,
40673      customValidity,
40674      markWhenOptional,
40675      ...restProps
40676    }, forwardedRef) => {
40677      const validityTargetRef = (0, import_element111.useRef)(null);
40678      const mergedRefs = (0, import_compose17.useMergeRefs)([forwardedRef, validityTargetRef]);
40679      (0, import_element111.useEffect)(() => {
40680        const input = validityTargetRef.current?.querySelector(
40681          'input[role="combobox"]'
40682        );
40683        if (input) {
40684          input.required = required ?? false;
40685        }
40686      }, [required]);
40687      return (
40688        // TODO: Bug - Missing value error is not cleared immediately on change, waits for blur.
40689        /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(
40690          ControlWithError,
40691          {
40692            className: "dataviews-validated-control",
40693            required,
40694            markWhenOptional,
40695            ref: mergedRefs,
40696            customValidity,
40697            getValidityTarget: () => validityTargetRef.current?.querySelector(
40698              'input[role="combobox"]'
40699            ),
40700            children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(import_components31.ComboboxControl, { ...restProps })
40701          }
40702        )
40703      );
40704    };
40705    var ValidatedComboboxControl = (0, import_element111.forwardRef)(UnforwardedValidatedComboboxControl);
40706    ValidatedComboboxControl.displayName = "ValidatedComboboxControl";
40707  
40708    // packages/dataviews/build-module/components/validated-form-controls/form-token-field.mjs
40709    var import_element112 = __toESM(require_element(), 1);
40710    var import_components32 = __toESM(require_components(), 1);
40711    var import_jsx_runtime165 = __toESM(require_jsx_runtime(), 1);
40712    var UnforwardedValidatedFormTokenField = ({
40713      required,
40714      customValidity,
40715      markWhenOptional,
40716      ...restProps
40717    }, forwardedRef) => {
40718      const validityTargetRef = (0, import_element112.useRef)(null);
40719      return /* @__PURE__ */ (0, import_jsx_runtime165.jsxs)(
40720        "div",
40721        {
40722          className: "dataviews-validated-control__wrapper-with-error-delegate",
40723          ref: forwardedRef,
40724          children: [
40725            /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(
40726              ControlWithError,
40727              {
40728                className: "dataviews-validated-control",
40729                required,
40730                markWhenOptional,
40731                customValidity,
40732                getValidityTarget: () => validityTargetRef.current,
40733                children: /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(import_components32.FormTokenField, { ...restProps })
40734              }
40735            ),
40736            /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(
40737              "input",
40738              {
40739                className: "dataviews-validated-control__error-delegate",
40740                type: "text",
40741                ref: validityTargetRef,
40742                required,
40743                value: restProps.value && restProps.value.length > 0 ? "hasvalue" : "",
40744                tabIndex: -1,
40745                onChange: () => {
40746                },
40747                onFocus: (e2) => {
40748                  e2.target.previousElementSibling?.querySelector(
40749                    'input[type="text"]'
40750                  )?.focus();
40751                }
40752              }
40753            )
40754          ]
40755        }
40756      );
40757    };
40758    var ValidatedFormTokenField = (0, import_element112.forwardRef)(UnforwardedValidatedFormTokenField);
40759    ValidatedFormTokenField.displayName = "ValidatedFormTokenField";
40760  
40761    // packages/dataviews/build-module/components/validated-form-controls/number-control.mjs
40762    var import_element113 = __toESM(require_element(), 1);
40763    var import_compose18 = __toESM(require_compose(), 1);
40764    var import_components33 = __toESM(require_components(), 1);
40765    var import_jsx_runtime166 = __toESM(require_jsx_runtime(), 1);
40766    var UnforwardedValidatedNumberControl = ({
40767      required,
40768      customValidity,
40769      markWhenOptional,
40770      ...restProps
40771    }, forwardedRef) => {
40772      const validityTargetRef = (0, import_element113.useRef)(null);
40773      const mergedRefs = (0, import_compose18.useMergeRefs)([forwardedRef, validityTargetRef]);
40774      return /* @__PURE__ */ (0, import_jsx_runtime166.jsx)(
40775        ControlWithError,
40776        {
40777          className: "dataviews-validated-control",
40778          required,
40779          markWhenOptional,
40780          customValidity,
40781          getValidityTarget: () => validityTargetRef.current,
40782          children: /* @__PURE__ */ (0, import_jsx_runtime166.jsx)(import_components33.__experimentalNumberControl, { ref: mergedRefs, ...restProps })
40783        }
40784      );
40785    };
40786    var ValidatedNumberControl = (0, import_element113.forwardRef)(UnforwardedValidatedNumberControl);
40787    ValidatedNumberControl.displayName = "ValidatedNumberControl";
40788  
40789    // packages/dataviews/build-module/components/validated-form-controls/radio-control.mjs
40790    var import_element114 = __toESM(require_element(), 1);
40791    var import_compose19 = __toESM(require_compose(), 1);
40792    var import_components34 = __toESM(require_components(), 1);
40793    var import_jsx_runtime167 = __toESM(require_jsx_runtime(), 1);
40794    var UnforwardedValidatedRadioControl = ({
40795      required,
40796      customValidity,
40797      markWhenOptional,
40798      ...restProps
40799    }, forwardedRef) => {
40800      const validityTargetRef = (0, import_element114.useRef)(null);
40801      const mergedRefs = (0, import_compose19.useMergeRefs)([forwardedRef, validityTargetRef]);
40802      return /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(
40803        ControlWithError,
40804        {
40805          className: "dataviews-validated-control",
40806          required,
40807          markWhenOptional,
40808          ref: mergedRefs,
40809          customValidity,
40810          getValidityTarget: () => validityTargetRef.current?.querySelector(
40811            'input[type="radio"]'
40812          ),
40813          children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(import_components34.RadioControl, { ...restProps })
40814        }
40815      );
40816    };
40817    var ValidatedRadioControl = (0, import_element114.forwardRef)(UnforwardedValidatedRadioControl);
40818    ValidatedRadioControl.displayName = "ValidatedRadioControl";
40819  
40820    // packages/dataviews/build-module/components/validated-form-controls/select-control.mjs
40821    var import_element115 = __toESM(require_element(), 1);
40822    var import_compose20 = __toESM(require_compose(), 1);
40823    var import_components35 = __toESM(require_components(), 1);
40824    var import_jsx_runtime168 = __toESM(require_jsx_runtime(), 1);
40825    var UnforwardedValidatedSelectControl = ({
40826      required,
40827      customValidity,
40828      markWhenOptional,
40829      ...restProps
40830    }, forwardedRef) => {
40831      const validityTargetRef = (0, import_element115.useRef)(null);
40832      const mergedRefs = (0, import_compose20.useMergeRefs)([forwardedRef, validityTargetRef]);
40833      return /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(
40834        ControlWithError,
40835        {
40836          className: "dataviews-validated-control",
40837          required,
40838          markWhenOptional,
40839          customValidity,
40840          getValidityTarget: () => validityTargetRef.current,
40841          children: /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(
40842            import_components35.SelectControl,
40843            {
40844              ref: mergedRefs,
40845              // A runtime boolean cannot statically discriminate
40846              // SelectControl's single/multiple props union.
40847              ...restProps
40848            }
40849          )
40850        }
40851      );
40852    };
40853    var ValidatedSelectControl = (0, import_element115.forwardRef)(UnforwardedValidatedSelectControl);
40854    ValidatedSelectControl.displayName = "ValidatedSelectControl";
40855  
40856    // packages/dataviews/build-module/components/validated-form-controls/toggle-control.mjs
40857    var import_element116 = __toESM(require_element(), 1);
40858    var import_compose21 = __toESM(require_compose(), 1);
40859    var import_components36 = __toESM(require_components(), 1);
40860    var import_jsx_runtime169 = __toESM(require_jsx_runtime(), 1);
40861    var UnforwardedValidatedToggleControl = ({
40862      required,
40863      customValidity,
40864      markWhenOptional,
40865      ...restProps
40866    }, forwardedRef) => {
40867      const validityTargetRef = (0, import_element116.useRef)(null);
40868      const mergedRefs = (0, import_compose21.useMergeRefs)([forwardedRef, validityTargetRef]);
40869      return /* @__PURE__ */ (0, import_jsx_runtime169.jsx)(
40870        ControlWithError,
40871        {
40872          className: "dataviews-validated-control",
40873          required,
40874          markWhenOptional,
40875          customValidity,
40876          getValidityTarget: () => validityTargetRef.current,
40877          children: /* @__PURE__ */ (0, import_jsx_runtime169.jsx)(
40878            import_components36.ToggleControl,
40879            {
40880              ref: mergedRefs,
40881              required,
40882              ...restProps
40883            }
40884          )
40885        }
40886      );
40887    };
40888    var ValidatedToggleControl = (0, import_element116.forwardRef)(UnforwardedValidatedToggleControl);
40889    ValidatedToggleControl.displayName = "ValidatedToggleControl";
40890  
40891    // packages/dataviews/build-module/components/validated-form-controls/toggle-group-control.mjs
40892    var import_element117 = __toESM(require_element(), 1);
40893    var import_components37 = __toESM(require_components(), 1);
40894    var import_jsx_runtime170 = __toESM(require_jsx_runtime(), 1);
40895    var UnforwardedValidatedToggleGroupControl = ({
40896      required,
40897      customValidity,
40898      markWhenOptional,
40899      ...restProps
40900    }, forwardedRef) => {
40901      const validityTargetRef = (0, import_element117.useRef)(null);
40902      const nameAttr = (0, import_element117.useId)();
40903      return /* @__PURE__ */ (0, import_jsx_runtime170.jsxs)("div", { className: "dataviews-validated-control__wrapper-with-error-delegate", children: [
40904        /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(
40905          ControlWithError,
40906          {
40907            className: "dataviews-validated-control",
40908            required,
40909            markWhenOptional,
40910            customValidity,
40911            getValidityTarget: () => validityTargetRef.current,
40912            children: /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(import_components37.__experimentalToggleGroupControl, { ref: forwardedRef, ...restProps })
40913          }
40914        ),
40915        /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(
40916          "input",
40917          {
40918            className: "dataviews-validated-control__error-delegate",
40919            type: "radio",
40920            ref: validityTargetRef,
40921            required,
40922            checked: restProps.value !== void 0,
40923            tabIndex: -1,
40924            name: nameAttr,
40925            onChange: () => {
40926            },
40927            onFocus: (e2) => {
40928              e2.target.previousElementSibling?.querySelector(
40929                '[data-active-item="true"]'
40930              )?.focus();
40931            }
40932          }
40933        )
40934      ] });
40935    };
40936    var ValidatedToggleGroupControl = (0, import_element117.forwardRef)(UnforwardedValidatedToggleGroupControl);
40937    ValidatedToggleGroupControl.displayName = "ValidatedToggleGroupControl";
40938  
40939    // packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs
40940    function getCustomValidity(isValid2, validity) {
40941      let customValidity;
40942      if (isValid2?.required && validity?.required) {
40943        customValidity = validity.required.message ? {
40944          type: validity.required.type,
40945          message: validity.required.message
40946        } : void 0;
40947      } else if (isValid2?.pattern && validity?.pattern) {
40948        customValidity = validity.pattern;
40949      } else if (isValid2?.min && validity?.min) {
40950        customValidity = validity.min;
40951      } else if (isValid2?.max && validity?.max) {
40952        customValidity = validity.max;
40953      } else if (isValid2?.minLength && validity?.minLength) {
40954        customValidity = validity.minLength;
40955      } else if (isValid2?.maxLength && validity?.maxLength) {
40956        customValidity = validity.maxLength;
40957      } else if (isValid2?.elements && validity?.elements) {
40958        customValidity = validity.elements;
40959      } else if (validity?.custom) {
40960        customValidity = validity.custom;
40961      }
40962      return customValidity;
40963    }
40964  
40965    // packages/dataviews/build-module/components/dataform-controls/checkbox.mjs
40966    var import_jsx_runtime171 = __toESM(require_jsx_runtime(), 1);
40967    function Checkbox({
40968      field,
40969      onChange,
40970      data,
40971      hideLabelFromVision,
40972      markWhenOptional,
40973      validity
40974    }) {
40975      const { getValue, setValue, label, description, isValid: isValid2 } = field;
40976      const disabled2 = field.isDisabled({ item: data, field });
40977      const onChangeControl = (0, import_element118.useCallback)(() => {
40978        onChange(
40979          setValue({ item: data, value: !getValue({ item: data }) })
40980        );
40981      }, [data, getValue, onChange, setValue]);
40982      return /* @__PURE__ */ (0, import_jsx_runtime171.jsx)(
40983        ValidatedCheckboxControl,
40984        {
40985          required: !!field.isValid?.required,
40986          markWhenOptional,
40987          customValidity: getCustomValidity(isValid2, validity),
40988          hidden: hideLabelFromVision,
40989          label,
40990          help: description,
40991          checked: getValue({ item: data }),
40992          onChange: onChangeControl,
40993          disabled: disabled2
40994        }
40995      );
40996    }
40997  
40998    // packages/dataviews/build-module/components/dataform-controls/combobox.mjs
40999    var import_components38 = __toESM(require_components(), 1);
41000    var import_element119 = __toESM(require_element(), 1);
41001    var import_jsx_runtime172 = __toESM(require_jsx_runtime(), 1);
41002    function Combobox3({
41003      data,
41004      field,
41005      onChange,
41006      hideLabelFromVision,
41007      validity
41008    }) {
41009      const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field;
41010      const value = getValue({ item: data }) ?? "";
41011      const onChangeControl = (0, import_element119.useCallback)(
41012        (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })),
41013        [data, onChange, setValue]
41014      );
41015      const { elements, isLoading } = useElements({
41016        elements: field.elements,
41017        getElements: field.getElements
41018      });
41019      if (isLoading) {
41020        return /* @__PURE__ */ (0, import_jsx_runtime172.jsx)(import_components38.Spinner, {});
41021      }
41022      return /* @__PURE__ */ (0, import_jsx_runtime172.jsx)(
41023        ValidatedComboboxControl,
41024        {
41025          required: !!field.isValid?.required,
41026          customValidity: getCustomValidity(isValid2, validity),
41027          label,
41028          value,
41029          help: description,
41030          placeholder,
41031          options: elements,
41032          onChange: onChangeControl,
41033          hideLabelFromVision,
41034          allowReset: true,
41035          expandOnFocus: true
41036        }
41037      );
41038    }
41039  
41040    // packages/dataviews/build-module/components/dataform-controls/datetime.mjs
41041    var import_components40 = __toESM(require_components(), 1);
41042    var import_element122 = __toESM(require_element(), 1);
41043    var import_i18n50 = __toESM(require_i18n(), 1);
41044    var import_a11y2 = __toESM(require_a11y(), 1);
41045    var import_date5 = __toESM(require_date(), 1);
41046  
41047    // packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs
41048    var import_components39 = __toESM(require_components(), 1);
41049    var import_element120 = __toESM(require_element(), 1);
41050    var import_i18n48 = __toESM(require_i18n(), 1);
41051    var import_jsx_runtime173 = __toESM(require_jsx_runtime(), 1);
41052    var TIME_UNITS_OPTIONS = {
41053      [OPERATOR_IN_THE_PAST]: [
41054        { value: "days", label: (0, import_i18n48.__)("Days") },
41055        { value: "weeks", label: (0, import_i18n48.__)("Weeks") },
41056        { value: "months", label: (0, import_i18n48.__)("Months") },
41057        { value: "years", label: (0, import_i18n48.__)("Years") }
41058      ],
41059      [OPERATOR_OVER]: [
41060        { value: "days", label: (0, import_i18n48.__)("Days ago") },
41061        { value: "weeks", label: (0, import_i18n48.__)("Weeks ago") },
41062        { value: "months", label: (0, import_i18n48.__)("Months ago") },
41063        { value: "years", label: (0, import_i18n48.__)("Years ago") }
41064      ]
41065    };
41066    function RelativeDateControl({
41067      className,
41068      data,
41069      field,
41070      onChange,
41071      hideLabelFromVision,
41072      operator
41073    }) {
41074      const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"];
41075      const { id, label, description, getValue, setValue } = field;
41076      const disabled2 = field.isDisabled({ item: data, field });
41077      const fieldValue = getValue({ item: data });
41078      const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {};
41079      const onChangeValue = (0, import_element120.useCallback)(
41080        (newValue) => onChange(
41081          setValue({
41082            item: data,
41083            value: { value: Number(newValue), unit }
41084          })
41085        ),
41086        [onChange, setValue, data, unit]
41087      );
41088      const onChangeUnit = (0, import_element120.useCallback)(
41089        (newUnit) => onChange(
41090          setValue({
41091            item: data,
41092            value: { value: relValue, unit: newUnit }
41093          })
41094        ),
41095        [onChange, setValue, data, relValue]
41096      );
41097      return /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
41098        import_components39.BaseControl,
41099        {
41100          id,
41101          className: clsx_default(className, "dataviews-controls__relative-date"),
41102          label,
41103          hideLabelFromVision,
41104          help: description,
41105          children: /* @__PURE__ */ (0, import_jsx_runtime173.jsxs)(Stack, { direction: "row", gap: "sm", children: [
41106            /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
41107              import_components39.__experimentalNumberControl,
41108              {
41109                className: "dataviews-controls__relative-date-number",
41110                spinControls: "none",
41111                min: 1,
41112                step: 1,
41113                value: relValue,
41114                onChange: onChangeValue,
41115                disabled: disabled2
41116              }
41117            ),
41118            /* @__PURE__ */ (0, import_jsx_runtime173.jsx)(
41119              import_components39.SelectControl,
41120              {
41121                className: "dataviews-controls__relative-date-unit",
41122                label: (0, import_i18n48.__)("Unit"),
41123                value: unit,
41124                options,
41125                onChange: onChangeUnit,
41126                hideLabelFromVision: true,
41127                disabled: disabled2
41128              }
41129            )
41130          ] })
41131        }
41132      );
41133    }
41134  
41135    // packages/dataviews/build-module/components/dataform-controls/utils/to-calendar-date.mjs
41136    function toCalendarDate(date, timeZone) {
41137      return timeZone ? new TZDate(date, timeZone) : date;
41138    }
41139  
41140    // packages/dataviews/build-module/components/dataform-controls/utils/use-disabled-date-matchers.mjs
41141    var import_element121 = __toESM(require_element(), 1);
41142    function useDisabledDateMatchers(isValid2, parseDateFn) {
41143      const minConstraint = typeof isValid2.min?.constraint === "string" ? isValid2.min.constraint : void 0;
41144      const maxConstraint = typeof isValid2.max?.constraint === "string" ? isValid2.max.constraint : void 0;
41145      const disabledMatchers = (0, import_element121.useMemo)(() => {
41146        const matchers = [];
41147        if (minConstraint) {
41148          const minDate = parseDateFn(minConstraint);
41149          if (minDate) {
41150            matchers.push({ before: minDate });
41151          }
41152        }
41153        if (maxConstraint) {
41154          const maxDate = parseDateFn(maxConstraint);
41155          if (maxDate) {
41156            matchers.push({ after: maxDate });
41157          }
41158        }
41159        return matchers.length > 0 ? matchers : void 0;
41160      }, [minConstraint, maxConstraint, parseDateFn]);
41161      return { minConstraint, maxConstraint, disabledMatchers };
41162    }
41163  
41164    // packages/dataviews/build-module/components/dataform-controls/utils/get-calendar-locale.mjs
41165    var LANGUAGE_ALIASES = {
41166      ary: "ar-MA",
41167      // Moroccan Arabic.
41168      haz: "fa"
41169      // Hazaragi, a variety of Persian.
41170    };
41171    function getCalendarLocale(wpLocale) {
41172      const subtags = wpLocale?.trim().split(/[_-]/) ?? [];
41173      const language = subtags.shift()?.toLowerCase();
41174      if (!language) {
41175        return void 0;
41176      }
41177      const normalized = [LANGUAGE_ALIASES[language] ?? language];
41178      for (const subtag of subtags) {
41179        if (/^[a-z]{4}$/i.test(subtag) || /^([a-z]{2}|\d{3})$/i.test(subtag)) {
41180          normalized.push(subtag);
41181        }
41182      }
41183      return normalized.join("-");
41184    }
41185  
41186    // packages/dataviews/build-module/components/dataform-controls/utils/get-timezone-description.mjs
41187    var import_date3 = __toESM(require_date(), 1);
41188    var import_i18n49 = __toESM(require_i18n(), 1);
41189    function getTimezoneDescription() {
41190      const { timezone } = (0, import_date3.getSettings)();
41191      const userTimezoneOffset = -1 * ((/* @__PURE__ */ new Date()).getTimezoneOffset() / 60);
41192      if (Number(timezone.offset) === userTimezoneOffset) {
41193        return void 0;
41194      }
41195      const offsetSymbol = Number(timezone.offset) >= 0 ? "+" : "";
41196      const zoneAbbr = "" !== timezone.abbr && isNaN(Number(timezone.abbr)) ? timezone.abbr : `UTC$offsetSymbol}$timezone.offsetFormatted}`;
41197      const prettyTimezoneString = timezone.string.replaceAll("_", " ");
41198      let timezoneDetail = zoneAbbr;
41199      if ("UTC" === timezone.string) {
41200        timezoneDetail = (0, import_i18n49.__)("Coordinated Universal Time");
41201      } else if (prettyTimezoneString.trim().length > 0) {
41202        timezoneDetail = `($zoneAbbr}) $prettyTimezoneString}`;
41203      }
41204      return (0, import_i18n49.sprintf)(
41205        /* translators: %s: timezone detail, e.g. "(CEST) Europe/Madrid" or "UTC+3". */
41206        (0, import_i18n49.__)("Timezone: %s"),
41207        timezoneDetail
41208      );
41209    }
41210  
41211    // packages/dataviews/build-module/field-types/utils/parse-date-time.mjs
41212    var import_date4 = __toESM(require_date(), 1);
41213    function parseDateTime(dateTimeString) {
41214      if (!dateTimeString) {
41215        return null;
41216      }
41217      const parsed = (0, import_date4.getDate)(dateTimeString);
41218      return parsed && isValid(parsed) ? parsed : null;
41219    }
41220  
41221    // packages/dataviews/build-module/components/dataform-controls/datetime.mjs
41222    var import_jsx_runtime174 = __toESM(require_jsx_runtime(), 1);
41223    var formatDateTime = (value) => {
41224      if (!value) {
41225        return "";
41226      }
41227      return (0, import_date5.dateI18n)("Y-m-d\\TH:i", (0, import_date5.getDate)(value));
41228    };
41229    function CalendarDateTimeControl({
41230      data,
41231      field,
41232      onChange,
41233      hideLabelFromVision,
41234      markWhenOptional,
41235      validity,
41236      config
41237    }) {
41238      const { compact } = config || {};
41239      const { id, label, description, setValue, getValue, isValid: isValid2 } = field;
41240      const disabled2 = field.isDisabled({ item: data, field });
41241      const fieldValue = getValue({ item: data });
41242      const value = typeof fieldValue === "string" ? fieldValue : void 0;
41243      const { timezone } = (0, import_date5.getSettings)();
41244      const timeZone = timezone.string || (0, import_date5.dateI18n)("P");
41245      const [calendarMonth, setCalendarMonth] = (0, import_element122.useState)(() => {
41246        const parsedDate = parseDateTime(value);
41247        return toCalendarDate(parsedDate || /* @__PURE__ */ new Date(), timeZone);
41248      });
41249      (0, import_element122.useEffect)(() => {
41250        const parsedDate = parseDateTime(value);
41251        if (parsedDate) {
41252          const targetMonth = toCalendarDate(parsedDate, timeZone);
41253          setCalendarMonth(
41254            (currentMonth) => isSameMonth(
41255              targetMonth,
41256              toCalendarDate(currentMonth, timeZone)
41257            ) ? currentMonth : targetMonth
41258          );
41259        }
41260      }, [timeZone, value]);
41261      const inputControlRef = (0, import_element122.useRef)(null);
41262      const validationTimeoutRef = (0, import_element122.useRef)(void 0);
41263      const { minConstraint, maxConstraint, disabledMatchers } = useDisabledDateMatchers(isValid2, parseDateTime);
41264      const onChangeCallback = (0, import_element122.useCallback)(
41265        (newValue) => onChange(setValue({ item: data, value: newValue })),
41266        [data, onChange, setValue]
41267      );
41268      (0, import_element122.useEffect)(() => {
41269        return () => clearTimeout(validationTimeoutRef.current);
41270      }, []);
41271      const onSelectDate = (0, import_element122.useCallback)(
41272        (newDate) => {
41273          if (newDate) {
41274            const wpDate = (0, import_date5.dateI18n)("Y-m-d", newDate);
41275            const wpTime = value ? (0, import_date5.dateI18n)("H:i", (0, import_date5.getDate)(value)) : "00:00";
41276            const finalDateTime = (0, import_date5.getDate)(`$wpDate}T$wpTime}`);
41277            onChangeCallback(finalDateTime.toISOString());
41278          } else {
41279            onChangeCallback(void 0);
41280          }
41281          clearTimeout(validationTimeoutRef.current);
41282          validationTimeoutRef.current = setTimeout(() => {
41283            const input = inputControlRef.current;
41284            if (!input) {
41285              return;
41286            }
41287            input.dispatchEvent(
41288              new Event("invalid", { cancelable: true })
41289            );
41290            if (input.validationMessage) {
41291              (0, import_a11y2.speak)(input.validationMessage);
41292            }
41293          }, 0);
41294        },
41295        [onChangeCallback, value]
41296      );
41297      const handleManualDateTimeChange = (0, import_element122.useCallback)(
41298        (newValue) => {
41299          if (newValue) {
41300            const dateTime = (0, import_date5.getDate)(newValue);
41301            onChangeCallback(dateTime.toISOString());
41302            const parsedDate = parseDateTime(dateTime.toISOString());
41303            if (parsedDate) {
41304              setCalendarMonth(toCalendarDate(parsedDate, timeZone));
41305            }
41306          } else {
41307            onChangeCallback(void 0);
41308          }
41309        },
41310        [onChangeCallback, timeZone]
41311      );
41312      const { format: fieldFormat } = field;
41313      const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date5.getSettings)().l10n.startOfWeek;
41314      const locale = getCalendarLocale((0, import_date5.getSettings)().l10n.locale);
41315      let displayLabel = label;
41316      if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) {
41317        displayLabel = `$label} (${(0, import_i18n50.__)("Required")})`;
41318      } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) {
41319        displayLabel = `$label} (${(0, import_i18n50.__)("Optional")})`;
41320      }
41321      return /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41322        import_components40.BaseControl,
41323        {
41324          id,
41325          label: displayLabel,
41326          help: description,
41327          hideLabelFromVision,
41328          children: /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)(Stack, { direction: "column", gap: "lg", children: [
41329            /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41330              ValidatedInputControl,
41331              {
41332                ref: inputControlRef,
41333                required: !!isValid2?.required,
41334                customValidity: getCustomValidity(isValid2, validity),
41335                type: "datetime-local",
41336                label: (0, import_i18n50.__)("Date time"),
41337                hideLabelFromVision: true,
41338                value: formatDateTime(value),
41339                onValueChange: handleManualDateTimeChange,
41340                disabled: disabled2,
41341                description: getTimezoneDescription(),
41342                min: minConstraint ? formatDateTime(minConstraint) : void 0,
41343                max: maxConstraint ? formatDateTime(maxConstraint) : void 0
41344              }
41345            ),
41346            !compact && /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41347              Calendar,
41348              {
41349                style: { width: "100%" },
41350                value: value ? parseDateTime(value) : null,
41351                onValueChange: onSelectDate,
41352                month: calendarMonth,
41353                onMonthChange: setCalendarMonth,
41354                timeZone,
41355                locale,
41356                dir: (0, import_i18n50.isRTL)() ? "rtl" : "ltr",
41357                weekStartsOn,
41358                disabled: disabled2 || disabledMatchers
41359              }
41360            )
41361          ] })
41362        }
41363      );
41364    }
41365    function DateTime({
41366      data,
41367      field,
41368      onChange,
41369      hideLabelFromVision,
41370      markWhenOptional,
41371      operator,
41372      validity,
41373      config
41374    }) {
41375      if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) {
41376        return /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41377          RelativeDateControl,
41378          {
41379            className: "dataviews-controls__datetime",
41380            data,
41381            field,
41382            onChange,
41383            hideLabelFromVision,
41384            operator
41385          }
41386        );
41387      }
41388      return /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(
41389        CalendarDateTimeControl,
41390        {
41391          data,
41392          field,
41393          onChange,
41394          hideLabelFromVision,
41395          markWhenOptional,
41396          validity,
41397          config
41398        }
41399      );
41400    }
41401  
41402    // packages/dataviews/build-module/components/dataform-controls/date.mjs
41403    var import_components41 = __toESM(require_components(), 1);
41404    var import_a11y3 = __toESM(require_a11y(), 1);
41405    var import_element123 = __toESM(require_element(), 1);
41406    var import_i18n51 = __toESM(require_i18n(), 1);
41407    var import_date6 = __toESM(require_date(), 1);
41408    var import_jsx_runtime175 = __toESM(require_jsx_runtime(), 1);
41409    var DATE_PRESETS = [
41410      {
41411        id: "today",
41412        label: (0, import_i18n51.__)("Today"),
41413        getValue: () => (0, import_date6.getDate)(null)
41414      },
41415      {
41416        id: "yesterday",
41417        label: (0, import_i18n51.__)("Yesterday"),
41418        getValue: () => {
41419          const today = (0, import_date6.getDate)(null);
41420          return subDays(today, 1);
41421        }
41422      },
41423      {
41424        id: "past-week",
41425        label: (0, import_i18n51.__)("Past week"),
41426        getValue: () => {
41427          const today = (0, import_date6.getDate)(null);
41428          return subDays(today, 7);
41429        }
41430      },
41431      {
41432        id: "past-month",
41433        label: (0, import_i18n51.__)("Past month"),
41434        getValue: () => {
41435          const today = (0, import_date6.getDate)(null);
41436          return subMonths(today, 1);
41437        }
41438      }
41439    ];
41440    var DATE_RANGE_PRESETS = [
41441      {
41442        id: "last-7-days",
41443        label: (0, import_i18n51.__)("Last 7 days"),
41444        getValue: () => {
41445          const today = (0, import_date6.getDate)(null);
41446          return [subDays(today, 7), today];
41447        }
41448      },
41449      {
41450        id: "last-30-days",
41451        label: (0, import_i18n51.__)("Last 30 days"),
41452        getValue: () => {
41453          const today = (0, import_date6.getDate)(null);
41454          return [subDays(today, 30), today];
41455        }
41456      },
41457      {
41458        id: "month-to-date",
41459        label: (0, import_i18n51.__)("Month to date"),
41460        getValue: () => {
41461          const today = (0, import_date6.getDate)(null);
41462          return [startOfMonth(today), today];
41463        }
41464      },
41465      {
41466        id: "last-year",
41467        label: (0, import_i18n51.__)("Last year"),
41468        getValue: () => {
41469          const today = (0, import_date6.getDate)(null);
41470          return [subYears(today, 1), today];
41471        }
41472      },
41473      {
41474        id: "year-to-date",
41475        label: (0, import_i18n51.__)("Year to date"),
41476        getValue: () => {
41477          const today = (0, import_date6.getDate)(null);
41478          return [startOfYear(today), today];
41479        }
41480      }
41481    ];
41482    var parseDate2 = (dateString) => {
41483      if (!dateString) {
41484        return null;
41485      }
41486      const parsed = parseISO(dateString);
41487      return isValid(parsed) ? parsed : null;
41488    };
41489    var formatDate = (date) => {
41490      if (!date) {
41491        return "";
41492      }
41493      return typeof date === "string" ? date : format(date, "yyyy-MM-dd");
41494    };
41495    function ValidatedDateControl({
41496      field,
41497      validity,
41498      inputRefs,
41499      isTouched,
41500      setIsTouched,
41501      children
41502    }) {
41503      const { isValid: isValid2 } = field;
41504      const [customValidity, setCustomValidity] = (0, import_element123.useState)(void 0);
41505      const validateRefs = (0, import_element123.useCallback)(() => {
41506        const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
41507        for (const ref of refs) {
41508          const input = ref.current;
41509          if (input && !input.validity.valid) {
41510            setCustomValidity({
41511              type: "invalid",
41512              message: input.validationMessage
41513            });
41514            return;
41515          }
41516        }
41517        setCustomValidity(void 0);
41518      }, [inputRefs]);
41519      (0, import_element123.useEffect)(() => {
41520        const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
41521        const result = validity ? getCustomValidity(isValid2, validity) : void 0;
41522        for (const ref of refs) {
41523          const input = ref.current;
41524          if (input) {
41525            input.setCustomValidity(
41526              result?.type === "invalid" && result.message ? result.message : ""
41527            );
41528          }
41529        }
41530      }, [inputRefs, isValid2, validity]);
41531      (0, import_element123.useEffect)(() => {
41532        const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs];
41533        const handleInvalid = (event) => {
41534          event.preventDefault();
41535          setIsTouched(true);
41536        };
41537        for (const ref of refs) {
41538          ref.current?.addEventListener("invalid", handleInvalid);
41539        }
41540        return () => {
41541          for (const ref of refs) {
41542            ref.current?.removeEventListener("invalid", handleInvalid);
41543          }
41544        };
41545      }, [inputRefs, setIsTouched]);
41546      (0, import_element123.useEffect)(() => {
41547        if (!isTouched) {
41548          return;
41549        }
41550        const result = validity ? getCustomValidity(isValid2, validity) : void 0;
41551        if (result) {
41552          setCustomValidity(result);
41553        } else {
41554          validateRefs();
41555        }
41556      }, [isTouched, isValid2, validity, validateRefs]);
41557      (0, import_element123.useEffect)(() => {
41558        if (isTouched && customValidity?.message) {
41559          (0, import_a11y3.speak)(customValidity.message);
41560        }
41561      }, [isTouched, customValidity?.message]);
41562      const onBlur = (event) => {
41563        if (isTouched) {
41564          return;
41565        }
41566        if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) {
41567          setIsTouched(true);
41568        }
41569      };
41570      return /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(Stack, { direction: "column", gap: "sm", onBlur, children: [
41571        children,
41572        customValidity && /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41573          ValidityIndicator,
41574          {
41575            type: customValidity.type,
41576            message: customValidity.message
41577          }
41578        )
41579      ] });
41580    }
41581    function CalendarDateControl({
41582      data,
41583      field,
41584      onChange,
41585      hideLabelFromVision,
41586      markWhenOptional,
41587      validity
41588    }) {
41589      const {
41590        id,
41591        label,
41592        description,
41593        setValue,
41594        getValue,
41595        isValid: isValid2,
41596        format: fieldFormat
41597      } = field;
41598      const disabled2 = field.isDisabled({ item: data, field });
41599      const [selectedPresetId, setSelectedPresetId] = (0, import_element123.useState)(
41600        null
41601      );
41602      const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date6.getSettings)().l10n.startOfWeek;
41603      const locale = getCalendarLocale((0, import_date6.getSettings)().l10n.locale);
41604      const fieldValue = getValue({ item: data });
41605      const value = typeof fieldValue === "string" ? fieldValue : void 0;
41606      const [calendarMonth, setCalendarMonth] = (0, import_element123.useState)(() => {
41607        const parsedDate = parseDate2(value);
41608        return parsedDate || /* @__PURE__ */ new Date();
41609      });
41610      (0, import_element123.useEffect)(() => {
41611        const parsedDate = parseDate2(value);
41612        if (parsedDate) {
41613          setCalendarMonth(
41614            (currentMonth) => isSameMonth(parsedDate, currentMonth) ? currentMonth : parsedDate
41615          );
41616        }
41617      }, [value]);
41618      const [isTouched, setIsTouched] = (0, import_element123.useState)(false);
41619      const validityTargetRef = (0, import_element123.useRef)(null);
41620      const { minConstraint, maxConstraint, disabledMatchers } = useDisabledDateMatchers(isValid2, parseDate2);
41621      const onChangeCallback = (0, import_element123.useCallback)(
41622        (newValue) => onChange(setValue({ item: data, value: newValue })),
41623        [data, onChange, setValue]
41624      );
41625      const onSelectDate = (0, import_element123.useCallback)(
41626        (newDate) => {
41627          const dateValue = newDate ? formatDate(newDate) : void 0;
41628          onChangeCallback(dateValue);
41629          setSelectedPresetId(null);
41630          setIsTouched(true);
41631        },
41632        [onChangeCallback]
41633      );
41634      const handlePresetClick = (0, import_element123.useCallback)(
41635        (preset) => {
41636          const presetDate = preset.getValue();
41637          const dateValue = formatDate(presetDate);
41638          setCalendarMonth(presetDate);
41639          onChangeCallback(dateValue);
41640          setSelectedPresetId(preset.id);
41641          setIsTouched(true);
41642        },
41643        [onChangeCallback]
41644      );
41645      const handleManualDateChange = (0, import_element123.useCallback)(
41646        (newValue) => {
41647          onChangeCallback(newValue);
41648          if (newValue) {
41649            const parsedDate = parseDate2(newValue);
41650            if (parsedDate) {
41651              setCalendarMonth(parsedDate);
41652            }
41653          }
41654          setSelectedPresetId(null);
41655          setIsTouched(true);
41656        },
41657        [onChangeCallback]
41658      );
41659      let displayLabel = label;
41660      if (isValid2?.required && !markWhenOptional) {
41661        displayLabel = `$label} (${(0, import_i18n51.__)("Required")})`;
41662      } else if (!isValid2?.required && markWhenOptional) {
41663        displayLabel = `$label} (${(0, import_i18n51.__)("Optional")})`;
41664      }
41665      return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41666        ValidatedDateControl,
41667        {
41668          field,
41669          validity,
41670          inputRefs: validityTargetRef,
41671          isTouched,
41672          setIsTouched,
41673          children: /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41674            import_components41.BaseControl,
41675            {
41676              id,
41677              className: "dataviews-controls__date",
41678              label: displayLabel,
41679              help: description,
41680              hideLabelFromVision,
41681              children: /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(Stack, { direction: "column", gap: "lg", children: [
41682                /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(
41683                  Stack,
41684                  {
41685                    direction: "row",
41686                    gap: "sm",
41687                    wrap: "wrap",
41688                    justify: "flex-start",
41689                    children: [
41690                      DATE_PRESETS.map((preset) => {
41691                        const isSelected2 = selectedPresetId === preset.id;
41692                        return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41693                          import_components41.Button,
41694                          {
41695                            className: "dataviews-controls__date-preset",
41696                            variant: "tertiary",
41697                            isPressed: isSelected2,
41698                            size: "small",
41699                            disabled: disabled2,
41700                            accessibleWhenDisabled: true,
41701                            onClick: () => handlePresetClick(preset),
41702                            children: preset.label
41703                          },
41704                          preset.id
41705                        );
41706                      }),
41707                      /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41708                        import_components41.Button,
41709                        {
41710                          className: "dataviews-controls__date-preset",
41711                          variant: "tertiary",
41712                          isPressed: !selectedPresetId,
41713                          size: "small",
41714                          disabled: !!selectedPresetId || disabled2,
41715                          accessibleWhenDisabled: true,
41716                          children: (0, import_i18n51.__)("Custom")
41717                        }
41718                      )
41719                    ]
41720                  }
41721                ),
41722                /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41723                  import_components41.__experimentalInputControl,
41724                  {
41725                    ref: validityTargetRef,
41726                    type: "date",
41727                    label: (0, import_i18n51.__)("Date"),
41728                    hideLabelFromVision: true,
41729                    value,
41730                    onChange: handleManualDateChange,
41731                    required: !!field.isValid?.required,
41732                    disabled: disabled2,
41733                    min: minConstraint,
41734                    max: maxConstraint
41735                  }
41736                ),
41737                /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41738                  Calendar,
41739                  {
41740                    style: { width: "100%" },
41741                    value: value ? parseDate2(value) : null,
41742                    onValueChange: onSelectDate,
41743                    month: calendarMonth,
41744                    onMonthChange: setCalendarMonth,
41745                    locale,
41746                    dir: (0, import_i18n51.isRTL)() ? "rtl" : "ltr",
41747                    weekStartsOn,
41748                    disabled: disabled2 || disabledMatchers,
41749                    disableNavigation: disabled2
41750                  }
41751                )
41752              ] })
41753            }
41754          )
41755        }
41756      );
41757    }
41758    function CalendarDateRangeControl({
41759      data,
41760      field,
41761      onChange,
41762      hideLabelFromVision,
41763      markWhenOptional,
41764      validity
41765    }) {
41766      const {
41767        id,
41768        label,
41769        description,
41770        getValue,
41771        setValue,
41772        isValid: isValid2,
41773        format: fieldFormat
41774      } = field;
41775      const disabled2 = field.isDisabled({ item: data, field });
41776      let value;
41777      const fieldValue = getValue({ item: data });
41778      if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) {
41779        value = fieldValue;
41780      }
41781      const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date6.getSettings)().l10n.startOfWeek;
41782      const locale = getCalendarLocale((0, import_date6.getSettings)().l10n.locale);
41783      const { minConstraint, maxConstraint, disabledMatchers } = useDisabledDateMatchers(isValid2, parseDate2);
41784      const onChangeCallback = (0, import_element123.useCallback)(
41785        (newValue) => {
41786          onChange(
41787            setValue({
41788              item: data,
41789              value: newValue
41790            })
41791          );
41792        },
41793        [data, onChange, setValue]
41794      );
41795      const [selectedPresetId, setSelectedPresetId] = (0, import_element123.useState)(
41796        null
41797      );
41798      const selectedRange = (0, import_element123.useMemo)(() => {
41799        if (!value) {
41800          return null;
41801        }
41802        const [from, to] = value;
41803        return {
41804          from: parseDate2(from) || void 0,
41805          to: parseDate2(to) || void 0
41806        };
41807      }, [value]);
41808      const [calendarMonth, setCalendarMonth] = (0, import_element123.useState)(() => {
41809        return selectedRange?.from || /* @__PURE__ */ new Date();
41810      });
41811      const [fromValue, toValue] = value ?? [];
41812      (0, import_element123.useEffect)(() => {
41813        setCalendarMonth((currentMonth) => {
41814          const from = parseDate2(fromValue);
41815          const to = parseDate2(toValue);
41816          const targetMonth = from ?? to;
41817          const isRangeVisible = from && to ? areIntervalsOverlapping(
41818            { start: from, end: to },
41819            {
41820              start: startOfMonth(currentMonth),
41821              end: endOfMonth(currentMonth)
41822            },
41823            { inclusive: true }
41824          ) : [from, to].some(
41825            (date) => date && isSameMonth(date, currentMonth)
41826          );
41827          return targetMonth && !isRangeVisible ? targetMonth : currentMonth;
41828        });
41829      }, [fromValue, toValue]);
41830      const [isTouched, setIsTouched] = (0, import_element123.useState)(false);
41831      const fromInputRef = (0, import_element123.useRef)(null);
41832      const toInputRef = (0, import_element123.useRef)(null);
41833      const updateDateRange = (0, import_element123.useCallback)(
41834        (fromDate, toDate2) => {
41835          if (!fromDate && !toDate2) {
41836            onChangeCallback(void 0);
41837            return;
41838          }
41839          onChangeCallback([
41840            formatDate(fromDate),
41841            formatDate(toDate2)
41842          ]);
41843        },
41844        [onChangeCallback]
41845      );
41846      const onSelectCalendarRange = (0, import_element123.useCallback)(
41847        (newRange) => {
41848          updateDateRange(newRange?.from, newRange?.to);
41849          setSelectedPresetId(null);
41850          setIsTouched(true);
41851        },
41852        [updateDateRange]
41853      );
41854      const handlePresetClick = (0, import_element123.useCallback)(
41855        (preset) => {
41856          const [startDate, endDate] = preset.getValue();
41857          setCalendarMonth(startDate);
41858          updateDateRange(startDate, endDate);
41859          setSelectedPresetId(preset.id);
41860          setIsTouched(true);
41861        },
41862        [updateDateRange]
41863      );
41864      const handleManualDateChange = (0, import_element123.useCallback)(
41865        (fromOrTo, newValue) => {
41866          const [currentFrom, currentTo] = value || [
41867            void 0,
41868            void 0
41869          ];
41870          const updatedFrom = fromOrTo === "from" ? newValue : currentFrom;
41871          const updatedTo = fromOrTo === "to" ? newValue : currentTo;
41872          updateDateRange(updatedFrom, updatedTo);
41873          if (newValue) {
41874            const parsedDate = parseDate2(newValue);
41875            if (parsedDate) {
41876              setCalendarMonth(parsedDate);
41877            }
41878          }
41879          setSelectedPresetId(null);
41880          setIsTouched(true);
41881        },
41882        [value, updateDateRange]
41883      );
41884      let displayLabel = label;
41885      if (field.isValid?.required && !markWhenOptional) {
41886        displayLabel = `$label} (${(0, import_i18n51.__)("Required")})`;
41887      } else if (!field.isValid?.required && markWhenOptional) {
41888        displayLabel = `$label} (${(0, import_i18n51.__)("Optional")})`;
41889      }
41890      return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41891        ValidatedDateControl,
41892        {
41893          field,
41894          validity,
41895          inputRefs: [fromInputRef, toInputRef],
41896          isTouched,
41897          setIsTouched,
41898          children: /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41899            import_components41.BaseControl,
41900            {
41901              id,
41902              className: "dataviews-controls__date",
41903              label: displayLabel,
41904              help: description,
41905              hideLabelFromVision,
41906              children: /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(Stack, { direction: "column", gap: "lg", children: [
41907                /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(
41908                  Stack,
41909                  {
41910                    direction: "row",
41911                    gap: "sm",
41912                    wrap: "wrap",
41913                    justify: "flex-start",
41914                    children: [
41915                      DATE_RANGE_PRESETS.map((preset) => {
41916                        const isSelected2 = selectedPresetId === preset.id;
41917                        return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41918                          import_components41.Button,
41919                          {
41920                            className: "dataviews-controls__date-preset",
41921                            variant: "tertiary",
41922                            isPressed: isSelected2,
41923                            size: "small",
41924                            disabled: disabled2,
41925                            accessibleWhenDisabled: true,
41926                            onClick: () => handlePresetClick(preset),
41927                            children: preset.label
41928                          },
41929                          preset.id
41930                        );
41931                      }),
41932                      /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41933                        import_components41.Button,
41934                        {
41935                          className: "dataviews-controls__date-preset",
41936                          variant: "tertiary",
41937                          isPressed: !selectedPresetId,
41938                          size: "small",
41939                          accessibleWhenDisabled: true,
41940                          disabled: !!selectedPresetId || disabled2,
41941                          children: (0, import_i18n51.__)("Custom")
41942                        }
41943                      )
41944                    ]
41945                  }
41946                ),
41947                /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(
41948                  Stack,
41949                  {
41950                    direction: "row",
41951                    gap: "sm",
41952                    justify: "space-between",
41953                    className: "dataviews-controls__date-range-inputs",
41954                    children: [
41955                      /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41956                        import_components41.__experimentalInputControl,
41957                        {
41958                          ref: fromInputRef,
41959                          type: "date",
41960                          label: (0, import_i18n51.__)("From"),
41961                          hideLabelFromVision: true,
41962                          value: value?.[0],
41963                          onChange: (newValue) => handleManualDateChange("from", newValue),
41964                          required: !!field.isValid?.required,
41965                          disabled: disabled2,
41966                          min: minConstraint,
41967                          max: maxConstraint
41968                        }
41969                      ),
41970                      /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41971                        import_components41.__experimentalInputControl,
41972                        {
41973                          ref: toInputRef,
41974                          type: "date",
41975                          label: (0, import_i18n51.__)("To"),
41976                          hideLabelFromVision: true,
41977                          value: value?.[1],
41978                          onChange: (newValue) => handleManualDateChange("to", newValue),
41979                          required: !!field.isValid?.required,
41980                          disabled: disabled2,
41981                          min: minConstraint,
41982                          max: maxConstraint
41983                        }
41984                      )
41985                    ]
41986                  }
41987                ),
41988                /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
41989                  RangeCalendar,
41990                  {
41991                    style: { width: "100%" },
41992                    value: selectedRange,
41993                    onValueChange: onSelectCalendarRange,
41994                    month: calendarMonth,
41995                    onMonthChange: setCalendarMonth,
41996                    locale,
41997                    dir: (0, import_i18n51.isRTL)() ? "rtl" : "ltr",
41998                    weekStartsOn,
41999                    disabled: disabled2 || disabledMatchers
42000                  }
42001                )
42002              ] })
42003            }
42004          )
42005        }
42006      );
42007    }
42008    function DateControl({
42009      data,
42010      field,
42011      onChange,
42012      hideLabelFromVision,
42013      markWhenOptional,
42014      operator,
42015      validity
42016    }) {
42017      if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) {
42018        return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
42019          RelativeDateControl,
42020          {
42021            className: "dataviews-controls__date",
42022            data,
42023            field,
42024            onChange,
42025            hideLabelFromVision,
42026            operator
42027          }
42028        );
42029      }
42030      if (operator === OPERATOR_BETWEEN) {
42031        return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
42032          CalendarDateRangeControl,
42033          {
42034            data,
42035            field,
42036            onChange,
42037            hideLabelFromVision,
42038            markWhenOptional,
42039            validity
42040          }
42041        );
42042      }
42043      return /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(
42044        CalendarDateControl,
42045        {
42046          data,
42047          field,
42048          onChange,
42049          hideLabelFromVision,
42050          markWhenOptional,
42051          validity
42052        }
42053      );
42054    }
42055  
42056    // packages/dataviews/build-module/components/dataform-controls/select.mjs
42057    var import_components42 = __toESM(require_components(), 1);
42058    var import_element124 = __toESM(require_element(), 1);
42059    var import_jsx_runtime176 = __toESM(require_jsx_runtime(), 1);
42060    function Select2({
42061      data,
42062      field,
42063      onChange,
42064      hideLabelFromVision,
42065      markWhenOptional,
42066      validity
42067    }) {
42068      const { type, label, description, getValue, setValue, isValid: isValid2 } = field;
42069      const disabled2 = field.isDisabled({ item: data, field });
42070      const isMultiple = type === "array";
42071      const value = getValue({ item: data }) ?? (isMultiple ? [] : "");
42072      const onChangeControl = (0, import_element124.useCallback)(
42073        (newValue) => onChange(setValue({ item: data, value: newValue })),
42074        [data, onChange, setValue]
42075      );
42076      const { elements, isLoading } = useElements({
42077        elements: field.elements,
42078        getElements: field.getElements
42079      });
42080      if (isLoading) {
42081        return /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(import_components42.Spinner, {});
42082      }
42083      return /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(
42084        ValidatedSelectControl,
42085        {
42086          required: !!field.isValid?.required,
42087          markWhenOptional,
42088          customValidity: getCustomValidity(isValid2, validity),
42089          label,
42090          value,
42091          help: description,
42092          options: elements,
42093          onChange: onChangeControl,
42094          hideLabelFromVision,
42095          multiple: isMultiple,
42096          disabled: disabled2
42097        }
42098      );
42099    }
42100  
42101    // packages/dataviews/build-module/components/dataform-controls/adaptive-select.mjs
42102    var import_jsx_runtime177 = __toESM(require_jsx_runtime(), 1);
42103    var ELEMENTS_THRESHOLD = 10;
42104    function AdaptiveSelect(props) {
42105      const { field } = props;
42106      const { elements } = useElements({
42107        elements: field.elements,
42108        getElements: field.getElements
42109      });
42110      if (elements.length >= ELEMENTS_THRESHOLD) {
42111        return /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(Combobox3, { ...props });
42112      }
42113      return /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(Select2, { ...props });
42114    }
42115  
42116    // packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs
42117    var import_element125 = __toESM(require_element(), 1);
42118    var import_jsx_runtime178 = __toESM(require_jsx_runtime(), 1);
42119    function ValidatedText({
42120      data,
42121      field,
42122      onChange,
42123      hideLabelFromVision,
42124      markWhenOptional,
42125      type,
42126      prefix,
42127      suffix,
42128      validity
42129    }) {
42130      const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field;
42131      const value = getValue({ item: data });
42132      const disabled2 = field.isDisabled({ item: data, field });
42133      const onValueChangeControl = (0, import_element125.useCallback)(
42134        (newValue) => onChange(
42135          setValue({
42136            item: data,
42137            value: newValue
42138          })
42139        ),
42140        [data, setValue, onChange]
42141      );
42142      return /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(
42143        ValidatedInputControl,
42144        {
42145          required: !!isValid2.required,
42146          markWhenOptional,
42147          customValidity: getCustomValidity(isValid2, validity),
42148          label,
42149          placeholder,
42150          value: value ?? "",
42151          description: typeof description === "string" ? description : void 0,
42152          details: typeof description === "string" ? void 0 : description,
42153          onValueChange: onValueChangeControl,
42154          hideLabelFromVision,
42155          type,
42156          prefix,
42157          suffix,
42158          disabled: disabled2,
42159          pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0,
42160          minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0,
42161          maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0
42162        }
42163      );
42164    }
42165  
42166    // packages/dataviews/build-module/components/dataform-controls/email.mjs
42167    var import_jsx_runtime179 = __toESM(require_jsx_runtime(), 1);
42168    function Email({
42169      data,
42170      field,
42171      onChange,
42172      hideLabelFromVision,
42173      markWhenOptional,
42174      validity
42175    }) {
42176      return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(
42177        ValidatedText,
42178        {
42179          ...{
42180            data,
42181            field,
42182            onChange,
42183            hideLabelFromVision,
42184            markWhenOptional,
42185            validity,
42186            type: "email",
42187            prefix: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(Icon, { icon: envelope_default }) })
42188          }
42189        }
42190      );
42191    }
42192  
42193    // packages/dataviews/build-module/components/dataform-controls/telephone.mjs
42194    var import_jsx_runtime180 = __toESM(require_jsx_runtime(), 1);
42195    function Telephone({
42196      data,
42197      field,
42198      onChange,
42199      hideLabelFromVision,
42200      markWhenOptional,
42201      validity
42202    }) {
42203      return /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(
42204        ValidatedText,
42205        {
42206          ...{
42207            data,
42208            field,
42209            onChange,
42210            hideLabelFromVision,
42211            markWhenOptional,
42212            validity,
42213            type: "tel",
42214            prefix: /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(Icon, { icon: mobile_default }) })
42215          }
42216        }
42217      );
42218    }
42219  
42220    // packages/dataviews/build-module/components/dataform-controls/url.mjs
42221    var import_jsx_runtime181 = __toESM(require_jsx_runtime(), 1);
42222    function Url({
42223      data,
42224      field,
42225      onChange,
42226      hideLabelFromVision,
42227      markWhenOptional,
42228      validity
42229    }) {
42230      return /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(
42231        ValidatedText,
42232        {
42233          ...{
42234            data,
42235            field,
42236            onChange,
42237            hideLabelFromVision,
42238            markWhenOptional,
42239            validity,
42240            type: "url",
42241            prefix: /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(Icon, { icon: link_default }) })
42242          }
42243        }
42244      );
42245    }
42246  
42247    // packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs
42248    var import_components43 = __toESM(require_components(), 1);
42249    var import_element126 = __toESM(require_element(), 1);
42250    var import_i18n52 = __toESM(require_i18n(), 1);
42251    var import_jsx_runtime182 = __toESM(require_jsx_runtime(), 1);
42252    function toNumberOrEmpty(value) {
42253      if (value === "" || value === void 0) {
42254        return "";
42255      }
42256      const number = Number(value);
42257      return Number.isFinite(number) ? number : "";
42258    }
42259    function BetweenControls({
42260      value,
42261      onChange,
42262      hideLabelFromVision,
42263      step
42264    }) {
42265      const [min3 = "", max3 = ""] = value;
42266      const onChangeMin = (0, import_element126.useCallback)(
42267        (newValue) => onChange([toNumberOrEmpty(newValue), max3]),
42268        [onChange, max3]
42269      );
42270      const onChangeMax = (0, import_element126.useCallback)(
42271        (newValue) => onChange([min3, toNumberOrEmpty(newValue)]),
42272        [onChange, min3]
42273      );
42274      return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
42275        import_components43.BaseControl,
42276        {
42277          help: (0, import_i18n52.__)("The max. value must be greater than the min. value."),
42278          children: /* @__PURE__ */ (0, import_jsx_runtime182.jsxs)(import_components43.Flex, { direction: "row", gap: 4, children: [
42279            /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
42280              import_components43.__experimentalNumberControl,
42281              {
42282                label: (0, import_i18n52.__)("Min."),
42283                value: min3,
42284                max: max3 ? Number(max3) - step : void 0,
42285                onChange: onChangeMin,
42286                hideLabelFromVision,
42287                step
42288              }
42289            ),
42290            /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
42291              import_components43.__experimentalNumberControl,
42292              {
42293                label: (0, import_i18n52.__)("Max."),
42294                value: max3,
42295                min: min3 ? Number(min3) + step : void 0,
42296                onChange: onChangeMax,
42297                hideLabelFromVision,
42298                step
42299              }
42300            )
42301          ] })
42302        }
42303      );
42304    }
42305    function ValidatedNumber({
42306      data,
42307      field,
42308      onChange,
42309      hideLabelFromVision,
42310      markWhenOptional,
42311      operator,
42312      validity
42313    }) {
42314      const decimals = field.format?.decimals ?? 0;
42315      const step = Math.pow(10, Math.abs(decimals) * -1);
42316      const { label, description, getValue, setValue, isValid: isValid2 } = field;
42317      const value = getValue({ item: data }) ?? "";
42318      const disabled2 = field.isDisabled({ item: data, field });
42319      const onChangeControl = (0, import_element126.useCallback)(
42320        (newValue) => {
42321          onChange(
42322            setValue({
42323              item: data,
42324              // Do not convert an empty string or undefined to a number,
42325              // otherwise there's a mismatch between the UI control (empty)
42326              // and the data relied by onChange (0).
42327              value: ["", void 0].includes(newValue) ? void 0 : Number(newValue)
42328            })
42329          );
42330        },
42331        [data, onChange, setValue]
42332      );
42333      const onChangeBetweenControls = (0, import_element126.useCallback)(
42334        (newValue) => {
42335          onChange(
42336            setValue({
42337              item: data,
42338              value: newValue
42339            })
42340          );
42341        },
42342        [data, onChange, setValue]
42343      );
42344      if (operator === OPERATOR_BETWEEN) {
42345        let valueBetween = ["", ""];
42346        if (Array.isArray(value) && value.length === 2 && value.every(
42347          (element) => typeof element === "number" || element === ""
42348        )) {
42349          valueBetween = value;
42350        }
42351        return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
42352          BetweenControls,
42353          {
42354            value: valueBetween,
42355            onChange: onChangeBetweenControls,
42356            hideLabelFromVision,
42357            step
42358          }
42359        );
42360      }
42361      return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)(
42362        ValidatedNumberControl,
42363        {
42364          required: !!isValid2.required,
42365          markWhenOptional,
42366          customValidity: getCustomValidity(isValid2, validity),
42367          label,
42368          help: description,
42369          value,
42370          onChange: onChangeControl,
42371          hideLabelFromVision,
42372          step,
42373          min: typeof isValid2.min?.constraint === "number" ? isValid2.min.constraint : void 0,
42374          max: typeof isValid2.max?.constraint === "number" ? isValid2.max.constraint : void 0,
42375          disabled: disabled2
42376        }
42377      );
42378    }
42379  
42380    // packages/dataviews/build-module/components/dataform-controls/integer.mjs
42381    var import_jsx_runtime183 = __toESM(require_jsx_runtime(), 1);
42382    function Integer(props) {
42383      return /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(ValidatedNumber, { ...props });
42384    }
42385  
42386    // packages/dataviews/build-module/components/dataform-controls/number.mjs
42387    var import_jsx_runtime184 = __toESM(require_jsx_runtime(), 1);
42388    function Number2(props) {
42389      return /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(ValidatedNumber, { ...props });
42390    }
42391  
42392    // packages/dataviews/build-module/components/dataform-controls/radio.mjs
42393    var import_components44 = __toESM(require_components(), 1);
42394    var import_element127 = __toESM(require_element(), 1);
42395    var import_jsx_runtime185 = __toESM(require_jsx_runtime(), 1);
42396    function Radio({
42397      data,
42398      field,
42399      onChange,
42400      hideLabelFromVision,
42401      markWhenOptional,
42402      validity
42403    }) {
42404      const { label, description, getValue, setValue, isValid: isValid2 } = field;
42405      const disabled2 = field.isDisabled({ item: data, field });
42406      const { elements, isLoading } = useElements({
42407        elements: field.elements,
42408        getElements: field.getElements
42409      });
42410      const value = getValue({ item: data });
42411      const onChangeControl = (0, import_element127.useCallback)(
42412        (newValue) => onChange(setValue({ item: data, value: newValue })),
42413        [data, onChange, setValue]
42414      );
42415      if (isLoading) {
42416        return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(import_components44.Spinner, {});
42417      }
42418      return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(
42419        ValidatedRadioControl,
42420        {
42421          required: !!field.isValid?.required,
42422          markWhenOptional,
42423          customValidity: getCustomValidity(isValid2, validity),
42424          label,
42425          help: description,
42426          onChange: onChangeControl,
42427          options: elements,
42428          selected: value,
42429          hideLabelFromVision,
42430          disabled: disabled2
42431        }
42432      );
42433    }
42434  
42435    // packages/dataviews/build-module/components/dataform-controls/text.mjs
42436    var import_element128 = __toESM(require_element(), 1);
42437    var import_jsx_runtime186 = __toESM(require_jsx_runtime(), 1);
42438    function Text3({
42439      data,
42440      field,
42441      onChange,
42442      hideLabelFromVision,
42443      markWhenOptional,
42444      config,
42445      validity
42446    }) {
42447      const { prefix, suffix } = config || {};
42448      return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)(
42449        ValidatedText,
42450        {
42451          ...{
42452            data,
42453            field,
42454            onChange,
42455            hideLabelFromVision,
42456            markWhenOptional,
42457            validity,
42458            prefix: prefix ? (0, import_element128.createElement)(prefix) : void 0,
42459            suffix: suffix ? (0, import_element128.createElement)(suffix) : void 0
42460          }
42461        }
42462      );
42463    }
42464  
42465    // packages/dataviews/build-module/components/dataform-controls/time.mjs
42466    var import_components45 = __toESM(require_components(), 1);
42467    var import_element129 = __toESM(require_element(), 1);
42468    var import_i18n53 = __toESM(require_i18n(), 1);
42469    var import_jsx_runtime187 = __toESM(require_jsx_runtime(), 1);
42470    function getStep(timeFormat, values) {
42471      const tokens = (timeFormat ?? "").replace(/\\./g, "");
42472      const hasSeconds = tokens.includes("s") || values.some((value) => (parseTime2(value) ?? 0) % 60 !== 0);
42473      return hasSeconds ? 1 : void 0;
42474    }
42475    function toInputValue(value) {
42476      const seconds = parseTime2(value);
42477      if (seconds === null) {
42478        return "";
42479      }
42480      const parts = [
42481        Math.floor(seconds / 3600),
42482        Math.floor(seconds % 3600 / 60)
42483      ];
42484      if (seconds % 60 !== 0) {
42485        parts.push(seconds % 60);
42486      }
42487      return parts.map((part) => String(part).padStart(2, "0")).join(":");
42488    }
42489    function BetweenControls2({
42490      value,
42491      onChange,
42492      hideLabelFromVision,
42493      disabled: disabled2,
42494      step,
42495      min: min3,
42496      max: max3
42497    }) {
42498      const [from = "", to = ""] = value;
42499      const onChangeFrom = (0, import_element129.useCallback)(
42500        (newValue) => onChange([newValue ?? "", to]),
42501        [onChange, to]
42502      );
42503      const onChangeTo = (0, import_element129.useCallback)(
42504        (newValue) => onChange([from, newValue ?? ""]),
42505        [onChange, from]
42506      );
42507      return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
42508        import_components45.BaseControl,
42509        {
42510          help: (0, import_i18n53.__)("The end time must be later than the start time."),
42511          children: /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(Stack, { direction: "row", gap: "sm", justify: "space-between", children: [
42512            /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
42513              ValidatedInputControl,
42514              {
42515                type: "time",
42516                label: (0, import_i18n53.__)("From"),
42517                value: from,
42518                onValueChange: onChangeFrom,
42519                hideLabelFromVision,
42520                disabled: disabled2,
42521                step,
42522                min: min3,
42523                max: to || max3
42524              }
42525            ),
42526            /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
42527              ValidatedInputControl,
42528              {
42529                type: "time",
42530                label: (0, import_i18n53.__)("To"),
42531                value: to,
42532                onValueChange: onChangeTo,
42533                hideLabelFromVision,
42534                disabled: disabled2,
42535                step,
42536                min: from || min3,
42537                max: max3
42538              }
42539            )
42540          ] })
42541        }
42542      );
42543    }
42544    function Time({
42545      data,
42546      field,
42547      onChange,
42548      hideLabelFromVision,
42549      markWhenOptional,
42550      operator,
42551      validity
42552    }) {
42553      const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field;
42554      const value = getValue({ item: data });
42555      const disabled2 = field.isDisabled({ item: data, field });
42556      const timeFormat = field.format?.time;
42557      const min3 = typeof isValid2.min?.constraint === "string" ? isValid2.min.constraint : void 0;
42558      const max3 = typeof isValid2.max?.constraint === "string" ? isValid2.max.constraint : void 0;
42559      const onChangeControl = (0, import_element129.useCallback)(
42560        (newValue) => onChange(
42561          setValue({
42562            item: data,
42563            value: newValue === "" ? void 0 : newValue
42564          })
42565        ),
42566        [data, onChange, setValue]
42567      );
42568      const onChangeBetweenControls = (0, import_element129.useCallback)(
42569        ([from, to]) => onChange(
42570          setValue({
42571            item: data,
42572            // An unfilled bound is stored as `undefined`, which the
42573            // `between` operator reads as "do not apply the filter".
42574            value: [from || void 0, to || void 0]
42575          })
42576        ),
42577        [data, onChange, setValue]
42578      );
42579      if (operator === OPERATOR_BETWEEN) {
42580        let valueBetween = ["", ""];
42581        if (Array.isArray(value) && value.length === 2) {
42582          valueBetween = [
42583            toInputValue(value[0]),
42584            toInputValue(value[1])
42585          ];
42586        }
42587        return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
42588          BetweenControls2,
42589          {
42590            value: valueBetween,
42591            onChange: onChangeBetweenControls,
42592            hideLabelFromVision,
42593            disabled: disabled2,
42594            step: getStep(timeFormat, valueBetween),
42595            min: min3,
42596            max: max3
42597          }
42598        );
42599      }
42600      return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(
42601        ValidatedInputControl,
42602        {
42603          required: !!isValid2.required,
42604          markWhenOptional,
42605          customValidity: getCustomValidity(isValid2, validity),
42606          type: "time",
42607          label,
42608          placeholder,
42609          description: typeof description === "string" ? description : void 0,
42610          details: typeof description === "string" ? void 0 : description,
42611          value: toInputValue(value),
42612          onValueChange: onChangeControl,
42613          hideLabelFromVision,
42614          disabled: disabled2,
42615          step: getStep(timeFormat, [value]),
42616          min: min3,
42617          max: max3
42618        }
42619      );
42620    }
42621  
42622    // packages/dataviews/build-module/components/dataform-controls/toggle.mjs
42623    var import_element130 = __toESM(require_element(), 1);
42624    var import_jsx_runtime188 = __toESM(require_jsx_runtime(), 1);
42625    function Toggle({
42626      field,
42627      onChange,
42628      data,
42629      hideLabelFromVision,
42630      markWhenOptional,
42631      validity
42632    }) {
42633      const { label, description, getValue, setValue, isValid: isValid2 } = field;
42634      const disabled2 = field.isDisabled({ item: data, field });
42635      const onChangeControl = (0, import_element130.useCallback)(() => {
42636        onChange(
42637          setValue({ item: data, value: !getValue({ item: data }) })
42638        );
42639      }, [onChange, setValue, data, getValue]);
42640      return /* @__PURE__ */ (0, import_jsx_runtime188.jsx)(
42641        ValidatedToggleControl,
42642        {
42643          required: !!isValid2.required,
42644          markWhenOptional,
42645          customValidity: getCustomValidity(isValid2, validity),
42646          hidden: hideLabelFromVision,
42647          label,
42648          help: description,
42649          checked: getValue({ item: data }),
42650          onChange: onChangeControl,
42651          disabled: disabled2
42652        }
42653      );
42654    }
42655  
42656    // packages/dataviews/build-module/components/dataform-controls/textarea.mjs
42657    var import_element131 = __toESM(require_element(), 1);
42658    var import_jsx_runtime189 = __toESM(require_jsx_runtime(), 1);
42659    function Textarea3({
42660      data,
42661      field,
42662      onChange,
42663      hideLabelFromVision,
42664      markWhenOptional,
42665      config,
42666      validity
42667    }) {
42668      const { rows = 4 } = config || {};
42669      const disabled2 = field.isDisabled({ item: data, field });
42670      const { label, placeholder, description, setValue, isValid: isValid2 } = field;
42671      const value = field.getValue({ item: data });
42672      const onValueChangeControl = (0, import_element131.useCallback)(
42673        (newValue) => onChange(setValue({ item: data, value: newValue })),
42674        [data, onChange, setValue]
42675      );
42676      return /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(
42677        ValidatedTextareaControl,
42678        {
42679          required: !!isValid2.required,
42680          markWhenOptional,
42681          customValidity: getCustomValidity(isValid2, validity),
42682          label,
42683          placeholder,
42684          value: value ?? "",
42685          description: typeof description === "string" ? description : void 0,
42686          details: typeof description === "string" ? void 0 : description,
42687          onValueChange: onValueChangeControl,
42688          rows,
42689          disabled: disabled2,
42690          minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0,
42691          maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0,
42692          hideLabelFromVision
42693        }
42694      );
42695    }
42696  
42697    // packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs
42698    var import_components46 = __toESM(require_components(), 1);
42699    var import_element132 = __toESM(require_element(), 1);
42700    var import_jsx_runtime190 = __toESM(require_jsx_runtime(), 1);
42701    function ToggleGroup({
42702      data,
42703      field,
42704      onChange,
42705      hideLabelFromVision,
42706      markWhenOptional,
42707      validity
42708    }) {
42709      const { getValue, setValue, isValid: isValid2 } = field;
42710      const disabled2 = field.isDisabled({ item: data, field });
42711      const value = getValue({ item: data });
42712      const onChangeControl = (0, import_element132.useCallback)(
42713        (newValue) => onChange(setValue({ item: data, value: newValue })),
42714        [data, onChange, setValue]
42715      );
42716      const { elements, isLoading } = useElements({
42717        elements: field.elements,
42718        getElements: field.getElements
42719      });
42720      if (isLoading) {
42721        return /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(import_components46.Spinner, {});
42722      }
42723      if (elements.length === 0) {
42724        return null;
42725      }
42726      const selectedOption = elements.find((el) => el.value === value);
42727      return /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
42728        ValidatedToggleGroupControl,
42729        {
42730          required: !!field.isValid?.required,
42731          markWhenOptional,
42732          customValidity: getCustomValidity(isValid2, validity),
42733          isBlock: true,
42734          label: field.label,
42735          help: selectedOption?.description || field.description,
42736          onChange: onChangeControl,
42737          value,
42738          hideLabelFromVision,
42739          children: elements.map((el) => /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(
42740            import_components46.__experimentalToggleGroupControlOption,
42741            {
42742              label: el.label,
42743              value: el.value,
42744              disabled: disabled2
42745            },
42746            el.value
42747          ))
42748        }
42749      );
42750    }
42751  
42752    // packages/dataviews/build-module/components/dataform-controls/array.mjs
42753    var import_components47 = __toESM(require_components(), 1);
42754    var import_element133 = __toESM(require_element(), 1);
42755    var import_jsx_runtime191 = __toESM(require_jsx_runtime(), 1);
42756    function ArrayControl({
42757      data,
42758      field,
42759      onChange,
42760      hideLabelFromVision,
42761      markWhenOptional,
42762      validity
42763    }) {
42764      const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field;
42765      const value = getValue({ item: data });
42766      const disabled2 = field.isDisabled({ item: data, field });
42767      const { elements, isLoading } = useElements({
42768        elements: field.elements,
42769        getElements: field.getElements
42770      });
42771      const arrayValueAsElements = (0, import_element133.useMemo)(
42772        () => Array.isArray(value) ? value.map((token) => {
42773          const element = elements?.find(
42774            (suggestion) => suggestion.value === token
42775          );
42776          return element || { value: token, label: token };
42777        }) : [],
42778        [value, elements]
42779      );
42780      const onChangeControl = (0, import_element133.useCallback)(
42781        (tokens) => {
42782          const valueTokens = tokens.map((token) => {
42783            if (typeof token === "object" && "value" in token) {
42784              return token.value;
42785            }
42786            return token;
42787          });
42788          onChange(setValue({ item: data, value: valueTokens }));
42789        },
42790        [onChange, setValue, data]
42791      );
42792      if (isLoading) {
42793        return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(import_components47.Spinner, {});
42794      }
42795      return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(
42796        ValidatedFormTokenField,
42797        {
42798          required: !!isValid2?.required,
42799          markWhenOptional,
42800          customValidity: getCustomValidity(isValid2, validity),
42801          label: hideLabelFromVision ? void 0 : label,
42802          value: arrayValueAsElements,
42803          onChange: onChangeControl,
42804          placeholder,
42805          suggestions: elements?.map((element) => element.value),
42806          disabled: disabled2,
42807          __experimentalValidateInput: (token) => {
42808            if (field.isValid?.elements && elements) {
42809              return elements.some(
42810                (element) => element.value === token || element.label === token
42811              );
42812            }
42813            return true;
42814          },
42815          __experimentalExpandOnFocus: elements && elements.length > 0,
42816          help: description ?? (field.isValid?.elements ? "" : void 0),
42817          displayTransform: (token) => {
42818            if (typeof token === "object" && "label" in token) {
42819              return token.label;
42820            }
42821            if (typeof token === "string" && elements) {
42822              const element = elements.find(
42823                (el) => el.value === token
42824              );
42825              return element?.label || token;
42826            }
42827            return token;
42828          },
42829          __experimentalRenderItem: ({ item }) => {
42830            if (typeof item === "string" && elements) {
42831              const element = elements.find(
42832                (el) => el.value === item
42833              );
42834              return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("span", { children: element?.label || item });
42835            }
42836            return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("span", { children: item });
42837          }
42838        }
42839      );
42840    }
42841  
42842    // node_modules/colord/index.mjs
42843    var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };
42844    var t = function(r3) {
42845      return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3;
42846    };
42847    var n = function(r3, t2, n2) {
42848      return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0;
42849    };
42850    var e = function(r3, t2, n2) {
42851      return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2;
42852    };
42853    var u = function(r3) {
42854      return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360;
42855    };
42856    var a = function(r3) {
42857      return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) };
42858    };
42859    var o = function(r3) {
42860      return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) };
42861    };
42862    var i = /^#([0-9a-f]{3,8})$/i;
42863    var s = function(r3) {
42864      var t2 = r3.toString(16);
42865      return t2.length < 2 ? "0" + t2 : t2;
42866    };
42867    var h = function(r3) {
42868      var t2 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t2, n2, e2), o2 = a2 - Math.min(t2, n2, e2), i2 = o2 ? a2 === t2 ? (n2 - e2) / o2 : a2 === n2 ? 2 + (e2 - t2) / o2 : 4 + (t2 - n2) / o2 : 0;
42869      return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o2 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 };
42870    };
42871    var b = function(r3) {
42872      var t2 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a;
42873      t2 = t2 / 360 * 6, n2 /= 100, e2 /= 100;
42874      var a2 = Math.floor(t2), o2 = e2 * (1 - n2), i2 = e2 * (1 - (t2 - a2) * n2), s2 = e2 * (1 - (1 - t2 + a2) * n2), h2 = a2 % 6;
42875      return { r: 255 * [e2, i2, o2, o2, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o2, o2][h2], b: 255 * [o2, o2, s2, e2, e2, i2][h2], a: u2 };
42876    };
42877    var g = function(r3) {
42878      return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) };
42879    };
42880    var d = function(r3) {
42881      return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) };
42882    };
42883    var f = function(r3) {
42884      return b((n2 = (t2 = r3).s, { h: t2.h, s: (n2 *= ((e2 = t2.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t2.a }));
42885      var t2, n2, e2;
42886    };
42887    var c = function(r3) {
42888      return { h: (t2 = h(r3)).h, s: (u2 = (200 - (n2 = t2.s)) * (e2 = t2.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t2.a };
42889      var t2, n2, e2, u2;
42890    };
42891    var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
42892    var p = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
42893    var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
42894    var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
42895    var y = { string: [[function(r3) {
42896      var t2 = i.exec(r3);
42897      return t2 ? (r3 = t2[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
42898    }, "hex"], [function(r3) {
42899      var t2 = v.exec(r3) || m.exec(r3);
42900      return t2 ? t2[2] !== t2[4] || t2[4] !== t2[6] ? null : a({ r: Number(t2[1]) / (t2[2] ? 100 / 255 : 1), g: Number(t2[3]) / (t2[4] ? 100 / 255 : 1), b: Number(t2[5]) / (t2[6] ? 100 / 255 : 1), a: void 0 === t2[7] ? 1 : Number(t2[7]) / (t2[8] ? 100 : 1) }) : null;
42901    }, "rgb"], [function(t2) {
42902      var n2 = l.exec(t2) || p.exec(t2);
42903      if (!n2) return null;
42904      var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) });
42905      return f(a2);
42906    }, "hsl"]], object: [[function(r3) {
42907      var n2 = r3.r, e2 = r3.g, u2 = r3.b, o2 = r3.a, i2 = void 0 === o2 ? 1 : o2;
42908      return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null;
42909    }, "rgb"], [function(r3) {
42910      var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o2 = void 0 === a2 ? 1 : a2;
42911      if (!t(n2) || !t(e2) || !t(u2)) return null;
42912      var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o2) });
42913      return f(i2);
42914    }, "hsl"], [function(r3) {
42915      var n2 = r3.h, a2 = r3.s, o2 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2;
42916      if (!t(n2) || !t(a2) || !t(o2)) return null;
42917      var h2 = (function(r4) {
42918        return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) };
42919      })({ h: Number(n2), s: Number(a2), v: Number(o2), a: Number(s2) });
42920      return b(h2);
42921    }, "hsv"]] };
42922    var N = function(r3, t2) {
42923      for (var n2 = 0; n2 < t2.length; n2++) {
42924        var e2 = t2[n2][0](r3);
42925        if (e2) return [e2, t2[n2][1]];
42926      }
42927      return [null, void 0];
42928    };
42929    var x = function(r3) {
42930      return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0];
42931    };
42932    var M = function(r3, t2) {
42933      var n2 = c(r3);
42934      return { h: n2.h, s: e(n2.s + 100 * t2, 0, 100), l: n2.l, a: n2.a };
42935    };
42936    var H = function(r3) {
42937      return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255;
42938    };
42939    var $ = function(r3, t2) {
42940      var n2 = c(r3);
42941      return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t2, 0, 100), a: n2.a };
42942    };
42943    var j = (function() {
42944      function r3(r4) {
42945        this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
42946      }
42947      return r3.prototype.isValid = function() {
42948        return null !== this.parsed;
42949      }, r3.prototype.brightness = function() {
42950        return n(H(this.rgba), 2);
42951      }, r3.prototype.isDark = function() {
42952        return H(this.rgba) < 0.5;
42953      }, r3.prototype.isLight = function() {
42954        return H(this.rgba) >= 0.5;
42955      }, r3.prototype.toHex = function() {
42956        return r4 = o(this.rgba), t2 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t2) + s(e2) + s(u2) + i2;
42957        var r4, t2, e2, u2, a2, i2;
42958      }, r3.prototype.toRgb = function() {
42959        return o(this.rgba);
42960      }, r3.prototype.toRgbString = function() {
42961        return r4 = o(this.rgba), t2 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t2 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t2 + ", " + n2 + ", " + e2 + ")";
42962        var r4, t2, n2, e2, u2;
42963      }, r3.prototype.toHsl = function() {
42964        return d(c(this.rgba));
42965      }, r3.prototype.toHslString = function() {
42966        return r4 = d(c(this.rgba)), t2 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t2 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t2 + ", " + n2 + "%, " + e2 + "%)";
42967        var r4, t2, n2, e2, u2;
42968      }, r3.prototype.toHsv = function() {
42969        return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) };
42970        var r4;
42971      }, r3.prototype.invert = function() {
42972        return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a });
42973        var r4;
42974      }, r3.prototype.saturate = function(r4) {
42975        return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4));
42976      }, r3.prototype.desaturate = function(r4) {
42977        return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4));
42978      }, r3.prototype.grayscale = function() {
42979        return w(M(this.rgba, -1));
42980      }, r3.prototype.lighten = function(r4) {
42981        return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4));
42982      }, r3.prototype.darken = function(r4) {
42983        return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4));
42984      }, r3.prototype.rotate = function(r4) {
42985        return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4);
42986      }, r3.prototype.alpha = function(r4) {
42987        return "number" == typeof r4 ? w({ r: (t2 = this.rgba).r, g: t2.g, b: t2.b, a: r4 }) : n(this.rgba.a, 3);
42988        var t2;
42989      }, r3.prototype.hue = function(r4) {
42990        var t2 = c(this.rgba);
42991        return "number" == typeof r4 ? w({ h: r4, s: t2.s, l: t2.l, a: t2.a }) : n(t2.h);
42992      }, r3.prototype.isEqual = function(r4) {
42993        return this.toHex() === w(r4).toHex();
42994      }, r3;
42995    })();
42996    var w = function(r3) {
42997      return r3 instanceof j ? r3 : new j(r3);
42998    };
42999  
43000    // packages/dataviews/build-module/components/dataform-controls/color.mjs
43001    var import_components48 = __toESM(require_components(), 1);
43002    var import_element134 = __toESM(require_element(), 1);
43003    var import_i18n54 = __toESM(require_i18n(), 1);
43004    var import_jsx_runtime192 = __toESM(require_jsx_runtime(), 1);
43005    var ColorPickerDropdown = ({
43006      color,
43007      onColorChange,
43008      disabled: disabled2
43009    }) => {
43010      const validColor = color && w(color).isValid() ? color : "#ffffff";
43011      return /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
43012        import_components48.Dropdown,
43013        {
43014          className: "dataviews-controls__color-picker-dropdown",
43015          popoverProps: { resize: false },
43016          renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
43017            import_components48.Button,
43018            {
43019              onClick: onToggle,
43020              "aria-label": (0, import_i18n54.__)("Open color picker"),
43021              size: "small",
43022              disabled: disabled2,
43023              accessibleWhenDisabled: true,
43024              icon: () => /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_components48.ColorIndicator, { colorValue: validColor })
43025            }
43026          ),
43027          renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(import_components48.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
43028            import_components48.ColorPicker,
43029            {
43030              color: validColor,
43031              onChange: onColorChange,
43032              enableAlpha: true
43033            }
43034          ) })
43035        }
43036      );
43037    };
43038    function Color({
43039      data,
43040      field,
43041      onChange,
43042      hideLabelFromVision,
43043      markWhenOptional,
43044      validity
43045    }) {
43046      const { label, placeholder, description, setValue, isValid: isValid2 } = field;
43047      const disabled2 = field.isDisabled({ item: data, field });
43048      const value = field.getValue({ item: data }) || "";
43049      const handleColorChange = (0, import_element134.useCallback)(
43050        (newColor) => {
43051          onChange(setValue({ item: data, value: newColor }));
43052        },
43053        [data, onChange, setValue]
43054      );
43055      const handleInputChange = (0, import_element134.useCallback)(
43056        (newValue) => {
43057          onChange(setValue({ item: data, value: newValue || "" }));
43058        },
43059        [data, onChange, setValue]
43060      );
43061      return /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
43062        ValidatedInputControl,
43063        {
43064          required: !!field.isValid?.required,
43065          markWhenOptional,
43066          customValidity: getCustomValidity(isValid2, validity),
43067          label,
43068          placeholder,
43069          value,
43070          description: typeof description === "string" ? description : void 0,
43071          details: typeof description === "string" ? void 0 : description,
43072          onValueChange: handleInputChange,
43073          hideLabelFromVision,
43074          type: "text",
43075          disabled: disabled2,
43076          prefix: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime192.jsx)(
43077            ColorPickerDropdown,
43078            {
43079              color: value,
43080              onColorChange: handleColorChange,
43081              disabled: disabled2
43082            }
43083          ) })
43084        }
43085      );
43086    }
43087  
43088    // packages/dataviews/build-module/components/dataform-controls/password.mjs
43089    var import_components49 = __toESM(require_components(), 1);
43090    var import_element135 = __toESM(require_element(), 1);
43091    var import_i18n55 = __toESM(require_i18n(), 1);
43092    var import_jsx_runtime193 = __toESM(require_jsx_runtime(), 1);
43093    function Password({
43094      data,
43095      field,
43096      onChange,
43097      hideLabelFromVision,
43098      markWhenOptional,
43099      validity
43100    }) {
43101      const [isVisible2, setIsVisible] = (0, import_element135.useState)(false);
43102      const disabled2 = field.isDisabled({ item: data, field });
43103      const toggleVisibility = (0, import_element135.useCallback)(() => {
43104        setIsVisible((prev) => !prev);
43105      }, []);
43106      return /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
43107        ValidatedText,
43108        {
43109          ...{
43110            data,
43111            field,
43112            onChange,
43113            hideLabelFromVision,
43114            markWhenOptional,
43115            validity,
43116            type: isVisible2 ? "text" : "password",
43117            suffix: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(InputLayout3.Slot, { padding: "minimal", children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(
43118              import_components49.Button,
43119              {
43120                icon: isVisible2 ? unseen_default : seen_default,
43121                onClick: toggleVisibility,
43122                size: "small",
43123                label: isVisible2 ? (0, import_i18n55.__)("Hide password") : (0, import_i18n55.__)("Show password"),
43124                disabled: disabled2,
43125                accessibleWhenDisabled: true
43126              }
43127            ) })
43128          }
43129        }
43130      );
43131    }
43132  
43133    // packages/dataviews/build-module/field-types/utils/has-elements.mjs
43134    function hasElements(field) {
43135      return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function";
43136    }
43137  
43138    // packages/dataviews/build-module/components/dataform-controls/index.mjs
43139    var import_jsx_runtime194 = __toESM(require_jsx_runtime(), 1);
43140    var FORM_CONTROLS = {
43141      adaptiveSelect: AdaptiveSelect,
43142      array: ArrayControl,
43143      checkbox: Checkbox,
43144      color: Color,
43145      combobox: Combobox3,
43146      datetime: DateTime,
43147      date: DateControl,
43148      email: Email,
43149      telephone: Telephone,
43150      url: Url,
43151      integer: Integer,
43152      number: Number2,
43153      password: Password,
43154      radio: Radio,
43155      select: Select2,
43156      text: Text3,
43157      time: Time,
43158      toggle: Toggle,
43159      textarea: Textarea3,
43160      toggleGroup: ToggleGroup
43161    };
43162    function isEditConfig(value) {
43163      return value && typeof value === "object" && typeof value.control === "string";
43164    }
43165    function createConfiguredControl(config) {
43166      const { control, ...controlConfig } = config;
43167      const BaseControlType = getControlByType(control);
43168      if (BaseControlType === null) {
43169        return null;
43170      }
43171      return function ConfiguredControl(props) {
43172        return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(BaseControlType, { ...props, config: controlConfig });
43173      };
43174    }
43175    function getControl(field, fallback) {
43176      if (typeof field.Edit === "function") {
43177        return field.Edit;
43178      }
43179      if (typeof field.Edit === "string") {
43180        return getControlByType(field.Edit);
43181      }
43182      if (isEditConfig(field.Edit)) {
43183        return createConfiguredControl(field.Edit);
43184      }
43185      if (hasElements(field) && field.type !== "array") {
43186        return getControlByType("adaptiveSelect");
43187      }
43188      if (fallback === null) {
43189        return null;
43190      }
43191      return getControlByType(fallback);
43192    }
43193    function getControlByType(type) {
43194      if (Object.keys(FORM_CONTROLS).includes(type)) {
43195        return FORM_CONTROLS[type];
43196      }
43197      return null;
43198    }
43199  
43200    // packages/dataviews/build-module/field-types/utils/get-filter-by.mjs
43201    function getFilterBy(field, defaultOperators, validOperators) {
43202      if (field.filterBy === false) {
43203        return false;
43204      }
43205      const operators = field.filterBy?.operators?.filter(
43206        (op) => validOperators.includes(op)
43207      ) ?? defaultOperators;
43208      if (operators.length === 0) {
43209        return false;
43210      }
43211      return {
43212        isPrimary: !!field.filterBy?.isPrimary,
43213        operators
43214      };
43215    }
43216    var get_filter_by_default = getFilterBy;
43217  
43218    // packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs
43219    var getValueFromId = (id) => ({ item }) => {
43220      const path = id.split(".");
43221      let value = item;
43222      for (const segment of path) {
43223        if (value.hasOwnProperty(segment)) {
43224          value = value[segment];
43225        } else {
43226          value = void 0;
43227        }
43228      }
43229      return value;
43230    };
43231    var get_value_from_id_default = getValueFromId;
43232  
43233    // packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs
43234    var setValueFromId = (id) => ({ value }) => {
43235      const path = id.split(".");
43236      const result = {};
43237      let current = result;
43238      for (const segment of path.slice(0, -1)) {
43239        current[segment] = {};
43240        current = current[segment];
43241      }
43242      current[path.at(-1)] = value;
43243      return result;
43244    };
43245    var set_value_from_id_default = setValueFromId;
43246  
43247    // packages/dataviews/build-module/field-types/email.mjs
43248    var import_i18n56 = __toESM(require_i18n(), 1);
43249  
43250    // packages/dataviews/build-module/field-types/utils/render-from-elements.mjs
43251    function RenderFromElements({
43252      item,
43253      field
43254    }) {
43255      const { elements, isLoading } = useElements({
43256        elements: field.elements,
43257        getElements: field.getElements
43258      });
43259      const value = field.getValue({ item });
43260      if (isLoading) {
43261        return value;
43262      }
43263      if (elements.length === 0) {
43264        return value;
43265      }
43266      return elements?.find((element) => element.value === value)?.label || field.getValue({ item });
43267    }
43268  
43269    // packages/dataviews/build-module/field-types/utils/render-default.mjs
43270    var import_jsx_runtime195 = __toESM(require_jsx_runtime(), 1);
43271    function render({
43272      item,
43273      field
43274    }) {
43275      if (field.hasElements) {
43276        return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(RenderFromElements, { item, field });
43277      }
43278      return field.getValueFormatted({ item, field });
43279    }
43280  
43281    // packages/dataviews/build-module/field-types/utils/sort-text.mjs
43282    var sort_text_default = (a2, b2, direction) => {
43283      return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2);
43284    };
43285  
43286    // packages/dataviews/build-module/field-types/utils/is-valid-required.mjs
43287    function isValidRequired(item, field) {
43288      const value = field.getValue({ item });
43289      return ![void 0, "", null].includes(value);
43290    }
43291  
43292    // packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs
43293    function isValidMinLength(item, field) {
43294      if (typeof field.isValid.minLength?.constraint !== "number") {
43295        return false;
43296      }
43297      const value = field.getValue({ item });
43298      if ([void 0, "", null].includes(value)) {
43299        return true;
43300      }
43301      return String(value).length >= field.isValid.minLength.constraint;
43302    }
43303  
43304    // packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs
43305    function isValidMaxLength(item, field) {
43306      if (typeof field.isValid.maxLength?.constraint !== "number") {
43307        return false;
43308      }
43309      const value = field.getValue({ item });
43310      if ([void 0, "", null].includes(value)) {
43311        return true;
43312      }
43313      return String(value).length <= field.isValid.maxLength.constraint;
43314    }
43315  
43316    // packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs
43317    function isValidPattern(item, field) {
43318      if (field.isValid.pattern?.constraint === void 0) {
43319        return true;
43320      }
43321      try {
43322        const regexp = new RegExp(field.isValid.pattern.constraint);
43323        const value = field.getValue({ item });
43324        if ([void 0, "", null].includes(value)) {
43325          return true;
43326        }
43327        return regexp.test(String(value));
43328      } catch {
43329        return false;
43330      }
43331    }
43332  
43333    // packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs
43334    function isValidElements(item, field) {
43335      const elements = field.elements ?? [];
43336      const validValues = elements.map((el) => el.value);
43337      if (validValues.length === 0) {
43338        return true;
43339      }
43340      const value = field.getValue({ item });
43341      return [].concat(value).every((v2) => validValues.includes(v2));
43342    }
43343  
43344    // packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs
43345    function getValueFormatted({
43346      item,
43347      field
43348    }) {
43349      return field.getValue({ item });
43350    }
43351    var get_value_formatted_default_default = getValueFormatted;
43352  
43353    // packages/dataviews/build-module/field-types/email.mjs
43354    var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
43355    function isValidCustom(item, field) {
43356      const value = field.getValue({ item });
43357      if (![void 0, "", null].includes(value) && !emailRegex.test(value)) {
43358        return (0, import_i18n56.__)("Value must be a valid email address.");
43359      }
43360      return null;
43361    }
43362    var email_default = {
43363      type: "email",
43364      render,
43365      Edit: "email",
43366      sort: sort_text_default,
43367      enableSorting: true,
43368      enableGlobalSearch: false,
43369      defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
43370      validOperators: [
43371        OPERATOR_IS,
43372        OPERATOR_IS_NOT,
43373        OPERATOR_CONTAINS,
43374        OPERATOR_NOT_CONTAINS,
43375        OPERATOR_STARTS_WITH,
43376        // Multiple selection
43377        OPERATOR_IS_ANY,
43378        OPERATOR_IS_NONE,
43379        OPERATOR_IS_NOT_ALL
43380      ],
43381      format: {},
43382      getValueFormatted: get_value_formatted_default_default,
43383      validate: {
43384        required: isValidRequired,
43385        pattern: isValidPattern,
43386        minLength: isValidMinLength,
43387        maxLength: isValidMaxLength,
43388        elements: isValidElements,
43389        custom: isValidCustom
43390      }
43391    };
43392  
43393    // packages/dataviews/build-module/field-types/integer.mjs
43394    var import_i18n57 = __toESM(require_i18n(), 1);
43395  
43396    // packages/dataviews/build-module/field-types/utils/sort-number.mjs
43397    var sort_number_default = (a2, b2, direction) => {
43398      return direction === "asc" ? a2 - b2 : b2 - a2;
43399    };
43400  
43401    // packages/dataviews/build-module/field-types/utils/is-valid-min.mjs
43402    function isValidMin(item, field) {
43403      if (typeof field.isValid.min?.constraint !== "number") {
43404        return false;
43405      }
43406      const value = field.getValue({ item });
43407      if ([void 0, "", null].includes(value)) {
43408        return true;
43409      }
43410      return Number(value) >= field.isValid.min.constraint;
43411    }
43412  
43413    // packages/dataviews/build-module/field-types/utils/is-valid-max.mjs
43414    function isValidMax(item, field) {
43415      if (typeof field.isValid.max?.constraint !== "number") {
43416        return false;
43417      }
43418      const value = field.getValue({ item });
43419      if ([void 0, "", null].includes(value)) {
43420        return true;
43421      }
43422      return Number(value) <= field.isValid.max.constraint;
43423    }
43424  
43425    // packages/dataviews/build-module/field-types/integer.mjs
43426    var format2 = {
43427      separatorThousand: ","
43428    };
43429    function getValueFormatted2({
43430      item,
43431      field
43432    }) {
43433      let value = field.getValue({ item });
43434      if (value === null || value === void 0) {
43435        return "";
43436      }
43437      value = Number(value);
43438      if (!Number.isFinite(value)) {
43439        return String(value);
43440      }
43441      let formatInteger;
43442      if (field.type !== "integer") {
43443        formatInteger = format2;
43444      } else {
43445        formatInteger = field.format;
43446      }
43447      const { separatorThousand } = formatInteger;
43448      const integerValue = Math.trunc(value);
43449      if (!separatorThousand) {
43450        return String(integerValue);
43451      }
43452      return String(integerValue).replace(
43453        /\B(?=(\d{3})+(?!\d))/g,
43454        separatorThousand
43455      );
43456    }
43457    function isValidCustom2(item, field) {
43458      const value = field.getValue({ item });
43459      if (![void 0, "", null].includes(value) && !Number.isInteger(value)) {
43460        return (0, import_i18n57.__)("Value must be an integer.");
43461      }
43462      return null;
43463    }
43464    var integer_default = {
43465      type: "integer",
43466      render,
43467      Edit: "integer",
43468      sort: sort_number_default,
43469      enableSorting: true,
43470      enableGlobalSearch: false,
43471      defaultOperators: [
43472        OPERATOR_IS,
43473        OPERATOR_IS_NOT,
43474        OPERATOR_LESS_THAN,
43475        OPERATOR_GREATER_THAN,
43476        OPERATOR_LESS_THAN_OR_EQUAL,
43477        OPERATOR_GREATER_THAN_OR_EQUAL,
43478        OPERATOR_BETWEEN
43479      ],
43480      validOperators: [
43481        // Single-selection
43482        OPERATOR_IS,
43483        OPERATOR_IS_NOT,
43484        OPERATOR_LESS_THAN,
43485        OPERATOR_GREATER_THAN,
43486        OPERATOR_LESS_THAN_OR_EQUAL,
43487        OPERATOR_GREATER_THAN_OR_EQUAL,
43488        OPERATOR_BETWEEN,
43489        // Multiple-selection
43490        OPERATOR_IS_ANY,
43491        OPERATOR_IS_NONE,
43492        OPERATOR_IS_NOT_ALL
43493      ],
43494      format: format2,
43495      getValueFormatted: getValueFormatted2,
43496      validate: {
43497        required: isValidRequired,
43498        min: isValidMin,
43499        max: isValidMax,
43500        elements: isValidElements,
43501        custom: isValidCustom2
43502      }
43503    };
43504  
43505    // packages/dataviews/build-module/field-types/number.mjs
43506    var import_i18n58 = __toESM(require_i18n(), 1);
43507    var format3 = {
43508      separatorThousand: ",",
43509      separatorDecimal: ".",
43510      decimals: 2
43511    };
43512    function getValueFormatted3({
43513      item,
43514      field
43515    }) {
43516      let value = field.getValue({ item });
43517      if (value === null || value === void 0) {
43518        return "";
43519      }
43520      value = Number(value);
43521      if (!Number.isFinite(value)) {
43522        return String(value);
43523      }
43524      let formatNumber;
43525      if (field.type !== "number") {
43526        formatNumber = format3;
43527      } else {
43528        formatNumber = field.format;
43529      }
43530      const { separatorThousand, separatorDecimal, decimals } = formatNumber;
43531      const fixedValue = value.toFixed(decimals);
43532      const [integerPart, decimalPart] = fixedValue.split(".");
43533      const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart;
43534      return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart;
43535    }
43536    function isEmpty(value) {
43537      return value === "" || value === void 0 || value === null;
43538    }
43539    function isValidCustom3(item, field) {
43540      const value = field.getValue({ item });
43541      if (!isEmpty(value) && !Number.isFinite(value)) {
43542        return (0, import_i18n58.__)("Value must be a number.");
43543      }
43544      return null;
43545    }
43546    var number_default = {
43547      type: "number",
43548      render,
43549      Edit: "number",
43550      sort: sort_number_default,
43551      enableSorting: true,
43552      enableGlobalSearch: false,
43553      defaultOperators: [
43554        OPERATOR_IS,
43555        OPERATOR_IS_NOT,
43556        OPERATOR_LESS_THAN,
43557        OPERATOR_GREATER_THAN,
43558        OPERATOR_LESS_THAN_OR_EQUAL,
43559        OPERATOR_GREATER_THAN_OR_EQUAL,
43560        OPERATOR_BETWEEN
43561      ],
43562      validOperators: [
43563        // Single-selection
43564        OPERATOR_IS,
43565        OPERATOR_IS_NOT,
43566        OPERATOR_LESS_THAN,
43567        OPERATOR_GREATER_THAN,
43568        OPERATOR_LESS_THAN_OR_EQUAL,
43569        OPERATOR_GREATER_THAN_OR_EQUAL,
43570        OPERATOR_BETWEEN,
43571        // Multiple-selection
43572        OPERATOR_IS_ANY,
43573        OPERATOR_IS_NONE,
43574        OPERATOR_IS_NOT_ALL
43575      ],
43576      format: format3,
43577      getValueFormatted: getValueFormatted3,
43578      validate: {
43579        required: isValidRequired,
43580        min: isValidMin,
43581        max: isValidMax,
43582        elements: isValidElements,
43583        custom: isValidCustom3
43584      }
43585    };
43586  
43587    // packages/dataviews/build-module/field-types/text.mjs
43588    var text_default = {
43589      type: "text",
43590      render,
43591      Edit: "text",
43592      sort: sort_text_default,
43593      enableSorting: true,
43594      enableGlobalSearch: false,
43595      defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
43596      validOperators: [
43597        // Single selection
43598        OPERATOR_IS,
43599        OPERATOR_IS_NOT,
43600        OPERATOR_CONTAINS,
43601        OPERATOR_NOT_CONTAINS,
43602        OPERATOR_STARTS_WITH,
43603        // Multiple selection
43604        OPERATOR_IS_ANY,
43605        OPERATOR_IS_NONE,
43606        OPERATOR_IS_NOT_ALL
43607      ],
43608      format: {},
43609      getValueFormatted: get_value_formatted_default_default,
43610      validate: {
43611        required: isValidRequired,
43612        pattern: isValidPattern,
43613        minLength: isValidMinLength,
43614        maxLength: isValidMaxLength,
43615        elements: isValidElements
43616      }
43617    };
43618  
43619    // packages/dataviews/build-module/field-types/datetime.mjs
43620    var import_date9 = __toESM(require_date(), 1);
43621  
43622    // packages/dataviews/build-module/field-types/utils/is-valid-boundary.mjs
43623    var import_date8 = __toESM(require_date(), 1);
43624    function parseDateLike(value) {
43625      if (!isValid(new Date(value))) {
43626        return null;
43627      }
43628      const parsed = (0, import_date8.getDate)(value);
43629      return parsed && isValid(parsed) ? parsed.getTime() : null;
43630    }
43631    function validateBoundary(item, field, boundary, parse2) {
43632      const constraint = field.isValid[boundary]?.constraint;
43633      if (typeof constraint !== "string") {
43634        return false;
43635      }
43636      const value = field.getValue({ item });
43637      const boundaryValue = Array.isArray(value) ? value[boundary === "min" ? 0 : value.length - 1] : value;
43638      if (boundaryValue === void 0 || boundaryValue === null || boundaryValue === "") {
43639        return true;
43640      }
43641      const parsedConstraint = parse2(constraint);
43642      const parsedValue = parse2(String(boundaryValue));
43643      if (parsedConstraint === null || parsedValue === null) {
43644        return false;
43645      }
43646      return boundary === "min" ? parsedValue >= parsedConstraint : parsedValue <= parsedConstraint;
43647    }
43648    function isValidMinDate(item, field) {
43649      return validateBoundary(item, field, "min", parseDateLike);
43650    }
43651    function isValidMaxDate(item, field) {
43652      return validateBoundary(item, field, "max", parseDateLike);
43653    }
43654    function isValidMinTime(item, field) {
43655      return validateBoundary(item, field, "min", parseTime2);
43656    }
43657    function isValidMaxTime(item, field) {
43658      return validateBoundary(item, field, "max", parseTime2);
43659    }
43660  
43661    // packages/dataviews/build-module/field-types/datetime.mjs
43662    var format4 = {
43663      datetime: (0, import_date9.getSettings)().formats.datetime,
43664      weekStartsOn: (0, import_date9.getSettings)().l10n.startOfWeek
43665    };
43666    function getValueFormatted4({
43667      item,
43668      field
43669    }) {
43670      const value = field.getValue({ item });
43671      if (["", void 0, null].includes(value)) {
43672        return "";
43673      }
43674      let formatDatetime;
43675      if (field.type !== "datetime") {
43676        formatDatetime = format4;
43677      } else {
43678        formatDatetime = field.format;
43679      }
43680      return (0, import_date9.dateI18n)(formatDatetime.datetime, (0, import_date9.getDate)(value));
43681    }
43682    var sort = (a2, b2, direction) => {
43683      const timeA = new Date(a2).getTime();
43684      const timeB = new Date(b2).getTime();
43685      return direction === "asc" ? timeA - timeB : timeB - timeA;
43686    };
43687    var datetime_default = {
43688      type: "datetime",
43689      render,
43690      Edit: "datetime",
43691      sort,
43692      enableSorting: true,
43693      enableGlobalSearch: false,
43694      defaultOperators: [
43695        OPERATOR_ON,
43696        OPERATOR_NOT_ON,
43697        OPERATOR_BEFORE,
43698        OPERATOR_AFTER,
43699        OPERATOR_BEFORE_INC,
43700        OPERATOR_AFTER_INC,
43701        OPERATOR_IN_THE_PAST,
43702        OPERATOR_OVER
43703      ],
43704      validOperators: [
43705        OPERATOR_ON,
43706        OPERATOR_NOT_ON,
43707        OPERATOR_BEFORE,
43708        OPERATOR_AFTER,
43709        OPERATOR_BEFORE_INC,
43710        OPERATOR_AFTER_INC,
43711        OPERATOR_IN_THE_PAST,
43712        OPERATOR_OVER
43713      ],
43714      format: format4,
43715      getValueFormatted: getValueFormatted4,
43716      validate: {
43717        required: isValidRequired,
43718        elements: isValidElements,
43719        min: isValidMinDate,
43720        max: isValidMaxDate
43721      }
43722    };
43723  
43724    // packages/dataviews/build-module/field-types/date.mjs
43725    var import_date10 = __toESM(require_date(), 1);
43726    var format5 = {
43727      date: (0, import_date10.getSettings)().formats.date,
43728      weekStartsOn: (0, import_date10.getSettings)().l10n.startOfWeek
43729    };
43730    function getValueFormatted5({
43731      item,
43732      field
43733    }) {
43734      const value = field.getValue({ item });
43735      if (["", void 0, null].includes(value)) {
43736        return "";
43737      }
43738      let formatDate2;
43739      if (field.type !== "date") {
43740        formatDate2 = format5;
43741      } else {
43742        formatDate2 = field.format;
43743      }
43744      return (0, import_date10.dateI18n)(formatDate2.date, (0, import_date10.getDate)(value));
43745    }
43746    var sort2 = (a2, b2, direction) => {
43747      const timeA = new Date(a2).getTime();
43748      const timeB = new Date(b2).getTime();
43749      return direction === "asc" ? timeA - timeB : timeB - timeA;
43750    };
43751    var date_default = {
43752      type: "date",
43753      render,
43754      Edit: "date",
43755      sort: sort2,
43756      enableSorting: true,
43757      enableGlobalSearch: false,
43758      defaultOperators: [
43759        OPERATOR_ON,
43760        OPERATOR_NOT_ON,
43761        OPERATOR_BEFORE,
43762        OPERATOR_AFTER,
43763        OPERATOR_BEFORE_INC,
43764        OPERATOR_AFTER_INC,
43765        OPERATOR_IN_THE_PAST,
43766        OPERATOR_OVER,
43767        OPERATOR_BETWEEN
43768      ],
43769      validOperators: [
43770        OPERATOR_ON,
43771        OPERATOR_NOT_ON,
43772        OPERATOR_BEFORE,
43773        OPERATOR_AFTER,
43774        OPERATOR_BEFORE_INC,
43775        OPERATOR_AFTER_INC,
43776        OPERATOR_IN_THE_PAST,
43777        OPERATOR_OVER,
43778        OPERATOR_BETWEEN
43779      ],
43780      format: format5,
43781      getValueFormatted: getValueFormatted5,
43782      validate: {
43783        required: isValidRequired,
43784        elements: isValidElements,
43785        min: isValidMinDate,
43786        max: isValidMaxDate
43787      }
43788    };
43789  
43790    // packages/dataviews/build-module/field-types/time.mjs
43791    var import_date11 = __toESM(require_date(), 1);
43792    var format6 = {
43793      time: (0, import_date11.getSettings)().formats.time
43794    };
43795    var ANCHOR_DATE = "2000-01-01";
43796    function toAnchoredDate(secondsSinceMidnight) {
43797      const hours = Math.floor(secondsSinceMidnight / 3600);
43798      const minutes = Math.floor(secondsSinceMidnight % 3600 / 60);
43799      const seconds = secondsSinceMidnight % 60;
43800      const time = [hours, minutes, seconds].map((part) => String(part).padStart(2, "0")).join(":");
43801      return (0, import_date11.getDate)(`$ANCHOR_DATE}T$time}`);
43802    }
43803    function getValueFormatted6({
43804      item,
43805      field
43806    }) {
43807      const secondsSinceMidnight = parseTime2(field.getValue({ item }));
43808      if (secondsSinceMidnight === null) {
43809        return "";
43810      }
43811      let formatTime;
43812      if (field.type !== "time") {
43813        formatTime = format6;
43814      } else {
43815        formatTime = field.format;
43816      }
43817      return (0, import_date11.dateI18n)(formatTime.time, toAnchoredDate(secondsSinceMidnight));
43818    }
43819    var sort3 = (a2, b2, direction) => {
43820      const timeA = parseTime2(a2);
43821      const timeB = parseTime2(b2);
43822      if (timeA === null || timeB === null) {
43823        if (timeA === timeB) {
43824          return 0;
43825        }
43826        return timeA === null ? 1 : -1;
43827      }
43828      return direction === "asc" ? timeA - timeB : timeB - timeA;
43829    };
43830    var time_default = {
43831      type: "time",
43832      render,
43833      Edit: "time",
43834      sort: sort3,
43835      enableSorting: true,
43836      enableGlobalSearch: false,
43837      defaultOperators: [
43838        OPERATOR_ON,
43839        OPERATOR_NOT_ON,
43840        OPERATOR_BEFORE,
43841        OPERATOR_AFTER,
43842        OPERATOR_BEFORE_INC,
43843        OPERATOR_AFTER_INC,
43844        OPERATOR_BETWEEN
43845      ],
43846      validOperators: [
43847        OPERATOR_ON,
43848        OPERATOR_NOT_ON,
43849        OPERATOR_BEFORE,
43850        OPERATOR_AFTER,
43851        OPERATOR_BEFORE_INC,
43852        OPERATOR_AFTER_INC,
43853        OPERATOR_BETWEEN
43854      ],
43855      format: format6,
43856      getValueFormatted: getValueFormatted6,
43857      validate: {
43858        required: isValidRequired,
43859        elements: isValidElements,
43860        min: isValidMinTime,
43861        max: isValidMaxTime
43862      }
43863    };
43864  
43865    // packages/dataviews/build-module/field-types/boolean.mjs
43866    var import_i18n59 = __toESM(require_i18n(), 1);
43867  
43868    // packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs
43869    function isValidRequiredForBool(item, field) {
43870      const value = field.getValue({ item });
43871      return value === true;
43872    }
43873  
43874    // packages/dataviews/build-module/field-types/boolean.mjs
43875    function getValueFormatted7({
43876      item,
43877      field
43878    }) {
43879      const value = field.getValue({ item });
43880      if (value === true) {
43881        return (0, import_i18n59.__)("True");
43882      }
43883      if (value === false) {
43884        return (0, import_i18n59.__)("False");
43885      }
43886      return "";
43887    }
43888    function isValidCustom4(item, field) {
43889      const value = field.getValue({ item });
43890      if (![void 0, "", null].includes(value) && ![true, false].includes(value)) {
43891        return (0, import_i18n59.__)("Value must be true, false, or undefined");
43892      }
43893      return null;
43894    }
43895    var sort4 = (a2, b2, direction) => {
43896      const boolA = Boolean(a2);
43897      const boolB = Boolean(b2);
43898      if (boolA === boolB) {
43899        return 0;
43900      }
43901      if (direction === "asc") {
43902        return boolA ? 1 : -1;
43903      }
43904      return boolA ? -1 : 1;
43905    };
43906    var boolean_default = {
43907      type: "boolean",
43908      render,
43909      Edit: "checkbox",
43910      sort: sort4,
43911      validate: {
43912        required: isValidRequiredForBool,
43913        elements: isValidElements,
43914        custom: isValidCustom4
43915      },
43916      enableSorting: true,
43917      enableGlobalSearch: false,
43918      defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
43919      validOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
43920      format: {},
43921      getValueFormatted: getValueFormatted7
43922    };
43923  
43924    // packages/dataviews/build-module/field-types/media.mjs
43925    var media_default = {
43926      type: "media",
43927      render: () => null,
43928      Edit: null,
43929      sort: () => 0,
43930      enableSorting: false,
43931      enableGlobalSearch: false,
43932      defaultOperators: [],
43933      validOperators: [],
43934      format: {},
43935      getValueFormatted: get_value_formatted_default_default,
43936      // cannot validate any constraint, so
43937      // the only available validation for the field author
43938      // would be providing a custom validator.
43939      validate: {}
43940    };
43941  
43942    // packages/dataviews/build-module/field-types/array.mjs
43943    var import_i18n60 = __toESM(require_i18n(), 1);
43944  
43945    // packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs
43946    function isValidRequiredForArray(item, field) {
43947      const value = field.getValue({ item });
43948      return Array.isArray(value) && value.length > 0 && value.every(
43949        (element) => ![void 0, "", null].includes(element)
43950      );
43951    }
43952  
43953    // packages/dataviews/build-module/field-types/array.mjs
43954    function getValueFormatted8({
43955      item,
43956      field
43957    }) {
43958      const value = field.getValue({ item });
43959      const arr = Array.isArray(value) ? value : [];
43960      return arr.join(", ");
43961    }
43962    function render2({ item, field }) {
43963      return getValueFormatted8({ item, field });
43964    }
43965    function isValidCustom5(item, field) {
43966      const value = field.getValue({ item });
43967      if ([void 0, "", null].includes(value)) {
43968        return null;
43969      }
43970      if (!Array.isArray(value)) {
43971        return (0, import_i18n60.__)("Value must be an array.");
43972      }
43973      if (!value.every((v2) => typeof v2 === "string")) {
43974        return (0, import_i18n60.__)("Every value must be a string.");
43975      }
43976      return null;
43977    }
43978    var sort5 = (a2, b2, direction) => {
43979      const arrA = Array.isArray(a2) ? a2 : [];
43980      const arrB = Array.isArray(b2) ? b2 : [];
43981      if (arrA.length !== arrB.length) {
43982        return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length;
43983      }
43984      const joinedA = arrA.join(",");
43985      const joinedB = arrB.join(",");
43986      return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA);
43987    };
43988    var array_default = {
43989      type: "array",
43990      render: render2,
43991      Edit: "array",
43992      sort: sort5,
43993      enableSorting: true,
43994      enableGlobalSearch: false,
43995      defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
43996      validOperators: [
43997        OPERATOR_IS_ANY,
43998        OPERATOR_IS_NONE,
43999        OPERATOR_IS_ALL,
44000        OPERATOR_IS_NOT_ALL
44001      ],
44002      format: {},
44003      getValueFormatted: getValueFormatted8,
44004      validate: {
44005        required: isValidRequiredForArray,
44006        elements: isValidElements,
44007        custom: isValidCustom5
44008      }
44009    };
44010  
44011    // packages/dataviews/build-module/field-types/password.mjs
44012    function getValueFormatted9({
44013      item,
44014      field
44015    }) {
44016      return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : "";
44017    }
44018    var password_default = {
44019      type: "password",
44020      render,
44021      Edit: "password",
44022      sort: () => 0,
44023      // Passwords should not be sortable for security reasons
44024      enableSorting: false,
44025      enableGlobalSearch: false,
44026      defaultOperators: [],
44027      validOperators: [],
44028      format: {},
44029      getValueFormatted: getValueFormatted9,
44030      validate: {
44031        required: isValidRequired,
44032        pattern: isValidPattern,
44033        minLength: isValidMinLength,
44034        maxLength: isValidMaxLength,
44035        elements: isValidElements
44036      }
44037    };
44038  
44039    // packages/dataviews/build-module/field-types/telephone.mjs
44040    var telephone_default = {
44041      type: "telephone",
44042      render,
44043      Edit: "telephone",
44044      sort: sort_text_default,
44045      enableSorting: true,
44046      enableGlobalSearch: false,
44047      defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
44048      validOperators: [
44049        OPERATOR_IS,
44050        OPERATOR_IS_NOT,
44051        OPERATOR_CONTAINS,
44052        OPERATOR_NOT_CONTAINS,
44053        OPERATOR_STARTS_WITH,
44054        // Multiple selection
44055        OPERATOR_IS_ANY,
44056        OPERATOR_IS_NONE,
44057        OPERATOR_IS_NOT_ALL
44058      ],
44059      format: {},
44060      getValueFormatted: get_value_formatted_default_default,
44061      validate: {
44062        required: isValidRequired,
44063        pattern: isValidPattern,
44064        minLength: isValidMinLength,
44065        maxLength: isValidMaxLength,
44066        elements: isValidElements
44067      }
44068    };
44069  
44070    // packages/dataviews/build-module/field-types/color.mjs
44071    var import_i18n61 = __toESM(require_i18n(), 1);
44072    var import_jsx_runtime196 = __toESM(require_jsx_runtime(), 1);
44073    function render3({ item, field }) {
44074      if (field.hasElements) {
44075        return /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(RenderFromElements, { item, field });
44076      }
44077      const value = get_value_formatted_default_default({ item, field });
44078      if (!value || !w(value).isValid()) {
44079        return value;
44080      }
44081      return /* @__PURE__ */ (0, import_jsx_runtime196.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
44082        /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(
44083          "div",
44084          {
44085            style: {
44086              width: "16px",
44087              height: "16px",
44088              borderRadius: "50%",
44089              backgroundColor: value,
44090              border: "1px solid #ddd",
44091              flexShrink: 0
44092            }
44093          }
44094        ),
44095        /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("span", { children: value })
44096      ] });
44097    }
44098    function isValidCustom6(item, field) {
44099      const value = field.getValue({ item });
44100      if (![void 0, "", null].includes(value) && !w(value).isValid()) {
44101        return (0, import_i18n61.__)("Value must be a valid color.");
44102      }
44103      return null;
44104    }
44105    var sort6 = (a2, b2, direction) => {
44106      const colorA = w(a2);
44107      const colorB = w(b2);
44108      if (!colorA.isValid() && !colorB.isValid()) {
44109        return 0;
44110      }
44111      if (!colorA.isValid()) {
44112        return direction === "asc" ? 1 : -1;
44113      }
44114      if (!colorB.isValid()) {
44115        return direction === "asc" ? -1 : 1;
44116      }
44117      const hslA = colorA.toHsl();
44118      const hslB = colorB.toHsl();
44119      if (hslA.h !== hslB.h) {
44120        return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h;
44121      }
44122      if (hslA.s !== hslB.s) {
44123        return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s;
44124      }
44125      return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l;
44126    };
44127    var color_default = {
44128      type: "color",
44129      render: render3,
44130      Edit: "color",
44131      sort: sort6,
44132      enableSorting: true,
44133      enableGlobalSearch: false,
44134      defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
44135      validOperators: [
44136        OPERATOR_IS,
44137        OPERATOR_IS_NOT,
44138        OPERATOR_IS_ANY,
44139        OPERATOR_IS_NONE
44140      ],
44141      format: {},
44142      getValueFormatted: get_value_formatted_default_default,
44143      validate: {
44144        required: isValidRequired,
44145        elements: isValidElements,
44146        custom: isValidCustom6
44147      }
44148    };
44149  
44150    // packages/dataviews/build-module/field-types/url.mjs
44151    var url_default = {
44152      type: "url",
44153      render,
44154      Edit: "url",
44155      sort: sort_text_default,
44156      enableSorting: true,
44157      enableGlobalSearch: false,
44158      defaultOperators: [OPERATOR_IS_ANY, OPERATOR_IS_NONE],
44159      validOperators: [
44160        OPERATOR_IS,
44161        OPERATOR_IS_NOT,
44162        OPERATOR_CONTAINS,
44163        OPERATOR_NOT_CONTAINS,
44164        OPERATOR_STARTS_WITH,
44165        // Multiple selection
44166        OPERATOR_IS_ANY,
44167        OPERATOR_IS_NONE,
44168        OPERATOR_IS_NOT_ALL
44169      ],
44170      format: {},
44171      getValueFormatted: get_value_formatted_default_default,
44172      validate: {
44173        required: isValidRequired,
44174        pattern: isValidPattern,
44175        minLength: isValidMinLength,
44176        maxLength: isValidMaxLength,
44177        elements: isValidElements
44178      }
44179    };
44180  
44181    // packages/dataviews/build-module/field-types/no-type.mjs
44182    var sort7 = (a2, b2, direction) => {
44183      if (typeof a2 === "number" && typeof b2 === "number") {
44184        return sort_number_default(a2, b2, direction);
44185      }
44186      return sort_text_default(a2, b2, direction);
44187    };
44188    var no_type_default = {
44189      // type: no type for this one
44190      render,
44191      Edit: null,
44192      sort: sort7,
44193      enableSorting: true,
44194      enableGlobalSearch: false,
44195      defaultOperators: [OPERATOR_IS, OPERATOR_IS_NOT],
44196      validOperators: getAllOperatorNames(),
44197      format: {},
44198      getValueFormatted: get_value_formatted_default_default,
44199      validate: {
44200        required: isValidRequired,
44201        elements: isValidElements
44202      }
44203    };
44204  
44205    // packages/dataviews/build-module/field-types/utils/get-is-valid.mjs
44206    function supportsNumericRangeConstraint(type) {
44207      return type === "integer" || type === "number";
44208    }
44209    function supportsStringRangeConstraint(type) {
44210      return type === "date" || type === "datetime" || type === "time";
44211    }
44212    function normalizeRangeRule(value, fieldType, key) {
44213      const validator = fieldType.validate[key];
44214      if (validator && (typeof value === "number" && supportsNumericRangeConstraint(fieldType.type) || typeof value === "string" && supportsStringRangeConstraint(fieldType.type))) {
44215        return { constraint: value, validate: validator };
44216      }
44217      return void 0;
44218    }
44219    function getIsValid(field, fieldType) {
44220      const rules = field.isValid;
44221      let required;
44222      if (rules?.required === true && fieldType.validate.required !== void 0) {
44223        required = {
44224          constraint: true,
44225          validate: fieldType.validate.required
44226        };
44227      }
44228      let elements;
44229      if ((rules?.elements === true || // elements is enabled unless the field opts-out
44230      rules?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) {
44231        elements = {
44232          constraint: true,
44233          validate: fieldType.validate.elements
44234        };
44235      }
44236      const min3 = normalizeRangeRule(rules?.min, fieldType, "min");
44237      const max3 = normalizeRangeRule(rules?.max, fieldType, "max");
44238      const minLengthValue = rules?.minLength;
44239      let minLength;
44240      if (typeof minLengthValue === "number" && fieldType.validate.minLength !== void 0) {
44241        minLength = {
44242          constraint: minLengthValue,
44243          validate: fieldType.validate.minLength
44244        };
44245      }
44246      const maxLengthValue = rules?.maxLength;
44247      let maxLength;
44248      if (typeof maxLengthValue === "number" && fieldType.validate.maxLength !== void 0) {
44249        maxLength = {
44250          constraint: maxLengthValue,
44251          validate: fieldType.validate.maxLength
44252        };
44253      }
44254      const patternValue = rules?.pattern;
44255      let pattern;
44256      if (patternValue !== void 0 && fieldType.validate.pattern !== void 0) {
44257        pattern = {
44258          constraint: patternValue,
44259          validate: fieldType.validate.pattern
44260        };
44261      }
44262      const custom = rules?.custom ?? fieldType.validate.custom;
44263      return {
44264        required,
44265        elements,
44266        min: min3,
44267        max: max3,
44268        minLength,
44269        maxLength,
44270        pattern,
44271        custom
44272      };
44273    }
44274  
44275    // packages/dataviews/build-module/field-types/utils/get-filter.mjs
44276    function getFilter(fieldType) {
44277      return fieldType.validOperators.reduce((accumulator, operator) => {
44278        const operatorObj = getOperatorByName(operator);
44279        if (operatorObj?.filter) {
44280          accumulator[operator] = operatorObj.filter;
44281        }
44282        return accumulator;
44283      }, {});
44284    }
44285  
44286    // packages/dataviews/build-module/field-types/utils/get-format.mjs
44287    function getFormat(field, fieldType) {
44288      return {
44289        ...fieldType.format,
44290        ...field.format
44291      };
44292    }
44293    var get_format_default = getFormat;
44294  
44295    // packages/dataviews/build-module/field-types/index.mjs
44296    function getFieldTypeByName(type) {
44297      const found = [
44298        email_default,
44299        integer_default,
44300        number_default,
44301        text_default,
44302        datetime_default,
44303        date_default,
44304        time_default,
44305        boolean_default,
44306        media_default,
44307        array_default,
44308        password_default,
44309        telephone_default,
44310        color_default,
44311        url_default
44312      ].find((fieldType) => fieldType?.type === type);
44313      if (!!found) {
44314        return found;
44315      }
44316      return no_type_default;
44317    }
44318    function normalizeFields(fields) {
44319      return fields.map((field) => {
44320        const fieldType = getFieldTypeByName(field.type);
44321        const getValue = field.getValue || get_value_from_id_default(field.id);
44322        const sort8 = function(a2, b2, direction) {
44323          const aValue = getValue({ item: a2 });
44324          const bValue = getValue({ item: b2 });
44325          return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction);
44326        };
44327        return {
44328          id: field.id,
44329          label: field.label || field.id,
44330          header: field.header || field.label || field.id,
44331          description: field.description,
44332          placeholder: field.placeholder,
44333          getValue,
44334          setValue: field.setValue || set_value_from_id_default(field.id),
44335          elements: field.elements,
44336          getElements: field.getElements,
44337          hasElements: hasElements(field),
44338          isVisible: field.isVisible,
44339          isDisabled: typeof field.isDisabled === "function" ? field.isDisabled : () => !!field.isDisabled,
44340          enableHiding: field.enableHiding ?? true,
44341          readOnly: field.readOnly ?? false,
44342          // The type provides defaults for the following props
44343          type: fieldType.type,
44344          render: field.render ?? fieldType.render,
44345          Edit: getControl(field, fieldType.Edit),
44346          sort: sort8,
44347          enableSorting: field.enableSorting ?? fieldType.enableSorting,
44348          enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch,
44349          isValid: getIsValid(field, fieldType),
44350          filterBy: get_filter_by_default(
44351            field,
44352            fieldType.defaultOperators,
44353            fieldType.validOperators
44354          ),
44355          filter: getFilter(fieldType),
44356          format: get_format_default(field, fieldType),
44357          getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted
44358        };
44359      });
44360    }
44361  
44362    // packages/dataviews/build-module/hooks/use-data.mjs
44363    var import_element136 = __toESM(require_element(), 1);
44364    function useData({
44365      view,
44366      data: shownData,
44367      getItemId,
44368      isLoading,
44369      paginationInfo,
44370      selection
44371    }) {
44372      const isInfiniteScrollEnabled = view.infiniteScrollEnabled;
44373      const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element136.useState)(
44374        !isLoading
44375      );
44376      (0, import_element136.useEffect)(() => {
44377        if (!isLoading) {
44378          setHasInitiallyLoaded(true);
44379        }
44380      }, [isLoading]);
44381      const previousDataRef = (0, import_element136.useRef)(shownData);
44382      const previousPaginationInfoRef = (0, import_element136.useRef)(paginationInfo);
44383      (0, import_element136.useEffect)(() => {
44384        if (!isLoading) {
44385          previousDataRef.current = shownData;
44386          previousPaginationInfoRef.current = paginationInfo;
44387        }
44388      }, [shownData, isLoading, paginationInfo]);
44389      const [visibleEntries, setVisibleEntries] = (0, import_element136.useState)([]);
44390      const positionMapRef = (0, import_element136.useRef)(/* @__PURE__ */ new Map());
44391      const allLoadedRecordsRef = (0, import_element136.useRef)([]);
44392      const prevViewParamsRef = (0, import_element136.useRef)({
44393        search: void 0,
44394        filters: void 0,
44395        perPage: void 0
44396      });
44397      const scrollDirectionRef = (0, import_element136.useRef)(void 0);
44398      const prevStartPositionRef = (0, import_element136.useRef)(void 0);
44399      const hasInitializedRef = (0, import_element136.useRef)(false);
44400      const allLoadedRecords = (0, import_element136.useMemo)(() => {
44401        if (view.startPosition !== void 0 && prevStartPositionRef.current !== void 0) {
44402          if (view.startPosition < prevStartPositionRef.current) {
44403            scrollDirectionRef.current = "up";
44404          } else if (view.startPosition > prevStartPositionRef.current) {
44405            scrollDirectionRef.current = "down";
44406          }
44407        }
44408        prevStartPositionRef.current = view.startPosition;
44409        const currentFiltersKey = JSON.stringify(view.filters ?? []);
44410        const prevFiltersKey = prevViewParamsRef.current.filters;
44411        const shouldReset = !hasInitializedRef.current || !view.infiniteScrollEnabled || view.search !== prevViewParamsRef.current.search || currentFiltersKey !== prevFiltersKey || view.perPage !== prevViewParamsRef.current.perPage;
44412        hasInitializedRef.current = true;
44413        prevViewParamsRef.current = {
44414          search: view.search,
44415          filters: currentFiltersKey,
44416          perPage: view.perPage
44417        };
44418        if (shouldReset) {
44419          positionMapRef.current.clear();
44420          scrollDirectionRef.current = void 0;
44421          const startPosition = view.search ? 1 : view.startPosition ?? 1;
44422          const records = shownData.map((record, index2) => {
44423            const position = startPosition + index2;
44424            positionMapRef.current.set(getItemId(record), position);
44425            return {
44426              ...record,
44427              position
44428            };
44429          });
44430          allLoadedRecordsRef.current = records;
44431          return records;
44432        }
44433        const prev = allLoadedRecordsRef.current;
44434        const shownDataIds = new Set(shownData.map(getItemId));
44435        const scrollDirection = scrollDirectionRef.current;
44436        const basePosition = view.search ? 1 : view.startPosition ?? 1;
44437        const newRecords = shownData.map((record, index2) => {
44438          const itemId = getItemId(record);
44439          const position = view.infiniteScrollEnabled ? basePosition + index2 : void 0;
44440          if (position !== void 0) {
44441            positionMapRef.current.set(itemId, position);
44442          }
44443          return {
44444            ...record,
44445            position
44446          };
44447        });
44448        if (newRecords.length === 0) {
44449          return prev;
44450        }
44451        const prevWithoutDuplicates = prev.filter(
44452          (record) => !shownDataIds.has(getItemId(record))
44453        );
44454        const allRecords = scrollDirection === "up" ? [...newRecords, ...prevWithoutDuplicates] : [...prevWithoutDuplicates, ...newRecords];
44455        allRecords.sort((a2, b2) => {
44456          const posA = a2.position;
44457          const posB = b2.position;
44458          return posA - posB;
44459        });
44460        let result = allRecords;
44461        if (visibleEntries.length > 0) {
44462          const visibleMin = Math.min(...visibleEntries);
44463          const visibleMax = Math.max(...visibleEntries);
44464          const buffer = 20;
44465          const recordPositions = allRecords.map(
44466            (r3) => r3.position
44467          );
44468          const minRecordPos = Math.min(...recordPositions);
44469          const maxRecordPos = Math.max(...recordPositions);
44470          const hasOverlap = !(maxRecordPos < visibleMin - buffer || minRecordPos > visibleMax + buffer);
44471          if (hasOverlap) {
44472            result = allRecords.filter((record) => {
44473              const itemId = getItemId(record);
44474              const isSelected2 = selection?.includes(itemId);
44475              if (isSelected2) {
44476                return true;
44477              }
44478              const itemPosition = record.position;
44479              if (scrollDirection === "up") {
44480                return itemPosition <= visibleMax + buffer;
44481              } else if (scrollDirection === "down") {
44482                return itemPosition >= visibleMin - buffer;
44483              }
44484              return itemPosition >= visibleMin - buffer && itemPosition <= visibleMax + buffer;
44485            });
44486          }
44487        }
44488        allLoadedRecordsRef.current = result;
44489        return result;
44490      }, [
44491        shownData,
44492        view.search,
44493        view.filters,
44494        view.perPage,
44495        view.startPosition,
44496        view.infiniteScrollEnabled,
44497        visibleEntries,
44498        selection,
44499        getItemId
44500      ]);
44501      if (!isInfiniteScrollEnabled) {
44502        const dataToReturn = isLoading && previousDataRef.current?.length ? previousDataRef.current : shownData;
44503        return {
44504          data: dataToReturn.map((item) => ({
44505            ...item,
44506            position: void 0
44507          })),
44508          paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo,
44509          hasInitiallyLoaded,
44510          setVisibleEntries: void 0
44511        };
44512      }
44513      return {
44514        data: allLoadedRecords,
44515        paginationInfo,
44516        hasInitiallyLoaded,
44517        setVisibleEntries
44518      };
44519    }
44520  
44521    // packages/dataviews/build-module/hooks/use-infinite-scroll.mjs
44522    var import_element137 = __toESM(require_element(), 1);
44523    var import_compose22 = __toESM(require_compose(), 1);
44524    function captureAnchorElement(container, anchorElementRef, direction) {
44525      const containerRect = container.getBoundingClientRect();
44526      const centerY = containerRect.top + containerRect.height / 2;
44527      const items = Array.from(container.querySelectorAll("[aria-posinset]"));
44528      if (items.length === 0) {
44529        return false;
44530      }
44531      const bestAnchor = items.reduce((best, item) => {
44532        const itemRect = item.getBoundingClientRect();
44533        const itemCenterY = itemRect.top + itemRect.height / 2;
44534        const distance = Math.abs(itemCenterY - centerY);
44535        const bestRect = best.getBoundingClientRect();
44536        const bestCenterY = bestRect.top + bestRect.height / 2;
44537        const bestDistance = Math.abs(bestCenterY - centerY);
44538        return distance < bestDistance ? item : best;
44539      });
44540      const posinset = Number(bestAnchor.getAttribute("aria-posinset"));
44541      const anchorRect = bestAnchor.getBoundingClientRect();
44542      anchorElementRef.current = {
44543        posinset,
44544        viewportOffset: anchorRect.top - containerRect.top,
44545        scrollTop: container.scrollTop,
44546        direction
44547      };
44548      return true;
44549    }
44550    function useInfiniteScroll({
44551      view,
44552      onChangeView,
44553      isLoading,
44554      paginationInfo,
44555      containerRef,
44556      setVisibleEntries
44557    }) {
44558      const anchorElementRef = (0, import_element137.useRef)(null);
44559      const viewRef = (0, import_element137.useRef)(view);
44560      const isLoadingRef = (0, import_element137.useRef)(isLoading);
44561      const onChangeViewRef = (0, import_element137.useRef)(onChangeView);
44562      const totalItemsRef = (0, import_element137.useRef)(paginationInfo.totalItems);
44563      (0, import_element137.useLayoutEffect)(() => {
44564        viewRef.current = view;
44565        isLoadingRef.current = isLoading;
44566        onChangeViewRef.current = onChangeView;
44567        totalItemsRef.current = paginationInfo.totalItems;
44568      }, [view, isLoading, onChangeView, paginationInfo.totalItems]);
44569      const intersectionObserverCallback = (0, import_element137.useCallback)(
44570        (entries) => {
44571          if (!setVisibleEntries) {
44572            return;
44573          }
44574          setVisibleEntries((prev) => {
44575            const newVisibleEntries = new Set(prev);
44576            let hasChanged = false;
44577            entries.forEach((entry) => {
44578              const posInSet = Number(
44579                entry.target?.attributes?.getNamedItem(
44580                  "aria-posinset"
44581                )?.value
44582              );
44583              if (isNaN(posInSet)) {
44584                return;
44585              }
44586              if (entry.isIntersecting) {
44587                if (!newVisibleEntries.has(posInSet)) {
44588                  newVisibleEntries.add(posInSet);
44589                  hasChanged = true;
44590                }
44591              } else if (newVisibleEntries.has(posInSet)) {
44592                newVisibleEntries.delete(posInSet);
44593                hasChanged = true;
44594              }
44595            });
44596            return hasChanged ? Array.from(newVisibleEntries).sort() : prev;
44597          });
44598        },
44599        [setVisibleEntries]
44600      );
44601      (0, import_element137.useLayoutEffect)(() => {
44602        const container = containerRef.current;
44603        const anchor = anchorElementRef.current;
44604        if (!container || !view.infiniteScrollEnabled || !anchor || isLoading) {
44605          return;
44606        }
44607        const anchorElement = container.querySelector(
44608          `[aria-posinset="$anchor.posinset}"]`
44609        );
44610        if (anchorElement) {
44611          const containerRect = container.getBoundingClientRect();
44612          const anchorRect = anchorElement.getBoundingClientRect();
44613          const currentOffset = anchorRect.top - containerRect.top;
44614          const scrollAdjustment = currentOffset - anchor.viewportOffset + (container.scrollTop - anchor.scrollTop);
44615          if (Math.abs(scrollAdjustment) > 1) {
44616            container.scrollTop += scrollAdjustment;
44617          }
44618        }
44619        anchorElementRef.current = null;
44620      }, [containerRef, isLoading, view.infiniteScrollEnabled]);
44621      const intersectionObserverRef = (0, import_element137.useRef)(
44622        null
44623      );
44624      (0, import_element137.useEffect)(() => {
44625        if (!view.infiniteScrollEnabled || !intersectionObserverCallback) {
44626          if (intersectionObserverRef.current) {
44627            intersectionObserverRef.current.disconnect();
44628            intersectionObserverRef.current = null;
44629          }
44630          return;
44631        }
44632        intersectionObserverRef.current = new IntersectionObserver(
44633          intersectionObserverCallback,
44634          { root: null, rootMargin: "0px", threshold: 0.1 }
44635        );
44636        return () => {
44637          if (intersectionObserverRef.current) {
44638            intersectionObserverRef.current.disconnect();
44639            intersectionObserverRef.current = null;
44640          }
44641        };
44642      }, [view.infiniteScrollEnabled, intersectionObserverCallback]);
44643      (0, import_element137.useEffect)(() => {
44644        if (!view.infiniteScrollEnabled || !containerRef.current) {
44645          return;
44646        }
44647        let lastScrollTop = 0;
44648        const BOTTOM_THRESHOLD = 600;
44649        const TOP_THRESHOLD = 800;
44650        const handleScroll = (0, import_compose22.throttle)((event) => {
44651          const currentView = viewRef.current;
44652          const totalItems = totalItemsRef.current;
44653          const target = event.target;
44654          const scrollTop = target.scrollTop;
44655          const scrollHeight = target.scrollHeight;
44656          const clientHeight = target.clientHeight;
44657          const scrollDirection = scrollTop > lastScrollTop ? "down" : "up";
44658          lastScrollTop = scrollTop;
44659          if (isLoadingRef.current) {
44660            return;
44661          }
44662          const currentStartPosition = currentView.startPosition || 1;
44663          const batchSize = currentView.perPage || 10;
44664          const currentEndPosition = Math.min(
44665            currentStartPosition + batchSize,
44666            totalItems
44667          );
44668          if (scrollDirection === "down" && scrollTop + clientHeight >= scrollHeight - BOTTOM_THRESHOLD) {
44669            if (currentEndPosition < totalItems) {
44670              const newStartPosition = currentEndPosition;
44671              captureAnchorElement(target, anchorElementRef, "down");
44672              onChangeViewRef.current({
44673                ...currentView,
44674                startPosition: newStartPosition
44675              });
44676            }
44677          }
44678          if (scrollDirection === "up" && scrollTop <= TOP_THRESHOLD) {
44679            if (currentStartPosition > 1) {
44680              const calculatedStartPosition = currentStartPosition - batchSize;
44681              const newStartPosition = calculatedStartPosition < 6 ? 1 : calculatedStartPosition;
44682              captureAnchorElement(target, anchorElementRef, "up");
44683              onChangeViewRef.current({
44684                ...currentView,
44685                startPosition: newStartPosition
44686              });
44687            }
44688          }
44689        }, 50);
44690        const container = containerRef.current;
44691        container.addEventListener("scroll", handleScroll);
44692        return () => {
44693          container.removeEventListener("scroll", handleScroll);
44694          handleScroll.cancel();
44695        };
44696      }, [containerRef, view.infiniteScrollEnabled]);
44697      return {
44698        intersectionObserver: intersectionObserverRef.current
44699      };
44700    }
44701  
44702    // packages/dataviews/build-module/hooks/use-page-clamp.mjs
44703    var import_element138 = __toESM(require_element(), 1);
44704    var import_compose23 = __toESM(require_compose(), 1);
44705    function usePageClamp({
44706      view,
44707      onChangeView,
44708      isLoading,
44709      totalPages
44710    }) {
44711      const lastPage = typeof totalPages === "number" && Number.isFinite(totalPages) ? Math.max(totalPages, 1) : null;
44712      const page = view.page;
44713      const goToLastPage = (0, import_compose23.useEvent)(() => {
44714        if (lastPage !== null) {
44715          onChangeView({ ...view, page: lastPage });
44716        }
44717      });
44718      (0, import_element138.useEffect)(() => {
44719        if (isLoading || lastPage === null || !page || page <= lastPage) {
44720          return;
44721        }
44722        goToLastPage();
44723      }, [isLoading, lastPage, page, goToLastPage]);
44724    }
44725  
44726    // packages/dataviews/build-module/dataviews-picker/index.mjs
44727    var import_element139 = __toESM(require_element(), 1);
44728    var import_compose24 = __toESM(require_compose(), 1);
44729    var import_jsx_runtime197 = __toESM(require_jsx_runtime(), 1);
44730    var isItemClickable = () => false;
44731    var dataViewsPickerLayouts = VIEW_LAYOUTS.filter(
44732      (viewLayout) => viewLayout.isPicker
44733    );
44734    var defaultGetItemId = (item) => item.id;
44735    var EMPTY_ARRAY5 = [];
44736    var DEFAULT_PICKER_LAYOUTS = {
44737      pickerGrid: true,
44738      pickerTable: true
44739    };
44740    function DefaultUI({
44741      search = true,
44742      searchLabel = void 0
44743    }) {
44744      const { view } = (0, import_element139.useContext)(dataviews_context_default);
44745      const isInfiniteScroll = view.infiniteScrollEnabled;
44746      return /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)(import_jsx_runtime197.Fragment, { children: [
44747        /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)(
44748          Stack,
44749          {
44750            direction: "row",
44751            align: "top",
44752            justify: "space-between",
44753            className: clsx_default("dataviews__view-actions", {
44754              "dataviews__view-actions--infinite-scroll": isInfiniteScroll
44755            }),
44756            gap: "xs",
44757            children: [
44758              /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)(
44759                Stack,
44760                {
44761                  direction: "row",
44762                  gap: "sm",
44763                  justify: "start",
44764                  className: "dataviews__search",
44765                  children: [
44766                    search && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(dataviews_search_default, { label: searchLabel }),
44767                    /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(toggle_default, {})
44768                  ]
44769                }
44770              ),
44771              /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(dataviews_view_config_default, {}) })
44772            ]
44773          }
44774        ),
44775        /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }),
44776        /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(DataViewsLayout, {}),
44777        /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(DataViewsPickerFooter, {})
44778      ] });
44779    }
44780    function DataViewsPicker({
44781      view,
44782      onChangeView,
44783      fields,
44784      search = true,
44785      searchLabel = void 0,
44786      actions = EMPTY_ARRAY5,
44787      data,
44788      getItemId = defaultGetItemId,
44789      isLoading = false,
44790      paginationInfo,
44791      defaultLayouts: defaultLayoutsProperty = DEFAULT_PICKER_LAYOUTS,
44792      selection,
44793      onChangeSelection,
44794      children,
44795      config = { perPageSizes: [10, 20, 50, 100] },
44796      itemListLabel,
44797      empty,
44798      onReset
44799    }) {
44800      const { data: displayData, setVisibleEntries } = useData({
44801        view,
44802        data,
44803        getItemId,
44804        selection,
44805        paginationInfo
44806      });
44807      const containerRef = (0, import_element139.useRef)(null);
44808      const [containerWidth, setContainerWidth] = (0, import_element139.useState)(0);
44809      const resizeObserverRef = (0, import_compose24.useResizeObserver)(
44810        (resizeObserverEntries) => {
44811          setContainerWidth(
44812            resizeObserverEntries[0].borderBoxSize[0].inlineSize
44813          );
44814        },
44815        { box: "border-box" }
44816      );
44817      const [openedFilter, setOpenedFilter] = (0, import_element139.useState)(null);
44818      function setSelectionWithChange(value) {
44819        const newValue = typeof value === "function" ? value(selection) : value;
44820        if (onChangeSelection) {
44821          onChangeSelection(newValue);
44822        }
44823      }
44824      const _fields = (0, import_element139.useMemo)(() => normalizeFields(fields), [fields]);
44825      const filters = use_filters_default(_fields, view);
44826      const hasPrimaryOrLockedFilters = (0, import_element139.useMemo)(
44827        () => (filters || []).some(
44828          (filter) => filter.isPrimary || filter.isLocked
44829        ),
44830        [filters]
44831      );
44832      const [isShowingFilter, setIsShowingFilter] = (0, import_element139.useState)(
44833        hasPrimaryOrLockedFilters
44834      );
44835      const { intersectionObserver } = useInfiniteScroll({
44836        view,
44837        onChangeView,
44838        isLoading,
44839        paginationInfo,
44840        containerRef,
44841        setVisibleEntries
44842      });
44843      usePageClamp({
44844        view,
44845        onChangeView,
44846        isLoading,
44847        totalPages: paginationInfo.totalPages
44848      });
44849      (0, import_element139.useEffect)(() => {
44850        if (hasPrimaryOrLockedFilters && !isShowingFilter) {
44851          setIsShowingFilter(true);
44852        }
44853      }, [hasPrimaryOrLockedFilters, isShowingFilter]);
44854      const defaultLayouts2 = (0, import_element139.useMemo)(
44855        () => Object.fromEntries(
44856          Object.entries(defaultLayoutsProperty).filter(([layoutType]) => {
44857            return dataViewsPickerLayouts.some(
44858              (viewLayout) => viewLayout.type === layoutType
44859            );
44860          }).map(([key, value]) => [
44861            key,
44862            value === true ? {} : value
44863          ])
44864        ),
44865        [defaultLayoutsProperty]
44866      );
44867      if (!defaultLayouts2[view.type]) {
44868        return null;
44869      }
44870      return /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(
44871        dataviews_context_default.Provider,
44872        {
44873          value: {
44874            view,
44875            onChangeView,
44876            fields: _fields,
44877            actions,
44878            data: displayData,
44879            isLoading,
44880            paginationInfo,
44881            isItemClickable,
44882            selection,
44883            onChangeSelection: setSelectionWithChange,
44884            openedFilter,
44885            setOpenedFilter,
44886            getItemId,
44887            containerWidth,
44888            containerRef,
44889            resizeObserverRef,
44890            defaultLayouts: defaultLayouts2,
44891            filters,
44892            isShowingFilter,
44893            setIsShowingFilter,
44894            config,
44895            itemListLabel,
44896            empty,
44897            onReset,
44898            hasInitiallyLoaded: true,
44899            intersectionObserver
44900          },
44901          children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "dataviews-picker-wrapper", children: children ?? /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(DefaultUI, { search, searchLabel }) })
44902        }
44903      );
44904    }
44905    var DataViewsPickerSubComponents = DataViewsPicker;
44906    DataViewsPickerSubComponents.BulkActionToolbar = DataViewsPickerBulkActionToolbar;
44907    DataViewsPickerSubComponents.Footer = DataViewsPickerFooter;
44908    DataViewsPickerSubComponents.Filters = filters_default;
44909    DataViewsPickerSubComponents.FiltersToggled = filters_toggled_default;
44910    DataViewsPickerSubComponents.FiltersToggle = toggle_default;
44911    DataViewsPickerSubComponents.Layout = DataViewsLayout;
44912    DataViewsPickerSubComponents.LayoutSwitcher = ViewTypeMenu;
44913    DataViewsPickerSubComponents.Pagination = DataViewsPagination;
44914    DataViewsPickerSubComponents.Search = dataviews_search_default;
44915    DataViewsPickerSubComponents.ViewConfig = DataviewsViewConfigDropdown;
44916    var dataviews_picker_default = DataViewsPickerSubComponents;
44917  
44918    // node_modules/dequal/dist/index.mjs
44919    var has = Object.prototype.hasOwnProperty;
44920    function find(iter, tar, key) {
44921      for (key of iter.keys()) {
44922        if (dequal(key, tar)) return key;
44923      }
44924    }
44925    function dequal(foo, bar) {
44926      var ctor, len, tmp;
44927      if (foo === bar) return true;
44928      if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
44929        if (ctor === Date) return foo.getTime() === bar.getTime();
44930        if (ctor === RegExp) return foo.toString() === bar.toString();
44931        if (ctor === Array) {
44932          if ((len = foo.length) === bar.length) {
44933            while (len-- && dequal(foo[len], bar[len])) ;
44934          }
44935          return len === -1;
44936        }
44937        if (ctor === Set) {
44938          if (foo.size !== bar.size) {
44939            return false;
44940          }
44941          for (len of foo) {
44942            tmp = len;
44943            if (tmp && typeof tmp === "object") {
44944              tmp = find(bar, tmp);
44945              if (!tmp) return false;
44946            }
44947            if (!bar.has(tmp)) return false;
44948          }
44949          return true;
44950        }
44951        if (ctor === Map) {
44952          if (foo.size !== bar.size) {
44953            return false;
44954          }
44955          for (len of foo) {
44956            tmp = len[0];
44957            if (tmp && typeof tmp === "object") {
44958              tmp = find(bar, tmp);
44959              if (!tmp) return false;
44960            }
44961            if (!dequal(len[1], bar.get(tmp))) {
44962              return false;
44963            }
44964          }
44965          return true;
44966        }
44967        if (ctor === ArrayBuffer) {
44968          foo = new Uint8Array(foo);
44969          bar = new Uint8Array(bar);
44970        } else if (ctor === DataView) {
44971          if ((len = foo.byteLength) === bar.byteLength) {
44972            while (len-- && foo.getInt8(len) === bar.getInt8(len)) ;
44973          }
44974          return len === -1;
44975        }
44976        if (ArrayBuffer.isView(foo)) {
44977          if ((len = foo.byteLength) === bar.byteLength) {
44978            while (len-- && foo[len] === bar[len]) ;
44979          }
44980          return len === -1;
44981        }
44982        if (!ctor || typeof foo === "object") {
44983          len = 0;
44984          for (ctor in foo) {
44985            if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
44986            if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
44987          }
44988          return Object.keys(bar).length === len;
44989        }
44990      }
44991      return foo !== foo && bar !== bar;
44992    }
44993  
44994    // packages/views/build-module/use-view.mjs
44995    var import_element140 = __toESM(require_element(), 1);
44996    var import_data7 = __toESM(require_data(), 1);
44997    var import_preferences = __toESM(require_preferences(), 1);
44998  
44999    // packages/views/build-module/preference-keys.mjs
45000    function generatePreferenceKey(kind, name, slug) {
45001      return `dataviews-$kind}-$name}-$slug}`;
45002    }
45003  
45004    // packages/views/build-module/resolve-view.mjs
45005    var QUERY_PARAMS = ["page", "search"];
45006    function isPlainObject2(value) {
45007      return typeof value === "object" && value !== null && !Array.isArray(value);
45008    }
45009    function withoutQueryParams(layer) {
45010      const result = isPlainObject2(layer) ? { ...layer } : {};
45011      for (const key of QUERY_PARAMS) {
45012        delete result[key];
45013      }
45014      return result;
45015    }
45016    function mergeLayer(lower, upper) {
45017      const result = { ...lower };
45018      for (const key of Object.keys(upper)) {
45019        const value = upper[key];
45020        const current = result[key];
45021        result[key] = isPlainObject2(current) && isPlainObject2(value) ? mergeLayer(current, value) : value;
45022      }
45023      return result;
45024    }
45025    function diffLayer(value, base, persisted = {}) {
45026      const result = {};
45027      for (const key of Object.keys(value)) {
45028        const next = value[key];
45029        const current = base[key];
45030        const prev = persisted[key];
45031        if (next === void 0) {
45032          continue;
45033        }
45034        if (isPlainObject2(next) && isPlainObject2(current)) {
45035          const nested = diffLayer(
45036            next,
45037            current,
45038            isPlainObject2(prev) ? prev : {}
45039          );
45040          if (Object.keys(nested).length > 0) {
45041            result[key] = nested;
45042          }
45043        } else if (!dequal(next, current)) {
45044          result[key] = next;
45045        } else if (prev !== void 0 && dequal(next, prev)) {
45046          result[key] = prev;
45047        }
45048      }
45049      return result;
45050    }
45051    function getLockedFilters(overrides) {
45052      return (overrides?.filters ?? []).filter((filter) => filter.isLocked);
45053    }
45054    function applyLockedFilters(view, overrides) {
45055      const locked = getLockedFilters(overrides);
45056      if (locked.length === 0) {
45057        return view;
45058      }
45059      const rest = (view.filters ?? []).filter(
45060        (filter) => !locked.some((f2) => f2.field === filter.field)
45061      );
45062      return { ...view, filters: [...locked, ...rest] };
45063    }
45064    function resolveBaseView(layers, effectiveType) {
45065      const { defaultView: defaultView2, defaultLayouts: defaultLayouts2, activeViewOverrides } = layers;
45066      const layoutDefaults = defaultLayouts2?.[effectiveType];
45067      return applyLockedFilters(
45068        [layoutDefaults, activeViewOverrides].reduce(
45069          (lower, upper) => mergeLayer(lower, withoutQueryParams(upper)),
45070          withoutQueryParams(defaultView2)
45071        ),
45072        activeViewOverrides
45073      );
45074    }
45075    function resolveView(args) {
45076      const { defaultView: defaultView2, activeViewOverrides, persistedView, page, search } = args;
45077      const effectiveType = persistedView?.type ?? activeViewOverrides?.type ?? defaultView2?.type;
45078      const baseView = resolveBaseView(args, effectiveType);
45079      const view = {
45080        ...applyLockedFilters(
45081          mergeLayer(baseView, withoutQueryParams(persistedView)),
45082          activeViewOverrides
45083        ),
45084        page: Number(page ?? 1),
45085        search: search ?? ""
45086      };
45087      return view;
45088    }
45089    function getUserModifications(newView, layers) {
45090      const { activeViewOverrides, persistedView } = layers;
45091      const baseView = resolveBaseView(layers, newView.type);
45092      const modifications = diffLayer(
45093        withoutQueryParams(newView),
45094        withoutQueryParams(baseView),
45095        withoutQueryParams(persistedView)
45096      );
45097      const locked = getLockedFilters(activeViewOverrides);
45098      if (locked.length > 0 && Array.isArray(modifications.filters)) {
45099        modifications.filters = modifications.filters.filter(
45100          (filter) => !locked.some((f2) => f2.field === filter.field)
45101        );
45102      }
45103      return Object.keys(modifications).length > 0 ? modifications : void 0;
45104    }
45105  
45106    // packages/views/build-module/use-view.mjs
45107    function useView(config) {
45108      const {
45109        kind,
45110        name,
45111        slug,
45112        defaultView: defaultView2,
45113        defaultLayouts: defaultLayouts2,
45114        activeViewOverrides,
45115        queryParams,
45116        onChangeQueryParams
45117      } = config;
45118      const preferenceKey = generatePreferenceKey(kind, name, slug);
45119      const persistedView = (0, import_data7.useSelect)(
45120        (select3) => {
45121          return select3(import_preferences.store).get(
45122            "core/views",
45123            preferenceKey
45124          );
45125        },
45126        [preferenceKey]
45127      );
45128      const { set: set3 } = (0, import_data7.useDispatch)(import_preferences.store);
45129      const page = Number(queryParams?.page ?? 1);
45130      const search = queryParams?.search ?? "";
45131      const view = (0, import_element140.useMemo)(
45132        () => resolveView({
45133          defaultView: defaultView2,
45134          defaultLayouts: defaultLayouts2,
45135          activeViewOverrides,
45136          persistedView,
45137          page,
45138          search
45139        }),
45140        [
45141          defaultView2,
45142          defaultLayouts2,
45143          activeViewOverrides,
45144          persistedView,
45145          page,
45146          search
45147        ]
45148      );
45149      const isModified = !!persistedView && Object.keys(persistedView).length > 0;
45150      const updateView = (0, import_element140.useCallback)(
45151        (newView) => {
45152          const newQueryParams = {
45153            page: Number(newView?.page ?? 1),
45154            search: newView?.search ?? ""
45155          };
45156          if (onChangeQueryParams && !dequal(newQueryParams, { page, search })) {
45157            onChangeQueryParams(newQueryParams);
45158          }
45159          const modifications = getUserModifications(newView, {
45160            defaultView: defaultView2,
45161            defaultLayouts: defaultLayouts2,
45162            activeViewOverrides,
45163            persistedView
45164          });
45165          if (!dequal(modifications, persistedView)) {
45166            set3("core/views", preferenceKey, modifications);
45167          }
45168        },
45169        [
45170          onChangeQueryParams,
45171          page,
45172          search,
45173          defaultView2,
45174          defaultLayouts2,
45175          activeViewOverrides,
45176          persistedView,
45177          set3,
45178          preferenceKey
45179        ]
45180      );
45181      const resetToDefault = (0, import_element140.useCallback)(() => {
45182        set3("core/views", preferenceKey, void 0);
45183      }, [preferenceKey, set3]);
45184      return {
45185        view,
45186        isModified,
45187        updateView,
45188        resetToDefault
45189      };
45190    }
45191  
45192    // packages/views/build-module/load-view.mjs
45193    var import_data8 = __toESM(require_data(), 1);
45194    var import_preferences2 = __toESM(require_preferences(), 1);
45195  
45196    // packages/views/build-module/use-view-config.mjs
45197    var import_data9 = __toESM(require_data(), 1);
45198    var import_core_data2 = __toESM(require_core_data(), 1);
45199  
45200    // packages/views/build-module/lock-unlock.mjs
45201    var import_private_apis2 = __toESM(require_private_apis(), 1);
45202    var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
45203      "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
45204      "@wordpress/views"
45205    );
45206  
45207    // packages/media-fields/build-module/alt_text/index.mjs
45208    var import_i18n62 = __toESM(require_i18n(), 1);
45209    var import_jsx_runtime198 = __toESM(require_jsx_runtime(), 1);
45210    var altTextField = {
45211      id: "alt_text",
45212      type: "text",
45213      label: (0, import_i18n62.__)("Alt text"),
45214      description: /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)(import_jsx_runtime198.Fragment, { children: [
45215        /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(
45216          Link,
45217          {
45218            href: (
45219              // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.
45220              (0, import_i18n62.__)(
45221                "https://www.w3.org/WAI/tutorials/images/decision-tree/"
45222              )
45223            ),
45224            openInNewTab: true,
45225            children: (0, import_i18n62.__)("Describe the purpose of the image.")
45226          }
45227        ),
45228        /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("br", {}),
45229        (0, import_i18n62.__)("Leave empty if decorative.")
45230      ] }),
45231      isVisible: (item) => item?.media_type === "image",
45232      render: ({ item }) => item?.alt_text || "-",
45233      Edit: {
45234        control: "textarea",
45235        rows: 2
45236      },
45237      enableSorting: false,
45238      filterBy: false
45239    };
45240    var alt_text_default = altTextField;
45241  
45242    // packages/media-fields/build-module/attached_to/index.mjs
45243    var import_i18n65 = __toESM(require_i18n(), 1);
45244  
45245    // packages/media-fields/build-module/attached_to/view.mjs
45246    var import_element141 = __toESM(require_element(), 1);
45247    var import_i18n63 = __toESM(require_i18n(), 1);
45248  
45249    // packages/media-fields/build-module/utils/get-rendered-content.mjs
45250    function getRenderedContent(content) {
45251      if (!content) {
45252        return "";
45253      }
45254      if (typeof content === "string") {
45255        return content;
45256      }
45257      if (typeof content === "object") {
45258        return content.rendered || content.raw || "";
45259      }
45260      return "";
45261    }
45262  
45263    // packages/media-fields/build-module/attached_to/view.mjs
45264    var import_jsx_runtime199 = __toESM(require_jsx_runtime(), 1);
45265    function MediaAttachedToView({
45266      item
45267    }) {
45268      const [attachedPostTitle, setAttachedPostTitle] = (0, import_element141.useState)(null);
45269      const parentId = item.post;
45270      const embeddedPostId = item._embedded?.["wp:attached-to"]?.[0]?.id;
45271      const embeddedPostTitle = item._embedded?.["wp:attached-to"]?.[0]?.title;
45272      (0, import_element141.useEffect)(() => {
45273        if (!!parentId && parentId === embeddedPostId) {
45274          setAttachedPostTitle(
45275            getRenderedContent(embeddedPostTitle) || (0, import_i18n63.__)("(no title)")
45276          );
45277        }
45278        if (!parentId) {
45279          setAttachedPostTitle((0, import_i18n63.__)("(Unattached)"));
45280        }
45281      }, [parentId, embeddedPostId, embeddedPostTitle]);
45282      return /* @__PURE__ */ (0, import_jsx_runtime199.jsx)(import_jsx_runtime199.Fragment, { children: attachedPostTitle });
45283    }
45284  
45285    // packages/media-fields/build-module/attached_to/edit.mjs
45286    var import_core_data3 = __toESM(require_core_data(), 1);
45287    var import_components50 = __toESM(require_components(), 1);
45288    var import_i18n64 = __toESM(require_i18n(), 1);
45289    var import_element142 = __toESM(require_element(), 1);
45290    var import_compose25 = __toESM(require_compose(), 1);
45291    var import_data10 = __toESM(require_data(), 1);
45292    var import_jsx_runtime200 = __toESM(require_jsx_runtime(), 1);
45293    function MediaAttachedToEdit({
45294      data,
45295      onChange
45296    }) {
45297      const defaultPost = !!data.post && !!data?._embedded?.["wp:attached-to"]?.[0] ? [
45298        {
45299          label: getRenderedContent(
45300            data._embedded?.["wp:attached-to"]?.[0]?.title
45301          ),
45302          value: data.post.toString()
45303        }
45304      ] : [];
45305      const [options, setOptions] = (0, import_element142.useState)(defaultPost);
45306      const [searchResults, setSearchResults] = (0, import_element142.useState)(
45307        []
45308      );
45309      const [isLoading, setIsLoading] = (0, import_element142.useState)(false);
45310      const [value, setValue] = (0, import_element142.useState)(
45311        data?.post?.toString() ?? null
45312      );
45313      const postTypes = (0, import_data10.useSelect)(
45314        (select3) => select3(import_core_data3.store).getPostTypes(),
45315        []
45316      );
45317      const handleDetach = () => {
45318        onChange({
45319          post: 0,
45320          _embedded: { ...data?._embedded, "wp:attached-to": void 0 }
45321        });
45322        setValue(null);
45323      };
45324      const onValueChange = async (filterValue) => {
45325        setIsLoading(true);
45326        const results = await (0, import_core_data3.__experimentalFetchLinkSuggestions)(
45327          filterValue,
45328          /*
45329           * @TODO `fetchLinkSuggestions()` should accept `perPage` as an option argument.
45330           * `isInitialSuggestions` limits the result to 3, otherwise it's hardcoded to 20.
45331           */
45332          { type: "post", isInitialSuggestions: true },
45333          {}
45334        );
45335        setSearchResults(results);
45336        const suggestions = results.map((result) => {
45337          return {
45338            label: result.title,
45339            value: result.id.toString()
45340          };
45341        });
45342        const includeCurrent = !filterValue && suggestions.findIndex((s2) => s2.value === value) === -1;
45343        setOptions(suggestions.concat(includeCurrent ? defaultPost : []));
45344        setIsLoading(false);
45345      };
45346      const debouncedValueChange = (0, import_compose25.useDebounce)((0, import_compose25.useEvent)(onValueChange), 300);
45347      const handleSelectOption = (selectedPostId) => {
45348        if (!selectedPostId) {
45349          handleDetach();
45350          return;
45351        }
45352        setValue(selectedPostId);
45353        if (selectedPostId) {
45354          const selectedPost = searchResults.find(
45355            (result) => result.id === Number(selectedPostId)
45356          );
45357          if (selectedPost && postTypes) {
45358            const postType = postTypes.find(
45359              (_postType) => _postType.slug === selectedPost?.type
45360            );
45361            const attachedTo = {
45362              ...postType && { type: postType.slug },
45363              id: Number(selectedPostId),
45364              title: {
45365                raw: selectedPost.title,
45366                rendered: selectedPost.title
45367              }
45368            };
45369            onChange({
45370              post: Number(selectedPostId),
45371              _embedded: {
45372                ...data?._embedded,
45373                "wp:attached-to": [attachedTo]
45374              }
45375            });
45376          }
45377        }
45378      };
45379      return /* @__PURE__ */ (0, import_jsx_runtime200.jsx)(
45380        import_components50.ComboboxControl,
45381        {
45382          className: "dataviews-media-field__attached-to",
45383          isLoading,
45384          label: (0, import_i18n64.__)("Attached to"),
45385          help: (0, import_i18n64.__)("Attach this file to a single post or page."),
45386          value,
45387          options,
45388          onFilterValueChange: (filterValue) => debouncedValueChange(filterValue),
45389          onChange: handleSelectOption,
45390          hideLabelFromVision: true,
45391          expandOnFocus: false
45392        }
45393      );
45394    }
45395  
45396    // packages/media-fields/build-module/attached_to/index.mjs
45397    var attachedToField = {
45398      id: "attached_to",
45399      type: "text",
45400      label: (0, import_i18n65.__)("Attached to"),
45401      Edit: MediaAttachedToEdit,
45402      render: MediaAttachedToView,
45403      enableSorting: false,
45404      filterBy: false
45405    };
45406    var attached_to_default = attachedToField;
45407  
45408    // packages/media-fields/build-module/author/index.mjs
45409    var import_i18n67 = __toESM(require_i18n(), 1);
45410    var import_data11 = __toESM(require_data(), 1);
45411    var import_core_data4 = __toESM(require_core_data(), 1);
45412  
45413    // packages/media-fields/build-module/author/view.mjs
45414    var import_i18n66 = __toESM(require_i18n(), 1);
45415    var import_element143 = __toESM(require_element(), 1);
45416    var import_components51 = __toESM(require_components(), 1);
45417    var import_jsx_runtime201 = __toESM(require_jsx_runtime(), 1);
45418    function AuthorView({
45419      item
45420    }) {
45421      const author = item?._embedded?.author?.[0];
45422      const text = author?.name;
45423      const imageUrl = author?.avatar_urls?.[48];
45424      const [loadingState, setLoadingState] = (0, import_element143.useState)("loading");
45425      (0, import_element143.useEffect)(() => {
45426        setLoadingState("loading");
45427      }, [imageUrl]);
45428      const imgRef = (0, import_element143.useCallback)((img) => {
45429        if (img?.complete) {
45430          setLoadingState("instant");
45431        }
45432      }, []);
45433      const handleLoad = () => {
45434        if (loadingState === "loading") {
45435          setLoadingState("loaded");
45436        }
45437      };
45438      return /* @__PURE__ */ (0, import_jsx_runtime201.jsxs)(import_components51.__experimentalHStack, { alignment: "left", spacing: 0, children: [
45439        !!imageUrl && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(
45440          "div",
45441          {
45442            className: clsx_default("media-author-field__avatar", {
45443              "is-loading": loadingState === "loading",
45444              "is-loaded": loadingState === "loaded"
45445            }),
45446            children: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(
45447              "img",
45448              {
45449                ref: imgRef,
45450                onLoad: handleLoad,
45451                alt: (0, import_i18n66.__)("Author avatar"),
45452                src: imageUrl
45453              }
45454            )
45455          }
45456        ),
45457        !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("div", { className: "media-author-field__icon", children: /* @__PURE__ */ (0, import_jsx_runtime201.jsx)(import_components51.Icon, { icon: comment_author_avatar_default }) }),
45458        /* @__PURE__ */ (0, import_jsx_runtime201.jsx)("span", { className: "media-author-field__name", children: text })
45459      ] });
45460    }
45461  
45462    // packages/media-fields/build-module/author/index.mjs
45463    var authorField = {
45464      label: (0, import_i18n67.__)("Author"),
45465      id: "author",
45466      type: "integer",
45467      getElements: async () => {
45468        const authors = await (0, import_data11.resolveSelect)(import_core_data4.store).getEntityRecords(
45469          "root",
45470          "user",
45471          {
45472            per_page: -1,
45473            who: "authors",
45474            _fields: "id,name",
45475            context: "view"
45476          }
45477        ) ?? [];
45478        return authors.map(({ id, name }) => ({
45479          value: id,
45480          label: name
45481        }));
45482      },
45483      render: AuthorView,
45484      filterBy: {
45485        operators: ["isAny", "isNone"]
45486      },
45487      readOnly: true
45488    };
45489    var author_default = authorField;
45490  
45491    // packages/media-fields/build-module/caption/index.mjs
45492    var import_i18n68 = __toESM(require_i18n(), 1);
45493  
45494    // packages/media-fields/build-module/utils/get-raw-content.mjs
45495    function getRawContent(content) {
45496      if (!content) {
45497        return "";
45498      }
45499      if (typeof content === "string") {
45500        return content;
45501      }
45502      if (typeof content === "object" && "raw" in content) {
45503        return content.raw || "";
45504      }
45505      return "";
45506    }
45507  
45508    // packages/media-fields/build-module/caption/index.mjs
45509    var captionField = {
45510      id: "caption",
45511      type: "text",
45512      label: (0, import_i18n68.__)("Caption"),
45513      getValue: ({ item }) => getRawContent(item?.caption),
45514      render: ({ item }) => getRawContent(item?.caption) || "-",
45515      Edit: {
45516        control: "textarea",
45517        rows: 2
45518      },
45519      enableSorting: false,
45520      filterBy: false
45521    };
45522    var caption_default = captionField;
45523  
45524    // packages/media-fields/build-module/date_added/index.mjs
45525    var import_i18n69 = __toESM(require_i18n(), 1);
45526    var dateAddedField = {
45527      id: "date",
45528      type: "datetime",
45529      label: (0, import_i18n69.__)("Date added"),
45530      filterBy: {
45531        operators: ["before", "after"]
45532      },
45533      readOnly: true
45534    };
45535    var date_added_default = dateAddedField;
45536  
45537    // packages/media-fields/build-module/date_modified/index.mjs
45538    var import_i18n70 = __toESM(require_i18n(), 1);
45539    var dateModifiedField = {
45540      id: "modified",
45541      type: "datetime",
45542      label: (0, import_i18n70.__)("Date modified"),
45543      filterBy: {
45544        operators: ["before", "after"]
45545      },
45546      readOnly: true
45547    };
45548    var date_modified_default = dateModifiedField;
45549  
45550    // packages/media-fields/build-module/description/index.mjs
45551    var import_i18n71 = __toESM(require_i18n(), 1);
45552    var import_jsx_runtime202 = __toESM(require_jsx_runtime(), 1);
45553    var descriptionField = {
45554      id: "description",
45555      type: "text",
45556      label: (0, import_i18n71.__)("Description"),
45557      getValue: ({ item }) => getRawContent(item?.description),
45558      render: ({ item }) => /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("div", { children: getRawContent(item?.description) || "-" }),
45559      Edit: {
45560        control: "textarea",
45561        rows: 5
45562      },
45563      enableSorting: false,
45564      filterBy: false
45565    };
45566    var description_default = descriptionField;
45567  
45568    // packages/media-fields/build-module/filename/index.mjs
45569    var import_i18n72 = __toESM(require_i18n(), 1);
45570    var import_url4 = __toESM(require_url(), 1);
45571  
45572    // packages/media-fields/build-module/filename/view.mjs
45573    var import_element144 = __toESM(require_element(), 1);
45574    var import_url3 = __toESM(require_url(), 1);
45575    var import_jsx_runtime203 = __toESM(require_jsx_runtime(), 1);
45576    var TRUNCATE_LENGTH = 15;
45577    function FileNameView({
45578      item
45579    }) {
45580      const fileName = (0, import_element144.useMemo)(
45581        () => item?.source_url ? (0, import_url3.getFilename)(item.source_url) : null,
45582        [item?.source_url]
45583      );
45584      if (!fileName) {
45585        return "";
45586      }
45587      if (fileName.length <= TRUNCATE_LENGTH) {
45588        return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("span", { className: "dataviews-media-field__filename", children: fileName });
45589      }
45590      return /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)(tooltip_exports.Root, { children: [
45591        /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(
45592          tooltip_exports.Trigger,
45593          {
45594            render: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("span", { className: "dataviews-media-field__filename", children: fileName })
45595          }
45596        ),
45597        /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(tooltip_exports.Popup, { children: fileName })
45598      ] });
45599    }
45600  
45601    // packages/media-fields/build-module/filename/index.mjs
45602    var filenameField = {
45603      id: "filename",
45604      type: "text",
45605      label: (0, import_i18n72.__)("File name"),
45606      getValue: ({ item }) => (0, import_url4.getFilename)(item?.source_url || ""),
45607      render: FileNameView,
45608      enableSorting: false,
45609      filterBy: false,
45610      readOnly: true
45611    };
45612    var filename_default = filenameField;
45613  
45614    // packages/media-fields/build-module/filesize/index.mjs
45615    var import_i18n73 = __toESM(require_i18n(), 1);
45616    var KB_IN_BYTES = 1024;
45617    var MB_IN_BYTES = 1024 * KB_IN_BYTES;
45618    var GB_IN_BYTES = 1024 * MB_IN_BYTES;
45619    var TB_IN_BYTES = 1024 * GB_IN_BYTES;
45620    var PB_IN_BYTES = 1024 * TB_IN_BYTES;
45621    var EB_IN_BYTES = 1024 * PB_IN_BYTES;
45622    var ZB_IN_BYTES = 1024 * EB_IN_BYTES;
45623    var YB_IN_BYTES = 1024 * ZB_IN_BYTES;
45624    function getBytesString(bytes, unitSymbol, decimals = 2) {
45625      return (0, import_i18n73.sprintf)(
45626        // translators: 1: Actual bytes of a file. 2: The unit symbol (e.g. MB).
45627        (0, import_i18n73._x)("%1$s %2$s", "file size"),
45628        bytes.toLocaleString(void 0, {
45629          minimumFractionDigits: 0,
45630          maximumFractionDigits: decimals
45631        }),
45632        unitSymbol
45633      );
45634    }
45635    function formatFileSize(bytes, decimals = 2) {
45636      if (bytes === 0) {
45637        return getBytesString(0, (0, import_i18n73._x)("B", "unit symbol"), decimals);
45638      }
45639      const quant = {
45640        /* translators: Unit symbol for yottabyte. */
45641        [(0, import_i18n73._x)("YB", "unit symbol")]: YB_IN_BYTES,
45642        /* translators: Unit symbol for zettabyte. */
45643        [(0, import_i18n73._x)("ZB", "unit symbol")]: ZB_IN_BYTES,
45644        /* translators: Unit symbol for exabyte. */
45645        [(0, import_i18n73._x)("EB", "unit symbol")]: EB_IN_BYTES,
45646        /* translators: Unit symbol for petabyte. */
45647        [(0, import_i18n73._x)("PB", "unit symbol")]: PB_IN_BYTES,
45648        /* translators: Unit symbol for terabyte. */
45649        [(0, import_i18n73._x)("TB", "unit symbol")]: TB_IN_BYTES,
45650        /* translators: Unit symbol for gigabyte. */
45651        [(0, import_i18n73._x)("GB", "unit symbol")]: GB_IN_BYTES,
45652        /* translators: Unit symbol for megabyte. */
45653        [(0, import_i18n73._x)("MB", "unit symbol")]: MB_IN_BYTES,
45654        /* translators: Unit symbol for kilobyte. */
45655        [(0, import_i18n73._x)("KB", "unit symbol")]: KB_IN_BYTES,
45656        /* translators: Unit symbol for byte. */
45657        [(0, import_i18n73._x)("B", "unit symbol")]: 1
45658      };
45659      for (const [unit, mag] of Object.entries(quant)) {
45660        if (bytes >= mag) {
45661          return getBytesString(bytes / mag, unit, decimals);
45662        }
45663      }
45664      return "";
45665    }
45666    var filesizeField = {
45667      id: "filesize",
45668      type: "text",
45669      label: (0, import_i18n73.__)("File size"),
45670      getValue: ({ item }) => item?.media_details?.filesize ? formatFileSize(item?.media_details?.filesize) : "",
45671      isVisible: (item) => {
45672        return !!item?.media_details?.filesize;
45673      },
45674      enableSorting: false,
45675      filterBy: false,
45676      readOnly: true
45677    };
45678    var filesize_default = filesizeField;
45679  
45680    // packages/media-fields/build-module/media_dimensions/index.mjs
45681    var import_i18n74 = __toESM(require_i18n(), 1);
45682    var mediaDimensionsField = {
45683      id: "media_dimensions",
45684      type: "text",
45685      label: (0, import_i18n74.__)("Dimensions"),
45686      getValue: ({ item }) => item?.media_details?.width && item?.media_details?.height ? (0, import_i18n74.sprintf)(
45687        // translators: 1: Width. 2: Height.
45688        (0, import_i18n74._x)("%1$s \xD7 %2$s", "image dimensions"),
45689        item?.media_details?.width?.toString(),
45690        item?.media_details?.height?.toString()
45691      ) : "",
45692      isVisible: (item) => {
45693        return !!(item?.media_details?.width && item?.media_details?.height);
45694      },
45695      enableSorting: false,
45696      filterBy: false,
45697      readOnly: true
45698    };
45699    var media_dimensions_default = mediaDimensionsField;
45700  
45701    // packages/media-fields/build-module/media_thumbnail/index.mjs
45702    var import_i18n76 = __toESM(require_i18n(), 1);
45703  
45704    // packages/media-fields/build-module/media_thumbnail/view.mjs
45705    var import_data12 = __toESM(require_data(), 1);
45706    var import_core_data5 = __toESM(require_core_data(), 1);
45707    var import_components52 = __toESM(require_components(), 1);
45708    var import_element145 = __toESM(require_element(), 1);
45709    var import_url5 = __toESM(require_url(), 1);
45710  
45711    // packages/media-fields/build-module/utils/get-media-type-from-mime-type.mjs
45712    var import_i18n75 = __toESM(require_i18n(), 1);
45713    function getMediaTypeFromMimeType(mimeType) {
45714      if (mimeType.startsWith("image/")) {
45715        return {
45716          type: "image",
45717          label: (0, import_i18n75.__)("Image"),
45718          icon: image_default
45719        };
45720      }
45721      if (mimeType.startsWith("video/")) {
45722        return {
45723          type: "video",
45724          label: (0, import_i18n75.__)("Video"),
45725          icon: video_default
45726        };
45727      }
45728      if (mimeType.startsWith("audio/")) {
45729        return {
45730          type: "audio",
45731          label: (0, import_i18n75.__)("Audio"),
45732          icon: audio_default
45733        };
45734      }
45735      return {
45736        type: "application",
45737        label: (0, import_i18n75.__)("Application"),
45738        icon: file_default
45739      };
45740    }
45741  
45742    // packages/media-fields/build-module/media_thumbnail/view.mjs
45743    var import_jsx_runtime204 = __toESM(require_jsx_runtime(), 1);
45744    function getBestImageUrl(featuredMedia, configSizes) {
45745      const sizes = featuredMedia?.media_details?.sizes;
45746      if (!sizes) {
45747        return featuredMedia.source_url;
45748      }
45749      const sizeEntries = Object.values(sizes);
45750      if (!sizeEntries.length) {
45751        return featuredMedia.source_url;
45752      }
45753      const targetWidth = configSizes ? parseInt(configSizes, 10) : NaN;
45754      if (!Number.isNaN(targetWidth)) {
45755        const validEntries = sizeEntries.filter(
45756          (s2) => typeof s2.width === "number" && !Number.isNaN(s2.width)
45757        );
45758        if (!validEntries.length) {
45759          return featuredMedia.source_url;
45760        }
45761        const sorted = [...validEntries].sort(
45762          (a2, b2) => a2.width - b2.width
45763        );
45764        const match2 = sorted.find((s2) => s2.width >= targetWidth);
45765        if (match2) {
45766          return match2.source_url;
45767        }
45768        return sorted[sorted.length - 1].source_url;
45769      }
45770      return featuredMedia.source_url;
45771    }
45772    function FallbackView({
45773      item,
45774      filename
45775    }) {
45776      return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { className: "dataviews-media-field__media-thumbnail", children: /* @__PURE__ */ (0, import_jsx_runtime204.jsxs)(
45777        import_components52.__experimentalVStack,
45778        {
45779          justify: "center",
45780          alignment: "center",
45781          className: "dataviews-media-field__media-thumbnail__stack",
45782          spacing: 0,
45783          children: [
45784            /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(
45785              import_components52.Icon,
45786              {
45787                className: "dataviews-media-field__media-thumbnail--icon",
45788                icon: getMediaTypeFromMimeType(item.mime_type).icon,
45789                size: 24
45790              }
45791            ),
45792            !!filename && /* @__PURE__ */ (0, import_jsx_runtime204.jsx)("div", { className: "dataviews-media-field__media-thumbnail__filename", children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(import_components52.__experimentalTruncate, { className: "dataviews-media-field__media-thumbnail__filename__truncate", children: filename }) })
45793          ]
45794        }
45795      ) });
45796    }
45797    function ImageView({
45798      item,
45799      configSizes,
45800      onError
45801    }) {
45802      const imageUrl = getBestImageUrl(item, configSizes);
45803      const imgRef = (0, import_element145.useRef)(null);
45804      const [loadingState, setLoadingState] = (0, import_element145.useState)("loading");
45805      (0, import_element145.useLayoutEffect)(() => {
45806        if (imgRef.current?.complete) {
45807          setLoadingState("instant");
45808        } else {
45809          setLoadingState("loading");
45810        }
45811      }, [imageUrl]);
45812      const handleLoad = () => {
45813        if (loadingState === "loading") {
45814          setLoadingState("loaded");
45815        }
45816      };
45817      return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(
45818        "div",
45819        {
45820          className: clsx_default("dataviews-media-field__media-thumbnail", {
45821            "is-loading": loadingState === "loading",
45822            "is-loaded": loadingState === "loaded"
45823          }),
45824          children: /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(
45825            "img",
45826            {
45827              ref: imgRef,
45828              className: "dataviews-media-field__media-thumbnail--image",
45829              src: imageUrl,
45830              alt: item.alt_text || item.title.raw,
45831              onLoad: handleLoad,
45832              onError,
45833              loading: "lazy"
45834            }
45835          )
45836        }
45837      );
45838    }
45839    function MediaThumbnailView({
45840      item,
45841      config
45842    }) {
45843      const [imageError, setImageError] = (0, import_element145.useState)(false);
45844      const _featuredMedia = (0, import_data12.useSelect)(
45845        (select3) => {
45846          if (!item.featured_media) {
45847            return;
45848          }
45849          return select3(import_core_data5.store).getEntityRecord(
45850            "postType",
45851            "attachment",
45852            item.featured_media
45853          );
45854        },
45855        [item.featured_media]
45856      );
45857      const featuredMedia = item.featured_media ? _featuredMedia : item;
45858      if (!featuredMedia) {
45859        return null;
45860      }
45861      const filename = (0, import_url5.getFilename)(featuredMedia.source_url || "");
45862      if (imageError || getMediaTypeFromMimeType(featuredMedia.mime_type).type !== "image") {
45863        return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(FallbackView, { item: featuredMedia, filename: filename || "" });
45864      }
45865      return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)(
45866        ImageView,
45867        {
45868          item: featuredMedia,
45869          configSizes: config?.sizes,
45870          onError: () => setImageError(true)
45871        }
45872      );
45873    }
45874  
45875    // packages/media-fields/build-module/media_thumbnail/index.mjs
45876    var mediaThumbnailField = {
45877      id: "media_thumbnail",
45878      type: "media",
45879      label: (0, import_i18n76.__)("Thumbnail"),
45880      render: MediaThumbnailView,
45881      enableSorting: false,
45882      filterBy: false
45883    };
45884    var media_thumbnail_default = mediaThumbnailField;
45885  
45886    // packages/media-fields/build-module/mime_type/index.mjs
45887    var import_i18n77 = __toESM(require_i18n(), 1);
45888    var mimeTypeField = {
45889      id: "mime_type",
45890      type: "text",
45891      label: (0, import_i18n77.__)("File type"),
45892      getValue: ({ item }) => item?.mime_type || "",
45893      render: ({ item }) => item?.mime_type || "-",
45894      // Disable sorting until REST API support for ordering my `mime_type` is added.
45895      // See: https://core.trac.wordpress.org/ticket/64073
45896      enableSorting: false,
45897      filterBy: false,
45898      readOnly: true
45899    };
45900    var mime_type_default = mimeTypeField;
45901  
45902    // packages/media-utils/build-module/components/media-upload-modal/index.mjs
45903    var import_notices = __toESM(require_notices(), 1);
45904  
45905    // packages/media-utils/build-module/lock-unlock.mjs
45906    var import_private_apis3 = __toESM(require_private_apis(), 1);
45907    var { lock: lock3, unlock: unlock3 } = (0, import_private_apis3.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
45908      "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
45909      "@wordpress/media-utils"
45910    );
45911  
45912    // packages/media-utils/build-module/components/media-upload-modal/upload-status-popover.mjs
45913    var import_element146 = __toESM(require_element(), 1);
45914    var import_i18n78 = __toESM(require_i18n(), 1);
45915    var import_components53 = __toESM(require_components(), 1);
45916    var import_jsx_runtime205 = __toESM(require_jsx_runtime(), 1);
45917    function UploadStatusPopover({
45918      uploadingFiles,
45919      onDismissError,
45920      onOpenChange
45921    }) {
45922      const [isOpen, setIsOpen] = (0, import_element146.useState)(false);
45923      const [prevHadErrors, setPrevHadErrors] = (0, import_element146.useState)(false);
45924      const triggerRef = (0, import_element146.useRef)(null);
45925      const updateIsOpen = (0, import_element146.useCallback)(
45926        (open) => {
45927          setIsOpen(open);
45928          onOpenChange?.(open);
45929        },
45930        [onOpenChange]
45931      );
45932      const activeFiles = uploadingFiles.filter(
45933        (file) => file.status === "uploading"
45934      );
45935      const errorFiles = uploadingFiles.filter(
45936        (file) => file.status === "error"
45937      );
45938      const hasErrors = errorFiles.length > 0;
45939      const isUploading = activeFiles.length > 0;
45940      (0, import_element146.useEffect)(() => {
45941        if (hasErrors && !prevHadErrors) {
45942          updateIsOpen(true);
45943        }
45944        setPrevHadErrors(hasErrors);
45945      }, [hasErrors, prevHadErrors, updateIsOpen]);
45946      if (uploadingFiles.length === 0) {
45947        return null;
45948      }
45949      let buttonLabel, popoverHeading;
45950      if (isUploading) {
45951        buttonLabel = (0, import_i18n78.sprintf)(
45952          // translators: %s: number of files being uploaded
45953          (0, import_i18n78._n)("Uploading %s file", "Uploading %s files", activeFiles.length),
45954          activeFiles.length.toLocaleString()
45955        );
45956        popoverHeading = (0, import_i18n78.__)("Uploading");
45957      } else if (hasErrors) {
45958        buttonLabel = (0, import_i18n78.sprintf)(
45959          // translators: %s: number of upload errors
45960          (0, import_i18n78._n)("%s upload error", "%s upload errors", errorFiles.length),
45961          errorFiles.length.toLocaleString()
45962        );
45963        popoverHeading = (0, import_i18n78.__)("Upload errors");
45964      } else {
45965        buttonLabel = (0, import_i18n78.__)("Upload complete");
45966        popoverHeading = (0, import_i18n78.__)("Upload complete");
45967      }
45968      return /* @__PURE__ */ (0, import_jsx_runtime205.jsxs)("div", { className: "media-upload-modal__upload-status", children: [
45969        isUploading && /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(import_components53.Spinner, {}),
45970        /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(
45971          import_components53.Button,
45972          {
45973            className: "media-upload-modal__upload-status__trigger",
45974            size: "compact",
45975            icon: chevron_down_default,
45976            iconPosition: "right",
45977            onClick: () => updateIsOpen(!isOpen),
45978            "aria-expanded": isOpen,
45979            ref: triggerRef,
45980            children: buttonLabel
45981          }
45982        ),
45983        isOpen && /* @__PURE__ */ (0, import_jsx_runtime205.jsxs)(
45984          import_components53.Popover,
45985          {
45986            className: "media-upload-modal__upload-status__popover",
45987            placement: "top-start",
45988            offset: 8,
45989            anchor: triggerRef.current,
45990            focusOnMount: true,
45991            onClose: () => {
45992              if (triggerRef.current?.contains(
45993                triggerRef.current.ownerDocument.activeElement
45994              )) {
45995                return;
45996              }
45997              updateIsOpen(false);
45998            },
45999            children: [
46000              /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("div", { className: "media-upload-modal__upload-status__header", children: /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("h3", { children: popoverHeading }) }),
46001              /* @__PURE__ */ (0, import_jsx_runtime205.jsx)("ul", { className: "media-upload-modal__upload-status__list", children: uploadingFiles.map((file) => /* @__PURE__ */ (0, import_jsx_runtime205.jsxs)(
46002                "li",
46003                {
46004                  className: "media-upload-modal__upload-status__item",
46005                  children: [
46006                    file.status === "uploading" && /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(import_components53.Spinner, {}),
46007                    file.status === "uploaded" && /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(import_components53.Icon, { icon: check_default, size: 16 }),
46008                    (file.status === "uploading" || file.status === "uploaded") && /* @__PURE__ */ (0, import_jsx_runtime205.jsx)(
46009                      "span",
46010                      {
46011                        className: "media-upload-modal__upload-status__filename",
46012                        title: file.name,
46013                        children: file.name
46014                      }
46015                    ),
46016                    file.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime205.jsxs)(
46017                      import_components53.Notice,
46018                      {
46019                        status: "error",
46020                        isDismissible: !!onDismissError,
46021                        onRemove: () => onDismissError?.(file.id),
46022                        children: [
46023                          file.name,
46024                          ": ",
46025                          file.error
46026                        ]
46027                      }
46028                    )
46029                  ]
46030                },
46031                file.id
46032              )) })
46033            ]
46034          }
46035        )
46036      ] });
46037    }
46038  
46039    // packages/media-utils/build-module/components/media-upload-modal/use-invalidate-attachment-resolutions.mjs
46040    var import_element147 = __toESM(require_element(), 1);
46041    var import_data13 = __toESM(require_data(), 1);
46042    function useInvalidateAttachmentResolutions() {
46043      const registry = (0, import_data13.useRegistry)();
46044      return (0, import_element147.useCallback)(
46045        () => invalidateAttachmentResolutions(registry),
46046        [registry]
46047      );
46048    }
46049  
46050    // packages/media-utils/build-module/components/media-upload-modal/use-upload-status.mjs
46051    var import_element148 = __toESM(require_element(), 1);
46052    var import_blob2 = __toESM(require_blob(), 1);
46053    var idCounter = 0;
46054    var batchIdCounter = 0;
46055    function useUploadStatus({
46056      onBatchComplete
46057    } = {}) {
46058      const [uploadingFiles, setUploadingFiles] = (0, import_element148.useState)(
46059        []
46060      );
46061      const clearCompleted = (0, import_element148.useCallback)(() => {
46062        setUploadingFiles(
46063          (prev) => prev.filter((item) => item.status !== "uploaded")
46064        );
46065      }, []);
46066      const dismissError = (0, import_element148.useCallback)((fileId) => {
46067        setUploadingFiles(
46068          (prev) => prev.filter((item) => item.id !== fileId)
46069        );
46070      }, []);
46071      const registerBatch = (0, import_element148.useCallback)(
46072        (files) => {
46073          const batchId = String(++batchIdCounter);
46074          const batchSize = files.length;
46075          const newEntries = files.map((file) => ({
46076            id: String(++idCounter),
46077            batchId,
46078            name: file.name,
46079            status: "uploading"
46080          }));
46081          setUploadingFiles((prev) => [...prev, ...newEntries]);
46082          let successCount = 0;
46083          let errorCount = 0;
46084          let batchDone = false;
46085          let successAttachments = [];
46086          const completeBatchIfDone = () => {
46087            if (batchDone || successCount + errorCount < batchSize) {
46088              return;
46089            }
46090            batchDone = true;
46091            setUploadingFiles(
46092              (prev) => prev.map(
46093                (item) => item.batchId === batchId && item.status === "uploading" ? {
46094                  ...item,
46095                  status: "uploaded"
46096                } : item
46097              )
46098            );
46099            onBatchComplete?.(successAttachments);
46100          };
46101          const onFileChange = (attachments) => {
46102            if (batchDone) {
46103              return;
46104            }
46105            const allReal = attachments.every(
46106              (attachment) => attachment.id && attachment.url && !(0, import_blob2.isBlobURL)(attachment.url)
46107            );
46108            if (!allReal) {
46109              return;
46110            }
46111            successCount = attachments.length;
46112            successAttachments = attachments;
46113            completeBatchIfDone();
46114          };
46115          const onError = (error2) => {
46116            const fileName = error2 instanceof UploadError ? error2.file.name : void 0;
46117            setUploadingFiles((prev) => {
46118              let matched = false;
46119              return prev.map((item) => {
46120                if (!matched && item.batchId === batchId && item.status === "uploading" && (!fileName || item.name === fileName)) {
46121                  matched = true;
46122                  return {
46123                    ...item,
46124                    status: "error",
46125                    error: error2.message
46126                  };
46127                }
46128                return item;
46129              });
46130            });
46131            errorCount++;
46132            completeBatchIfDone();
46133          };
46134          return { onFileChange, onError };
46135        },
46136        [onBatchComplete]
46137      );
46138      const allComplete = uploadingFiles.length > 0 && uploadingFiles.every((item) => item.status !== "uploading");
46139      return {
46140        uploadingFiles,
46141        registerBatch,
46142        dismissError,
46143        clearCompleted,
46144        allComplete
46145      };
46146    }
46147  
46148    // packages/media-utils/build-module/components/media-upload-modal/index.mjs
46149    var import_jsx_runtime206 = __toESM(require_jsx_runtime(), 1);
46150    var { useEntityRecordsWithPermissions } = unlock3(import_core_data6.privateApis);
46151    var LAYOUT_PICKER_GRID2 = "pickerGrid";
46152    var LAYOUT_PICKER_TABLE2 = "pickerTable";
46153    var NOTICES_CONTEXT = "media-modal";
46154    var NOTICE_ID_UPLOAD_PROGRESS = "media-modal-upload-progress";
46155    var ATTACHED_TO_FIELD = "attached_to";
46156    var defaultQueryParams = {
46157      page: 1,
46158      search: ""
46159    };
46160    function getSelectionFromValue(value) {
46161      if (!value) {
46162        return [];
46163      }
46164      return Array.isArray(value) ? value.map(String) : [String(value)];
46165    }
46166    var defaultView = {
46167      type: LAYOUT_PICKER_GRID2,
46168      fields: [],
46169      showTitle: false,
46170      titleField: "title",
46171      mediaField: "media_thumbnail",
46172      perPage: 50,
46173      filters: [],
46174      layout: {
46175        previewSize: 170,
46176        density: "compact",
46177        // Fit each thumbnail inside its square cell rather than cropping it,
46178        // so the media's own orientation is visible before it's inserted.
46179        // Users can switch back to cropped in the view options.
46180        mediaFit: "contain"
46181      }
46182    };
46183    var defaultLayouts = {
46184      [LAYOUT_PICKER_GRID2]: {
46185        fields: [],
46186        showTitle: false,
46187        layout: {
46188          previewSize: 170,
46189          density: "compact",
46190          mediaFit: "contain"
46191        }
46192      },
46193      [LAYOUT_PICKER_TABLE2]: {
46194        fields: [
46195          "filename",
46196          "filesize",
46197          "media_dimensions",
46198          "author",
46199          "date"
46200        ],
46201        showTitle: true
46202      }
46203    };
46204    var dataViewsConfig = {
46205      // Repeats `DataViewsPicker`'s own default, which passing `config` at all
46206      // would otherwise replace.
46207      perPageSizes: [10, 20, 50, 100],
46208      // Seeing whether a media item is portrait or landscape before inserting
46209      // it matters here, so offer the crop/fit switch in the view options.
46210      mediaFitControl: true
46211    };
46212    function MediaUploadModal({
46213      allowedTypes,
46214      multiple = false,
46215      value,
46216      onSelect,
46217      onClose,
46218      onUpload,
46219      title = (0, import_i18n79.__)("Select Media"),
46220      isOpen,
46221      isDismissible = true,
46222      modalClass,
46223      search = true,
46224      searchLabel = (0, import_i18n79.__)("Search media"),
46225      postId,
46226      postType
46227    }) {
46228      const attachedToPostId = Number.isInteger(postId) ? postId : void 0;
46229      const uploadedToLabel = (0, import_data14.useSelect)(
46230        (select3) => attachedToPostId && postType ? select3(import_core_data6.store).getPostType(postType)?.labels?.uploaded_to_this_item : void 0,
46231        [attachedToPostId, postType]
46232      );
46233      const [selection, setSelection] = (0, import_element149.useState)(
46234        () => getSelectionFromValue(value)
46235      );
46236      const { createSuccessNotice, removeAllNotices } = (0, import_data14.useDispatch)(import_notices.store);
46237      const invalidateAttachmentResolutions2 = useInvalidateAttachmentResolutions();
46238      const [queryParams, setQueryParams] = (0, import_element149.useState)(
46239        () => defaultQueryParams
46240      );
46241      const {
46242        view: persistedView,
46243        updateView,
46244        isModified,
46245        resetToDefault
46246      } = useView({
46247        kind: "postType",
46248        name: "attachment",
46249        slug: "media-modal",
46250        defaultView,
46251        queryParams,
46252        onChangeQueryParams: setQueryParams
46253      });
46254      const [attachedToFilter, setAttachedToFilter] = (0, import_element149.useState)();
46255      const view = (0, import_element149.useMemo)(() => {
46256        const filters = (persistedView.filters ?? []).filter(
46257          ({ field }) => field !== ATTACHED_TO_FIELD
46258        );
46259        return {
46260          ...persistedView,
46261          filters: attachedToFilter ? [...filters, attachedToFilter] : filters
46262        };
46263      }, [persistedView, attachedToFilter]);
46264      const handleChangeView = (0, import_element149.useCallback)(
46265        (nextView) => {
46266          const normalizedView = { ...nextView };
46267          if (normalizedView.startPosition === void 0) {
46268            delete normalizedView.startPosition;
46269          }
46270          setAttachedToFilter(
46271            normalizedView.filters?.find(
46272              ({ field }) => field === ATTACHED_TO_FIELD
46273            )
46274          );
46275          updateView({
46276            ...normalizedView,
46277            filters: normalizedView.filters?.filter(
46278              ({ field }) => field !== ATTACHED_TO_FIELD
46279            )
46280          });
46281        },
46282        [updateView]
46283      );
46284      const handleReset = (0, import_element149.useCallback)(() => {
46285        setAttachedToFilter(void 0);
46286        resetToDefault();
46287      }, [resetToDefault]);
46288      const queryArgs = (0, import_element149.useMemo)(() => {
46289        const filters = {};
46290        view.filters?.forEach((filter) => {
46291          if (filter.field === "media_type") {
46292            filters.media_type = filter.value;
46293          }
46294          if (filter.field === "author") {
46295            if (filter.operator === "isAny") {
46296              filters.author = filter.value;
46297            } else if (filter.operator === "isNone") {
46298              filters.author_exclude = filter.value;
46299            }
46300          }
46301          if (filter.field === "date" || filter.field === "modified") {
46302            if (filter.operator === "before") {
46303              filters.before = filter.value;
46304            } else if (filter.operator === "after") {
46305              filters.after = filter.value;
46306            }
46307          }
46308          if (filter.field === "mime_type") {
46309            filters.mime_type = filter.value;
46310          }
46311          if (filter.field === ATTACHED_TO_FIELD && filter.operator === "isAny") {
46312            const parents = (Array.isArray(filter.value) ? filter.value : []).map((optionValue) => {
46313              if (optionValue === "unattached") {
46314                return 0;
46315              }
46316              return optionValue === "current" ? attachedToPostId : void 0;
46317            }).filter((parent) => parent !== void 0);
46318            if (parents.length) {
46319              filters.parent = parents;
46320            }
46321          }
46322        });
46323        if (!filters.media_type && !filters.mime_type && allowedTypes && !allowedTypes.includes("*")) {
46324          const { mediaTypes, mimeTypes } = allowedTypes.reduce(
46325            (acc, type) => {
46326              if (type.endsWith("/*")) {
46327                acc.mediaTypes.push(type.replace("/*", ""));
46328              } else if (type.includes("/")) {
46329                acc.mimeTypes.push(type);
46330              } else {
46331                acc.mediaTypes.push(type);
46332              }
46333              return acc;
46334            },
46335            { mediaTypes: [], mimeTypes: [] }
46336          );
46337          if (mediaTypes.length) {
46338            filters.media_type = mediaTypes;
46339          }
46340          if (mimeTypes.length) {
46341            filters.mime_type = mimeTypes;
46342          }
46343        }
46344        return {
46345          per_page: view.perPage || 20,
46346          page: view.page || 1,
46347          status: "inherit",
46348          order: view.sort?.direction,
46349          orderby: view.sort?.field,
46350          search: view.search,
46351          _embed: "author,wp:attached-to",
46352          ...filters
46353        };
46354      }, [view, allowedTypes, attachedToPostId]);
46355      const handleBatchComplete = (0, import_element149.useCallback)(
46356        (attachments) => {
46357          const uploadedIds = attachments.map((attachment) => String(attachment.id)).filter(Boolean);
46358          if (multiple) {
46359            setSelection((prev) => {
46360              const existing = new Set(prev);
46361              const newIds = uploadedIds.filter(
46362                (id) => !existing.has(id)
46363              );
46364              return [...prev, ...newIds];
46365            });
46366          } else {
46367            setSelection(uploadedIds.slice(0, 1));
46368          }
46369          invalidateAttachmentResolutions2();
46370        },
46371        [multiple, invalidateAttachmentResolutions2]
46372      );
46373      const {
46374        uploadingFiles,
46375        registerBatch,
46376        dismissError,
46377        clearCompleted,
46378        allComplete
46379      } = useUploadStatus({ onBatchComplete: handleBatchComplete });
46380      const isPopoverOpenRef = (0, import_element149.useRef)(false);
46381      const handlePopoverOpenChange = (0, import_element149.useCallback)(
46382        (open) => {
46383          isPopoverOpenRef.current = open;
46384          if (!open) {
46385            clearCompleted();
46386          }
46387        },
46388        [clearCompleted]
46389      );
46390      const {
46391        records: mediaRecords,
46392        isResolving: isLoading,
46393        totalItems,
46394        totalPages
46395      } = useEntityRecordsWithPermissions("postType", "attachment", queryArgs);
46396      const fields = (0, import_element149.useMemo)(
46397        () => [
46398          // Media field definitions from @wordpress/media-fields
46399          // Cast is safe because RestAttachment has the same properties as Attachment
46400          {
46401            ...media_thumbnail_default,
46402            enableHiding: false
46403            // Within the modal, the thumbnail should always be shown.
46404          },
46405          {
46406            id: "title",
46407            type: "text",
46408            label: (0, import_i18n79.__)("Title"),
46409            getValue: ({ item }) => {
46410              const titleValue = item.title.raw || item.title.rendered;
46411              return titleValue || (0, import_i18n79.__)("(no title)");
46412            }
46413          },
46414          alt_text_default,
46415          caption_default,
46416          description_default,
46417          date_added_default,
46418          date_modified_default,
46419          author_default,
46420          filename_default,
46421          filesize_default,
46422          media_dimensions_default,
46423          mime_type_default,
46424          {
46425            ...attached_to_default,
46426            // The shared field definition is not filterable, because the
46427            // "Uploaded to this post" option only makes sense with the modal's
46428            // post context. Values name options, and `queryArgs` above
46429            // translates them to `parent`.
46430            elements: [
46431              ...attachedToPostId ? [
46432                {
46433                  value: "current",
46434                  label: uploadedToLabel ?? (0, import_i18n79.__)("Uploaded to this item")
46435                }
46436              ] : [],
46437              {
46438                value: "unattached",
46439                label: (0, import_i18n79._x)("Unattached", "media items")
46440              }
46441            ],
46442            filterBy: { operators: ["isAny"] }
46443          }
46444        ],
46445        [attachedToPostId, uploadedToLabel]
46446      );
46447      const actions = (0, import_element149.useMemo)(
46448        () => [
46449          {
46450            id: "select",
46451            label: (0, import_i18n79.__)("Select"),
46452            isPrimary: true,
46453            supportsBulk: multiple,
46454            async callback() {
46455              if (selection.length === 0) {
46456                return;
46457              }
46458              const selectedPostsQuery = {
46459                include: selection,
46460                per_page: -1
46461              };
46462              const selectedPosts = await (0, import_data14.resolveSelect)(
46463                import_core_data6.store
46464              ).getEntityRecords(
46465                "postType",
46466                "attachment",
46467                selectedPostsQuery
46468              );
46469              const transformedPosts = (selectedPosts ?? []).map(transformAttachment).filter(Boolean);
46470              const selectedItems = multiple ? transformedPosts : transformedPosts?.[0];
46471              removeAllNotices("snackbar", NOTICES_CONTEXT);
46472              onSelect(selectedItems);
46473            }
46474          }
46475        ],
46476        [multiple, onSelect, selection, removeAllNotices]
46477      );
46478      const handleModalClose = (0, import_element149.useCallback)(() => {
46479        removeAllNotices("snackbar", NOTICES_CONTEXT);
46480        onClose?.();
46481      }, [removeAllNotices, onClose]);
46482      const valueRef = (0, import_element149.useRef)(value);
46483      (0, import_element149.useEffect)(() => {
46484        valueRef.current = value;
46485      }, [value]);
46486      (0, import_element149.useEffect)(() => {
46487        if (isOpen) {
46488          setSelection(getSelectionFromValue(valueRef.current));
46489        } else {
46490          setQueryParams(defaultQueryParams);
46491        }
46492      }, [isOpen]);
46493      const handleUpload = onUpload || uploadMedia;
46494      const prevAllCompleteRef = (0, import_element149.useRef)(false);
46495      (0, import_element149.useEffect)(() => {
46496        if (allComplete && !prevAllCompleteRef.current) {
46497          const completeCount = uploadingFiles.filter(
46498            (file) => file.status === "uploaded"
46499          ).length;
46500          if (completeCount > 0) {
46501            createSuccessNotice(
46502              (0, import_i18n79.sprintf)(
46503                // translators: %s: number of files
46504                (0, import_i18n79._n)(
46505                  "Uploaded %s file",
46506                  "Uploaded %s files",
46507                  completeCount
46508                ),
46509                completeCount.toLocaleString()
46510              ),
46511              {
46512                type: "snackbar",
46513                context: NOTICES_CONTEXT,
46514                id: NOTICE_ID_UPLOAD_PROGRESS
46515              }
46516            );
46517          }
46518          if (!isPopoverOpenRef.current) {
46519            clearCompleted();
46520          }
46521        }
46522        prevAllCompleteRef.current = allComplete;
46523      }, [allComplete, uploadingFiles, createSuccessNotice, clearCompleted]);
46524      const handleFileSelect = (0, import_element149.useCallback)(
46525        (event) => {
46526          const files = event.target.files;
46527          if (files && files.length > 0) {
46528            const filesArray = Array.from(files);
46529            const { onFileChange, onError } = registerBatch(filesArray);
46530            handleUpload({
46531              allowedTypes,
46532              filesList: filesArray,
46533              onFileChange,
46534              onError
46535            });
46536          }
46537        },
46538        [allowedTypes, handleUpload, registerBatch]
46539      );
46540      const paginationInfo = (0, import_element149.useMemo)(
46541        () => ({
46542          totalItems,
46543          totalPages
46544        }),
46545        [totalItems, totalPages]
46546      );
46547      const acceptTypes = (0, import_element149.useMemo)(() => {
46548        if (allowedTypes?.includes("*")) {
46549          return void 0;
46550        }
46551        return allowedTypes?.join(",");
46552      }, [allowedTypes]);
46553      if (!isOpen) {
46554        return null;
46555      }
46556      return /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
46557        import_components54.Modal,
46558        {
46559          title,
46560          onRequestClose: handleModalClose,
46561          isDismissible,
46562          className: modalClass,
46563          overlayClassName: "media-upload-modal",
46564          size: "fill",
46565          headerActions: /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(
46566            import_components54.FormFileUpload,
46567            {
46568              accept: acceptTypes,
46569              multiple: true,
46570              onChange: handleFileSelect,
46571              render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(
46572                import_components54.Button,
46573                {
46574                  onClick: openFileDialog,
46575                  icon: upload_default,
46576                  __next40pxDefaultSize: true,
46577                  children: (0, import_i18n79.__)("Upload media")
46578                }
46579              )
46580            }
46581          ),
46582          children: [
46583            /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(
46584              import_components54.DropZone,
46585              {
46586                onFilesDrop: (files) => {
46587                  let filteredFiles = files;
46588                  if (allowedTypes && !allowedTypes.includes("*")) {
46589                    filteredFiles = files.filter(
46590                      (file) => allowedTypes.some((allowedType) => {
46591                        return file.type === allowedType || file.type.startsWith(
46592                          allowedType.replace("*", "")
46593                        );
46594                      })
46595                    );
46596                  }
46597                  if (filteredFiles.length > 0) {
46598                    const { onFileChange, onError } = registerBatch(filteredFiles);
46599                    handleUpload({
46600                      allowedTypes,
46601                      filesList: filteredFiles,
46602                      onFileChange,
46603                      onError
46604                    });
46605                  }
46606                },
46607                label: (0, import_i18n79.__)("Drop files to upload")
46608              }
46609            ),
46610            /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
46611              dataviews_picker_default,
46612              {
46613                data: mediaRecords || [],
46614                fields,
46615                view,
46616                onChangeView: handleChangeView,
46617                actions,
46618                selection,
46619                onChangeSelection: setSelection,
46620                isLoading,
46621                paginationInfo,
46622                defaultLayouts,
46623                config: dataViewsConfig,
46624                getItemId: (item) => String(item.id),
46625                itemListLabel: (0, import_i18n79.__)("Media items"),
46626                onReset: isModified || attachedToFilter ? handleReset : false,
46627                children: [
46628                  /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
46629                    Stack,
46630                    {
46631                      direction: "row",
46632                      align: "top",
46633                      justify: "space-between",
46634                      className: "dataviews__view-actions",
46635                      gap: "xs",
46636                      children: [
46637                        /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
46638                          Stack,
46639                          {
46640                            direction: "row",
46641                            gap: "sm",
46642                            justify: "start",
46643                            className: "dataviews__search",
46644                            children: [
46645                              search && /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.Search, { label: searchLabel }),
46646                              /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.FiltersToggle, {})
46647                            ]
46648                          }
46649                        ),
46650                        /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [
46651                          /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.LayoutSwitcher, {}),
46652                          /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.ViewConfig, {})
46653                        ] })
46654                      ]
46655                    }
46656                  ),
46657                  /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.FiltersToggled, { className: "dataviews-filters__container" }),
46658                  /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.Layout, {}),
46659                  /* @__PURE__ */ (0, import_jsx_runtime206.jsxs)(
46660                    "div",
46661                    {
46662                      className: clsx_default("media-upload-modal__footer", {
46663                        "is-uploading": uploadingFiles.length > 0
46664                      }),
46665                      children: [
46666                        /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(
46667                          UploadStatusPopover,
46668                          {
46669                            uploadingFiles,
46670                            onDismissError: dismissError,
46671                            onOpenChange: handlePopoverOpenChange
46672                          }
46673                        ),
46674                        /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(dataviews_picker_default.Footer, {})
46675                      ]
46676                    }
46677                  )
46678                ]
46679              }
46680            ),
46681            (0, import_element149.createPortal)(
46682              /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(
46683                import_notices.SnackbarNotices,
46684                {
46685                  className: "media-upload-modal__snackbar",
46686                  context: NOTICES_CONTEXT
46687                }
46688              ),
46689              document.body
46690            )
46691          ]
46692        }
46693      );
46694    }
46695  
46696    // packages/media-utils/build-module/private-apis.mjs
46697    var privateApis = {};
46698    lock3(privateApis, {
46699      sideloadMedia,
46700      MediaUploadModal
46701    });
46702    return __toCommonJS(index_exports);
46703  })();
46704  /*! Bundled license information:
46705  
46706  use-sync-external-store/cjs/use-sync-external-store-shim.development.js:
46707    (**
46708     * @license React
46709     * use-sync-external-store-shim.development.js
46710     *
46711     * Copyright (c) Meta Platforms, Inc. and affiliates.
46712     *
46713     * This source code is licensed under the MIT license found in the
46714     * LICENSE file in the root directory of this source tree.
46715     *)
46716  
46717  use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js:
46718    (**
46719     * @license React
46720     * use-sync-external-store-shim/with-selector.development.js
46721     *
46722     * Copyright (c) Meta Platforms, Inc. and affiliates.
46723     *
46724     * This source code is licensed under the MIT license found in the
46725     * LICENSE file in the root directory of this source tree.
46726     *)
46727  */
46728  (window.wp ||= {}).mediaUtils = wp.mediaUtils;
46729  })();


Generated : Mon Sep 14 08:20:31 2026 Cross-referenced by PHPXref