nfx-ui 0.12.0 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  (function(){try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(`.styles-module__loading___bgEAk{justify-content:center;align-items:center;display:inline-flex}.styles-module__loading___bgEAk svg polyline{fill:none;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.styles-module__loading___bgEAk svg polyline.styles-module__back___XLPvD{fill:none;stroke:var(--color-primary-alpha)}.styles-module__loading___bgEAk svg polyline.styles-module__front___hSxig{fill:none;stroke:var(--color-primary);stroke-dasharray:48 144;stroke-dashoffset:192px;animation:1.4s linear infinite styles-module__dash_682___AQzo6}@keyframes styles-module__dash_682___AQzo6{72.5%{opacity:0}to{stroke-dashoffset:0}}.styles-module__loader___E7OIM{justify-content:center;align-items:center;width:fit-content;height:fit-content;display:flex}.styles-module__truckWrapper___Sk4zX{flex-direction:column;justify-content:flex-end;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow-x:hidden}.styles-module__truckBody___j7w2C{width:65%;height:fit-content;margin-bottom:6px;animation:1s linear infinite styles-module__motion___IiNlW}@keyframes styles-module__motion___IiNlW{0%{transform:translateY(0)}50%{transform:translateY(3px)}to{transform:translateY(0)}}.styles-module__truckTires___4ncTl{justify-content:space-between;align-items:center;width:65%;height:fit-content;padding:0 10px 0 15px;display:flex;position:absolute;bottom:0}.styles-module__tiresvg___IBQcN{width:24px}.styles-module__road___sxx-E{background-color:var(--color-fg-heading);border-radius:var(--radius-button);align-self:flex-end;width:100%;height:1.5px;position:relative;bottom:0}.styles-module__road___sxx-E:before{content:"";background-color:var(--color-fg-heading);border-radius:var(--radius-button);border-left:10px solid var(--color-bg);width:20px;height:100%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;right:-50%}.styles-module__road___sxx-E:after{content:"";background-color:var(--color-fg-heading);border-radius:var(--radius-button);border-left:4px solid var(--color-bg);width:10px;height:100%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;right:-65%}.styles-module__lampPost___okcN5{height:45%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;bottom:0;right:-90%}@keyframes styles-module__roadAnimation___yvrHP{0%{transform:translate(0)}to{transform:translate(-350px)}}.styles-module__loader___pFUzL{justify-content:center;align-items:center;display:inline-flex;position:relative}.styles-module__loader___pFUzL:before{content:"";background:var(--color-primary);opacity:.3;border-radius:50%;width:100%;height:5px;animation:.5s linear infinite styles-module__shadow324___sutUe;position:absolute;top:calc(100% + 12px);left:0}.styles-module__loader___pFUzL:after{content:"";background:var(--color-primary);width:100%;height:100%;position:absolute;top:0;left:0}.styles-module__square___GKjhm:after{border-radius:var(--radius-button);animation:.5s linear infinite styles-module__jump7456Square___Z-D9b}.styles-module__circle___bUpSN:after{border-radius:50%;animation:.5s linear infinite styles-module__jump7456Circle___2AfF7}@keyframes styles-module__jump7456Square___Z-D9b{15%{border-bottom-right-radius:3px}25%{transform:translateY(9px)rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px)scaleY(.9)rotate(45deg)}75%{transform:translateY(9px)rotate(67.5deg)}to{transform:translateY(0)rotate(90deg)}}@keyframes styles-module__jump7456Circle___2AfF7{15%{border-bottom-right-radius:50%}25%{transform:translateY(9px)rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px)scaleY(.9)rotate(45deg)}75%{transform:translateY(9px)rotate(67.5deg)}to{transform:translateY(0)rotate(90deg)}}@keyframes styles-module__shadow324___sutUe{0%,to{transform:scale(1)}50%{transform:scaleX(1.2)}}.style-module__waves___oR3u7{width:100%;height:100%;margin:0;padding:0;position:absolute;top:0;left:0;overflow:hidden}.style-module__waves___oR3u7:before{content:"";background:var(--color-bg);width:.5rem;height:.5rem;transform:translate3d(calc(var(--x) - 50%), calc(var(--y) - 50%), 0);will-change:transform;border-radius:50%;position:absolute;top:0;left:0}.style-module__wavesCanvas___zkhTC{width:100%;height:100%;display:block}.style-module__squaresCanvas___22kMc{border:none;width:100%;height:100%;display:block}.style-module__container___HkxIe{background-color:var(--color-bg);width:100%;height:100%;position:relative;overflow:hidden}.style-module__canvas___MR9JX{width:100%;height:100%;display:block}.style-module__outerVignette___i75nw{pointer-events:none;background:radial-gradient(circle,#0000 60%,#000 100%);width:100%;height:100%;position:absolute;top:0;left:0}.style-module__centerVignette___n9uVG{pointer-events:none;background:radial-gradient(circle,#000c 0%,#0000 60%);width:100%;height:100%;position:absolute;top:0;left:0}.styles-module__button___RbliA{border-radius:var(--radius-button);cursor:pointer;border:1px solid #0000;outline:none;justify-content:center;align-items:center;gap:.5rem;font-family:inherit;font-weight:500;transition:all .2s;display:inline-flex;position:relative}.styles-module__button___RbliA:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.styles-module__button___RbliA:disabled{cursor:not-allowed;opacity:.6}.styles-module__button___RbliA.styles-module__small___yK0Yp{min-height:2rem;padding:.5rem 1rem;font-size:.8125rem}.styles-module__button___RbliA.styles-module__medium___eBTch{min-height:2.5rem;padding:.75rem 1.5rem;font-size:.875rem}.styles-module__button___RbliA.styles-module__large___pIZkl{min-height:3rem;padding:1rem 2rem;font-size:1rem}.styles-module__button___RbliA.styles-module__primary___qsZpA{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-fg)}.styles-module__button___RbliA.styles-module__primary___qsZpA:hover:not(:disabled){background:var(--color-primary-light);border-color:var(--color-primary-light);transform:translateY(-1px)}.styles-module__button___RbliA.styles-module__primary___qsZpA:active:not(:disabled){transform:translateY(0)}.styles-module__button___RbliA.styles-module__secondary___SCpPv{background:var(--color-bg-2);border-color:var(--color-border-4);color:var(--color-fg-text)}.styles-module__button___RbliA.styles-module__secondary___SCpPv:hover:not(:disabled){background:var(--color-bg-3);border-color:var(--color-primary)}.styles-module__button___RbliA.styles-module__outline___rrlk9{border-color:var(--color-border-4);color:var(--color-fg-text);background:0 0}.styles-module__button___RbliA.styles-module__outline___rrlk9:hover:not(:disabled){background:var(--color-bg-2);border-color:var(--color-primary)}.styles-module__button___RbliA.styles-module__ghost___QMoiH{color:var(--color-fg-text);background:0 0;border-color:#0000}.styles-module__button___RbliA.styles-module__ghost___QMoiH:hover:not(:disabled){background:var(--color-bg-2)}.styles-module__button___RbliA.styles-module__danger___MW-pg{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-danger-fg,#fff)}.styles-module__button___RbliA.styles-module__danger___MW-pg:hover:not(:disabled){background:var(--color-danger-light);border-color:var(--color-danger-light);color:var(--color-danger-fg,#fff);transform:translateY(-1px)}.styles-module__button___RbliA.styles-module__danger___MW-pg:active:not(:disabled){transform:translateY(0)}.styles-module__button___RbliA.styles-module__fullWidth___-dXBR{width:100%}.styles-module__button___RbliA.styles-module__loading___UWw6V{pointer-events:none}.styles-module__spinner___KpJ-L{border:2px solid;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:1rem;height:1rem;animation:.6s linear infinite styles-module__spin___ntZKM}@keyframes styles-module__spin___ntZKM{to{transform:rotate(360deg)}}.styles-module__button___RbliA.styles-module__small___yK0Yp .styles-module__spinner___KpJ-L{border-width:1.5px;width:.875rem;height:.875rem}.styles-module__button___RbliA.styles-module__large___pIZkl .styles-module__spinner___KpJ-L{border-width:2.5px;width:1.25rem;height:1.25rem}.styles-module__content___oyZRO{align-items:center;display:flex}.styles-module__leftIcon___cDktv,.styles-module__rightIcon___1mpk0{flex-shrink:0;align-items:center;display:flex}.styles-module__leftIcon___cDktv{margin-right:-.25rem}.styles-module__rightIcon___1mpk0{margin-left:-.25rem}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U{aspect-ratio:1;min-width:2.5rem;min-height:2.5rem;padding:0}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U.styles-module__small___yK0Yp{min-width:2rem;min-height:2rem}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U.styles-module__large___pIZkl{min-width:3rem;min-height:3rem}.styles-module__iconContainer___bwvE3{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.styles-module__layout___WaGy9{flex-direction:column;justify-content:center;align-items:center;gap:.25rem;width:100%;display:flex}.styles-module__horizontal___lKpGq{justify-content:center;align-items:center;gap:.5rem;width:100%;display:flex}.styles-module__topIcon___bzw6s,.styles-module__bottomIcon___suPfa{flex-shrink:0;justify-content:center;align-items:center;display:flex}.styles-module__iconOnly___iOv-U .styles-module__iconContainer___bwvE3 .styles-module__leftIcon___cDktv,.styles-module__iconOnly___iOv-U .styles-module__iconContainer___bwvE3 .styles-module__rightIcon___1mpk0{margin:0}.Dropdown-module__dropdown___c9wIp{width:100%;display:inline-block;position:relative}.Dropdown-module__dropdownButton___suNh-{border:1px solid var(--color-separator);border-radius:var(--radius-card);cursor:pointer;text-align:left;background:var(--color-bg-2);width:100%;color:var(--color-fg-text);outline:none;justify-content:space-between;align-items:center;padding:.75rem 2.5rem .75rem 1rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.5rem;transition:all .2s ease-in-out;display:flex;position:relative}.Dropdown-module__dropdownButton___suNh-:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-bg-1)}.Dropdown-module__dropdownButton___suNh-:focus{border-color:var(--color-primary);background:var(--color-bg-1);box-shadow:0 0 0 2px var(--color-primary-transparent)}.Dropdown-module__dropdownButton___suNh-.Dropdown-module__disabled___Rz0pX{cursor:not-allowed;opacity:.6;background:var(--color-bg-3)}.Dropdown-module__dropdownButton___suNh-.Dropdown-module__error___F7dDu{border-color:var(--color-danger)}.Dropdown-module__buttonText___D2zxn{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.Dropdown-module__chevronIcon___uyawp{color:var(--color-fg-highlight);flex-shrink:0;transition:transform .15s;position:absolute;right:1rem}.Dropdown-module__chevronIcon___uyawp.Dropdown-module__open___APoXd{transform:rotate(180deg)}.Dropdown-module__dropdownMenu___WJ-QO{background:var(--color-bg);border:1px solid var(--color-border-4);border-radius:var(--radius-card);min-width:100%;box-shadow:0 .5rem 1rem var(--color-shadow);z-index:1000;animation:.15s ease-out Dropdown-module__slideDown___sRCmO;position:absolute;top:calc(100% + .5rem);left:0;right:0;overflow:hidden}@keyframes Dropdown-module__slideDown___sRCmO{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}.Dropdown-module__optionsList___Be6RN{margin:0;padding:.5rem 0;list-style:none}.Dropdown-module__option___q-NgT{cursor:pointer;color:var(--color-fg-text);align-items:center;padding:.75rem 1rem;font-size:.875rem;transition:all .15s;display:flex}.Dropdown-module__option___q-NgT:hover{background-color:var(--color-bg-2)}.Dropdown-module__option___q-NgT.Dropdown-module__selected___-OTW-{background-color:var(--color-bg-3);color:var(--color-fg-highlight);font-weight:600}@media (width<=768px){.Dropdown-module__dropdownButton___suNh-{padding:.625rem 2.25rem .625rem .875rem;font-size:.875rem}.Dropdown-module__chevronIcon___uyawp{right:.875rem}.Dropdown-module__option___q-NgT{padding:.625rem .875rem;font-size:.8125rem}}.styles-module__wrapper___COeGm{flex-direction:column;gap:.5rem;display:flex}.styles-module__wrapper___COeGm.styles-module__fullWidth___lVU49{width:100%}.styles-module__label___gfOA7{color:var(--color-fg-heading);align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;display:flex}.styles-module__required___-zOy5{color:var(--color-danger)}.styles-module__inputContainer___wXY53{align-items:center;width:100%;display:flex;position:relative}.styles-module__input___IZDc3{border:1px solid var(--color-border-4);border-radius:var(--radius-input);background:var(--color-bg);width:100%;color:var(--color-fg-text);outline:none;font-family:inherit;font-size:.875rem;transition:all .2s}.styles-module__input___IZDc3[type=password]::-webkit-credentials-auto-fill-button{visibility:hidden!important;opacity:0!important;pointer-events:none!important;appearance:none!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-webkit-strong-password-toggle-button{visibility:hidden!important;opacity:0!important;pointer-events:none!important;appearance:none!important;width:0!important;height:0!important;margin:0!important;padding:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-ms-reveal{visibility:hidden!important;opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-ms-clear{visibility:hidden!important;opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb), .1)}.styles-module__input___IZDc3::placeholder{color:var(--color-fg-muted);opacity:.5}.styles-module__input___IZDc3.styles-module__small___cuGyE{padding:.5rem .75rem;font-size:.8125rem}.styles-module__input___IZDc3.styles-module__medium___JdDPu{padding:.75rem;font-size:.875rem}.styles-module__input___IZDc3.styles-module__large___fMmiG{padding:1rem;font-size:1rem}.styles-module__input___IZDc3.styles-module__default___-eZTG{background:var(--color-bg);border-color:var(--color-border-4)}.styles-module__input___IZDc3.styles-module__filled___EQ5PQ{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3{padding-left:2.5rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3{padding-right:2.5rem}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3.styles-module__small___cuGyE{padding-left:2rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3.styles-module__small___cuGyE{padding-right:2rem}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3.styles-module__large___fMmiG{padding-left:3rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3.styles-module__large___fMmiG{padding-right:3rem}.styles-module__leftIcon___jEW5H,.styles-module__rightIcon___bA3Eo{color:var(--color-fg-muted);pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute}.styles-module__leftIcon___jEW5H{left:.75rem}.styles-module__rightIcon___bA3Eo{right:.75rem}.styles-module__rightIcon___bA3Eo.styles-module__rightIconInteractive___ccypw{pointer-events:auto}.styles-module__inputContainer___wXY53.styles-module__containerSmall___20ICq .styles-module__leftIcon___jEW5H{left:.5rem}.styles-module__inputContainer___wXY53.styles-module__containerSmall___20ICq .styles-module__rightIcon___bA3Eo{right:.5rem}.styles-module__inputContainer___wXY53.styles-module__containerLarge___IztuN .styles-module__leftIcon___jEW5H{left:1rem}.styles-module__inputContainer___wXY53.styles-module__containerLarge___IztuN .styles-module__rightIcon___bA3Eo{right:1rem}.styles-module__input___IZDc3.styles-module__error___946qV{border-color:var(--color-danger)}.styles-module__input___IZDc3.styles-module__error___946qV:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(var(--color-danger-rgb), .1)}.styles-module__input___IZDc3.styles-module__disabled___sJvLd{background:var(--color-bg-3);border-color:var(--color-border-5);color:var(--color-fg-muted);cursor:not-allowed;opacity:.6}.styles-module__errorMessage___5Mn22{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___T2eui{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__container___xeg8O{flex-direction:column;gap:1rem;display:flex}.styles-module__label___qhbKe{color:var(--color-fg-text);font-size:.875rem;font-weight:500}.styles-module__error___O-7AY{color:var(--color-error);font-size:.875rem}.styles-module__pairs___owGV3{flex-direction:column;gap:.75rem;display:flex}.styles-module__pair___G4WFY{grid-template-columns:1fr 2fr auto;align-items:start;gap:.75rem;display:grid}.styles-module__keyInput___wl1M1,.styles-module__valueInput___HiwJ5{flex:1}.styles-module__removeButton___4-X0b{min-width:auto;color:var(--color-error);padding:.5rem}.styles-module__removeButton___4-X0b:hover{background-color:var(--color-error);color:var(--color-primary-fg)}.styles-module__addButton___QFljt{align-self:flex-start}@media (width<=768px){.styles-module__pair___G4WFY{grid-template-columns:1fr}.styles-module__removeButton___4-X0b{align-self:flex-end}}.styles-module__searchContainer___86TGN{width:100%;max-width:400px;position:relative}.styles-module__searchIcon___ZInry{color:var(--color-fg-muted);pointer-events:none;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.styles-module__searchInput___SqZXQ{border:1px solid var(--color-border);border-radius:var(--radius-input);width:100%;color:var(--color-fg-text);background:var(--color-bg-2);padding:.75rem 3rem;font-size:1rem;transition:all .2s}.styles-module__searchInput___SqZXQ:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg);outline:none}.styles-module__searchInput___SqZXQ::placeholder{color:var(--color-fg-muted)}.styles-module__clearBtn___7jExr{width:1.5rem;height:1.5rem;color:var(--color-fg-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.styles-module__clearBtn___7jExr:hover{color:var(--color-fg-text)}@media (width<=768px){.styles-module__searchContainer___86TGN{max-width:100%}}.styles-module__container___nGxdM{flex-direction:column;gap:.75rem;display:flex}.styles-module__toggleContainer___VrsKI{align-items:center;display:flex}.styles-module__toggleButton___IzD6Z{border:1px solid var(--color-border-4);border-radius:var(--radius-button);background:var(--color-bg);color:var(--color-fg-muted);cursor:pointer;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;transition:all .2s;display:flex}.styles-module__toggleButton___IzD6Z:hover{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__toggleButton___IzD6Z.styles-module__enabled___cao0G{background:var(--color-primary);color:var(--color-primary-fg);border-color:var(--color-primary)}.styles-module__toggleButton___IzD6Z.styles-module__enabled___cao0G:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-primary-fg)}.styles-module__optionsContainer___LOzlO{background:var(--color-bg-2);border-radius:var(--radius-card);border:1px solid var(--color-border-4);gap:.5rem;padding:.5rem;display:flex}.styles-module__option___abhnC{border:1px solid var(--color-border-4);border-radius:var(--radius-button);background:var(--color-bg);color:var(--color-fg);cursor:pointer;flex:1;justify-content:center;align-items:center;gap:.375rem;padding:.5rem .875rem;font-size:.875rem;font-weight:500;transition:all .2s;display:flex}.styles-module__option___abhnC:hover{background:var(--color-bg-3);border-color:var(--color-border-3)}.styles-module__option___abhnC.styles-module__active___pqmSi{background:var(--color-primary);color:var(--color-primary-fg);border-color:var(--color-primary)}.styles-module__option___abhnC.styles-module__active___pqmSi:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-primary-fg)}.styles-module__nbSelect___KjxSc{font-family:inherit;font-size:.9375rem;font-weight:600;line-height:1.5rem;display:inline-block;position:relative}.styles-module__selectButton___AKZe4{border-radius:var(--radius-button);cursor:pointer;text-align:left;width:100%;min-width:8rem;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;appearance:none;border:1px solid;outline:none;justify-content:space-between;align-items:center;padding:.4375rem 2.2rem .4375rem 1.125rem;transition:all .15s ease-in-out;display:flex;position:relative}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-fg)}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a:hover:not(:disabled){background-color:var(--color-primary-light);border-color:var(--color-primary-light)}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a:focus,.styles-module__selectButton___AKZe4.styles-module__primary___HU36a.styles-module__open___9AKMb{background-color:var(--color-primary-light);border-color:var(--color-primary-light);box-shadow:0 0 0 .125rem rgba(var(--color-primary-rgb), .25)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP{background-color:var(--color-bg);border-color:var(--color-border-4);color:var(--color-fg-text)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP:hover:not(:disabled){background-color:var(--color-bg-2);border-color:var(--color-primary)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP:focus,.styles-module__selectButton___AKZe4.styles-module__default___LedYP.styles-module__open___9AKMb{background-color:var(--color-bg-2);border-color:var(--color-primary);box-shadow:0 0 0 .125rem rgba(var(--color-primary-rgb), .25)}.styles-module__selectButton___AKZe4:disabled{cursor:not-allowed;opacity:.6}.styles-module__buttonText___QSLO1{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.styles-module__chevronIcon___qAHaD{flex-shrink:0;width:1.5rem;height:1.5rem;transition:transform .15s;position:absolute;right:.41rem}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a .styles-module__chevronIcon___qAHaD{color:var(--color-primary-fg)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP .styles-module__chevronIcon___qAHaD{color:var(--color-fg)}.styles-module__chevronIcon___qAHaD.styles-module__open___9AKMb{transform:rotate(180deg)}.styles-module__optionsPanel___NWAp3{background-color:var(--color-bg);border:1px solid var(--color-border-4);border-radius:var(--radius-button);min-width:100%;box-shadow:0 .5rem 1rem var(--color-shadow);z-index:1000;transform-origin:top;visibility:hidden;pointer-events:none;position:absolute;top:calc(100% + .5rem);left:0;right:0;overflow:hidden}.styles-module__optionsPanel___NWAp3.styles-module__open___9AKMb{visibility:visible;pointer-events:auto;animation:.25s ease-out styles-module__expandDown___eD4lh}.styles-module__optionsPanel___NWAp3.styles-module__closed___bez-q{visibility:hidden;pointer-events:none;animation:.25s ease-out styles-module__collapseUp___dt1E7}@keyframes styles-module__expandDown___eD4lh{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes styles-module__collapseUp___dt1E7{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.styles-module__optionsPanel___NWAp3.styles-module__primary___HU36a{border-color:var(--color-primary)}.styles-module__optionsPanel___NWAp3.styles-module__default___LedYP{border-color:var(--color-border-4)}.styles-module__optionsList___AxhVp{margin:0;padding:.5rem 0;list-style:none}.styles-module__option___t1SSw{cursor:pointer;color:var(--color-fg-text);justify-content:space-between;align-items:center;padding:.75rem 1.125rem;transition:all .15s;display:flex}.styles-module__option___t1SSw:hover{background-color:var(--color-bg-2)}.styles-module__option___t1SSw.styles-module__selected___azD4A{background-color:var(--color-primary);color:var(--color-primary-fg);font-weight:700}@media (prefers-color-scheme:dark){.styles-module__optionsPanel___NWAp3{box-shadow:0 .5rem 1rem var(--color-shadow)}}.styles-module__sliderContainer___lgpaD{flex-direction:column;gap:.5rem;display:flex}.styles-module__sliderContainer___lgpaD.styles-module__fullWidth___ZS8W5{width:100%}.styles-module__labelRow___dkVVM{justify-content:space-between;align-items:center;min-height:1.5rem;margin-bottom:.5rem;display:flex}.styles-module__label___bXGZs{color:var(--color-fg-text);font-size:.875rem;font-weight:500}.styles-module__required___FuyfE{color:var(--color-danger);margin-left:.25rem}.styles-module__sliderWrapper___1Wdti{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:.75rem;width:100%;display:flex}.styles-module__sliderRoot___yzOjR{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex-grow:1;align-items:center;width:100%;padding:.75rem 0;display:flex;position:relative}.styles-module__sliderRoot___yzOjR:active{cursor:grabbing}.styles-module__sliderTrackWrapper___N72WQ{flex-grow:1;display:flex;position:relative}.styles-module__sliderTrack___AltcD{border-radius:var(--radius-badge);background-color:var(--color-bg-3);width:100%;height:.375rem;position:relative;overflow:hidden}.styles-module__sliderRange___U3g0-{background-color:var(--color-primary);border-radius:var(--radius-badge);height:100%;position:absolute}.styles-module__valueIndicator___aLf0I{color:var(--color-primary);text-align:center;flex-shrink:0;min-width:2rem;font-size:.875rem;font-weight:600;line-height:1}.styles-module__iconWrapper___wL-b8{flex-shrink:0;justify-content:center;align-items:center;display:flex}.styles-module__icon___vHsID{width:20px;height:20px;color:var(--color-fg-muted)}.styles-module__errorMessage___qFgGe{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___tgBGl{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__loadingContainer___OMgwS{flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:60vh;display:flex}.styles-module__loadingText___KRZqR{color:var(--color-fg-muted);font-size:1rem}.styles-module__errorContainer___qhAg2{text-align:center;min-height:60vh;color:var(--color-fg-text);flex-direction:column;justify-content:center;align-items:center;gap:2rem;padding:3rem 2rem;display:flex}.styles-module__errorIconWrapper___IHZrN{background:linear-gradient(135deg, rgba(var(--color-error-rgb), .1), rgba(var(--color-error-rgb), .05));border:2px solid rgba(var(--color-error-rgb), .2);border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;animation:2s ease-in-out infinite styles-module__pulse___Lju-z;display:flex}@keyframes styles-module__pulse___Lju-z{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}.styles-module__errorIcon___oGDIP{color:var(--color-error);stroke-width:1.5px}.styles-module__errorContent___F55rQ{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:600px;display:flex}.styles-module__errorTitle___hC8D-{color:var(--color-fg-heading);letter-spacing:-.02em;margin:0;font-size:1.75rem;font-weight:700;line-height:1.2}.styles-module__errorDescription___hZtuP{color:var(--color-fg-muted);max-width:480px;margin:0;font-size:1rem;line-height:1.6}.styles-module__errorDetailsWrapper___-sp8b{width:100%;max-width:600px;margin-top:.5rem}.styles-module__errorDetailsContainer___eywMo{text-align:left;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-bg-2);width:100%;transition:all .2s;overflow:hidden}.styles-module__errorDetailsContainer___eywMo:hover{border-color:var(--color-border-hover);background:var(--color-bg-3)}.styles-module__errorDetailsSummary___hGEoD{cursor:pointer;color:var(--color-fg-muted);-webkit-user-select:none;user-select:none;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;list-style:none;transition:color .2s}.styles-module__errorDetailsSummary___hGEoD:hover{color:var(--color-fg-text)}.styles-module__errorDetailsSummary___hGEoD::-webkit-details-marker{display:none}.styles-module__errorDetailsSummary___hGEoD:before{content:"▶";margin-right:.5rem;font-size:.75rem;transition:transform .2s;display:inline-block}.styles-module__errorDetailsContainer___eywMo[open] .styles-module__errorDetailsSummary___hGEoD:before{transform:rotate(90deg)}.styles-module__errorDetails___tzCT-{background:var(--color-bg-3);border-top:1px solid var(--color-border);max-width:100%;color:var(--color-fg-muted);white-space:pre-wrap;word-break:break-word;margin:0;padding:1rem 1.25rem;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:.8125rem;line-height:1.6;overflow-x:auto}.styles-module__errorActions___gtqYw{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.styles-module__retryButton___TA4jm{border-radius:var(--radius-button);background:var(--color-primary);color:var(--color-primary-fg);cursor:pointer;box-shadow:0 2px 8px var(--color-shadow);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 2rem;font-size:.9375rem;font-weight:500;transition:all .2s;display:inline-flex}.styles-module__retryButton___TA4jm:hover{box-shadow:0 4px 16px var(--color-shadow);background:var(--color-primary-light);color:var(--color-primary-fg);transform:translateY(-2px)}.styles-module__retryButton___TA4jm:active{box-shadow:0 2px 8px var(--color-shadow);transform:translateY(0)}.styles-module__retryButtonIcon___vzfp-{font-size:1.125rem;line-height:1;transition:transform .3s;display:inline-block}.styles-module__retryButton___TA4jm:hover .styles-module__retryButtonIcon___vzfp-{transform:rotate(180deg)}.styles-module__clearLocalDataButton___T3B-K{border-radius:var(--radius-button);color:var(--color-fg-muted);border:1px solid var(--color-border-4);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:500;transition:all .2s;display:inline-flex}.styles-module__clearLocalDataButton___T3B-K:hover{color:var(--color-fg-text);border-color:var(--color-border-3);background:var(--color-bg-secondary)}.styles-module__wrapper___jXPV3{flex-direction:column;gap:.5rem;display:flex}.styles-module__wrapper___jXPV3.styles-module__fullWidth___eKyGB{width:100%}.styles-module__label___MyTeo{color:var(--color-fg-heading);align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;display:flex}.styles-module__required___TV-m8{color:var(--color-danger)}.styles-module__inputContainer___VvGBl{align-items:flex-start;width:100%;display:flex;position:relative}.styles-module__textarea___AjX9N{border:1px solid var(--color-border-4);border-radius:var(--radius-input);background:var(--color-bg);width:100%;color:var(--color-fg-text);resize:vertical;outline:none;min-height:4rem;font-family:inherit;font-size:.875rem;transition:all .2s}.styles-module__textarea___AjX9N:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb), .1)}.styles-module__textarea___AjX9N::placeholder{color:var(--color-fg-muted);opacity:.5}.styles-module__textarea___AjX9N.styles-module__small___zMx0G{min-height:3rem;padding:.5rem .75rem;font-size:.8125rem}.styles-module__textarea___AjX9N.styles-module__medium___tO2Lb{min-height:4rem;padding:.75rem;font-size:.875rem}.styles-module__textarea___AjX9N.styles-module__large___3eU2g{min-height:5rem;padding:1rem;font-size:1rem}.styles-module__textarea___AjX9N.styles-module__default___vsSxX{background:var(--color-bg);border-color:var(--color-border-4)}.styles-module__textarea___AjX9N.styles-module__filled___TPQgI{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__inputContainer___VvGBl .styles-module__leftIcon___FHp2R{color:var(--color-fg-muted);pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;top:.75rem;left:.75rem}.styles-module__inputContainer___VvGBl .styles-module__rightIcon___dkyvP{color:var(--color-fg-muted);pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;top:.75rem;right:.75rem}.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__small___zMx0G+.styles-module__leftIcon___FHp2R,.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__small___zMx0G+.styles-module__rightIcon___dkyvP{top:.5rem}.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__large___3eU2g+.styles-module__leftIcon___FHp2R,.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__large___3eU2g+.styles-module__rightIcon___dkyvP{top:1rem}.styles-module__textarea___AjX9N.styles-module__error___d8gLK{border-color:var(--color-danger)}.styles-module__textarea___AjX9N.styles-module__error___d8gLK:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(var(--color-danger-rgb), .1)}.styles-module__textarea___AjX9N.styles-module__disabled___IzbfE{background:var(--color-bg-3);border-color:var(--color-border-5);color:var(--color-fg-muted);cursor:not-allowed;opacity:.6}.styles-module__errorText___Nom7x{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___97Def{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__virtualList___pM6rN{contain:strict;width:100%;padding-bottom:300px;position:relative;overflow:auto}.styles-module__emptyContainer___rm938{height:100%;color:var(--color-fg-muted);justify-content:center;align-items:center;display:flex}.styles-module__virtualListInner___HxRzc{width:100%;position:relative}.styles-module__virtualListItems___p19-a{width:100%;position:absolute;top:0;left:0}.styles-module__loadingMore___zAdLM{color:var(--color-fg-muted);justify-content:center;align-items:center;gap:.75rem;padding:2rem 0;font-size:.875rem;display:flex}.styles-module__endOfList___5cYFh{color:var(--color-fg-muted);border-top:1px solid var(--color-border-3);justify-content:center;margin-top:1rem;padding:2rem 0;font-size:.875rem;display:flex}.styles-module__endOfList___5cYFh span{background-color:var(--color-bg-2);border-radius:var(--radius-button);padding:.5rem 1rem}.styles-module__virtualList___xmj2v{width:100%;padding-bottom:300px;position:relative;overflow:visible}.styles-module__virtualListInner___quD74{width:100%;position:relative}.styles-module__virtualListItems___-Muml{width:100%;position:absolute;top:0;left:0}.styles-module__virtualListRow___h3pzX{width:100%}.styles-module__emptyContainer___LIy8r{color:var(--color-fg-muted);justify-content:center;align-items:center;padding:2rem 0;display:flex}.styles-module__loadingMore___Mzf-p{color:var(--color-fg-muted);justify-content:center;align-items:center;padding:1.5rem 0;display:flex}.styles-module__endOfList___g5G--{color:var(--color-fg-muted);border-top:1px solid var(--color-border-3);justify-content:center;padding:1.5rem 0;display:flex}.styles-module__sidebar___BMt0j{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.styles-module__sidebarContent___iAwiw{flex-direction:column;height:100%;min-height:0;padding-top:1rem;display:flex;overflow:hidden}.styles-module__menuWrapper___DKuEv{flex:1;min-height:0;overflow:hidden auto}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar{width:0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-track{background:0 0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-thumb{background:0 0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-thumb:hover{background:0 0}.styles-module__sidebar___BMt0j a{margin-left:0}.styles-module__sidebar___BMt0j .ps-sidebar-root{background-color:var(--color-bg-2)!important;border-right:1px solid var(--color-separator)!important;flex-direction:column!important;height:100%!important;min-height:0!important;display:flex!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-sidebar-container{background-color:var(--color-bg-2)!important;height:100%!important;min-height:0!important;color:var(--color-fg-text)!important;flex-direction:column!important;flex:1!important;display:flex!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-menu-button{border-radius:var(--radius-button)!important;color:var(--color-fg-text)!important;margin:.125rem .5rem!important;padding:.5rem .75rem!important;font-size:.875rem!important;transition:all .2s!important}.styles-module__sidebar___BMt0j .ps-menu-button:hover{background-color:var(--color-bg-3)!important;color:var(--color-fg-text)!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active{background-color:var(--color-primary)!important;color:var(--color-primary-fg)!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active *,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-icon,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-label{color:var(--color-primary-fg)!important}.styles-module__sidebar___BMt0j .ps-menu-icon{width:1.25rem!important;height:1.25rem!important;color:var(--color-fg-text)!important;margin-right:.5rem!important}.styles-module__sidebar___BMt0j .ps-submenu-content{background-color:var(--color-bg-3)!important;padding-left:.5rem!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-submenu-content .ps-menu-button{margin:.125rem .25rem!important;padding:.375rem .5rem!important;font-size:.8125rem!important;transition:all .2s!important}.styles-module__sidebar___BMt0j .ps-menu-label{color:var(--color-fg-text)!important;font-weight:500!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active span,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active div,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-icon,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-label{color:var(--color-primary-fg)!important}.styles-module__logoutContainer___7NwBL{border-top:1px solid var(--color-separator);writing-mode:horizontal-tb;text-orientation:mixed;flex-shrink:0;margin-top:auto;padding:.5rem}.styles-module__logoutButton___rfD6u{border-radius:var(--radius-button);width:100%;color:var(--color-fg-text);cursor:pointer;white-space:nowrap;writing-mode:horizontal-tb;text-orientation:mixed;direction:ltr;background:0 0;border:none;justify-content:flex-start;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.875rem;transition:background-color .2s,color .2s;display:flex;overflow:hidden}.styles-module__logoutButton___rfD6u span{opacity:1;max-width:200px;transition:opacity .3s,max-width .3s;display:inline-block;writing-mode:horizontal-tb!important;text-orientation:mixed!important;direction:ltr!important;transform:none!important}.styles-module__logoutButton___rfD6u .styles-module__hiddenText___z183T{opacity:0;width:0;max-width:0;overflow:hidden}.styles-module__logoutButton___rfD6u .styles-module__visibleText___lfsv-{opacity:1;width:auto;max-width:200px}.styles-module__logoutButton___rfD6u:hover{background-color:var(--color-bg-3)}.styles-module__logoutButton___rfD6u:active{transform:scale(.98)}.styles-module__logoutButton___rfD6u svg{color:inherit;flex-shrink:0}.styles-module__footer___g-hY7{background:var(--color-bg-2);width:100%;padding:0 2rem}.styles-module__footerContent___Oen5n{justify-content:space-between;align-items:center;max-width:100%;margin:0 auto;display:flex}.styles-module__copyright___1R2o3{color:var(--color-fg-text);font-size:.875rem}.styles-module__links___dQyvB{gap:1.5rem;display:flex}.styles-module__link___UWfyK{color:var(--color-fg-text);font-size:.875rem;text-decoration:none;transition:color .3s}.styles-module__link___UWfyK:hover{color:var(--color-primary)}@media (width<=768px){.styles-module__footerContent___Oen5n{flex-direction:column;gap:1rem}.styles-module__links___dQyvB{gap:1rem}}.styles-module__header___4Uc8h{width:100%;padding:.5rem 2rem;display:flex}.styles-module__header___4Uc8h>:first-child{flex:1;justify-content:flex-start;align-items:center;display:flex}.styles-module__header___4Uc8h>:last-child{flex:1;justify-content:flex-end;align-items:center;display:flex}.styles-module__layout___ZQKU7{background:var(--color-bg);flex-direction:column;width:100%;height:100vh;display:flex;position:relative}.styles-module__header___XIaFb{z-index:100;background:var(--color-bg);width:100%;box-shadow:0 .125rem .25rem 0 var(--color-shadow);position:fixed;top:0}.styles-module__footer___r8ASO{z-index:100;width:100%;position:fixed;bottom:0}.styles-module__mainWrapper___i4tEI{flex:1;display:flex;position:relative}.styles-module__sidebar___ij-8-{position:fixed;top:0}.styles-module__content___mTgUr{background:var(--color-bg);flex:1;min-height:calc(100vh - 10rem);margin:0;padding-top:0;padding-bottom:0;overflow:hidden auto}@media (width<=768px){.styles-module__content___mTgUr{width:100%}.styles-module__sidebar___ij-8-{z-index:999;height:100vh;position:fixed;top:0;left:0}}.styles-module__mainWrapper___AiTAw{flex-direction:row;flex:1;display:flex;position:relative}.styles-module__sidebarContainer___X4yj8{z-index:99;flex-direction:column;display:flex;position:fixed;left:0;overflow:hidden}.styles-module__sidebar___VQTlH{flex-shrink:0;top:0;left:0}.styles-module__content___htJlH{background:var(--color-bg);flex:1;margin:0;padding-top:0;padding-bottom:0;overflow:hidden auto}@media (width<=1024px){.styles-module__content___htJlH{padding:1.5rem}}@media (width<=768px){.styles-module__content___htJlH{width:100%}.styles-module__sidebar___VQTlH{z-index:999;height:100vh;position:fixed;top:0;left:0}}.styles-module__wavesWrapper___TK7DI{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__wavesWrapper___TK7DI>*{pointer-events:auto}.styles-module__squaresWrapper___P25uF{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__squaresWrapper___P25uF>*{pointer-events:auto}.styles-module__letterGlitchWrapper___KWtWU{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__letterGlitchWrapper___KWtWU>*{pointer-events:auto}.styles-module__pixelBlastWrapper___YptHh{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__pixelBlastWrapper___YptHh>*{pointer-events:auto}.style-module__container___Hh3-c{width:100%;height:100%;position:relative;overflow:hidden}
2
2
  /*$vite$:1*/`)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
3
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var i="list",f="item";function P(e){const t=Object.keys(e);function r(u){return Object.fromEntries(Object.entries(e).map(([c,C])=>[c,C[u]]))}function n(u){return e[u]}return{Values:t,pickMap:r,get:n}}function b(e,t){return e.pickMap(t)}function y(e,t,r){const n=[...e,t,f,r];return Object.assign((...c)=>[...n,...c],{withPrefix(...c){return y([...c,...e],t,r)},get getPrefix(){return[...n]}})}function a(e,t){return y([],e,t)}function s(e,t,r){const n=[...e,t,i,r];return Object.assign([...n],{withPrefix(...u){return s([...u,...e],t,r)},get getPrefix(){return[...n]}})}function o(e,t){return s([],e,t)}function K(e,t){return{list:e,item:t,withPrefix(...r){return K(e.withPrefix(...r),t.withPrefix(...r))}}}function g(...e){return e}function l(e,t){return K(o(e,t),a(e,t))}exports.CACHE_ITEM=f;exports.CACHE_LIST=i;exports.createItemKey=a;exports.createKey=g;exports.createListKey=o;exports.createQueryKeys=l;exports.defineEnum=P;exports.enumPickMap=b;
3
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var i="list",f="item";function P(e){const r=Object.keys(e);function n(t){return Object.fromEntries(Object.entries(e).map(([c,s])=>[c,s[t]]))}function u(t){return e[t]}return{Values:r,pickMap:n,get:u}}function g(e,r){return e.pickMap(r)}function a(e,r,n){const u=[...e,r,f,n],t=((...c)=>[...u,...c]);return Object.defineProperty(t,"withPrefix",{value(...c){return a([...c,...e],r,n)},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"getPrefix",{get(){return[...u]},enumerable:!1,configurable:!0}),t}function l(e,r){return a([],e,r)}function o(e,r,n){const u=[...e,r,i,n],t=[...u];return Object.defineProperty(t,"withPrefix",{value(...c){return o([...c,...e],r,n)},enumerable:!1,writable:!0,configurable:!0}),Object.defineProperty(t,"getPrefix",{get(){return[...u]},enumerable:!1,configurable:!0}),t}function y(e,r){return o([],e,r)}function b(e,r){return{list:e,item:r,withPrefix(...n){return b(e.withPrefix(...n),r.withPrefix(...n))}}}function K(...e){return e}function C(e,r){return b(y(e,r),l(e,r))}exports.CACHE_ITEM=f;exports.CACHE_LIST=i;exports.createItemKey=l;exports.createKey=K;exports.createListKey=y;exports.createQueryKeys=C;exports.defineEnum=P;exports.enumPickMap=g;
4
4
 
5
5
  //# sourceMappingURL=constants.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.cjs","names":[],"sources":["../src/constants/caches.ts","../src/constants/enums.ts","../src/constants/query.itemkeys.ts","../src/constants/query.listkeys.ts","../src/constants/querykeys.ts"],"sourcesContent":["/** 列表 key 片段。List key segment. */\nconst CACHE_LIST = \"list\";\n\n/** 单条 key 片段。Item key segment. */\nconst CACHE_ITEM = \"item\";\n\nexport { CACHE_LIST, CACHE_ITEM };\n","type EnumMetaMap = Record<string, Record<PropertyKey, unknown>>;\n\ntype DefinedEnum<M extends EnumMetaMap> = {\n Values: readonly (keyof M)[];\n pickMap<P extends keyof M[keyof M]>(prop: P): { [K in keyof M]: M[K][P] };\n get<K extends keyof M>(key: K): M[K];\n};\n\ntype EnumInferMeta<E> = E extends DefinedEnum<infer M> ? M : never;\n\ntype EnumValue<E extends { Values: readonly PropertyKey[] }> = E[\"Values\"][number];\n\nfunction defineEnum<const M extends EnumMetaMap>(metaMap: M): DefinedEnum<M> {\n type Key = keyof M;\n const Values = Object.keys(metaMap) as Key[];\n function pickMap<P extends keyof M[Key]>(prop: P) {\n return Object.fromEntries(Object.entries(metaMap).map(([k, v]) => [k, v[prop]])) as {\n [K in Key]: M[K][P];\n };\n }\n function get<K extends Key>(key: K): M[K] {\n return metaMap[key];\n }\n return { Values, pickMap, get };\n}\n\nfunction enumPickMap<M extends EnumMetaMap, P extends keyof M[keyof M]>(e: DefinedEnum<M>, prop: P): { [K in keyof M]: M[K][P] } {\n return e.pickMap(prop) as { [K in keyof M]: M[K][P] };\n}\n\nexport { defineEnum, enumPickMap };\nexport type { EnumMetaMap, DefinedEnum, EnumInferMeta, EnumValue };\n","/**\n * 单条 query key 工厂(支持一个或多个 id,可链式 .withPrefix)\n * Item query key factories (one or more ids, chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_ITEM } from \"./caches\";\n\n/**\n * 链式单条 key 类型:可调用 (...ids) => QueryKey,且带 withPrefix、getPrefix。\n * Chainable item key type: callable (...ids) => QueryKey, with withPrefix() and getPrefix.\n */\ntype ItemKeyChainable = ((...ids: string[]) => QueryKey) & {\n withPrefix(...prefix: unknown[]): ItemKeyChainable;\n /** 不含 id 的前缀,用于 invalidation 等。Prefix without ids, e.g. for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildItemKeyChainable(prefix: unknown[], domain: string, subDomain: string): ItemKeyChainable {\n const base: QueryKey = [...prefix, domain, CACHE_ITEM, subDomain];\n const fn = (...ids: string[]): QueryKey => [...base, ...ids];\n return Object.assign(fn, {\n withPrefix(...more: unknown[]): ItemKeyChainable {\n return buildItemKeyChainable([...more, ...prefix], domain, subDomain);\n },\n get getPrefix(): QueryKey {\n return [...base];\n },\n }) as ItemKeyChainable;\n}\n\n/**\n * 创建「单条」query key 工厂(可链式 .withPrefix):支持传入一个或多个 id,返回 [domain, CACHE_ITEM, subDomain, ...ids]\n * Creates an item query key factory (chainable .withPrefix): accepts one or more ids, returns [domain, CACHE_ITEM, subDomain, ...ids].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 可调用的 key 工厂,带 withPrefix 可链式加前缀。Callable key factory with withPrefix for chaining.\n * @example\n * ```ts\n * const getKey = createItemKey(\"catalog\", \"category\");\n * getKey(\"abc\");\n * * => [\"catalog\", \"item\", \"category\", \"abc\"]\n * getKey.getPrefix\n * * => [\"catalog\", \"item\", \"category\"]\n * createItemKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"item\", \"category\"]\n * ```\n */\nfunction createItemKey(domain: string, subDomain: string): ItemKeyChainable {\n return buildItemKeyChainable([], domain, subDomain);\n}\n\nexport { createItemKey };\nexport type { ItemKeyChainable };\n","/**\n * 列表 query key 工厂(可链式 .withPrefix)\n * List query key factories (chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_LIST } from \"./caches\";\n\n/**\n * 链式列表 key 类型:本身即 QueryKey(数组),且带 withPrefix、getPrefix。\n * Chainable list key type: is a QueryKey (array) and has withPrefix(), getPrefix.\n */\ntype ListKeyChainable = QueryKey & {\n withPrefix(...prefix: unknown[]): ListKeyChainable;\n /** 列表 key 的前缀(即完整 list key,用于 invalidation 等)。Prefix (full list key) for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildListKeyChainable(prefix: unknown[], domain: string, subDomain: string): ListKeyChainable {\n const key: QueryKey = [...prefix, domain, CACHE_LIST, subDomain];\n return Object.assign([...key], {\n withPrefix(...more: unknown[]): ListKeyChainable {\n return buildListKeyChainable([...more, ...prefix], domain, subDomain);\n },\n get getPrefix(): QueryKey {\n return [...key];\n },\n }) as ListKeyChainable;\n}\n\n/**\n * 创建「列表」query key(可链式 .withPrefix):[domain, CACHE_LIST, subDomain]\n * Creates a list query key (chainable .withPrefix): [domain, CACHE_LIST, subDomain].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 列表 query key(数组),带 withPrefix 可链式加前缀。List query key (array) with withPrefix for chaining.\n * @example\n * ```ts\n * const key = createListKey(\"catalog\", \"category\");\n * * key => [\"catalog\", \"list\", \"category\"]\n * key.getPrefix\n * * => [\"catalog\", \"list\", \"category\"]\n * createListKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"list\", \"category\"]\n * ```\n */\nfunction createListKey(domain: string, subDomain: string): ListKeyChainable {\n return buildListKeyChainable([], domain, subDomain);\n}\n\nexport { createListKey };\nexport type { ListKeyChainable };\n","/**\n * 通用 React Query key 工厂(公用包层)\n * Universal React Query key factories for shared use.\n *\n * @example\n * ```ts\n * import { createListKey, createItemKey } from \"@/constants\";\n *\n * const CATALOG_CATEGORY_LIST = createListKey(\"catalog\", \"category\");\n * const CATALOG_CATEGORY = createItemKey(\"catalog\", \"category\");\n *\n * useQuery({ queryKey: CATALOG_CATEGORY_LIST, queryFn: ... });\n * useQuery({ queryKey: CATALOG_CATEGORY(id), queryFn: ... });\n * ```\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { ItemKeyChainable } from \"./query.itemkeys\";\nimport type { ListKeyChainable } from \"./query.listkeys\";\n\nimport { createItemKey } from \"./query.itemkeys\";\nimport { createListKey } from \"./query.listkeys\";\n\n/** 含 list / item 且可链式 withPrefix 的 bundle 类型 */\ntype QueryKeysBundle = {\n list: ListKeyChainable;\n item: ItemKeyChainable;\n withPrefix(...prefix: unknown[]): QueryKeysBundle;\n};\n\nfunction createQueryKeysBundle(list: ListKeyChainable, item: ItemKeyChainable): QueryKeysBundle {\n return {\n list,\n item,\n withPrefix(...prefix: unknown[]) {\n return createQueryKeysBundle(list.withPrefix(...prefix), item.withPrefix(...prefix));\n },\n };\n}\n\n/**\n * 创建自定义 query key(任意片段,用于 stats 等)\n * Creates a custom query key from arbitrary segments (e.g. for stats).\n *\n * @param segments - 任意片段(字符串或其它)。Arbitrary segments (strings or other).\n * @returns 由片段组成的 query key。Query key composed of the segments.\n * @example\n * ```ts\n * const key = createKey(\"catalog\", \"stats\", \"category\", \"count\");\n * * key => [\"catalog\", \"stats\", \"category\", \"count\"]\n * ```\n */\nfunction createKey(...segments: unknown[]): QueryKey {\n return segments;\n}\n\n/**\n * 根据同一 domain + subDomain 生成 list key 与 item key 工厂\n * Returns both list key and item key factory for the given domain and subDomain.\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 含 list、item 及 withPrefix 的 bundle,可链式加前缀。Bundle with list, item, and chainable withPrefix.\n * @example\n * ```ts\n * const { list, item } = createQueryKeys(\"catalog\", \"category\");\n * * list => [\"catalog\", \"list\", \"category\"]\n * * item(\"id-1\") => [\"catalog\", \"item\", \"category\", \"id-1\"]\n * const withApi = createQueryKeys(\"catalog\", \"category\").withPrefix(\"api\");\n * * withApi.list => [\"api\", \"catalog\", \"list\", \"category\"]\n * * withApi.item(\"id-1\") => [\"api\", \"catalog\", \"item\", \"category\", \"id-1\"]\n * ```\n */\nfunction createQueryKeys(domain: string, subDomain: string): QueryKeysBundle {\n return createQueryKeysBundle(createListKey(domain, subDomain), createItemKey(domain, subDomain));\n}\n\nexport { createKey, createQueryKeys };\nexport type { QueryKeysBundle };\n"],"mappings":"mEACA,IAAM,EAAa,OAGb,EAAa,OCQnB,SAAS,EAAwC,EAA4B,CAE3E,MAAM,EAAS,OAAO,KAAK,CAAA,EAC3B,SAAS,EAAgC,EAAS,CAChD,OAAO,OAAO,YAAY,OAAO,QAAQ,CAAA,EAAS,IAAA,CAAK,CAAC,EAAG,CAAA,IAAO,CAAC,EAAG,EAAE,CAAA,CAAA,CAAM,CAAC,EAIjF,SAAS,EAAmB,EAAc,CACxC,OAAO,EAAQ,CAAA,EAEjB,MAAO,CAAE,OAAA,EAAQ,QAAA,EAAS,IAAA,GAG5B,SAAS,EAA+D,EAAmB,EAAsC,CAC/H,OAAO,EAAE,QAAQ,CAAA,ECTnB,SAAS,EAAsB,EAAmB,EAAgB,EAAqC,CACrG,MAAM,EAAiB,CAAC,GAAG,EAAQ,EAAQ,EAAY,GAEvD,OAAO,OAAO,OADR,IAAS,IAA4B,CAAC,GAAG,EAAM,GAAG,CAAA,EAC/B,CACvB,cAAc,EAAmC,CAC/C,OAAO,EAAsB,CAAC,GAAG,EAAM,GAAG,CAAA,EAAS,EAAQ,CAAA,GAE7D,IAAI,WAAsB,CACxB,MAAO,CAAC,GAAG,CAAA,GAEd,EAqBH,SAAS,EAAc,EAAgB,EAAqC,CAC1E,OAAO,EAAsB,CAAA,EAAI,EAAQ,CAAA,EChC3C,SAAS,EAAsB,EAAmB,EAAgB,EAAqC,CACrG,MAAM,EAAgB,CAAC,GAAG,EAAQ,EAAQ,EAAY,GACtD,OAAO,OAAO,OAAO,CAAC,GAAG,CAAA,EAAM,CAC7B,cAAc,EAAmC,CAC/C,OAAO,EAAsB,CAAC,GAAG,EAAM,GAAG,CAAA,EAAS,EAAQ,CAAA,GAE7D,IAAI,WAAsB,CACxB,MAAO,CAAC,GAAG,CAAA,GAEd,EAoBH,SAAS,EAAc,EAAgB,EAAqC,CAC1E,OAAO,EAAsB,CAAA,EAAI,EAAQ,CAAA,ECnB3C,SAAS,EAAsB,EAAwB,EAAyC,CAC9F,MAAO,CACL,KAAA,EACA,KAAA,EACA,cAAc,EAAmB,CAC/B,OAAO,EAAsB,EAAK,WAAW,GAAG,CAAA,EAAS,EAAK,WAAW,GAAG,CAAA,CAAO,IAiBzF,SAAS,KAAa,EAA+B,CACnD,OAAO,EAoBT,SAAS,EAAgB,EAAgB,EAAoC,CAC3E,OAAO,EAAsB,EAAc,EAAQ,CAAA,EAAY,EAAc,EAAQ,CAAA,CAAU"}
1
+ {"version":3,"file":"constants.cjs","names":[],"sources":["../src/constants/caches.ts","../src/constants/enums.ts","../src/constants/query.itemkeys.ts","../src/constants/query.listkeys.ts","../src/constants/querykeys.ts"],"sourcesContent":["/** 列表 key 片段。List key segment. */\nconst CACHE_LIST = \"list\";\n\n/** 单条 key 片段。Item key segment. */\nconst CACHE_ITEM = \"item\";\n\nexport { CACHE_LIST, CACHE_ITEM };\n","type EnumMetaMap = Record<string, Record<PropertyKey, unknown>>;\n\ntype DefinedEnum<M extends EnumMetaMap> = {\n Values: readonly (keyof M)[];\n pickMap<P extends keyof M[keyof M]>(prop: P): { [K in keyof M]: M[K][P] };\n get<K extends keyof M>(key: K): M[K];\n};\n\ntype EnumInferMeta<E> = E extends DefinedEnum<infer M> ? M : never;\n\ntype EnumValue<E extends { Values: readonly PropertyKey[] }> = E[\"Values\"][number];\n\nfunction defineEnum<const M extends EnumMetaMap>(metaMap: M): DefinedEnum<M> {\n type Key = keyof M;\n const Values = Object.keys(metaMap) as Key[];\n function pickMap<P extends keyof M[Key]>(prop: P) {\n return Object.fromEntries(Object.entries(metaMap).map(([k, v]) => [k, v[prop]])) as {\n [K in Key]: M[K][P];\n };\n }\n function get<K extends Key>(key: K): M[K] {\n return metaMap[key];\n }\n return { Values, pickMap, get };\n}\n\nfunction enumPickMap<M extends EnumMetaMap, P extends keyof M[keyof M]>(e: DefinedEnum<M>, prop: P): { [K in keyof M]: M[K][P] } {\n return e.pickMap(prop) as { [K in keyof M]: M[K][P] };\n}\n\nexport { defineEnum, enumPickMap };\nexport type { EnumMetaMap, DefinedEnum, EnumInferMeta, EnumValue };\n","/**\n * 单条 query key 工厂(支持一个或多个 id,可链式 .withPrefix)\n * Item query key factories (one or more ids, chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_ITEM } from \"./caches\";\n\n/**\n * 链式单条 key 类型:可调用 (...ids) => QueryKey,且带 withPrefix、getPrefix。\n * Chainable item key type: callable (...ids) => QueryKey, with withPrefix() and getPrefix.\n */\ntype ItemKeyChainable = ((...ids: string[]) => QueryKey) & {\n withPrefix(...prefix: unknown[]): ItemKeyChainable;\n /** 不含 id 的前缀,用于 invalidation 等。Prefix without ids, e.g. for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildItemKeyChainable(prefix: unknown[], domain: string, subDomain: string): ItemKeyChainable {\n const base: QueryKey = [...prefix, domain, CACHE_ITEM, subDomain];\n const fn = ((...ids: string[]): QueryKey => [...base, ...ids]) as ItemKeyChainable;\n\n Object.defineProperty(fn, \"withPrefix\", {\n value(...more: unknown[]): ItemKeyChainable {\n return buildItemKeyChainable([...more, ...prefix], domain, subDomain);\n },\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n Object.defineProperty(fn, \"getPrefix\", {\n get(): QueryKey {\n return [...base];\n },\n enumerable: false,\n configurable: true,\n });\n\n return fn;\n}\n\n/**\n * 创建「单条」query key 工厂(可链式 .withPrefix):支持传入一个或多个 id,返回 [domain, CACHE_ITEM, subDomain, ...ids]\n * Creates an item query key factory (chainable .withPrefix): accepts one or more ids, returns [domain, CACHE_ITEM, subDomain, ...ids].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 可调用的 key 工厂,带 withPrefix 可链式加前缀。Callable key factory with withPrefix for chaining.\n * @example\n * ```ts\n * const getKey = createItemKey(\"catalog\", \"category\");\n * getKey(\"abc\");\n * * => [\"catalog\", \"item\", \"category\", \"abc\"]\n * getKey.getPrefix\n * * => [\"catalog\", \"item\", \"category\"]\n * createItemKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"item\", \"category\"]\n * ```\n */\nfunction createItemKey(domain: string, subDomain: string): ItemKeyChainable {\n return buildItemKeyChainable([], domain, subDomain);\n}\n\nexport { createItemKey };\nexport type { ItemKeyChainable };\n","/**\n * 列表 query key 工厂(可链式 .withPrefix)\n * List query key factories (chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_LIST } from \"./caches\";\n\n/**\n * 链式列表 key 类型:本身即 QueryKey(数组),且带 withPrefix、getPrefix。\n * Chainable list key type: is a QueryKey (array) and has withPrefix(), getPrefix.\n */\ntype ListKeyChainable = QueryKey & {\n withPrefix(...prefix: unknown[]): ListKeyChainable;\n /** 列表 key 的前缀(即完整 list key,用于 invalidation 等)。Prefix (full list key) for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildListKeyChainable(prefix: unknown[], domain: string, subDomain: string): ListKeyChainable {\n const key: QueryKey = [...prefix, domain, CACHE_LIST, subDomain];\n const arr = [...key];\n\n // 必须不可枚举:TanStack Query v5 的 partialMatchKey 会对 filter 的 queryKey 做 Object.keys;\n // 若 withPrefix/getPrefix 可枚举,invalidateQueries({ queryKey: listKey }) 永远无法匹配 [...listKey, filter]的缓存 key。\n Object.defineProperty(arr, \"withPrefix\", {\n value(...more: unknown[]): ListKeyChainable {\n return buildListKeyChainable([...more, ...prefix], domain, subDomain);\n },\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n Object.defineProperty(arr, \"getPrefix\", {\n get(): QueryKey {\n return [...key];\n },\n enumerable: false,\n configurable: true,\n });\n\n return arr as unknown as ListKeyChainable;\n}\n\n/**\n * 创建「列表」query key(可链式 .withPrefix):[domain, CACHE_LIST, subDomain]\n * Creates a list query key (chainable .withPrefix): [domain, CACHE_LIST, subDomain].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 列表 query key(数组),带 withPrefix 可链式加前缀。List query key (array) with withPrefix for chaining.\n * @example\n * ```ts\n * const key = createListKey(\"catalog\", \"category\");\n * * key => [\"catalog\", \"list\", \"category\"]\n * key.getPrefix\n * * => [\"catalog\", \"list\", \"category\"]\n * createListKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"list\", \"category\"]\n * ```\n */\nfunction createListKey(domain: string, subDomain: string): ListKeyChainable {\n return buildListKeyChainable([], domain, subDomain);\n}\n\nexport { createListKey };\nexport type { ListKeyChainable };\n","/**\n * 通用 React Query key 工厂(公用包层)\n * Universal React Query key factories for shared use.\n *\n * @example\n * ```ts\n * import { createListKey, createItemKey } from \"@/constants\";\n *\n * const CATALOG_CATEGORY_LIST = createListKey(\"catalog\", \"category\");\n * const CATALOG_CATEGORY = createItemKey(\"catalog\", \"category\");\n *\n * useQuery({ queryKey: CATALOG_CATEGORY_LIST, queryFn: ... });\n * useQuery({ queryKey: CATALOG_CATEGORY(id), queryFn: ... });\n * ```\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { ItemKeyChainable } from \"./query.itemkeys\";\nimport type { ListKeyChainable } from \"./query.listkeys\";\n\nimport { createItemKey } from \"./query.itemkeys\";\nimport { createListKey } from \"./query.listkeys\";\n\n/** 含 list / item 且可链式 withPrefix 的 bundle 类型 */\ntype QueryKeysBundle = {\n list: ListKeyChainable;\n item: ItemKeyChainable;\n withPrefix(...prefix: unknown[]): QueryKeysBundle;\n};\n\nfunction createQueryKeysBundle(list: ListKeyChainable, item: ItemKeyChainable): QueryKeysBundle {\n return {\n list,\n item,\n withPrefix(...prefix: unknown[]) {\n return createQueryKeysBundle(list.withPrefix(...prefix), item.withPrefix(...prefix));\n },\n };\n}\n\n/**\n * 创建自定义 query key(任意片段,用于 stats 等)\n * Creates a custom query key from arbitrary segments (e.g. for stats).\n *\n * @param segments - 任意片段(字符串或其它)。Arbitrary segments (strings or other).\n * @returns 由片段组成的 query key。Query key composed of the segments.\n * @example\n * ```ts\n * const key = createKey(\"catalog\", \"stats\", \"category\", \"count\");\n * * key => [\"catalog\", \"stats\", \"category\", \"count\"]\n * ```\n */\nfunction createKey(...segments: unknown[]): QueryKey {\n return segments;\n}\n\n/**\n * 根据同一 domain + subDomain 生成 list key 与 item key 工厂\n * Returns both list key and item key factory for the given domain and subDomain.\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 含 list、item 及 withPrefix 的 bundle,可链式加前缀。Bundle with list, item, and chainable withPrefix.\n * @example\n * ```ts\n * const { list, item } = createQueryKeys(\"catalog\", \"category\");\n * * list => [\"catalog\", \"list\", \"category\"]\n * * item(\"id-1\") => [\"catalog\", \"item\", \"category\", \"id-1\"]\n * const withApi = createQueryKeys(\"catalog\", \"category\").withPrefix(\"api\");\n * * withApi.list => [\"api\", \"catalog\", \"list\", \"category\"]\n * * withApi.item(\"id-1\") => [\"api\", \"catalog\", \"item\", \"category\", \"id-1\"]\n * ```\n */\nfunction createQueryKeys(domain: string, subDomain: string): QueryKeysBundle {\n return createQueryKeysBundle(createListKey(domain, subDomain), createItemKey(domain, subDomain));\n}\n\nexport { createKey, createQueryKeys };\nexport type { QueryKeysBundle };\n"],"mappings":"mEACA,IAAM,EAAa,OAGb,EAAa,OCQnB,SAAS,EAAwC,EAA4B,CAE3E,MAAM,EAAS,OAAO,KAAK,CAAA,EAC3B,SAAS,EAAgC,EAAS,CAChD,OAAO,OAAO,YAAY,OAAO,QAAQ,CAAA,EAAS,IAAA,CAAK,CAAC,EAAG,CAAA,IAAO,CAAC,EAAG,EAAE,CAAA,CAAA,CAAM,CAAC,EAIjF,SAAS,EAAmB,EAAc,CACxC,OAAO,EAAQ,CAAA,EAEjB,MAAO,CAAE,OAAA,EAAQ,QAAA,EAAS,IAAA,GAG5B,SAAS,EAA+D,EAAmB,EAAsC,CAC/H,OAAO,EAAE,QAAQ,CAAA,ECTnB,SAAS,EAAsB,EAAmB,EAAgB,EAAqC,CACrG,MAAM,EAAiB,CAAC,GAAG,EAAQ,EAAQ,EAAY,GACjD,GAAA,IAAU,IAA4B,CAAC,GAAG,EAAM,GAAG,CAAA,GAEzD,cAAO,eAAe,EAAI,aAAc,CACtC,SAAS,EAAmC,CAC1C,OAAO,EAAsB,CAAC,GAAG,EAAM,GAAG,CAAA,EAAS,EAAQ,CAAA,GAE7D,WAAY,GACZ,SAAU,GACV,aAAc,GACf,EAED,OAAO,eAAe,EAAI,YAAa,CACrC,KAAgB,CACd,MAAO,CAAC,GAAG,CAAA,GAEb,WAAY,GACZ,aAAc,GACf,EAEM,EAqBT,SAAS,EAAc,EAAgB,EAAqC,CAC1E,OAAO,EAAsB,CAAA,EAAI,EAAQ,CAAA,EC3C3C,SAAS,EAAsB,EAAmB,EAAgB,EAAqC,CACrG,MAAM,EAAgB,CAAC,GAAG,EAAQ,EAAQ,EAAY,GAChD,EAAM,CAAC,GAAG,CAAA,EAIhB,cAAO,eAAe,EAAK,aAAc,CACvC,SAAS,EAAmC,CAC1C,OAAO,EAAsB,CAAC,GAAG,EAAM,GAAG,CAAA,EAAS,EAAQ,CAAA,GAE7D,WAAY,GACZ,SAAU,GACV,aAAc,GACf,EAED,OAAO,eAAe,EAAK,YAAa,CACtC,KAAgB,CACd,MAAO,CAAC,GAAG,CAAA,GAEb,WAAY,GACZ,aAAc,GACf,EAEM,EAoBT,SAAS,EAAc,EAAgB,EAAqC,CAC1E,OAAO,EAAsB,CAAA,EAAI,EAAQ,CAAA,ECjC3C,SAAS,EAAsB,EAAwB,EAAyC,CAC9F,MAAO,CACL,KAAA,EACA,KAAA,EACA,cAAc,EAAmB,CAC/B,OAAO,EAAsB,EAAK,WAAW,GAAG,CAAA,EAAS,EAAK,WAAW,GAAG,CAAA,CAAO,IAiBzF,SAAS,KAAa,EAA+B,CACnD,OAAO,EAoBT,SAAS,EAAgB,EAAgB,EAAoC,CAC3E,OAAO,EAAsB,EAAc,EAAQ,CAAA,EAAY,EAAc,EAAQ,CAAA,CAAU"}
@@ -1,85 +1,97 @@
1
1
  (function(){try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(`.styles-module__loading___bgEAk{justify-content:center;align-items:center;display:inline-flex}.styles-module__loading___bgEAk svg polyline{fill:none;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.styles-module__loading___bgEAk svg polyline.styles-module__back___XLPvD{fill:none;stroke:var(--color-primary-alpha)}.styles-module__loading___bgEAk svg polyline.styles-module__front___hSxig{fill:none;stroke:var(--color-primary);stroke-dasharray:48 144;stroke-dashoffset:192px;animation:1.4s linear infinite styles-module__dash_682___AQzo6}@keyframes styles-module__dash_682___AQzo6{72.5%{opacity:0}to{stroke-dashoffset:0}}.styles-module__loader___E7OIM{justify-content:center;align-items:center;width:fit-content;height:fit-content;display:flex}.styles-module__truckWrapper___Sk4zX{flex-direction:column;justify-content:flex-end;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow-x:hidden}.styles-module__truckBody___j7w2C{width:65%;height:fit-content;margin-bottom:6px;animation:1s linear infinite styles-module__motion___IiNlW}@keyframes styles-module__motion___IiNlW{0%{transform:translateY(0)}50%{transform:translateY(3px)}to{transform:translateY(0)}}.styles-module__truckTires___4ncTl{justify-content:space-between;align-items:center;width:65%;height:fit-content;padding:0 10px 0 15px;display:flex;position:absolute;bottom:0}.styles-module__tiresvg___IBQcN{width:24px}.styles-module__road___sxx-E{background-color:var(--color-fg-heading);border-radius:var(--radius-button);align-self:flex-end;width:100%;height:1.5px;position:relative;bottom:0}.styles-module__road___sxx-E:before{content:"";background-color:var(--color-fg-heading);border-radius:var(--radius-button);border-left:10px solid var(--color-bg);width:20px;height:100%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;right:-50%}.styles-module__road___sxx-E:after{content:"";background-color:var(--color-fg-heading);border-radius:var(--radius-button);border-left:4px solid var(--color-bg);width:10px;height:100%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;right:-65%}.styles-module__lampPost___okcN5{height:45%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;bottom:0;right:-90%}@keyframes styles-module__roadAnimation___yvrHP{0%{transform:translate(0)}to{transform:translate(-350px)}}.styles-module__loader___pFUzL{justify-content:center;align-items:center;display:inline-flex;position:relative}.styles-module__loader___pFUzL:before{content:"";background:var(--color-primary);opacity:.3;border-radius:50%;width:100%;height:5px;animation:.5s linear infinite styles-module__shadow324___sutUe;position:absolute;top:calc(100% + 12px);left:0}.styles-module__loader___pFUzL:after{content:"";background:var(--color-primary);width:100%;height:100%;position:absolute;top:0;left:0}.styles-module__square___GKjhm:after{border-radius:var(--radius-button);animation:.5s linear infinite styles-module__jump7456Square___Z-D9b}.styles-module__circle___bUpSN:after{border-radius:50%;animation:.5s linear infinite styles-module__jump7456Circle___2AfF7}@keyframes styles-module__jump7456Square___Z-D9b{15%{border-bottom-right-radius:3px}25%{transform:translateY(9px)rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px)scaleY(.9)rotate(45deg)}75%{transform:translateY(9px)rotate(67.5deg)}to{transform:translateY(0)rotate(90deg)}}@keyframes styles-module__jump7456Circle___2AfF7{15%{border-bottom-right-radius:50%}25%{transform:translateY(9px)rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px)scaleY(.9)rotate(45deg)}75%{transform:translateY(9px)rotate(67.5deg)}to{transform:translateY(0)rotate(90deg)}}@keyframes styles-module__shadow324___sutUe{0%,to{transform:scale(1)}50%{transform:scaleX(1.2)}}.style-module__waves___oR3u7{width:100%;height:100%;margin:0;padding:0;position:absolute;top:0;left:0;overflow:hidden}.style-module__waves___oR3u7:before{content:"";background:var(--color-bg);width:.5rem;height:.5rem;transform:translate3d(calc(var(--x) - 50%), calc(var(--y) - 50%), 0);will-change:transform;border-radius:50%;position:absolute;top:0;left:0}.style-module__wavesCanvas___zkhTC{width:100%;height:100%;display:block}.style-module__squaresCanvas___22kMc{border:none;width:100%;height:100%;display:block}.style-module__container___HkxIe{background-color:var(--color-bg);width:100%;height:100%;position:relative;overflow:hidden}.style-module__canvas___MR9JX{width:100%;height:100%;display:block}.style-module__outerVignette___i75nw{pointer-events:none;background:radial-gradient(circle,#0000 60%,#000 100%);width:100%;height:100%;position:absolute;top:0;left:0}.style-module__centerVignette___n9uVG{pointer-events:none;background:radial-gradient(circle,#000c 0%,#0000 60%);width:100%;height:100%;position:absolute;top:0;left:0}.styles-module__button___RbliA{border-radius:var(--radius-button);cursor:pointer;border:1px solid #0000;outline:none;justify-content:center;align-items:center;gap:.5rem;font-family:inherit;font-weight:500;transition:all .2s;display:inline-flex;position:relative}.styles-module__button___RbliA:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.styles-module__button___RbliA:disabled{cursor:not-allowed;opacity:.6}.styles-module__button___RbliA.styles-module__small___yK0Yp{min-height:2rem;padding:.5rem 1rem;font-size:.8125rem}.styles-module__button___RbliA.styles-module__medium___eBTch{min-height:2.5rem;padding:.75rem 1.5rem;font-size:.875rem}.styles-module__button___RbliA.styles-module__large___pIZkl{min-height:3rem;padding:1rem 2rem;font-size:1rem}.styles-module__button___RbliA.styles-module__primary___qsZpA{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-fg)}.styles-module__button___RbliA.styles-module__primary___qsZpA:hover:not(:disabled){background:var(--color-primary-light);border-color:var(--color-primary-light);transform:translateY(-1px)}.styles-module__button___RbliA.styles-module__primary___qsZpA:active:not(:disabled){transform:translateY(0)}.styles-module__button___RbliA.styles-module__secondary___SCpPv{background:var(--color-bg-2);border-color:var(--color-border-4);color:var(--color-fg-text)}.styles-module__button___RbliA.styles-module__secondary___SCpPv:hover:not(:disabled){background:var(--color-bg-3);border-color:var(--color-primary)}.styles-module__button___RbliA.styles-module__outline___rrlk9{border-color:var(--color-border-4);color:var(--color-fg-text);background:0 0}.styles-module__button___RbliA.styles-module__outline___rrlk9:hover:not(:disabled){background:var(--color-bg-2);border-color:var(--color-primary)}.styles-module__button___RbliA.styles-module__ghost___QMoiH{color:var(--color-fg-text);background:0 0;border-color:#0000}.styles-module__button___RbliA.styles-module__ghost___QMoiH:hover:not(:disabled){background:var(--color-bg-2)}.styles-module__button___RbliA.styles-module__danger___MW-pg{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-danger-fg,#fff)}.styles-module__button___RbliA.styles-module__danger___MW-pg:hover:not(:disabled){background:var(--color-danger-light);border-color:var(--color-danger-light);color:var(--color-danger-fg,#fff);transform:translateY(-1px)}.styles-module__button___RbliA.styles-module__danger___MW-pg:active:not(:disabled){transform:translateY(0)}.styles-module__button___RbliA.styles-module__fullWidth___-dXBR{width:100%}.styles-module__button___RbliA.styles-module__loading___UWw6V{pointer-events:none}.styles-module__spinner___KpJ-L{border:2px solid;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:1rem;height:1rem;animation:.6s linear infinite styles-module__spin___ntZKM}@keyframes styles-module__spin___ntZKM{to{transform:rotate(360deg)}}.styles-module__button___RbliA.styles-module__small___yK0Yp .styles-module__spinner___KpJ-L{border-width:1.5px;width:.875rem;height:.875rem}.styles-module__button___RbliA.styles-module__large___pIZkl .styles-module__spinner___KpJ-L{border-width:2.5px;width:1.25rem;height:1.25rem}.styles-module__content___oyZRO{align-items:center;display:flex}.styles-module__leftIcon___cDktv,.styles-module__rightIcon___1mpk0{flex-shrink:0;align-items:center;display:flex}.styles-module__leftIcon___cDktv{margin-right:-.25rem}.styles-module__rightIcon___1mpk0{margin-left:-.25rem}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U{aspect-ratio:1;min-width:2.5rem;min-height:2.5rem;padding:0}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U.styles-module__small___yK0Yp{min-width:2rem;min-height:2rem}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U.styles-module__large___pIZkl{min-width:3rem;min-height:3rem}.styles-module__iconContainer___bwvE3{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.styles-module__layout___WaGy9{flex-direction:column;justify-content:center;align-items:center;gap:.25rem;width:100%;display:flex}.styles-module__horizontal___lKpGq{justify-content:center;align-items:center;gap:.5rem;width:100%;display:flex}.styles-module__topIcon___bzw6s,.styles-module__bottomIcon___suPfa{flex-shrink:0;justify-content:center;align-items:center;display:flex}.styles-module__iconOnly___iOv-U .styles-module__iconContainer___bwvE3 .styles-module__leftIcon___cDktv,.styles-module__iconOnly___iOv-U .styles-module__iconContainer___bwvE3 .styles-module__rightIcon___1mpk0{margin:0}.Dropdown-module__dropdown___c9wIp{width:100%;display:inline-block;position:relative}.Dropdown-module__dropdownButton___suNh-{border:1px solid var(--color-separator);border-radius:var(--radius-card);cursor:pointer;text-align:left;background:var(--color-bg-2);width:100%;color:var(--color-fg-text);outline:none;justify-content:space-between;align-items:center;padding:.75rem 2.5rem .75rem 1rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.5rem;transition:all .2s ease-in-out;display:flex;position:relative}.Dropdown-module__dropdownButton___suNh-:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-bg-1)}.Dropdown-module__dropdownButton___suNh-:focus{border-color:var(--color-primary);background:var(--color-bg-1);box-shadow:0 0 0 2px var(--color-primary-transparent)}.Dropdown-module__dropdownButton___suNh-.Dropdown-module__disabled___Rz0pX{cursor:not-allowed;opacity:.6;background:var(--color-bg-3)}.Dropdown-module__dropdownButton___suNh-.Dropdown-module__error___F7dDu{border-color:var(--color-danger)}.Dropdown-module__buttonText___D2zxn{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.Dropdown-module__chevronIcon___uyawp{color:var(--color-fg-highlight);flex-shrink:0;transition:transform .15s;position:absolute;right:1rem}.Dropdown-module__chevronIcon___uyawp.Dropdown-module__open___APoXd{transform:rotate(180deg)}.Dropdown-module__dropdownMenu___WJ-QO{background:var(--color-bg);border:1px solid var(--color-border-4);border-radius:var(--radius-card);min-width:100%;box-shadow:0 .5rem 1rem var(--color-shadow);z-index:1000;animation:.15s ease-out Dropdown-module__slideDown___sRCmO;position:absolute;top:calc(100% + .5rem);left:0;right:0;overflow:hidden}@keyframes Dropdown-module__slideDown___sRCmO{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}.Dropdown-module__optionsList___Be6RN{margin:0;padding:.5rem 0;list-style:none}.Dropdown-module__option___q-NgT{cursor:pointer;color:var(--color-fg-text);align-items:center;padding:.75rem 1rem;font-size:.875rem;transition:all .15s;display:flex}.Dropdown-module__option___q-NgT:hover{background-color:var(--color-bg-2)}.Dropdown-module__option___q-NgT.Dropdown-module__selected___-OTW-{background-color:var(--color-bg-3);color:var(--color-fg-highlight);font-weight:600}@media (width<=768px){.Dropdown-module__dropdownButton___suNh-{padding:.625rem 2.25rem .625rem .875rem;font-size:.875rem}.Dropdown-module__chevronIcon___uyawp{right:.875rem}.Dropdown-module__option___q-NgT{padding:.625rem .875rem;font-size:.8125rem}}.styles-module__wrapper___COeGm{flex-direction:column;gap:.5rem;display:flex}.styles-module__wrapper___COeGm.styles-module__fullWidth___lVU49{width:100%}.styles-module__label___gfOA7{color:var(--color-fg-heading);align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;display:flex}.styles-module__required___-zOy5{color:var(--color-danger)}.styles-module__inputContainer___wXY53{align-items:center;width:100%;display:flex;position:relative}.styles-module__input___IZDc3{border:1px solid var(--color-border-4);border-radius:var(--radius-input);background:var(--color-bg);width:100%;color:var(--color-fg-text);outline:none;font-family:inherit;font-size:.875rem;transition:all .2s}.styles-module__input___IZDc3[type=password]::-webkit-credentials-auto-fill-button{visibility:hidden!important;opacity:0!important;pointer-events:none!important;appearance:none!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-webkit-strong-password-toggle-button{visibility:hidden!important;opacity:0!important;pointer-events:none!important;appearance:none!important;width:0!important;height:0!important;margin:0!important;padding:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-ms-reveal{visibility:hidden!important;opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-ms-clear{visibility:hidden!important;opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb), .1)}.styles-module__input___IZDc3::placeholder{color:var(--color-fg-muted);opacity:.5}.styles-module__input___IZDc3.styles-module__small___cuGyE{padding:.5rem .75rem;font-size:.8125rem}.styles-module__input___IZDc3.styles-module__medium___JdDPu{padding:.75rem;font-size:.875rem}.styles-module__input___IZDc3.styles-module__large___fMmiG{padding:1rem;font-size:1rem}.styles-module__input___IZDc3.styles-module__default___-eZTG{background:var(--color-bg);border-color:var(--color-border-4)}.styles-module__input___IZDc3.styles-module__filled___EQ5PQ{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3{padding-left:2.5rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3{padding-right:2.5rem}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3.styles-module__small___cuGyE{padding-left:2rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3.styles-module__small___cuGyE{padding-right:2rem}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3.styles-module__large___fMmiG{padding-left:3rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3.styles-module__large___fMmiG{padding-right:3rem}.styles-module__leftIcon___jEW5H,.styles-module__rightIcon___bA3Eo{color:var(--color-fg-muted);pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute}.styles-module__leftIcon___jEW5H{left:.75rem}.styles-module__rightIcon___bA3Eo{right:.75rem}.styles-module__rightIcon___bA3Eo.styles-module__rightIconInteractive___ccypw{pointer-events:auto}.styles-module__inputContainer___wXY53.styles-module__containerSmall___20ICq .styles-module__leftIcon___jEW5H{left:.5rem}.styles-module__inputContainer___wXY53.styles-module__containerSmall___20ICq .styles-module__rightIcon___bA3Eo{right:.5rem}.styles-module__inputContainer___wXY53.styles-module__containerLarge___IztuN .styles-module__leftIcon___jEW5H{left:1rem}.styles-module__inputContainer___wXY53.styles-module__containerLarge___IztuN .styles-module__rightIcon___bA3Eo{right:1rem}.styles-module__input___IZDc3.styles-module__error___946qV{border-color:var(--color-danger)}.styles-module__input___IZDc3.styles-module__error___946qV:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(var(--color-danger-rgb), .1)}.styles-module__input___IZDc3.styles-module__disabled___sJvLd{background:var(--color-bg-3);border-color:var(--color-border-5);color:var(--color-fg-muted);cursor:not-allowed;opacity:.6}.styles-module__errorMessage___5Mn22{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___T2eui{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__container___xeg8O{flex-direction:column;gap:1rem;display:flex}.styles-module__label___qhbKe{color:var(--color-fg-text);font-size:.875rem;font-weight:500}.styles-module__error___O-7AY{color:var(--color-error);font-size:.875rem}.styles-module__pairs___owGV3{flex-direction:column;gap:.75rem;display:flex}.styles-module__pair___G4WFY{grid-template-columns:1fr 2fr auto;align-items:start;gap:.75rem;display:grid}.styles-module__keyInput___wl1M1,.styles-module__valueInput___HiwJ5{flex:1}.styles-module__removeButton___4-X0b{min-width:auto;color:var(--color-error);padding:.5rem}.styles-module__removeButton___4-X0b:hover{background-color:var(--color-error);color:var(--color-primary-fg)}.styles-module__addButton___QFljt{align-self:flex-start}@media (width<=768px){.styles-module__pair___G4WFY{grid-template-columns:1fr}.styles-module__removeButton___4-X0b{align-self:flex-end}}.styles-module__searchContainer___86TGN{width:100%;max-width:400px;position:relative}.styles-module__searchIcon___ZInry{color:var(--color-fg-muted);pointer-events:none;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.styles-module__searchInput___SqZXQ{border:1px solid var(--color-border);border-radius:var(--radius-input);width:100%;color:var(--color-fg-text);background:var(--color-bg-2);padding:.75rem 3rem;font-size:1rem;transition:all .2s}.styles-module__searchInput___SqZXQ:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg);outline:none}.styles-module__searchInput___SqZXQ::placeholder{color:var(--color-fg-muted)}.styles-module__clearBtn___7jExr{width:1.5rem;height:1.5rem;color:var(--color-fg-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.styles-module__clearBtn___7jExr:hover{color:var(--color-fg-text)}@media (width<=768px){.styles-module__searchContainer___86TGN{max-width:100%}}.styles-module__container___nGxdM{flex-direction:column;gap:.75rem;display:flex}.styles-module__toggleContainer___VrsKI{align-items:center;display:flex}.styles-module__toggleButton___IzD6Z{border:1px solid var(--color-border-4);border-radius:var(--radius-button);background:var(--color-bg);color:var(--color-fg-muted);cursor:pointer;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;transition:all .2s;display:flex}.styles-module__toggleButton___IzD6Z:hover{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__toggleButton___IzD6Z.styles-module__enabled___cao0G{background:var(--color-primary);color:var(--color-primary-fg);border-color:var(--color-primary)}.styles-module__toggleButton___IzD6Z.styles-module__enabled___cao0G:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-primary-fg)}.styles-module__optionsContainer___LOzlO{background:var(--color-bg-2);border-radius:var(--radius-card);border:1px solid var(--color-border-4);gap:.5rem;padding:.5rem;display:flex}.styles-module__option___abhnC{border:1px solid var(--color-border-4);border-radius:var(--radius-button);background:var(--color-bg);color:var(--color-fg);cursor:pointer;flex:1;justify-content:center;align-items:center;gap:.375rem;padding:.5rem .875rem;font-size:.875rem;font-weight:500;transition:all .2s;display:flex}.styles-module__option___abhnC:hover{background:var(--color-bg-3);border-color:var(--color-border-3)}.styles-module__option___abhnC.styles-module__active___pqmSi{background:var(--color-primary);color:var(--color-primary-fg);border-color:var(--color-primary)}.styles-module__option___abhnC.styles-module__active___pqmSi:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);color:var(--color-primary-fg)}.styles-module__nbSelect___KjxSc{font-family:inherit;font-size:.9375rem;font-weight:600;line-height:1.5rem;display:inline-block;position:relative}.styles-module__selectButton___AKZe4{border-radius:var(--radius-button);cursor:pointer;text-align:left;width:100%;min-width:8rem;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;appearance:none;border:1px solid;outline:none;justify-content:space-between;align-items:center;padding:.4375rem 2.2rem .4375rem 1.125rem;transition:all .15s ease-in-out;display:flex;position:relative}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-fg)}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a:hover:not(:disabled){background-color:var(--color-primary-light);border-color:var(--color-primary-light)}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a:focus,.styles-module__selectButton___AKZe4.styles-module__primary___HU36a.styles-module__open___9AKMb{background-color:var(--color-primary-light);border-color:var(--color-primary-light);box-shadow:0 0 0 .125rem rgba(var(--color-primary-rgb), .25)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP{background-color:var(--color-bg);border-color:var(--color-border-4);color:var(--color-fg-text)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP:hover:not(:disabled){background-color:var(--color-bg-2);border-color:var(--color-primary)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP:focus,.styles-module__selectButton___AKZe4.styles-module__default___LedYP.styles-module__open___9AKMb{background-color:var(--color-bg-2);border-color:var(--color-primary);box-shadow:0 0 0 .125rem rgba(var(--color-primary-rgb), .25)}.styles-module__selectButton___AKZe4:disabled{cursor:not-allowed;opacity:.6}.styles-module__buttonText___QSLO1{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.styles-module__chevronIcon___qAHaD{flex-shrink:0;width:1.5rem;height:1.5rem;transition:transform .15s;position:absolute;right:.41rem}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a .styles-module__chevronIcon___qAHaD{color:var(--color-primary-fg)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP .styles-module__chevronIcon___qAHaD{color:var(--color-fg)}.styles-module__chevronIcon___qAHaD.styles-module__open___9AKMb{transform:rotate(180deg)}.styles-module__optionsPanel___NWAp3{background-color:var(--color-bg);border:1px solid var(--color-border-4);border-radius:var(--radius-button);min-width:100%;box-shadow:0 .5rem 1rem var(--color-shadow);z-index:1000;transform-origin:top;visibility:hidden;pointer-events:none;position:absolute;top:calc(100% + .5rem);left:0;right:0;overflow:hidden}.styles-module__optionsPanel___NWAp3.styles-module__open___9AKMb{visibility:visible;pointer-events:auto;animation:.25s ease-out styles-module__expandDown___eD4lh}.styles-module__optionsPanel___NWAp3.styles-module__closed___bez-q{visibility:hidden;pointer-events:none;animation:.25s ease-out styles-module__collapseUp___dt1E7}@keyframes styles-module__expandDown___eD4lh{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes styles-module__collapseUp___dt1E7{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.styles-module__optionsPanel___NWAp3.styles-module__primary___HU36a{border-color:var(--color-primary)}.styles-module__optionsPanel___NWAp3.styles-module__default___LedYP{border-color:var(--color-border-4)}.styles-module__optionsList___AxhVp{margin:0;padding:.5rem 0;list-style:none}.styles-module__option___t1SSw{cursor:pointer;color:var(--color-fg-text);justify-content:space-between;align-items:center;padding:.75rem 1.125rem;transition:all .15s;display:flex}.styles-module__option___t1SSw:hover{background-color:var(--color-bg-2)}.styles-module__option___t1SSw.styles-module__selected___azD4A{background-color:var(--color-primary);color:var(--color-primary-fg);font-weight:700}@media (prefers-color-scheme:dark){.styles-module__optionsPanel___NWAp3{box-shadow:0 .5rem 1rem var(--color-shadow)}}.styles-module__sliderContainer___lgpaD{flex-direction:column;gap:.5rem;display:flex}.styles-module__sliderContainer___lgpaD.styles-module__fullWidth___ZS8W5{width:100%}.styles-module__labelRow___dkVVM{justify-content:space-between;align-items:center;min-height:1.5rem;margin-bottom:.5rem;display:flex}.styles-module__label___bXGZs{color:var(--color-fg-text);font-size:.875rem;font-weight:500}.styles-module__required___FuyfE{color:var(--color-danger);margin-left:.25rem}.styles-module__sliderWrapper___1Wdti{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:.75rem;width:100%;display:flex}.styles-module__sliderRoot___yzOjR{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex-grow:1;align-items:center;width:100%;padding:.75rem 0;display:flex;position:relative}.styles-module__sliderRoot___yzOjR:active{cursor:grabbing}.styles-module__sliderTrackWrapper___N72WQ{flex-grow:1;display:flex;position:relative}.styles-module__sliderTrack___AltcD{border-radius:var(--radius-badge);background-color:var(--color-bg-3);width:100%;height:.375rem;position:relative;overflow:hidden}.styles-module__sliderRange___U3g0-{background-color:var(--color-primary);border-radius:var(--radius-badge);height:100%;position:absolute}.styles-module__valueIndicator___aLf0I{color:var(--color-primary);text-align:center;flex-shrink:0;min-width:2rem;font-size:.875rem;font-weight:600;line-height:1}.styles-module__iconWrapper___wL-b8{flex-shrink:0;justify-content:center;align-items:center;display:flex}.styles-module__icon___vHsID{width:20px;height:20px;color:var(--color-fg-muted)}.styles-module__errorMessage___qFgGe{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___tgBGl{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__loadingContainer___OMgwS{flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:60vh;display:flex}.styles-module__loadingText___KRZqR{color:var(--color-fg-muted);font-size:1rem}.styles-module__errorContainer___qhAg2{text-align:center;min-height:60vh;color:var(--color-fg-text);flex-direction:column;justify-content:center;align-items:center;gap:2rem;padding:3rem 2rem;display:flex}.styles-module__errorIconWrapper___IHZrN{background:linear-gradient(135deg, rgba(var(--color-error-rgb), .1), rgba(var(--color-error-rgb), .05));border:2px solid rgba(var(--color-error-rgb), .2);border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;animation:2s ease-in-out infinite styles-module__pulse___Lju-z;display:flex}@keyframes styles-module__pulse___Lju-z{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}.styles-module__errorIcon___oGDIP{color:var(--color-error);stroke-width:1.5px}.styles-module__errorContent___F55rQ{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:600px;display:flex}.styles-module__errorTitle___hC8D-{color:var(--color-fg-heading);letter-spacing:-.02em;margin:0;font-size:1.75rem;font-weight:700;line-height:1.2}.styles-module__errorDescription___hZtuP{color:var(--color-fg-muted);max-width:480px;margin:0;font-size:1rem;line-height:1.6}.styles-module__errorDetailsWrapper___-sp8b{width:100%;max-width:600px;margin-top:.5rem}.styles-module__errorDetailsContainer___eywMo{text-align:left;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-bg-2);width:100%;transition:all .2s;overflow:hidden}.styles-module__errorDetailsContainer___eywMo:hover{border-color:var(--color-border-hover);background:var(--color-bg-3)}.styles-module__errorDetailsSummary___hGEoD{cursor:pointer;color:var(--color-fg-muted);-webkit-user-select:none;user-select:none;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;list-style:none;transition:color .2s}.styles-module__errorDetailsSummary___hGEoD:hover{color:var(--color-fg-text)}.styles-module__errorDetailsSummary___hGEoD::-webkit-details-marker{display:none}.styles-module__errorDetailsSummary___hGEoD:before{content:"▶";margin-right:.5rem;font-size:.75rem;transition:transform .2s;display:inline-block}.styles-module__errorDetailsContainer___eywMo[open] .styles-module__errorDetailsSummary___hGEoD:before{transform:rotate(90deg)}.styles-module__errorDetails___tzCT-{background:var(--color-bg-3);border-top:1px solid var(--color-border);max-width:100%;color:var(--color-fg-muted);white-space:pre-wrap;word-break:break-word;margin:0;padding:1rem 1.25rem;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:.8125rem;line-height:1.6;overflow-x:auto}.styles-module__errorActions___gtqYw{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.styles-module__retryButton___TA4jm{border-radius:var(--radius-button);background:var(--color-primary);color:var(--color-primary-fg);cursor:pointer;box-shadow:0 2px 8px var(--color-shadow);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 2rem;font-size:.9375rem;font-weight:500;transition:all .2s;display:inline-flex}.styles-module__retryButton___TA4jm:hover{box-shadow:0 4px 16px var(--color-shadow);background:var(--color-primary-light);color:var(--color-primary-fg);transform:translateY(-2px)}.styles-module__retryButton___TA4jm:active{box-shadow:0 2px 8px var(--color-shadow);transform:translateY(0)}.styles-module__retryButtonIcon___vzfp-{font-size:1.125rem;line-height:1;transition:transform .3s;display:inline-block}.styles-module__retryButton___TA4jm:hover .styles-module__retryButtonIcon___vzfp-{transform:rotate(180deg)}.styles-module__clearLocalDataButton___T3B-K{border-radius:var(--radius-button);color:var(--color-fg-muted);border:1px solid var(--color-border-4);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:500;transition:all .2s;display:inline-flex}.styles-module__clearLocalDataButton___T3B-K:hover{color:var(--color-fg-text);border-color:var(--color-border-3);background:var(--color-bg-secondary)}.styles-module__wrapper___jXPV3{flex-direction:column;gap:.5rem;display:flex}.styles-module__wrapper___jXPV3.styles-module__fullWidth___eKyGB{width:100%}.styles-module__label___MyTeo{color:var(--color-fg-heading);align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;display:flex}.styles-module__required___TV-m8{color:var(--color-danger)}.styles-module__inputContainer___VvGBl{align-items:flex-start;width:100%;display:flex;position:relative}.styles-module__textarea___AjX9N{border:1px solid var(--color-border-4);border-radius:var(--radius-input);background:var(--color-bg);width:100%;color:var(--color-fg-text);resize:vertical;outline:none;min-height:4rem;font-family:inherit;font-size:.875rem;transition:all .2s}.styles-module__textarea___AjX9N:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb), .1)}.styles-module__textarea___AjX9N::placeholder{color:var(--color-fg-muted);opacity:.5}.styles-module__textarea___AjX9N.styles-module__small___zMx0G{min-height:3rem;padding:.5rem .75rem;font-size:.8125rem}.styles-module__textarea___AjX9N.styles-module__medium___tO2Lb{min-height:4rem;padding:.75rem;font-size:.875rem}.styles-module__textarea___AjX9N.styles-module__large___3eU2g{min-height:5rem;padding:1rem;font-size:1rem}.styles-module__textarea___AjX9N.styles-module__default___vsSxX{background:var(--color-bg);border-color:var(--color-border-4)}.styles-module__textarea___AjX9N.styles-module__filled___TPQgI{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__inputContainer___VvGBl .styles-module__leftIcon___FHp2R{color:var(--color-fg-muted);pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;top:.75rem;left:.75rem}.styles-module__inputContainer___VvGBl .styles-module__rightIcon___dkyvP{color:var(--color-fg-muted);pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;top:.75rem;right:.75rem}.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__small___zMx0G+.styles-module__leftIcon___FHp2R,.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__small___zMx0G+.styles-module__rightIcon___dkyvP{top:.5rem}.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__large___3eU2g+.styles-module__leftIcon___FHp2R,.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__large___3eU2g+.styles-module__rightIcon___dkyvP{top:1rem}.styles-module__textarea___AjX9N.styles-module__error___d8gLK{border-color:var(--color-danger)}.styles-module__textarea___AjX9N.styles-module__error___d8gLK:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(var(--color-danger-rgb), .1)}.styles-module__textarea___AjX9N.styles-module__disabled___IzbfE{background:var(--color-bg-3);border-color:var(--color-border-5);color:var(--color-fg-muted);cursor:not-allowed;opacity:.6}.styles-module__errorText___Nom7x{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___97Def{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__virtualList___pM6rN{contain:strict;width:100%;padding-bottom:300px;position:relative;overflow:auto}.styles-module__emptyContainer___rm938{height:100%;color:var(--color-fg-muted);justify-content:center;align-items:center;display:flex}.styles-module__virtualListInner___HxRzc{width:100%;position:relative}.styles-module__virtualListItems___p19-a{width:100%;position:absolute;top:0;left:0}.styles-module__loadingMore___zAdLM{color:var(--color-fg-muted);justify-content:center;align-items:center;gap:.75rem;padding:2rem 0;font-size:.875rem;display:flex}.styles-module__endOfList___5cYFh{color:var(--color-fg-muted);border-top:1px solid var(--color-border-3);justify-content:center;margin-top:1rem;padding:2rem 0;font-size:.875rem;display:flex}.styles-module__endOfList___5cYFh span{background-color:var(--color-bg-2);border-radius:var(--radius-button);padding:.5rem 1rem}.styles-module__virtualList___xmj2v{width:100%;padding-bottom:300px;position:relative;overflow:visible}.styles-module__virtualListInner___quD74{width:100%;position:relative}.styles-module__virtualListItems___-Muml{width:100%;position:absolute;top:0;left:0}.styles-module__virtualListRow___h3pzX{width:100%}.styles-module__emptyContainer___LIy8r{color:var(--color-fg-muted);justify-content:center;align-items:center;padding:2rem 0;display:flex}.styles-module__loadingMore___Mzf-p{color:var(--color-fg-muted);justify-content:center;align-items:center;padding:1.5rem 0;display:flex}.styles-module__endOfList___g5G--{color:var(--color-fg-muted);border-top:1px solid var(--color-border-3);justify-content:center;padding:1.5rem 0;display:flex}.styles-module__sidebar___BMt0j{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.styles-module__sidebarContent___iAwiw{flex-direction:column;height:100%;min-height:0;padding-top:1rem;display:flex;overflow:hidden}.styles-module__menuWrapper___DKuEv{flex:1;min-height:0;overflow:hidden auto}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar{width:0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-track{background:0 0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-thumb{background:0 0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-thumb:hover{background:0 0}.styles-module__sidebar___BMt0j a{margin-left:0}.styles-module__sidebar___BMt0j .ps-sidebar-root{background-color:var(--color-bg-2)!important;border-right:1px solid var(--color-separator)!important;flex-direction:column!important;height:100%!important;min-height:0!important;display:flex!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-sidebar-container{background-color:var(--color-bg-2)!important;height:100%!important;min-height:0!important;color:var(--color-fg-text)!important;flex-direction:column!important;flex:1!important;display:flex!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-menu-button{border-radius:var(--radius-button)!important;color:var(--color-fg-text)!important;margin:.125rem .5rem!important;padding:.5rem .75rem!important;font-size:.875rem!important;transition:all .2s!important}.styles-module__sidebar___BMt0j .ps-menu-button:hover{background-color:var(--color-bg-3)!important;color:var(--color-fg-text)!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active{background-color:var(--color-primary)!important;color:var(--color-primary-fg)!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active *,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-icon,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-label{color:var(--color-primary-fg)!important}.styles-module__sidebar___BMt0j .ps-menu-icon{width:1.25rem!important;height:1.25rem!important;color:var(--color-fg-text)!important;margin-right:.5rem!important}.styles-module__sidebar___BMt0j .ps-submenu-content{background-color:var(--color-bg-3)!important;padding-left:.5rem!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-submenu-content .ps-menu-button{margin:.125rem .25rem!important;padding:.375rem .5rem!important;font-size:.8125rem!important;transition:all .2s!important}.styles-module__sidebar___BMt0j .ps-menu-label{color:var(--color-fg-text)!important;font-weight:500!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active span,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active div,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-icon,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-label{color:var(--color-primary-fg)!important}.styles-module__logoutContainer___7NwBL{border-top:1px solid var(--color-separator);writing-mode:horizontal-tb;text-orientation:mixed;flex-shrink:0;margin-top:auto;padding:.5rem}.styles-module__logoutButton___rfD6u{border-radius:var(--radius-button);width:100%;color:var(--color-fg-text);cursor:pointer;white-space:nowrap;writing-mode:horizontal-tb;text-orientation:mixed;direction:ltr;background:0 0;border:none;justify-content:flex-start;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.875rem;transition:background-color .2s,color .2s;display:flex;overflow:hidden}.styles-module__logoutButton___rfD6u span{opacity:1;max-width:200px;transition:opacity .3s,max-width .3s;display:inline-block;writing-mode:horizontal-tb!important;text-orientation:mixed!important;direction:ltr!important;transform:none!important}.styles-module__logoutButton___rfD6u .styles-module__hiddenText___z183T{opacity:0;width:0;max-width:0;overflow:hidden}.styles-module__logoutButton___rfD6u .styles-module__visibleText___lfsv-{opacity:1;width:auto;max-width:200px}.styles-module__logoutButton___rfD6u:hover{background-color:var(--color-bg-3)}.styles-module__logoutButton___rfD6u:active{transform:scale(.98)}.styles-module__logoutButton___rfD6u svg{color:inherit;flex-shrink:0}.styles-module__footer___g-hY7{background:var(--color-bg-2);width:100%;padding:0 2rem}.styles-module__footerContent___Oen5n{justify-content:space-between;align-items:center;max-width:100%;margin:0 auto;display:flex}.styles-module__copyright___1R2o3{color:var(--color-fg-text);font-size:.875rem}.styles-module__links___dQyvB{gap:1.5rem;display:flex}.styles-module__link___UWfyK{color:var(--color-fg-text);font-size:.875rem;text-decoration:none;transition:color .3s}.styles-module__link___UWfyK:hover{color:var(--color-primary)}@media (width<=768px){.styles-module__footerContent___Oen5n{flex-direction:column;gap:1rem}.styles-module__links___dQyvB{gap:1rem}}.styles-module__header___4Uc8h{width:100%;padding:.5rem 2rem;display:flex}.styles-module__header___4Uc8h>:first-child{flex:1;justify-content:flex-start;align-items:center;display:flex}.styles-module__header___4Uc8h>:last-child{flex:1;justify-content:flex-end;align-items:center;display:flex}.styles-module__layout___ZQKU7{background:var(--color-bg);flex-direction:column;width:100%;height:100vh;display:flex;position:relative}.styles-module__header___XIaFb{z-index:100;background:var(--color-bg);width:100%;box-shadow:0 .125rem .25rem 0 var(--color-shadow);position:fixed;top:0}.styles-module__footer___r8ASO{z-index:100;width:100%;position:fixed;bottom:0}.styles-module__mainWrapper___i4tEI{flex:1;display:flex;position:relative}.styles-module__sidebar___ij-8-{position:fixed;top:0}.styles-module__content___mTgUr{background:var(--color-bg);flex:1;min-height:calc(100vh - 10rem);margin:0;padding-top:0;padding-bottom:0;overflow:hidden auto}@media (width<=768px){.styles-module__content___mTgUr{width:100%}.styles-module__sidebar___ij-8-{z-index:999;height:100vh;position:fixed;top:0;left:0}}.styles-module__mainWrapper___AiTAw{flex-direction:row;flex:1;display:flex;position:relative}.styles-module__sidebarContainer___X4yj8{z-index:99;flex-direction:column;display:flex;position:fixed;left:0;overflow:hidden}.styles-module__sidebar___VQTlH{flex-shrink:0;top:0;left:0}.styles-module__content___htJlH{background:var(--color-bg);flex:1;margin:0;padding-top:0;padding-bottom:0;overflow:hidden auto}@media (width<=1024px){.styles-module__content___htJlH{padding:1.5rem}}@media (width<=768px){.styles-module__content___htJlH{width:100%}.styles-module__sidebar___VQTlH{z-index:999;height:100vh;position:fixed;top:0;left:0}}.styles-module__wavesWrapper___TK7DI{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__wavesWrapper___TK7DI>*{pointer-events:auto}.styles-module__squaresWrapper___P25uF{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__squaresWrapper___P25uF>*{pointer-events:auto}.styles-module__letterGlitchWrapper___KWtWU{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__letterGlitchWrapper___KWtWU>*{pointer-events:auto}.styles-module__pixelBlastWrapper___YptHh{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__pixelBlastWrapper___YptHh>*{pointer-events:auto}.style-module__container___Hh3-c{width:100%;height:100%;position:relative;overflow:hidden}
2
2
  /*$vite$:1*/`)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
3
- var y = "list", a = "item";
4
- function g(e) {
5
- const t = Object.keys(e);
6
- function r(u) {
7
- return Object.fromEntries(Object.entries(e).map(([c, o]) => [c, o[u]]));
3
+ var o = "list", b = "item";
4
+ function P(e) {
5
+ const r = Object.keys(e);
6
+ function n(t) {
7
+ return Object.fromEntries(Object.entries(e).map(([i, l]) => [i, l[t]]));
8
8
  }
9
- function n(u) {
10
- return e[u];
9
+ function u(t) {
10
+ return e[t];
11
11
  }
12
12
  return {
13
- Values: t,
14
- pickMap: r,
15
- get: n
13
+ Values: r,
14
+ pickMap: n,
15
+ get: u
16
16
  };
17
17
  }
18
- function h(e, t) {
19
- return e.pickMap(t);
18
+ function g(e, r) {
19
+ return e.pickMap(r);
20
20
  }
21
- function i(e, t, r) {
22
- const n = [
21
+ function c(e, r, n) {
22
+ const u = [
23
23
  ...e,
24
- t,
25
- a,
26
- r
27
- ];
28
- return Object.assign((...c) => [...n, ...c], {
29
- withPrefix(...c) {
30
- return i([...c, ...e], t, r);
24
+ r,
25
+ b,
26
+ n
27
+ ], t = ((...i) => [...u, ...i]);
28
+ return Object.defineProperty(t, "withPrefix", {
29
+ value(...i) {
30
+ return c([...i, ...e], r, n);
31
31
  },
32
- get getPrefix() {
33
- return [...n];
34
- }
35
- });
32
+ enumerable: !1,
33
+ writable: !0,
34
+ configurable: !0
35
+ }), Object.defineProperty(t, "getPrefix", {
36
+ get() {
37
+ return [...u];
38
+ },
39
+ enumerable: !1,
40
+ configurable: !0
41
+ }), t;
36
42
  }
37
- function P(e, t) {
38
- return i([], e, t);
43
+ function s(e, r) {
44
+ return c([], e, r);
39
45
  }
40
- function f(e, t, r) {
41
- const n = [
46
+ function f(e, r, n) {
47
+ const u = [
42
48
  ...e,
43
- t,
44
- y,
45
- r
46
- ];
47
- return Object.assign([...n], {
48
- withPrefix(...u) {
49
- return f([...u, ...e], t, r);
49
+ r,
50
+ o,
51
+ n
52
+ ], t = [...u];
53
+ return Object.defineProperty(t, "withPrefix", {
54
+ value(...i) {
55
+ return f([...i, ...e], r, n);
50
56
  },
51
- get getPrefix() {
52
- return [...n];
53
- }
54
- });
57
+ enumerable: !1,
58
+ writable: !0,
59
+ configurable: !0
60
+ }), Object.defineProperty(t, "getPrefix", {
61
+ get() {
62
+ return [...u];
63
+ },
64
+ enumerable: !1,
65
+ configurable: !0
66
+ }), t;
55
67
  }
56
- function b(e, t) {
57
- return f([], e, t);
68
+ function y(e, r) {
69
+ return f([], e, r);
58
70
  }
59
- function s(e, t) {
71
+ function a(e, r) {
60
72
  return {
61
73
  list: e,
62
- item: t,
63
- withPrefix(...r) {
64
- return s(e.withPrefix(...r), t.withPrefix(...r));
74
+ item: r,
75
+ withPrefix(...n) {
76
+ return a(e.withPrefix(...n), r.withPrefix(...n));
65
77
  }
66
78
  };
67
79
  }
68
- function K(...e) {
80
+ function h(...e) {
69
81
  return e;
70
82
  }
71
- function l(e, t) {
72
- return s(b(e, t), P(e, t));
83
+ function j(e, r) {
84
+ return a(y(e, r), s(e, r));
73
85
  }
74
86
  export {
75
- a as CACHE_ITEM,
76
- y as CACHE_LIST,
77
- P as createItemKey,
78
- K as createKey,
79
- b as createListKey,
80
- l as createQueryKeys,
81
- g as defineEnum,
82
- h as enumPickMap
87
+ b as CACHE_ITEM,
88
+ o as CACHE_LIST,
89
+ s as createItemKey,
90
+ h as createKey,
91
+ y as createListKey,
92
+ j as createQueryKeys,
93
+ P as defineEnum,
94
+ g as enumPickMap
83
95
  };
84
96
 
85
97
  //# sourceMappingURL=constants.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","names":[],"sources":["../src/constants/caches.ts","../src/constants/enums.ts","../src/constants/query.itemkeys.ts","../src/constants/query.listkeys.ts","../src/constants/querykeys.ts"],"sourcesContent":["/** 列表 key 片段。List key segment. */\nconst CACHE_LIST = \"list\";\n\n/** 单条 key 片段。Item key segment. */\nconst CACHE_ITEM = \"item\";\n\nexport { CACHE_LIST, CACHE_ITEM };\n","type EnumMetaMap = Record<string, Record<PropertyKey, unknown>>;\n\ntype DefinedEnum<M extends EnumMetaMap> = {\n Values: readonly (keyof M)[];\n pickMap<P extends keyof M[keyof M]>(prop: P): { [K in keyof M]: M[K][P] };\n get<K extends keyof M>(key: K): M[K];\n};\n\ntype EnumInferMeta<E> = E extends DefinedEnum<infer M> ? M : never;\n\ntype EnumValue<E extends { Values: readonly PropertyKey[] }> = E[\"Values\"][number];\n\nfunction defineEnum<const M extends EnumMetaMap>(metaMap: M): DefinedEnum<M> {\n type Key = keyof M;\n const Values = Object.keys(metaMap) as Key[];\n function pickMap<P extends keyof M[Key]>(prop: P) {\n return Object.fromEntries(Object.entries(metaMap).map(([k, v]) => [k, v[prop]])) as {\n [K in Key]: M[K][P];\n };\n }\n function get<K extends Key>(key: K): M[K] {\n return metaMap[key];\n }\n return { Values, pickMap, get };\n}\n\nfunction enumPickMap<M extends EnumMetaMap, P extends keyof M[keyof M]>(e: DefinedEnum<M>, prop: P): { [K in keyof M]: M[K][P] } {\n return e.pickMap(prop) as { [K in keyof M]: M[K][P] };\n}\n\nexport { defineEnum, enumPickMap };\nexport type { EnumMetaMap, DefinedEnum, EnumInferMeta, EnumValue };\n","/**\n * 单条 query key 工厂(支持一个或多个 id,可链式 .withPrefix)\n * Item query key factories (one or more ids, chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_ITEM } from \"./caches\";\n\n/**\n * 链式单条 key 类型:可调用 (...ids) => QueryKey,且带 withPrefix、getPrefix。\n * Chainable item key type: callable (...ids) => QueryKey, with withPrefix() and getPrefix.\n */\ntype ItemKeyChainable = ((...ids: string[]) => QueryKey) & {\n withPrefix(...prefix: unknown[]): ItemKeyChainable;\n /** 不含 id 的前缀,用于 invalidation 等。Prefix without ids, e.g. for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildItemKeyChainable(prefix: unknown[], domain: string, subDomain: string): ItemKeyChainable {\n const base: QueryKey = [...prefix, domain, CACHE_ITEM, subDomain];\n const fn = (...ids: string[]): QueryKey => [...base, ...ids];\n return Object.assign(fn, {\n withPrefix(...more: unknown[]): ItemKeyChainable {\n return buildItemKeyChainable([...more, ...prefix], domain, subDomain);\n },\n get getPrefix(): QueryKey {\n return [...base];\n },\n }) as ItemKeyChainable;\n}\n\n/**\n * 创建「单条」query key 工厂(可链式 .withPrefix):支持传入一个或多个 id,返回 [domain, CACHE_ITEM, subDomain, ...ids]\n * Creates an item query key factory (chainable .withPrefix): accepts one or more ids, returns [domain, CACHE_ITEM, subDomain, ...ids].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 可调用的 key 工厂,带 withPrefix 可链式加前缀。Callable key factory with withPrefix for chaining.\n * @example\n * ```ts\n * const getKey = createItemKey(\"catalog\", \"category\");\n * getKey(\"abc\");\n * * => [\"catalog\", \"item\", \"category\", \"abc\"]\n * getKey.getPrefix\n * * => [\"catalog\", \"item\", \"category\"]\n * createItemKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"item\", \"category\"]\n * ```\n */\nfunction createItemKey(domain: string, subDomain: string): ItemKeyChainable {\n return buildItemKeyChainable([], domain, subDomain);\n}\n\nexport { createItemKey };\nexport type { ItemKeyChainable };\n","/**\n * 列表 query key 工厂(可链式 .withPrefix)\n * List query key factories (chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_LIST } from \"./caches\";\n\n/**\n * 链式列表 key 类型:本身即 QueryKey(数组),且带 withPrefix、getPrefix。\n * Chainable list key type: is a QueryKey (array) and has withPrefix(), getPrefix.\n */\ntype ListKeyChainable = QueryKey & {\n withPrefix(...prefix: unknown[]): ListKeyChainable;\n /** 列表 key 的前缀(即完整 list key,用于 invalidation 等)。Prefix (full list key) for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildListKeyChainable(prefix: unknown[], domain: string, subDomain: string): ListKeyChainable {\n const key: QueryKey = [...prefix, domain, CACHE_LIST, subDomain];\n return Object.assign([...key], {\n withPrefix(...more: unknown[]): ListKeyChainable {\n return buildListKeyChainable([...more, ...prefix], domain, subDomain);\n },\n get getPrefix(): QueryKey {\n return [...key];\n },\n }) as ListKeyChainable;\n}\n\n/**\n * 创建「列表」query key(可链式 .withPrefix):[domain, CACHE_LIST, subDomain]\n * Creates a list query key (chainable .withPrefix): [domain, CACHE_LIST, subDomain].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 列表 query key(数组),带 withPrefix 可链式加前缀。List query key (array) with withPrefix for chaining.\n * @example\n * ```ts\n * const key = createListKey(\"catalog\", \"category\");\n * * key => [\"catalog\", \"list\", \"category\"]\n * key.getPrefix\n * * => [\"catalog\", \"list\", \"category\"]\n * createListKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"list\", \"category\"]\n * ```\n */\nfunction createListKey(domain: string, subDomain: string): ListKeyChainable {\n return buildListKeyChainable([], domain, subDomain);\n}\n\nexport { createListKey };\nexport type { ListKeyChainable };\n","/**\n * 通用 React Query key 工厂(公用包层)\n * Universal React Query key factories for shared use.\n *\n * @example\n * ```ts\n * import { createListKey, createItemKey } from \"@/constants\";\n *\n * const CATALOG_CATEGORY_LIST = createListKey(\"catalog\", \"category\");\n * const CATALOG_CATEGORY = createItemKey(\"catalog\", \"category\");\n *\n * useQuery({ queryKey: CATALOG_CATEGORY_LIST, queryFn: ... });\n * useQuery({ queryKey: CATALOG_CATEGORY(id), queryFn: ... });\n * ```\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { ItemKeyChainable } from \"./query.itemkeys\";\nimport type { ListKeyChainable } from \"./query.listkeys\";\n\nimport { createItemKey } from \"./query.itemkeys\";\nimport { createListKey } from \"./query.listkeys\";\n\n/** 含 list / item 且可链式 withPrefix 的 bundle 类型 */\ntype QueryKeysBundle = {\n list: ListKeyChainable;\n item: ItemKeyChainable;\n withPrefix(...prefix: unknown[]): QueryKeysBundle;\n};\n\nfunction createQueryKeysBundle(list: ListKeyChainable, item: ItemKeyChainable): QueryKeysBundle {\n return {\n list,\n item,\n withPrefix(...prefix: unknown[]) {\n return createQueryKeysBundle(list.withPrefix(...prefix), item.withPrefix(...prefix));\n },\n };\n}\n\n/**\n * 创建自定义 query key(任意片段,用于 stats 等)\n * Creates a custom query key from arbitrary segments (e.g. for stats).\n *\n * @param segments - 任意片段(字符串或其它)。Arbitrary segments (strings or other).\n * @returns 由片段组成的 query key。Query key composed of the segments.\n * @example\n * ```ts\n * const key = createKey(\"catalog\", \"stats\", \"category\", \"count\");\n * * key => [\"catalog\", \"stats\", \"category\", \"count\"]\n * ```\n */\nfunction createKey(...segments: unknown[]): QueryKey {\n return segments;\n}\n\n/**\n * 根据同一 domain + subDomain 生成 list key 与 item key 工厂\n * Returns both list key and item key factory for the given domain and subDomain.\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 含 list、item 及 withPrefix 的 bundle,可链式加前缀。Bundle with list, item, and chainable withPrefix.\n * @example\n * ```ts\n * const { list, item } = createQueryKeys(\"catalog\", \"category\");\n * * list => [\"catalog\", \"list\", \"category\"]\n * * item(\"id-1\") => [\"catalog\", \"item\", \"category\", \"id-1\"]\n * const withApi = createQueryKeys(\"catalog\", \"category\").withPrefix(\"api\");\n * * withApi.list => [\"api\", \"catalog\", \"list\", \"category\"]\n * * withApi.item(\"id-1\") => [\"api\", \"catalog\", \"item\", \"category\", \"id-1\"]\n * ```\n */\nfunction createQueryKeys(domain: string, subDomain: string): QueryKeysBundle {\n return createQueryKeysBundle(createListKey(domain, subDomain), createItemKey(domain, subDomain));\n}\n\nexport { createKey, createQueryKeys };\nexport type { QueryKeysBundle };\n"],"mappings":"AACA,IAAM,IAAa,QAGb,IAAa;ACQnB,SAAS,EAAwC,GAA4B;AAE3E,QAAM,IAAS,OAAO,KAAK,CAAA;AAC3B,WAAS,EAAgC,GAAS;AAChD,WAAO,OAAO,YAAY,OAAO,QAAQ,CAAA,EAAS,IAAA,CAAK,CAAC,GAAG,CAAA,MAAO,CAAC,GAAG,EAAE,CAAA,CAAA,CAAM,CAAC;AAAA;AAIjF,WAAS,EAAmB,GAAc;AACxC,WAAO,EAAQ,CAAA;AAAA;AAEjB,SAAO;AAAA,IAAE,QAAA;AAAA,IAAQ,SAAA;AAAA,IAAS,KAAA;AAAA;;AAG5B,SAAS,EAA+D,GAAmB,GAAsC;AAC/H,SAAO,EAAE,QAAQ,CAAA;;ACTnB,SAAS,EAAsB,GAAmB,GAAgB,GAAqC;AACrG,QAAM,IAAiB;AAAA,IAAC,GAAG;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAY;AAAA;AAEvD,SAAO,OAAO,OADR,IAAS,MAA4B,CAAC,GAAG,GAAM,GAAG,CAAA,GAC/B;AAAA,IACvB,cAAc,GAAmC;AAC/C,aAAO,EAAsB,CAAC,GAAG,GAAM,GAAG,CAAA,GAAS,GAAQ,CAAA;AAAA;IAE7D,IAAI,YAAsB;AACxB,aAAO,CAAC,GAAG,CAAA;AAAA;GAEd;;AAqBH,SAAS,EAAc,GAAgB,GAAqC;AAC1E,SAAO,EAAsB,CAAA,GAAI,GAAQ,CAAA;;AChC3C,SAAS,EAAsB,GAAmB,GAAgB,GAAqC;AACrG,QAAM,IAAgB;AAAA,IAAC,GAAG;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAY;AAAA;AACtD,SAAO,OAAO,OAAO,CAAC,GAAG,CAAA,GAAM;AAAA,IAC7B,cAAc,GAAmC;AAC/C,aAAO,EAAsB,CAAC,GAAG,GAAM,GAAG,CAAA,GAAS,GAAQ,CAAA;AAAA;IAE7D,IAAI,YAAsB;AACxB,aAAO,CAAC,GAAG,CAAA;AAAA;GAEd;;AAoBH,SAAS,EAAc,GAAgB,GAAqC;AAC1E,SAAO,EAAsB,CAAA,GAAI,GAAQ,CAAA;;ACnB3C,SAAS,EAAsB,GAAwB,GAAyC;AAC9F,SAAO;AAAA,IACL,MAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAc,GAAmB;AAC/B,aAAO,EAAsB,EAAK,WAAW,GAAG,CAAA,GAAS,EAAK,WAAW,GAAG,CAAA,CAAO;AAAA;;;AAiBzF,SAAS,KAAa,GAA+B;AACnD,SAAO;;AAoBT,SAAS,EAAgB,GAAgB,GAAoC;AAC3E,SAAO,EAAsB,EAAc,GAAQ,CAAA,GAAY,EAAc,GAAQ,CAAA,CAAU"}
1
+ {"version":3,"file":"constants.mjs","names":[],"sources":["../src/constants/caches.ts","../src/constants/enums.ts","../src/constants/query.itemkeys.ts","../src/constants/query.listkeys.ts","../src/constants/querykeys.ts"],"sourcesContent":["/** 列表 key 片段。List key segment. */\nconst CACHE_LIST = \"list\";\n\n/** 单条 key 片段。Item key segment. */\nconst CACHE_ITEM = \"item\";\n\nexport { CACHE_LIST, CACHE_ITEM };\n","type EnumMetaMap = Record<string, Record<PropertyKey, unknown>>;\n\ntype DefinedEnum<M extends EnumMetaMap> = {\n Values: readonly (keyof M)[];\n pickMap<P extends keyof M[keyof M]>(prop: P): { [K in keyof M]: M[K][P] };\n get<K extends keyof M>(key: K): M[K];\n};\n\ntype EnumInferMeta<E> = E extends DefinedEnum<infer M> ? M : never;\n\ntype EnumValue<E extends { Values: readonly PropertyKey[] }> = E[\"Values\"][number];\n\nfunction defineEnum<const M extends EnumMetaMap>(metaMap: M): DefinedEnum<M> {\n type Key = keyof M;\n const Values = Object.keys(metaMap) as Key[];\n function pickMap<P extends keyof M[Key]>(prop: P) {\n return Object.fromEntries(Object.entries(metaMap).map(([k, v]) => [k, v[prop]])) as {\n [K in Key]: M[K][P];\n };\n }\n function get<K extends Key>(key: K): M[K] {\n return metaMap[key];\n }\n return { Values, pickMap, get };\n}\n\nfunction enumPickMap<M extends EnumMetaMap, P extends keyof M[keyof M]>(e: DefinedEnum<M>, prop: P): { [K in keyof M]: M[K][P] } {\n return e.pickMap(prop) as { [K in keyof M]: M[K][P] };\n}\n\nexport { defineEnum, enumPickMap };\nexport type { EnumMetaMap, DefinedEnum, EnumInferMeta, EnumValue };\n","/**\n * 单条 query key 工厂(支持一个或多个 id,可链式 .withPrefix)\n * Item query key factories (one or more ids, chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_ITEM } from \"./caches\";\n\n/**\n * 链式单条 key 类型:可调用 (...ids) => QueryKey,且带 withPrefix、getPrefix。\n * Chainable item key type: callable (...ids) => QueryKey, with withPrefix() and getPrefix.\n */\ntype ItemKeyChainable = ((...ids: string[]) => QueryKey) & {\n withPrefix(...prefix: unknown[]): ItemKeyChainable;\n /** 不含 id 的前缀,用于 invalidation 等。Prefix without ids, e.g. for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildItemKeyChainable(prefix: unknown[], domain: string, subDomain: string): ItemKeyChainable {\n const base: QueryKey = [...prefix, domain, CACHE_ITEM, subDomain];\n const fn = ((...ids: string[]): QueryKey => [...base, ...ids]) as ItemKeyChainable;\n\n Object.defineProperty(fn, \"withPrefix\", {\n value(...more: unknown[]): ItemKeyChainable {\n return buildItemKeyChainable([...more, ...prefix], domain, subDomain);\n },\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n Object.defineProperty(fn, \"getPrefix\", {\n get(): QueryKey {\n return [...base];\n },\n enumerable: false,\n configurable: true,\n });\n\n return fn;\n}\n\n/**\n * 创建「单条」query key 工厂(可链式 .withPrefix):支持传入一个或多个 id,返回 [domain, CACHE_ITEM, subDomain, ...ids]\n * Creates an item query key factory (chainable .withPrefix): accepts one or more ids, returns [domain, CACHE_ITEM, subDomain, ...ids].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 可调用的 key 工厂,带 withPrefix 可链式加前缀。Callable key factory with withPrefix for chaining.\n * @example\n * ```ts\n * const getKey = createItemKey(\"catalog\", \"category\");\n * getKey(\"abc\");\n * * => [\"catalog\", \"item\", \"category\", \"abc\"]\n * getKey.getPrefix\n * * => [\"catalog\", \"item\", \"category\"]\n * createItemKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"item\", \"category\"]\n * ```\n */\nfunction createItemKey(domain: string, subDomain: string): ItemKeyChainable {\n return buildItemKeyChainable([], domain, subDomain);\n}\n\nexport { createItemKey };\nexport type { ItemKeyChainable };\n","/**\n * 列表 query key 工厂(可链式 .withPrefix)\n * List query key factories (chainable .withPrefix).\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\n\nimport { CACHE_LIST } from \"./caches\";\n\n/**\n * 链式列表 key 类型:本身即 QueryKey(数组),且带 withPrefix、getPrefix。\n * Chainable list key type: is a QueryKey (array) and has withPrefix(), getPrefix.\n */\ntype ListKeyChainable = QueryKey & {\n withPrefix(...prefix: unknown[]): ListKeyChainable;\n /** 列表 key 的前缀(即完整 list key,用于 invalidation 等)。Prefix (full list key) for invalidation. */\n getPrefix: QueryKey;\n};\n\nfunction buildListKeyChainable(prefix: unknown[], domain: string, subDomain: string): ListKeyChainable {\n const key: QueryKey = [...prefix, domain, CACHE_LIST, subDomain];\n const arr = [...key];\n\n // 必须不可枚举:TanStack Query v5 的 partialMatchKey 会对 filter 的 queryKey 做 Object.keys;\n // 若 withPrefix/getPrefix 可枚举,invalidateQueries({ queryKey: listKey }) 永远无法匹配 [...listKey, filter]的缓存 key。\n Object.defineProperty(arr, \"withPrefix\", {\n value(...more: unknown[]): ListKeyChainable {\n return buildListKeyChainable([...more, ...prefix], domain, subDomain);\n },\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n Object.defineProperty(arr, \"getPrefix\", {\n get(): QueryKey {\n return [...key];\n },\n enumerable: false,\n configurable: true,\n });\n\n return arr as unknown as ListKeyChainable;\n}\n\n/**\n * 创建「列表」query key(可链式 .withPrefix):[domain, CACHE_LIST, subDomain]\n * Creates a list query key (chainable .withPrefix): [domain, CACHE_LIST, subDomain].\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 列表 query key(数组),带 withPrefix 可链式加前缀。List query key (array) with withPrefix for chaining.\n * @example\n * ```ts\n * const key = createListKey(\"catalog\", \"category\");\n * * key => [\"catalog\", \"list\", \"category\"]\n * key.getPrefix\n * * => [\"catalog\", \"list\", \"category\"]\n * createListKey(\"catalog\", \"category\").withPrefix(\"api\").withPrefix(\"v1\").getPrefix;\n * * => [\"v1\", \"api\", \"catalog\", \"list\", \"category\"]\n * ```\n */\nfunction createListKey(domain: string, subDomain: string): ListKeyChainable {\n return buildListKeyChainable([], domain, subDomain);\n}\n\nexport { createListKey };\nexport type { ListKeyChainable };\n","/**\n * 通用 React Query key 工厂(公用包层)\n * Universal React Query key factories for shared use.\n *\n * @example\n * ```ts\n * import { createListKey, createItemKey } from \"@/constants\";\n *\n * const CATALOG_CATEGORY_LIST = createListKey(\"catalog\", \"category\");\n * const CATALOG_CATEGORY = createItemKey(\"catalog\", \"category\");\n *\n * useQuery({ queryKey: CATALOG_CATEGORY_LIST, queryFn: ... });\n * useQuery({ queryKey: CATALOG_CATEGORY(id), queryFn: ... });\n * ```\n */\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { ItemKeyChainable } from \"./query.itemkeys\";\nimport type { ListKeyChainable } from \"./query.listkeys\";\n\nimport { createItemKey } from \"./query.itemkeys\";\nimport { createListKey } from \"./query.listkeys\";\n\n/** 含 list / item 且可链式 withPrefix 的 bundle 类型 */\ntype QueryKeysBundle = {\n list: ListKeyChainable;\n item: ItemKeyChainable;\n withPrefix(...prefix: unknown[]): QueryKeysBundle;\n};\n\nfunction createQueryKeysBundle(list: ListKeyChainable, item: ItemKeyChainable): QueryKeysBundle {\n return {\n list,\n item,\n withPrefix(...prefix: unknown[]) {\n return createQueryKeysBundle(list.withPrefix(...prefix), item.withPrefix(...prefix));\n },\n };\n}\n\n/**\n * 创建自定义 query key(任意片段,用于 stats 等)\n * Creates a custom query key from arbitrary segments (e.g. for stats).\n *\n * @param segments - 任意片段(字符串或其它)。Arbitrary segments (strings or other).\n * @returns 由片段组成的 query key。Query key composed of the segments.\n * @example\n * ```ts\n * const key = createKey(\"catalog\", \"stats\", \"category\", \"count\");\n * * key => [\"catalog\", \"stats\", \"category\", \"count\"]\n * ```\n */\nfunction createKey(...segments: unknown[]): QueryKey {\n return segments;\n}\n\n/**\n * 根据同一 domain + subDomain 生成 list key 与 item key 工厂\n * Returns both list key and item key factory for the given domain and subDomain.\n *\n * @param domain - 域名。Domain name (e.g. \"catalog\", \"auth\").\n * @param subDomain - 子域。Sub-domain (e.g. \"category\", \"product\").\n * @returns 含 list、item 及 withPrefix 的 bundle,可链式加前缀。Bundle with list, item, and chainable withPrefix.\n * @example\n * ```ts\n * const { list, item } = createQueryKeys(\"catalog\", \"category\");\n * * list => [\"catalog\", \"list\", \"category\"]\n * * item(\"id-1\") => [\"catalog\", \"item\", \"category\", \"id-1\"]\n * const withApi = createQueryKeys(\"catalog\", \"category\").withPrefix(\"api\");\n * * withApi.list => [\"api\", \"catalog\", \"list\", \"category\"]\n * * withApi.item(\"id-1\") => [\"api\", \"catalog\", \"item\", \"category\", \"id-1\"]\n * ```\n */\nfunction createQueryKeys(domain: string, subDomain: string): QueryKeysBundle {\n return createQueryKeysBundle(createListKey(domain, subDomain), createItemKey(domain, subDomain));\n}\n\nexport { createKey, createQueryKeys };\nexport type { QueryKeysBundle };\n"],"mappings":"AACA,IAAM,IAAa,QAGb,IAAa;ACQnB,SAAS,EAAwC,GAA4B;AAE3E,QAAM,IAAS,OAAO,KAAK,CAAA;AAC3B,WAAS,EAAgC,GAAS;AAChD,WAAO,OAAO,YAAY,OAAO,QAAQ,CAAA,EAAS,IAAA,CAAK,CAAC,GAAG,CAAA,MAAO,CAAC,GAAG,EAAE,CAAA,CAAA,CAAM,CAAC;AAAA;AAIjF,WAAS,EAAmB,GAAc;AACxC,WAAO,EAAQ,CAAA;AAAA;AAEjB,SAAO;AAAA,IAAE,QAAA;AAAA,IAAQ,SAAA;AAAA,IAAS,KAAA;AAAA;;AAG5B,SAAS,EAA+D,GAAmB,GAAsC;AAC/H,SAAO,EAAE,QAAQ,CAAA;;ACTnB,SAAS,EAAsB,GAAmB,GAAgB,GAAqC;AACrG,QAAM,IAAiB;AAAA,IAAC,GAAG;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAY;AAAA,KACjD,KAAA,IAAU,MAA4B,CAAC,GAAG,GAAM,GAAG,CAAA;AAEzD,gBAAO,eAAe,GAAI,cAAc;AAAA,IACtC,SAAS,GAAmC;AAC1C,aAAO,EAAsB,CAAC,GAAG,GAAM,GAAG,CAAA,GAAS,GAAQ,CAAA;AAAA;IAE7D,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,GACf,GAED,OAAO,eAAe,GAAI,aAAa;AAAA,IACrC,MAAgB;AACd,aAAO,CAAC,GAAG,CAAA;AAAA;IAEb,YAAY;AAAA,IACZ,cAAc;AAAA,GACf,GAEM;;AAqBT,SAAS,EAAc,GAAgB,GAAqC;AAC1E,SAAO,EAAsB,CAAA,GAAI,GAAQ,CAAA;;AC3C3C,SAAS,EAAsB,GAAmB,GAAgB,GAAqC;AACrG,QAAM,IAAgB;AAAA,IAAC,GAAG;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAY;AAAA,KAChD,IAAM,CAAC,GAAG,CAAA;AAIhB,gBAAO,eAAe,GAAK,cAAc;AAAA,IACvC,SAAS,GAAmC;AAC1C,aAAO,EAAsB,CAAC,GAAG,GAAM,GAAG,CAAA,GAAS,GAAQ,CAAA;AAAA;IAE7D,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,GACf,GAED,OAAO,eAAe,GAAK,aAAa;AAAA,IACtC,MAAgB;AACd,aAAO,CAAC,GAAG,CAAA;AAAA;IAEb,YAAY;AAAA,IACZ,cAAc;AAAA,GACf,GAEM;;AAoBT,SAAS,EAAc,GAAgB,GAAqC;AAC1E,SAAO,EAAsB,CAAA,GAAI,GAAQ,CAAA;;ACjC3C,SAAS,EAAsB,GAAwB,GAAyC;AAC9F,SAAO;AAAA,IACL,MAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAc,GAAmB;AAC/B,aAAO,EAAsB,EAAK,WAAW,GAAG,CAAA,GAAS,EAAK,WAAW,GAAG,CAAA,CAAO;AAAA;;;AAiBzF,SAAS,KAAa,GAA+B;AACnD,SAAO;;AAoBT,SAAS,EAAgB,GAAgB,GAAoC;AAC3E,SAAO,EAAsB,EAAc,GAAQ,CAAA,GAAY,EAAc,GAAQ,CAAA,CAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.itemkeys.d.ts","sourceRoot":"","sources":["../../../src/constants/query.itemkeys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;GAGG;AACH,KAAK,gBAAgB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,KAAK,QAAQ,CAAC,GAAG;IACzD,UAAU,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;IACnD,6EAA6E;IAC7E,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC;AAeF;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAE1E;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"query.itemkeys.d.ts","sourceRoot":"","sources":["../../../src/constants/query.itemkeys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;GAGG;AACH,KAAK,gBAAgB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,KAAK,QAAQ,CAAC,GAAG;IACzD,UAAU,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;IACnD,6EAA6E;IAC7E,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC;AA0BF;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAE1E;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.listkeys.d.ts","sourceRoot":"","sources":["../../../src/constants/query.listkeys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;GAGG;AACH,KAAK,gBAAgB,GAAG,QAAQ,GAAG;IACjC,UAAU,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;IACnD,0FAA0F;IAC1F,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC;AAcF;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAE1E;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"query.listkeys.d.ts","sourceRoot":"","sources":["../../../src/constants/query.listkeys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;GAGG;AACH,KAAK,gBAAgB,GAAG,QAAQ,GAAG;IACjC,UAAU,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;IACnD,0FAA0F;IAC1F,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC;AA4BF;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAE1E;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -43,7 +43,7 @@ type Objectable<T extends Record<string, unknown>> = T | {};
43
43
  * Arrayable: T[] | [],T 为数组元素类型。
44
44
  * @example Arrayable<string> => string[] | []
45
45
  */
46
- type Arrayable<T> = Array<T> | [];
46
+ type Arrayable<T> = Array<T> | T[];
47
47
  /**
48
48
  * 存在性结果元组:有值时为 [T, true],无值时为 [null, false]。用于区分「有值」与「无」而不依赖 undefined。
49
49
  * Existence result tuple: [T, true] when present, [null, false] when absent.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/types/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAEpB;;;GAGG;AACH,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE5B;;;GAGG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAE9B;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvC;;;GAGG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE,CAAC;AAE9C;;;GAGG;AACH,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAExC;;;GAGG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AAE3C;;;GAGG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAE5D;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAElC;;;;GAIG;AACH,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEpD;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7B;;;GAGG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAExB;;;;GAIG;AACH,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAE3E;;;;GAIG;AACH,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEzC;;;;GAIG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAEhC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/types/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAEpB;;;GAGG;AACH,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE5B;;;GAGG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAE9B;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvC;;;GAGG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE,CAAC;AAE9C;;;GAGG;AACH,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAExC;;;GAGG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AAE3C;;;GAGG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAE5D;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAEnC;;;;GAIG;AACH,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEpD;;;GAGG;AACH,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7B;;;GAGG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAExB;;;;GAIG;AACH,KAAK,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAE3E;;;;GAIG;AACH,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEzC;;;;GAIG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAEhC,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -35,8 +35,10 @@ export declare function safeNilable<T extends string>(value: Emptyable<T>): Nila
35
35
  * @returns value ?? defaultValue ?? [] (never null/undefined)
36
36
  * @example safeArray(product.tags) // product.tags ?? []
37
37
  * @example safeArray(product.tags, ['default'])
38
+ *
39
+ * 参数使用 `Array&lt;T&gt;`(即 `T[]`,见 `@/types`)与全库类型别名一致;入参也接受 `readonly T[]`,便于兼容只读数组来源。
38
40
  */
39
- export declare function safeArray<T>(value: Nilable<Array<T>>, defaultValue?: Array<T>): Array<T>;
41
+ export declare function safeArray<T>(value: Nilable<Array<T> | readonly T[]>, defaultValue?: Array<T>): Array<T>;
40
42
  /**
41
43
  * 将 Nilable 数值规范为 Zeroable:null/undefined 转为 0。返回类型 Zeroable&lt;number&gt;(即 number,0 为兜底)。
42
44
  * Normalize Nilable number to Zeroable: null/undefined to 0. Returns Zeroable&lt;number&gt; (number with 0 as fallback).
@@ -61,7 +63,11 @@ export declare function safeStringable<T extends string>(value: Emptyable<T>): S
61
63
  * @returns value ?? defaultValue
62
64
  * @example safeOr(product.stock, 0)
63
65
  * @example safeOr(product.name, '')
66
+ *
67
+ * 使用两个类型参数时,若第一个实参无法收窄(例如索引访问、宽泛的 Record),`T` 可能被推断为 `unknown`,结果变成 `unknown`。
68
+ * 因此提供**单类型**重载:当 `defaultValue` 与「有值时」的类型一致时,应写 `safeOr(x, fallback)` 且两者同型,返回即为 `T`。
64
69
  */
70
+ export declare function safeOr<T>(value: Nilable<T>, defaultValue: T): T;
65
71
  export declare function safeOr<T, D>(value: Nilable<T>, defaultValue: D): T | D;
66
72
  /**
67
73
  * 安全取数字:null/undefined/NaN 转为 undefined,合法数字原样。返回类型 Maybe&lt;number&gt;。
@@ -1 +1 @@
1
- {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../src/utils/safe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhG;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAExF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAGnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAI7D"}
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../src/utils/safe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhG;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAMvG;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAGnF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;AACjE,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAKxE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAI7D"}