@inf-monkeys-tech/monkeys-design 1.0.21 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/agent-workbench/index.js.map +1 -1
- package/dist/components/agent-workbench/index.mjs.map +1 -1
- package/dist/components/layout/index.d.mts +1 -0
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.js +42 -18
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/layout/index.mjs +42 -18
- package/dist/components/layout/index.mjs.map +1 -1
- package/dist/index.js +42 -18
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +42 -18
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/utils.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseAvatar.tsx","../../../src/components/base/BaseButton.tsx","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/BaseTooltip.tsx","../../../src/components/layout/AppShellSidebar.tsx","../../../src/components/layout/UserAccountMenu.tsx","../../../src/components/layout/index.tsx"],"names":["createContext","useContext","useMemo","twMerge","forwardRef","BaseAvatar","useState","useEffect","jsxs","jsx","BaseButton","isValidElement","Fragment","BaseTooltip","Tooltip","AppShellSidebar","getInitials","DropdownMenu","cn","DropdownMenu2","useRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AAAA,IACR,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,YAAA;AAAA,MACZ,KAAA,EAAO,OAAA;AAAA,MACP,QAAA,EAAU,UAAA;AAAA,MACV,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAU,KAAM,CAAA,KAAA,EAAQ,IAAI,CAAA,IAAA,EAAO,SAAS,CAAA,CAAA;AAAA,MAC3D,WAAA,EAAa,CAAC,EAAE,IAAA,EAAM,WAAU,KAC9B,CAAA,KAAA,EAAQ,IAAI,CAAA,IAAA,EAAO,SAAS,CAAA,cAAA,CAAA;AAAA,MAC9B,YAAA,EAAc,WAAA;AAAA,MACd,KAAA,EAAO,CAAC,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM,KAAM,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,IAAA,EAAO,KAAK,CAAA;AAAA,KAC/D;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,OAAA,EAAS;AAAA,KACX;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS;AAAA,KACX;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,UAAA;AAAA,MACP,OAAA,EAAS,SAAA;AAAA,MACT,SAAA,EAAW,WAAA;AAAA,MACX,KAAA,EAAO,OAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,SAAA,EAAW,gBAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,IACA,aAAA,EAAe;AAAA,MACb,YAAA,EAAc,eAAA;AAAA,MACd,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,WAAA,EAAa,gBAAA;AAAA,MACb,KAAA,EAAO,YAAA;AAAA,MACP,cAAc,CAAC,EAAE,KAAA,EAAM,KAAM,UAAU,KAAK,CAAA;AAAA,KAC9C;AAAA,IACA,KAAA,EAAO;AAAA,MACL,YAAY,CAAC,EAAE,QAAA,EAAS,KAAM,eAAe,QAAQ,CAAA,CAAA;AAAA,MACrD,cAAc,CAAC,EAAE,QAAA,EAAS,KAAM,iBAAiB,QAAQ,CAAA,CAAA;AAAA,MACzD,UAAA,EAAY,CAAC,EAAE,QAAA,OACb,QAAA,GAAW,CAAA,YAAA,EAAe,QAAQ,CAAA,CAAA,GAAK,aAAA;AAAA,MACzC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,OAAA,EAAS;AAAA,MACP,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,YAAA;AAAA,QACP,MAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,QAAA,EAAU;AAAA,QACR,KAAA,EAAO,UAAA;AAAA,QACP,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,OAAA;AAAA,MACZ,YAAA,EAAc,SAAA;AAAA,MACd,uBAAA,EAAyB,uBAAA;AAAA,MACzB,yBAAA,EAA2B;AAAA,KAC7B;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,QAAA,EAAU;AAAA,QACR,OAAA,EAAS,cAAA;AAAA,QACT,MAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS,YAAA;AAAA,QACT,KAAA,EAAO,UAAA;AAAA,QACP,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,SAAA,EAAW;AAAA,MACT,gBAAA,EAAkB;AAAA,QAChB,aAAA,EAAe,gBAAA;AAAA,QACf,YAAA,EAAc,gBAAA;AAAA,QACd,eAAA,EAAiB,iBAAA;AAAA,QACjB,cAAA,EAAgB,oBAAA;AAAA,QAChB,iBAAA,EAAmB,qBAAA;AAAA,QACnB,kBAAA,EAAoB,sBAAA;AAAA,QACpB,gBAAA,EAAkB,oBAAA;AAAA,QAClB,iBAAA,EAAmB;AAAA;AACrB,KACF;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO,kBAAA;AAAA,MACP,SAAA,EAAW,WAAA;AAAA,MACX,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,uBAAA;AAAA,MACd,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAW,OAAO,OAAA,EAAQ;AAAA,MAC5C,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM,iBAAA;AAAA,QACN,KAAA,EAAO,eAAA;AAAA,QACP,MAAA,EAAQ,qBAAA;AAAA,QACR,KAAA,EAAO,mBAAA;AAAA,QACP,SAAA,EAAW,YAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,SAAA,EAAW,kBAAA;AAAA,QACX,WAAA,EAAa,aAAA;AAAA,QACb,gBAAA,EAAkB,mBAAA;AAAA,QAClB,UAAA,EAAY,qBAAA;AAAA,QACZ,YAAA,EAAc,uBAAA;AAAA,QACd,MAAA,EAAQ,iBAAA;AAAA,QACR,QAAA,EAAU,mBAAA;AAAA,QACV,MAAA,EAAQ,iBAAA;AAAA,QACR,SAAA,EAAW,WAAA;AAAA,QACX,QAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS,SAAA;AAAA,QACT,cAAA,EAAgB,YAAA;AAAA,QAChB,gBAAA,EAAkB,EAAE,GAAA,EAAK,KAAA,EAAO,QAAQ,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,YAAA,EAAa;AAAA,QACpF,mBAAmB,EAAE,mBAAA,EAAqB,qBAAqB,cAAA,EAAgB,cAAA,EAAgB,eAAe,aAAA;AAAc,OAC9H;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,OAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS,SAAA;AAAA,UACT,OAAA,EAAS,SAAA;AAAA,UACT,SAAA,EAAW,WAAA;AAAA,UACX,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ;AAAA;AACV,OACF;AAAA,MACA,QAAA,EAAU;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,MAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAM,CAAC,EAAE,IAAA,EAAK,KAAM,QAAQ,IAAI,CAAA;AAAA,OAClC;AAAA,MACA,GAAA,EAAK;AAAA,QACH,QAAA,EAAU,aAAA;AAAA,QACV,cAAc,CAAC,EAAE,QAAA,EAAS,KAAM,qBAAqB,QAAQ,CAAA;AAAA,OAC/D;AAAA,MACA,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,OAAM,KAAM,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,OAAA;AAAA,OAClD;AAAA,MACA,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,4BAAA;AAAA,QACR,cAAA,EAAgB,cAAA;AAAA,QAChB,WAAA,EAAa,cAAA;AAAA,QACb,SAAA,EAAW,4BAAA;AAAA,QACX,MAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,QAAA,EAAU,WAAA;AAAA,QACV,UAAA,EAAY,aAAA;AAAA,QACZ,YAAA,EAAc,2BAAA;AAAA,QACd,QAAA,EAAU,gBAAA;AAAA,QACV,SAAA,EAAW,YAAA;AAAA,QACX,cAAA,EAAgB,iBAAA;AAAA,QAChB,OAAA,EAAS,UAAA;AAAA,QACT,aAAA,EAAe,gBAAA;AAAA,QACf,OAAA,EAAS,YAAA;AAAA,QACT,WAAA,EAAa,eAAA;AAAA,QACb,aAAA,EAAe,iBAAA;AAAA,QACf,SAAA,EAAW,qBAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,GAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,OAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,IAAA,EAAM,MAAA;AAAA,QACN,MAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,SAAA,EAAW,WAAA;AAAA,QACX,MAAA,EAAQ,QAAA;AAAA,QACR,cAAc,CAAC,EAAE,OAAA,EAAQ,KAAM,GAAG,OAAO,CAAA,cAAA;AAAA,OAC3C;AAAA,MACA,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAa,gCAAA;AAAA,QACb,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,MAAA;AAAA,QACN,WAAA,EAAa,aAAA;AAAA,QACb,UAAA,EAAY,aAAA;AAAA,QACZ,OAAA,EAAS,SAAA;AAAA,QACT,YAAA,EAAc,8BAAA;AAAA,QACd,aAAA,EAAe,qCAAA;AAAA,QACf,UAAA,EAAY,YAAA;AAAA,QACZ,YAAA,EAAc,eAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,mBAAA;AAAA,UACP,OAAA,EAAS,SAAA;AAAA,UACT,SAAA,EAAW;AAAA,SACb;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,MAAA,EAAQ,QAAA;AAAA,UACR,OAAA,EAAS,SAAA;AAAA,UACT,gBAAA,EAAkB,sBAAA;AAAA,UAClB,QAAA,EAAU,UAAA;AAAA,UACV,OAAA,EAAS,SAAA;AAAA,UACT,SAAA,EAAW,WAAA;AAAA,UACX,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,EAAE,KAAA,EAAO,sBAAA,EAAwB,aAAa,wCAAA,EAAyC;AAAA,UAChG,KAAA,EAAO,EAAE,KAAA,EAAO,kBAAA,EAAoB,aAAa,uCAAA,EAAwC;AAAA,UACzF,KAAA,EAAO,EAAE,KAAA,EAAO,6BAAA,EAA+B,aAAa,2CAAA;AAA4C,SAC1G;AAAA,QACA,OAAA,EAAS;AAAA,UACP,KAAA,EAAO,oBAAA;AAAA,UACP,WAAA,EAAa,cAAA;AAAA,UACb,KAAA,EAAO,OAAA;AAAA,UACP,YAAA,EAAc,eAAA;AAAA,UACd,MAAA,EAAQ,QAAA;AAAA,UACR,iBAAA,EAAmB,sBAAA;AAAA,UACnB,YAAA,EAAc,gBAAA;AAAA,UACd,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,cAAA;AAAA,UACP,KAAA,EAAO,OAAA;AAAA,UACP,SAAA,EAAW,WAAA;AAAA,UACX,KAAA,EAAO,OAAA;AAAA,UACP,SAAA,EAAW,WAAA;AAAA,UACX,UAAU,CAAC,EAAE,IAAA,EAAK,KAAM,aAAa,IAAI,CAAA,CAAA;AAAA,UACzC,UAAA,EAAY,EAAE,KAAA,EAAO,OAAA,EAAS,UAAU,UAAA,EAAY,OAAA,EAAS,SAAA,EAAW,OAAA,EAAS,SAAA,EAAU;AAAA,UAC3F,aAAA,EAAe,EAAE,MAAA,EAAQ,SAAA,EAAW,QAAQ,SAAA;AAAU;AACxD;AACF;AACF;AAEJ,CAAA;;;ACpIO,SAAS,0BAAA,CACd,MACA,QAAA,EACuB;AACvB,EAAe,OAAO,IAAA;AAiHxB;AAEO,IAAM,oBAAA,GAA8C;AAAA,EACzD,QAAQ,IAAA,CAAK,MAAA;AAAA,EACb,QAAA,EAAU,0BAAA;AAAA,IACR,IAAA,CAAK;AAAA;AAET,CAAA;;;AC7KA,IAAM,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAC1C,IAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAcrC,IAAM,gDAAgC,MAAA,CAAO,GAAA;AAAA,EAC3C;AACF,CAAA;AAMA,SAAS,6BAAA,GAAyD;AAChE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAQA,mBAAA,CAAyC;AAAA,MAC/C,GAAG,oBAAA;AAAA,MACH,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,IACD,OAAOA,mBAAA,CAAwC;AAAA,MAC7C,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,IACD,WAAWA,mBAAA,CAA4C;AAAA,MACrD,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,IACD,aAAaA,mBAAA,CAA8C;AAAA,MACzD,QAAA,EAAU,KAAA;AAAA,MACV,WAAA,EAAa,iBAAA;AAAA,MACb,MAAA,EAAQ;AAAA,KACT;AAAA,GACF,CAAA;AACH;AAEA,SAAS,0BAAA,GAAsD;AAC7D,EAAA,MAAM,IAAA,GAAO,UAAA;AACb,EAAA,MAAM,QAAA,GAAW,KAAK,6BAA6B,CAAA;AACnD,EAAA,IAAI,UAAU,OAAO,QAAA;AAErB,EAAA,MAAM,WAAW,6BAAA,EAA8B;AAC/C,EAAA,MAAA,CAAO,cAAA,CAAe,MAAM,6BAAA,EAA+B;AAAA,IACzD,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY,KAAA;AAAA,IACZ,YAAA,EAAc,KAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,OAAO,QAAA;AACT;AAEA,IAAM,mBAAmB,0BAAA,EAA2B;AAE7C,IAAM,uBAAuB,gBAAA,CAAiB,MAAA;AAE9C,IAAM,sBAAsB,gBAAA,CAAiB,KAAA;AAE7C,IAAM,0BAA0B,gBAAA,CAAiB,SAAA;AAEjD,IAAM,4BAA4B,gBAAA,CAAiB,WAAA;AAE1D,SAAS,eAAA,CACP,WACA,QAAA,EACe;AACf,EAAA,IAAI,QAAA,KAAa,QAAW,OAAO,SAAA;AACnC,EAAA,IAAI,SAAA,KAAc,QAAW,OAAO,QAAA;AAEpC,EAAA,OAAO;AAAA,IACL,GAAG,SAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,KAAA,EACE,SAAA,CAAU,KAAA,IAAS,QAAA,CAAS,KAAA,GACxB,EAAE,GAAG,SAAA,CAAU,KAAA,EAAO,GAAG,QAAA,CAAS,KAAA,EAAM,GACxC,MAAA;AAAA,IACN,MAAA,EACE,SAAA,CAAU,MAAA,IAAU,QAAA,CAAS,MAAA,GACzB,EAAE,GAAG,SAAA,CAAU,MAAA,EAAQ,GAAG,QAAA,CAAS,MAAA,EAAO,GAC1C;AAAA,GACR;AACF;AAcO,SAAS,yBACd,QAAA,EAC4B;AAC5B,EAAA,MAAM,SAAA,GAAYC,gBAAA,CAAW,mBAAmB,CAAA,CAAE,cAAA;AAClD,EAAA,OAAOC,aAAA;AAAA,IACL,MAAM,eAAA,CAAgB,SAAA,EAAW,QAAQ,CAAA;AAAA,IACzC,CAAC,UAAU,SAAS;AAAA,GACtB;AACF;AAgBO,SAAS,qBAAA,GAAwB;AACtC,EAAA,OAAOD,gBAAA,CAAW,yBAAyB,CAAA,CAAE,WAAA;AAC/C;AAEO,SAAS,uBAAA,GAA0B;AACxC,EAAA,OAAOA,gBAAA,CAAW,yBAAyB,CAAA,CAAE,MAAA;AAC/C;AAEO,SAAS,6BAAA,GAA4D;AAC1E,EAAA,MAAM,MAAA,GAASA,iBAAW,oBAAoB,CAAA;AAC9C,EAAA,MAAM,KAAA,GAAQA,iBAAW,mBAAmB,CAAA;AAC5C,EAAA,MAAM,SAAA,GAAYA,iBAAW,uBAAuB,CAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,QAAA,IAAY,KAAA,CAAM,YAAY,SAAA,CAAU,QAAA;AAEtE,EAAA,OAAOC,aAAA;AAAA,IACL,MACE,cAAA,GACI;AAAA,MACE,KAAK,SAAA,CAAU,SAAA;AAAA,MACf,0BAA0B,SAAA,CAAU,SAAA;AAAA,MACpC,uBAAuB,MAAA,CAAO,MAAA;AAAA,MAC9B,sBAAsB,KAAA,CAAM,OAAA;AAAA,MAC5B,yBAAA,EAA2B,MAAM,aAAA,EAAe;AAAA,QAElD,EAAC;AAAA,IACP;AAAA,MACE,SAAA,CAAU,SAAA;AAAA,MACV,MAAA,CAAO,MAAA;AAAA,MACP,cAAA;AAAA,MACA,MAAM,aAAA,EAAe,SAAA;AAAA,MACrB,KAAA,CAAM;AAAA;AACR,GACF;AACF;AC3NO,SAAS,MAAM,KAAA,EAAiD;AACrE,EAAA,OAAOC,sBAAQ,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAChD;AAEO,SAAS,kBAAkB,IAAA,EAAiB;AACjD,EAAA,OAAO,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,IAAQ,OAAO,IAAA,KAAS,SAAA;AAChE;;;ACeA,IAAM,cAA+B,EAAC;AAEtC,IAAM,UAAA,GACJ,sEAAA;AAEF,IAAM,iBAAA,GACJ,0EAAA;AAEF,IAAM,eAAA,GACJ,gFAAA;AACF,IAAM,oBAAA,GAAuB,EAAA;AAAA,EAC3B,wBAAA;AAAA,EACA,iEAAA;AAAA,EACA,uDAAA;AAAA,EACA,uJAAA;AAAA,EACA,oJAAA;AAAA,EACA,oJAAA;AAAA,EACA,8CAAA;AAAA,EACA,6CAAA;AAAA,EACA,qFAAA;AAAA,EACA,+FAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,sBAAA,GAAyB,EAAA;AAAA,EAC7B,8DAAA;AAAA,EACA,uDAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,SAAA,GAA2B;AAAA,EAC/B,UAAA,EACE,EAAA;AAAA,IACE,0IAAA;AAAA,IACA,6CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,aAAA,EACE,gEAAA;AAAA,EACF,aAAA,EACE,kEAAA;AAAA,EACF,aAAA,EACE,sLAAA;AAAA,EACF,aAAA,EACE,6LAAA;AAAA,EACF,YAAA,EACE,uFAAA;AAAA,EACF,WAAA,EACE,4FAAA;AAAA,EACF,YAAA,EAAc,8CAAA;AAAA,EACd,cAAA,EAAgB,gCAAA;AAAA,EAChB,cAAA,EAAgB,UAAA;AAAA,EAChB,UAAA,EACE,0DAAA;AAAA,EACF,WAAA,EAAa,kBAAA;AAAA,EACb,SAAA,EACE,EAAA;AAAA,IACE,iGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,YAAA,EAAc,gDAAA;AAAA,EACd,YAAA,EAAc,8CAAA;AAAA,EACd,YAAA,EAAc,oIAAA;AAAA,EACd,YAAA,EAAc,4IAAA;AAAA,EACd,WAAA,EAAa,+DAAA;AAAA,EACb,UAAA,EAAY,iDAAA;AAAA,EACZ,SAAA,EAAW,8DAAA;AAAA,EACX,UAAA,EAAY,kBAAA;AAAA,EACZ,QAAA,EAAU,+BAAA;AAAA,EACV,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,WAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,UAAA,EAAY,SAAA;AAAA,EACZ,qBAAA,EAAuB,iBAAA;AAAA,EACvB,mBAAA,EAAqB,uBAAA;AAAA,EACrB,qBAAA,EAAuB,cAAA;AAAA,EACvB,qBAAA,EAAuB,wCAAA;AAAA,EACvB,qBAAA,EAAuB,oCAAA;AAAA,EACvB,oBAAA,EAAsB,uBAAA;AAAA,EACtB,qBAAA,EAAuB,cAAA;AAAA,EACvB,WAAA,EAAa,kDAAA;AAAA,EACb,aAAA,EAAe,mBAAA;AAAA,EACf,aAAA,EAAe,qBAAA;AAAA,EACf,aAAA,EAAe,mBAAA;AAAA,EACf,aAAA,EAAe,mBAAA;AAAA,EACf,aAAA,EAAe,oBAAA;AAAA,EACf,cAAA,EAAgB,oBAAA;AAAA,EAChB,QAAA,EACE,8KAAA;AAAA,EACF,UAAA,EACE,mHAAA;AAAA,EACF,SAAA,EACE,mGAAA;AAAA,EACF,WAAA,EAAa,6BAAA;AAAA,EACb,OAAA,EACE,yMAAA;AAAA,EACF,QAAA,EAAU,2DAAA;AAAA,EACV,kBAAA,EAAoB,gBAAA;AAAA,EACpB,kBAAA,EAAoB,gBAAA;AAAA,EACpB,kBAAA,EAAoB,gBAAA;AAAA,EACpB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,gBAAA,EAAkB,eAAA;AAAA,EAClB,gBAAA,EAAkB,eAAA;AAAA,EAClB,iBAAA,EAAmB,cAAA;AAAA,EACnB,oBAAA,EAAsB,oBAAA;AAAA,EACtB,oBAAA,EAAsB,oBAAA;AAAA,EACtB,QAAA,EAAU,qDAAA;AAAA,EACV,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,uBAAA;AAAA,EACZ,QAAA,EAAU,cAAA;AAAA,EACV,aAAA,EAAe,wBAAA;AAAA,EACf,eAAA,EACE,4DAAA;AAAA,EACF,WAAA,EACE,4EAAA;AAAA,EACF,gBAAA,EACE,uHAAA;AAAA,EACF,kBAAA,EAAoB,SAAA;AAAA,EACpB,uBAAA,EACE,ufAAA;AAAA,EACF,YAAA,EAAc,sCAAA;AAAA,EACd,cAAA,EAAgB,yDAAA;AAAA,EAChB,mBAAA,EAAqB,8CAAA;AAAA,EACrB,aAAA,EAAe,8CAAA;AAAA,EACf,eAAA,EAAiB,yBAAA;AAAA,EACjB,SAAA,EAAW,2CAAA;AAAA,EACX,eAAA,EACE,yDAAA;AAAA,EACF,aAAA,EAAe,MAAA;AAAA,EACf,SAAA,EAAW,kBAAA;AAAA,EACX,mBAAA,EAAqB,kCAAA;AAAA,EACrB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,YAAA,EACE,sGAAA;AAAA,EACF,uBAAA,EACE,4MAAA;AAAA,EACF,oBAAA,EAAsB,gCAAA;AAAA,EACtB,cAAA,EACE,mHAAA;AAAA,EACF,qBAAA,EAAuB,mDAAA;AAAA,EACvB,qBAAA,EAAuB,8CAAA;AAAA,EACvB,uBAAA,EACE,mDAAA;AAAA,EACF,mBAAA,EACE,+DAAA;AAAA,EACF,YAAA,EAAc,2BAAA;AAAA,EACd,UAAA,EAAY,mDAAA;AAAA,EACZ,gBAAA,EACE,6DAAA;AAAA,EACF,WAAA,EAAa,SAAA;AAAA,EACb,cAAA,EAAgB,oBAAA;AAAA,EAChB,wBAAA,EAA0B,iBAAA;AAAA,EAC1B,sBAAA,EACE,yDAAA;AAAA,EACF,uBAAA,EAAyB,eAAA;AAAA,EACzB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,kBAAA,EAAoB,iBAAA;AAAA,EACpB,kBAAA,EAAoB,cAAA;AAAA,EACpB,uBAAA,EACE,wEAAA;AAAA,EACF,qBAAA,EACE,iVAAA;AAAA,EACF,oBAAA,EAAsB,MAAA;AAAA,EACtB,mBAAA,EACE,oSAAA;AAAA,EACF,cAAA,EACE,EAAA;AAAA,IACE,gMAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,iBAAA,EACE,2FAAA;AAAA,EACF,kBAAA,EAAoB,iCAAA;AAAA,EACpB,iBAAA,EACE,iDAAA;AAAA,EACF,sBAAA,EACE,+EAAA;AAAA,EACF,oBAAA,EACE,+EAAA;AAAA,EACF,oBAAA,EACE,2LAAA;AAAA,EACF,kBAAA,EACE,2LAAA;AAAA,EACF,SAAA,EACE,EAAA;AAAA,IACE,uGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,gBAAA,EACE,gCAAA;AAAA,EACF,aAAA,EAAe,gCAAA;AAAA,EACf,aAAA,EAAe,gCAAA;AAAA,EACf,UAAA,EACE,0BAAA;AAAA,EACF,WAAA,EAAa,aAAA;AAAA,EACb,UAAA,EAAY,qEAAA;AAAA,EACZ,gBAAA,EAAkB,2CAAA;AAAA,EAClB,SAAA,EAAW,2CAAA;AAAA,EACX,mBAAA,EAAqB,MAAA;AAAA,EACrB,WAAA,EAAa,8CAAA;AAAA,EACb,SAAA,EACE,EAAA;AAAA,IACE,4HAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,SAAA,EACE,wIAAA;AAAA,EACF,UAAA,EAAY,uCAAA;AAAA,EACZ,gBAAA,EAAkB,uDAAA;AAAA,EAClB,YAAA,EAAc,uDAAA;AAAA,EACd,cAAA,EACE,6DAAA;AAAA,EACF,SAAA,EAAW,oBAAA;AAAA,EACX,aAAA,EAAe,iDAAA;AAAA,EACf,UAAA,EAAY,0DAAA;AAAA,EACZ,aAAA,EAAe,uBAAA;AAAA,EACf,gBAAA,EAAkB,yCAAA;AAAA,EAClB,YAAA,EAAc,yCAAA;AAAA,EACd,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EACE,EAAA;AAAA,IACE,iIAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,WAAA,EACE,wIAAA;AAAA,EACF,YAAA,EAAc,KAAA;AAAA,EACd,eAAA,EAAiB,kCAAA;AAAA,EACjB,aAAA,EAAe,sEAAA;AAAA,EACf,WAAA,EACE,yGAAA;AAAA,EACF,eAAA,EACE,6EAAA;AAAA,EACF,cAAA,EACE,0DAAA;AAAA,EACF,eAAA,EAAiB,gCAAA;AAAA,EACjB,eAAA,EAAiB,aAAA;AAAA,EACjB,aAAA,EACE,EAAA;AAAA,IACE,wIAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,UAAA,EACE,oRAAA;AAAA,EACF,YAAA,EACE,EAAA;AAAA,IACE,oHAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,kBAAA,EAAoB,kCAAA;AAAA,EACpB,oBAAA,EAAsB,4BAAA;AAAA,EACtB,oBAAA,EAAsB,gCAAA;AAAA,EACtB,iBAAA,EAAmB,uBAAA;AAAA,EACnB,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,sDAAA;AAAA,EACZ,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EACE,EAAA;AAAA,IACE,sIAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,WAAA,EACE,EAAA;AAAA,IACE,4DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,aAAA,EAAe,yDAAA;AAAA,EACf,cAAA,EAAgB,gCAAA;AAAA,EAChB,aAAA,EAAe,oBAAA;AAAA,EACf,WAAA,EAAa,kDAAA;AAAA,EACb,iBAAA,EAAmB,yCAAA;AAAA,EACnB,YAAA,EAAc,sDAAA;AAAA,EACd,aAAA,EAAe,SAAA;AAAA,EACf,WAAA,EACE,EAAA;AAAA,IACE,wJAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,kBAAA,EAAoB,sDAAA;AAAA,EACpB,kBAAA,EAAoB,uBAAA;AAAA,EACpB,iBAAA,EAAmB,oCAAA;AAAA,EACnB,gBAAA,EAAkB,gCAAA;AAAA,EAClB,eAAA,EAAiB,oBAAA;AAAA,EACjB,aAAA,EAAe,kDAAA;AAAA,EACf,mBAAA,EAAqB,yCAAA;AAAA,EACrB,cAAA,EAAgB,oBAAA;AAAA,EAChB,WAAA,EACE,EAAA;AAAA,IACE,yHAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,UAAA,EAAY,SAAA;AAAA,EACZ,WAAA,EACE,EAAA;AAAA,IACE,6JAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,kBAAA,EAAoB,iCAAA;AAAA,EACpB,cAAA,EAAgB,iCAAA;AAAA,EAChB,mBAAA,EAAqB,oDAAA;AAAA,EACrB,YAAA,EAAc,oBAAA;AAAA,EACd,UAAA,EAAY,kDAAA;AAAA,EACZ,gBAAA,EAAkB,yCAAA;AAAA,EAClB,UAAA,EAAY,UAAA;AAAA,EACZ,aAAA,EAAe,EAAA;AAAA,EACf,qBAAA,EAAuB,gCAAA;AAAA,EACvB,aAAA,EACE,+IAAA;AAAA,EACF,aAAA,EACE,qFAAA;AAAA,EACF,WAAA,EACE,EAAA;AAAA,IACE,uLAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,YAAA,EAAc,wDAAA;AAAA,EACd,WAAA,EAAa,gEAAA;AAAA,EACb,iBAAA,EAAmB,yCAAA;AAAA,EACnB,UAAA,EAAY,iEAAA;AAAA,EACZ,YAAA,EACE,4FAAA;AAAA,EACF,WAAA,EACE,EAAA;AAAA,IACE,8OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,YAAA,EAAc,8BAAA;AAAA,EACd,eAAA,EAAiB,EAAA;AAAA,EACjB,uBAAA,EAAyB,gCAAA;AAAA,EACzB,YAAA,EACE,4MAAA;AAAA,EACF,eAAA,EAAiB,uCAAA;AAAA,EACjB,eAAA,EAAiB,mBAAA;AAAA,EACjB,aAAA,EACE,uFAAA;AAAA,EACF,iBAAA,EAAmB,wBAAA;AAAA,EACnB,YAAA,EACE,EAAA;AAAA,IACE,6PAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,kBAAA,EACE,4GAAA;AAAA,EACF,oBAAA,EACE,4GAAA;AAAA,EACF,gBAAA,EAAkB,0DAAA;AAAA,EAClB,mBAAA,EAAqB,6BAAA;AAAA,EACrB,iBAAA,EAAmB,kBAAA;AAAA,EACnB,uBAAA,EACE,0DAAA;AAAA,EACF,oBAAA,EACE,yDAAA;AAAA,EACF,WAAA,EAAa,8BAAA;AAAA,EACb,cAAA,EAAgB,qBAAA;AAAA,EAChB,cAAA,EACE,yOAAA;AAAA,EACF,UAAA,EACE,EAAA;AAAA,IACE,wDAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,aAAA,EAAe,6CAAA;AAAA,EACf,aAAA,EAAe,8CAAA;AAAA,EACf,aAAA,EACE,6GAAA;AAAA,EACF,aAAA,EAAe,4IAAA;AAAA,EACf,YAAA,EACE,+DAAA;AAAA,EACF,WAAA,EAAa,oDAAA;AAAA,EACb,UAAA,EACE,4GAAA;AAAA,EACF,WAAA,EAAa,yBAAA;AAAA,EACb,iBAAA,EAAmB,WAAA;AAAA,EACnB,aAAA,EAAe,wCAAA;AAAA,EACf,WAAA,EAAa,EAAA,CAAG,2BAAA,EAA6B,UAAU,CAAA;AAAA,EACvD,YAAA,EACE,gIAAA;AAAA,EACF,iBAAA,EACE,mJAAA;AAAA,EACF,oBAAA,EAAsB,oBAAA;AAAA,EACtB,oBAAA,EACE,yEAAA;AAAA,EACF,kBAAA,EAAoB,mDAAA;AAAA,EACpB,wBAAA,EAA0B,mDAAA;AAAA,EAC1B,oBAAA,EAAsB,4CAAA;AAAA,EACtB,QAAA,EAAU,oBAAA;AAAA,EACV,QAAA,EACE,EAAA;AAAA,IACE,qGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,WAAA,EACE,EAAA;AAAA,IACE,sTAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,iBAAA,EACE,yCAAA;AAAA,EACF,mBAAA,EAAqB,qDAAA;AAAA,EACrB,SAAA,EACE,2RAAA;AAAA,EACF,aAAA,EACE,EAAA;AAAA,IACE,2FAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,aAAA,EACE,EAAA;AAAA,IACE,iNAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,mBAAA,EACE,yCAAA;AAAA,EACF,qBAAA,EAAuB,qDAAA;AAAA,EACvB,YAAA,EAAc,oBAAA;AAAA,EACd,aAAA,EACE,kDAAA;AAAA,EACF,iBAAA,EACE,6GAAA;AAAA,EACF,gBAAA,EAAkB,iDAAA;AAAA,EAClB,aAAA,EAAe,sDAAA;AAAA,EACf,aAAA,EAAe,oDAAA;AAAA,EACf,YAAA,EACE,iDAAA;AAAA,EACF,UAAA,EACE,uOAAA;AAAA,EACF,WAAA,EACE,4BAAA;AAAA,EACF,cAAA,EACE,yEAAA;AAAA,EACF,YAAA,EACE,6HAAA;AAAA,EACF,UAAA,EAAY,sDAAA;AAAA,EACZ,WAAA,EACE,EAAA;AAAA,IACE,sHAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,cAAA,EAAgB,iCAAA;AAAA,EAChB,YAAA,EAAc,wDAAA;AAAA,EACd,kBAAA,EAAoB,gDAAA;AAAA,EACpB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,4CAAA;AAAA,EAChB,cAAA,EAAgB,uCAAA;AAAA,EAChB,cAAA,EAAgB,6CAAA;AAAA,EAChB,cAAA,EAAgB,0CAAA;AAAA,EAChB,cAAA,EACE,wSAAA;AAAA,EACF,iBAAA,EAAmB,8CAAA;AAAA,EACnB,mBAAA,EAAqB,mCAAA;AAAA,EACrB,cAAA,EACE,mEAAA;AAAA,EACF,cAAA,EAAgB,+BAAA;AAAA,EAChB,kBAAA,EAAoB,yDAAA;AAAA,EACpB,gBAAA,EACE,wTAAA;AAAA,EACF,wBAAA,EAA0B,gCAAA;AAAA,EAC1B,cAAA,EACE,wJAAA;AAAA,EACF,kBAAA,EACE,wFAAA;AAAA,EACF,mBAAA,EACE,4BAAA;AAAA,EACF,mBAAA,EACE,oKAAA;AAAA,EACF,mBAAA,EACE,wFAAA;AAAA,EACF,oBAAA,EAAsB,2CAAA;AAAA,EACtB,aAAA,EAAe,oBAAA;AAAA,EACf,aAAA,EACE,qKAAA;AAAA,EACF,gBAAA,EACE,uYAAA;AAAA,EACF,oBAAA,EACE,EAAA;AAAA,IACE,mFAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,cAAA,EACE,iMAAA;AAAA,EACF,WAAA,EAAa,qBAAA;AAAA,EACb,WAAA,EACE,gPAAA;AAAA,EACF,SAAA,EAAW,uDAAA;AAAA,EACX,aAAA,EAAe,2BAAA;AAAA,EACf,QAAA,EACE,EAAA;AAAA,IACE,mSAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,eAAA,EAAiB,iBAAA;AAAA,EACjB,eAAA,EAAiB,iEAAA;AAAA,EACjB,eAAA,EACE,+IAAA;AAAA,EACF,eAAA,EACE,6KAAA;AAAA,EACF,cAAA,EACE,4FAAA;AAAA,EACF,aAAA,EACE,gFAAA;AAAA,EACF,gBAAA,EACE,oEAAA;AAAA,EACF,YAAA,EAAc,0DAAA;AAAA,EACd,aAAA,EAAe,yBAAA;AAAA,EACf,gBAAA,EACE,yDAAA;AAAA,EACF,qBAAA,EACE,8EAAA;AAAA,EACF,kBAAA,EACE,8EAAA;AAAA,EACF,cAAA,EACE,EAAA;AAAA,IACE,wWAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,kBAAA,EACE,wFAAA;AAAA,EACF,cAAA,EACE,gPAAA;AAAA,EACF,cAAA,EACE,EAAA;AAAA,IACE,sIAAA;AAAA,IACA,oFAAA;AAAA,IACA,iHAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,4BAAA,EAA8B,8BAAA;AAAA,EAC9B,SAAA,EAAW,gFAAA;AAAA,EACX,YAAA,EAAc,oCAAA;AAAA,EACd,WAAA,EACE,EAAA;AAAA,IACE,qDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,SAAA,EAAW,gCAAA;AAAA,EACX,WAAA,EAAa,qEAAA;AAAA,EACb,cAAA,EACE,EAAA;AAAA,IACE,wJAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,sBAAA,EACE,6DAAA;AAAA,EACF,qBAAA,EAAuB,iCAAA;AAAA,EACvB,qBAAA,EAAuB,gBAAA;AAAA,EACvB,qBAAA,EAAuB,oDAAA;AAAA,EACvB,cAAA,EACE,2JAAA;AAAA,EACF,gBAAA,EACE,kFAAA;AAAA,EACF,cAAA,EACE,EAAA;AAAA,IACE,sGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,gBAAA,EACE,mEAAA;AAAA,EACF,aAAA,EACE,iFAAA;AAAA,EACF,cAAA,EAAgB,8BAAA;AAAA,EAChB,cAAA,EAAgB,wDAAA;AAAA,EAChB,QAAA,EACE,EAAA;AAAA,IACE,mHAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,mBAAA,EACE,+JAAA;AAAA,EACF,gBAAA,EAAkB,iCAAA;AAAA,EAClB,gBAAA,EAAkB,gCAAA;AAAA,EAClB,SAAA,EACE,yKAAA;AAAA,EACF,gBAAA,EAAkB,iDAAA;AAAA,EAClB,aAAA,EAAe,iCAAA;AAAA,EACf,aAAA,EAAe,gFAAA;AAAA,EACf,aAAA,EAAe,sBAAA;AAAA,EACf,cAAA,EAAgB,kEAAA;AAAA,EAChB,oBAAA,EAAsB,0EAAA;AAAA,EACtB,aAAA,EAAe,wDAAA;AAAA,EACf,gBAAA,EAAkB,kCAAA;AAAA,EAClB,mBAAA,EACE,EAAA;AAAA,IACE,2MAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,iBAAA,EACE,EAAA;AAAA,IACE,gFAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,mBAAA,EACE,EAAA;AAAA,IACE,4QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,qBAAA,EACE,EAAA;AAAA,IACE,+WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,SAAA,EAAW,iFAAA;AAAA,EACX,oBAAA,EAAsB,aAAA;AAAA,EACtB,mBAAA,EAAqB,YAAA;AAAA,EACrB,aAAA,EAAe,uCAAA;AAAA,EACf,cAAA,EAAgB,wBAAA;AAAA,EAChB,iBAAA,EAAmB,wEAAA;AAAA,EACnB,cAAA,EACE,6FAAA;AAAA,EACF,eAAA,EAAiB,uCAAA;AAAA,EACjB,qBAAA,EAAuB,8CAAA;AAAA,EACvB,iBAAA,EAAmB,uDAAA;AAAA,EACnB,eAAA,EAAiB,uCAAA;AAAA,EACjB,gBAAA,EAAkB,WAAA;AAAA,EAClB,oBAAA,EAAsB,mCAAA;AAAA,EACtB,UAAA,EACE,EAAA;AAAA,IACE,6IAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,cAAA,EAAgB,gBAAA;AAAA,EAChB,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,4CAAA;AAAA,EACZ,aAAA,EAAe,iCAAA;AAAA,EACf,UAAA,EAAY,iCAAA;AAAA,EACZ,WAAA,EAAa,iCAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EACE,EAAA;AAAA,IACE,4FAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,oBAAA,EAAsB,eAAA;AAAA,EACtB,kBAAA,EAAoB,yBAAA;AAAA,EACpB,eAAA,EAAiB,aAAA;AAAA,EACjB,cAAA,EAAgB,4BAAA;AAAA,EAChB,qBAAA,EAAuB,4BAAA;AAAA,EACvB,eAAA,EAAiB,sCAAA;AAAA,EACjB,qBAAA,EAAuB,eAAA;AAAA,EACvB,mBAAA,EAAqB,eAAA;AAAA,EACrB,eAAA,EAAiB,iCAAA;AAAA,EACjB,kBAAA,EAAoB,EAAA;AAAA,EACpB,oBAAA,EAAsB,EAAA;AAAA,EACtB,kBAAA,EACE,EAAA;AAAA,IACE,2PAAA;AAAA,IACA;AAAA,GACF;AAAA,EACF,4BAAA,EAA8B,uBAAA;AAAA,EAC9B,0BAAA,EAA4B,uBAAA;AAAA,EAC5B,0BAAA,EAA4B,2BAAA;AAAA,EAC5B,2BAAA,EACE;AACJ,CAAA;AAEA,IAAM,YAAA,GAA6D;AAAA,EACjE,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,oBAAA;AAAA,IACZ,cAAA,EAAgB,cAAA;AAAA,IAChB,SAAA,EAAW,yBAAA;AAAA,IACX,WAAA,EAAa,KAAA;AAAA,IACb,SAAA,EAAW,mBAAA;AAAA,IACX,mBAAA,EAAqB,MAAA;AAAA,IACrB,WAAA,EAAa,WAAA;AAAA,IACb,SAAA,EAAW,oBAAA;AAAA,IACX,SAAA,EAAW,gBAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,UAAA,EAAY,SAAA;AAAA,IACZ,gBAAA,EAAkB,mBAAA;AAAA,IAClB,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,aAAA;AAAA,IACd,eAAA,EAAiB,kBAAA;AAAA,IACjB,aAAA,EAAe,aAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,YAAA,EAAc,2BAAA;AAAA,IACd,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,aAAA,EAAe,SAAA;AAAA,IACf,mBAAA,EAAqB,mBAAA;AAAA,IACrB,WAAA,EAAa,qBAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,cAAA,EAAgB,aAAA;AAAA,IAChB,UAAA,EAAY,SAAA;AAAA,IACZ,gBAAA,EAAkB,mBAAA;AAAA,IAClB,WAAA,EAAa,UAAA;AAAA,IACb,YAAA,EAAc,WAAA;AAAA,IACd,WAAA,EAAa,mBAAA;AAAA,IACb,iBAAA,EAAmB,mBAAA;AAAA,IACnB,UAAA,EAAY,mBAAA;AAAA,IACZ,YAAA,EAAc,WAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,qBAAA;AAAA,IACd,cAAA,EAAgB,uBAAA;AAAA,IAChB,UAAA,EAAY,mBAAA;AAAA,IACZ,YAAA,EAAc,aAAA;AAAA,IACd,iBAAA,EAAmB,OAAA;AAAA,IACnB,kBAAA,EAAoB,mBAAA;AAAA,IACpB,wBAAA,EAA0B,mBAAA;AAAA,IAC1B,QAAA,EAAU,eAAA;AAAA,IACV,WAAA,EAAa,mBAAA;AAAA,IACb,SAAA,EAAW,aAAA;AAAA,IACX,aAAA,EAAe,eAAA;AAAA,IACf,aAAA,EAAe,mBAAA;AAAA,IACf,aAAA,EAAe,OAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa,iBAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,kBAAA,EAAoB,mBAAA;AAAA,IACpB,gBAAA,EAAkB,0BAAA;AAAA,IAClB,cAAA,EAAgB,0BAAA;AAAA,IAChB,mBAAA,EAAqB,eAAA;AAAA,IACrB,mBAAA,EAAqB,aAAA;AAAA,IACrB,mBAAA,EAAqB,aAAA;AAAA,IACrB,oBAAA,EAAsB,mBAAA;AAAA,IACtB,gBAAA,EAAkB,mBAAA;AAAA,IAClB,cAAA,EAAgB,6BAAA;AAAA,IAChB,WAAA,EAAa,wBAAA;AAAA,IACb,cAAA,EAAgB,wBAAA;AAAA,IAChB,SAAA,EAAW,uBAAA;AAAA,IACX,QAAA,EAAU,2BAAA;AAAA,IACV,cAAA,EAAgB,2BAAA;AAAA,IAChB,gBAAA,EAAkB,aAAA;AAAA,IAClB,cAAA,EAAgB,sCAAA;AAAA,IAChB,SAAA,EAAW,6BAAA;AAAA,IACX,SAAA,EAAW,qBAAA;AAAA,IACX,cAAA,EAAgB,aAAA;AAAA,IAChB,oBAAA,EAAsB,uBAAA;AAAA,IACtB,gBAAA,EAAkB,aAAA;AAAA,IAClB,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,OAAA;AAAA,IACZ,UAAA,EAAY,oBAAA;AAAA,IACZ,4BAAA,EAA8B,OAAA;AAAA,IAC9B,0BAAA,EAA4B;AAAA,GAC9B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,aAAA;AAAA,IACZ,cAAA,EAAgB,gBAAA;AAAA,IAChB,SAAA,EAAW,aAAA;AAAA,IACX,WAAA,EAAa,KAAA;AAAA,IACb,SAAA,EAAW,WAAA;AAAA,IACX,mBAAA,EAAqB,MAAA;AAAA,IACrB,WAAA,EAAa,aAAA;AAAA,IACb,SAAA,EAAW,qBAAA;AAAA,IACX,SAAA,EAAW,gBAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,YAAA,EAAc,MAAA;AAAA,IACd,eAAA,EAAiB,UAAA;AAAA,IACjB,aAAA,EAAe,MAAA;AAAA,IACf,UAAA,EAAY,OAAA;AAAA,IACZ,YAAA,EAAc,mBAAA;AAAA,IACd,WAAA,EAAa,UAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,WAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,cAAA,EAAgB,aAAA;AAAA,IAChB,WAAA,EAAa,UAAA;AAAA,IACb,YAAA,EAAc,WAAA;AAAA,IACd,UAAA,EAAY,WAAA;AAAA,IACZ,YAAA,EAAc,WAAA;AAAA,IACd,YAAA,EAAc,UAAA;AAAA,IACd,YAAA,EAAc,aAAA;AAAA,IACd,UAAA,EAAY,WAAA;AAAA,IACZ,kBAAA,EAAoB,mBAAA;AAAA,IACpB,WAAA,EAAa,aAAA;AAAA,IACb,SAAA,EAAW,KAAA;AAAA,IACX,aAAA,EAAe,aAAA;AAAA,IACf,aAAA,EAAe,OAAA;AAAA,IACf,WAAA,EAAa,WAAA;AAAA,IACb,gBAAA,EAAkB,kBAAA;AAAA,IAClB,cAAA,EAAgB,kBAAA;AAAA,IAChB,mBAAA,EAAqB,WAAA;AAAA,IACrB,gBAAA,EAAkB,WAAA;AAAA,IAClB,cAAA,EAAgB,WAAA;AAAA,IAChB,WAAA,EAAa,gBAAA;AAAA,IACb,cAAA,EAAgB,gBAAA;AAAA,IAChB,QAAA,EAAU,mBAAA;AAAA,IACV,cAAA,EAAgB,mBAAA;AAAA,IAChB,cAAA,EAAgB,mCAAA;AAAA,IAChB,SAAA,EAAW,gBAAA;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,gBAAA,EAAkB,WAAA;AAAA,IAClB,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,OAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,4BAAA,EAA8B,OAAA;AAAA,IAC9B,0BAAA,EAA4B;AAAA;AAEhC,CAAA;AAEA,IAAM,WAAA,GAA2D;AAAA,EAC/D,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,cAAA;AAAA,IACZ,SAAA,EAAW,cAAA;AAAA,IACX,SAAA,EAAW,cAAA;AAAA,IACX,SAAA,EAAW,cAAA;AAAA,IACX,SAAA,EAAW,cAAA;AAAA,IACX,cAAA,EAAgB,cAAA;AAAA,IAChB,UAAA,EAAY,cAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,YAAA,EAAc,cAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,cAAA,EAAgB,cAAA;AAAA,IAChB,UAAA,EAAY,cAAA;AAAA,IACZ,QAAA,EAAU,cAAA;AAAA,IACV,WAAA,EAAa,cAAA;AAAA,IACb,SAAA,EAAW,cAAA;AAAA,IACX,aAAA,EAAe,cAAA;AAAA,IACf,aAAA,EAAe,cAAA;AAAA,IACf,aAAA,EAAe,cAAA;AAAA,IACf,iBAAA,EAAmB,cAAA;AAAA,IACnB,YAAA,EAAc,cAAA;AAAA,IACd,UAAA,EAAY,cAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,cAAA;AAAA,IACb,gBAAA,EAAkB,cAAA;AAAA,IAClB,cAAA,EAAgB,cAAA;AAAA,IAChB,mBAAA,EAAqB,cAAA;AAAA,IACrB,aAAA,EAAe,cAAA;AAAA,IACf,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,cAAA;AAAA,IACV,cAAA,EAAgB,cAAA;AAAA,IAChB,cAAA,EAAgB,cAAA;AAAA,IAChB,cAAA,EAAgB,cAAA;AAAA,IAChB,cAAA,EAAgB,cAAA;AAAA,IAChB,oBAAA,EAAsB,cAAA;AAAA,IACtB,UAAA,EAAY,cAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,YAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,cAAA,EAAgB,YAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,YAAA,EAAc,YAAA;AAAA,IACd,YAAA,EAAc,YAAA;AAAA,IACd,cAAA,EAAgB,YAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,QAAA,EAAU,YAAA;AAAA,IACV,WAAA,EAAa,YAAA;AAAA,IACb,SAAA,EAAW,YAAA;AAAA,IACX,aAAA,EAAe,YAAA;AAAA,IACf,aAAA,EAAe,YAAA;AAAA,IACf,aAAA,EAAe,YAAA;AAAA,IACf,iBAAA,EAAmB,YAAA;AAAA,IACnB,YAAA,EAAc,YAAA;AAAA,IACd,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,YAAA;AAAA,IACb,gBAAA,EAAkB,YAAA;AAAA,IAClB,cAAA,EAAgB,YAAA;AAAA,IAChB,mBAAA,EAAqB,YAAA;AAAA,IACrB,aAAA,EAAe,YAAA;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU,YAAA;AAAA,IACV,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,oBAAA,EAAsB,YAAA;AAAA,IACtB,UAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAI,EAAC;AAAA,EACL,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,YAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,YAAA;AAAA,IACX,cAAA,EAAgB,YAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,YAAA,EAAc,YAAA;AAAA,IACd,YAAA,EAAc,YAAA;AAAA,IACd,cAAA,EAAgB,YAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,QAAA,EAAU,YAAA;AAAA,IACV,WAAA,EAAa,YAAA;AAAA,IACb,SAAA,EAAW,YAAA;AAAA,IACX,aAAA,EAAe,YAAA;AAAA,IACf,aAAA,EAAe,YAAA;AAAA,IACf,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,YAAA;AAAA,IACb,mBAAA,EAAqB,YAAA;AAAA,IACrB,aAAA,EAAe,YAAA;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU,YAAA;AAAA,IACV,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,oBAAA,EAAsB,YAAA;AAAA,IACtB,UAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,YAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,cAAA,EAAgB,YAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,YAAA,EAAc,YAAA;AAAA,IACd,YAAA,EAAc,YAAA;AAAA,IACd,cAAA,EAAgB,YAAA;AAAA,IAChB,UAAA,EAAY,aAAA;AAAA,IACZ,QAAA,EAAU,aAAA;AAAA,IACV,WAAA,EAAa,YAAA;AAAA,IACb,SAAA,EAAW,aAAA;AAAA,IACX,aAAA,EAAe,aAAA;AAAA,IACf,aAAA,EAAe,YAAA;AAAA,IACf,YAAA,EAAc,YAAA;AAAA,IACd,WAAA,EAAa,aAAA;AAAA,IACb,gBAAA,EAAkB,YAAA;AAAA,IAClB,cAAA,EAAgB,YAAA;AAAA,IAChB,mBAAA,EAAqB,YAAA;AAAA,IACrB,aAAA,EAAe,aAAA;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU,YAAA;AAAA,IACV,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,aAAA;AAAA,IAChB,cAAA,EAAgB,aAAA;AAAA,IAChB,oBAAA,EAAsB,YAAA;AAAA,IACtB,UAAA,EAAY,aAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,cAAA;AAAA,IACZ,SAAA,EAAW,cAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,cAAA;AAAA,IACX,cAAA,EAAgB,cAAA;AAAA,IAChB,UAAA,EAAY,aAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,YAAA,EAAc,aAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,cAAA,EAAgB,cAAA;AAAA,IAChB,UAAA,EAAY,aAAA;AAAA,IACZ,QAAA,EAAU,cAAA;AAAA,IACV,WAAA,EAAa,cAAA;AAAA,IACb,SAAA,EAAW,aAAA;AAAA,IACX,aAAA,EAAe,cAAA;AAAA,IACf,aAAA,EAAe,cAAA;AAAA,IACf,aAAA,EAAe,cAAA;AAAA,IACf,iBAAA,EAAmB,cAAA;AAAA,IACnB,YAAA,EAAc,cAAA;AAAA,IACd,UAAA,EAAY,cAAA;AAAA,IACZ,YAAA,EAAc,cAAA;AAAA,IACd,WAAA,EAAa,aAAA;AAAA,IACb,gBAAA,EAAkB,cAAA;AAAA,IAClB,cAAA,EAAgB,cAAA;AAAA,IAChB,mBAAA,EAAqB,aAAA;AAAA,IACrB,aAAA,EAAe,aAAA;AAAA,IACf,WAAA,EAAa,aAAA;AAAA,IACb,QAAA,EAAU,cAAA;AAAA,IACV,cAAA,EAAgB,cAAA;AAAA,IAChB,cAAA,EAAgB,aAAA;AAAA,IAChB,cAAA,EAAgB,aAAA;AAAA,IAChB,cAAA,EAAgB,cAAA;AAAA,IAChB,oBAAA,EAAsB,cAAA;AAAA,IACtB,UAAA,EAAY,aAAA;AAAA,IACZ,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,IAAM,WAAA,GAA2D;AAAA,EAC/D,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,oBAAA;AAAA,IACZ,SAAA,EAAW,oBAAA;AAAA,IACX,SAAA,EAAW,oBAAA;AAAA,IACX,WAAA,EAAa,oBAAA;AAAA,IACb,SAAA,EAAW,oBAAA;AAAA,IACX,cAAA,EAAgB,oBAAA;AAAA,IAChB,UAAA,EAAY,oBAAA;AAAA,IACZ,WAAA,EAAa,oBAAA;AAAA,IACb,WAAA,EAAa,oBAAA;AAAA,IACb,WAAA,EAAa,oBAAA;AAAA,IACb,WAAA,EAAa,oBAAA;AAAA,IACb,WAAA,EAAa,oBAAA;AAAA,IACb,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,oBAAA;AAAA,IACd,YAAA,EAAc,oBAAA;AAAA,IACd,cAAA,EAAgB,oBAAA;AAAA,IAChB,UAAA,EAAY,oBAAA;AAAA,IACZ,WAAA,EAAa,oBAAA;AAAA,IACb,QAAA,EAAU,oBAAA;AAAA,IACV,SAAA,EAAW,oBAAA;AAAA,IACX,aAAA,EAAe,oBAAA;AAAA,IACf,UAAA,EAAY,oBAAA;AAAA,IACZ,WAAA,EAAa,oBAAA;AAAA,IACb,gBAAA,EAAkB,oBAAA;AAAA,IAClB,mBAAA,EAAqB,oBAAA;AAAA,IACrB,aAAA,EAAe,oBAAA;AAAA,IACf,cAAA,EAAgB,oBAAA;AAAA,IAChB,WAAA,EAAa,oBAAA;AAAA,IACb,aAAA,EAAe,gBAAA;AAAA,IACf,cAAA,EAAgB,oBAAA;AAAA,IAChB,cAAA,EAAgB,gEAAA;AAAA,IAChB,WAAA,EAAa,oBAAA;AAAA,IACb,WAAA,EAAa,6BAAA;AAAA,IACb,cAAA,EAAgB,oBAAA;AAAA,IAChB,sBAAA,EAAwB,6BAAA;AAAA,IACxB,QAAA,EAAU,0BAAA;AAAA,IACV,aAAA,EAAe,0BAAA;AAAA,IACf,eAAA,EAAiB,0BAAA;AAAA,IACjB,UAAA,EAAY,oBAAA;AAAA,IACZ,kBAAA,EAAoB,oBAAA;AAAA,IACpB,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,aAAA,EAAe,kBAAA;AAAA,IACf,YAAA,EAAc,kBAAA;AAAA,IACd,SAAA,EAAW,kBAAA;AAAA,IACX,WAAA,EAAa,kBAAA;AAAA,IACb,SAAA,EAAW,kBAAA;AAAA,IACX,cAAA,EAAgB,kBAAA;AAAA,IAChB,UAAA,EAAY,kBAAA;AAAA,IACZ,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,YAAA,EAAc,kBAAA;AAAA,IACd,cAAA,EAAgB,kBAAA;AAAA,IAChB,aAAA,EAAe,kBAAA;AAAA,IACf,WAAA,EAAa,kBAAA;AAAA,IACb,QAAA,EAAU,kBAAA;AAAA,IACV,SAAA,EAAW,kBAAA;AAAA,IACX,aAAA,EAAe,kBAAA;AAAA,IACf,UAAA,EAAY,kBAAA;AAAA,IACZ,WAAA,EAAa,kBAAA;AAAA,IACb,gBAAA,EAAkB,kBAAA;AAAA,IAClB,mBAAA,EAAqB,kBAAA;AAAA,IACrB,aAAA,EAAe,kBAAA;AAAA,IACf,cAAA,EAAgB,kBAAA;AAAA,IAChB,WAAA,EAAa,kBAAA;AAAA,IACb,aAAA,EAAe,cAAA;AAAA,IACf,cAAA,EAAgB,kBAAA;AAAA,IAChB,cAAA,EAAgB,2EAAA;AAAA,IAChB,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,2BAAA;AAAA,IACb,cAAA,EAAgB,kBAAA;AAAA,IAChB,sBAAA,EAAwB,2BAAA;AAAA,IACxB,QAAA,EAAU,wBAAA;AAAA,IACV,aAAA,EAAe,wBAAA;AAAA,IACf,eAAA,EAAiB,wBAAA;AAAA,IACjB,UAAA,EAAY,kBAAA;AAAA,IACZ,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,OAAO,EAAC;AAAA,EACR,MAAA,EAAQ;AAAA,IACN,aAAA,EAAe,sBAAA;AAAA,IACf,YAAA,EAAc,sBAAA;AAAA,IACd,SAAA,EAAW,sBAAA;AAAA,IACX,WAAA,EAAa,sBAAA;AAAA,IACb,SAAA,EAAW,sBAAA;AAAA,IACX,cAAA,EAAgB,sBAAA;AAAA,IAChB,UAAA,EAAY,sBAAA;AAAA,IACZ,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,sBAAA;AAAA,IACb,YAAA,EAAc,sBAAA;AAAA,IACd,YAAA,EAAc,sBAAA;AAAA,IACd,YAAA,EAAc,sBAAA;AAAA,IACd,cAAA,EAAgB,sBAAA;AAAA,IAChB,aAAA,EAAe,sBAAA;AAAA,IACf,WAAA,EAAa,sBAAA;AAAA,IACb,QAAA,EAAU,sBAAA;AAAA,IACV,SAAA,EAAW,sBAAA;AAAA,IACX,aAAA,EAAe,sBAAA;AAAA,IACf,UAAA,EAAY,sBAAA;AAAA,IACZ,WAAA,EAAa,sBAAA;AAAA,IACb,gBAAA,EAAkB,sBAAA;AAAA,IAClB,mBAAA,EAAqB,sBAAA;AAAA,IACrB,aAAA,EAAe,sBAAA;AAAA,IACf,cAAA,EAAgB,sBAAA;AAAA,IAChB,WAAA,EAAa,sBAAA;AAAA,IACb,aAAA,EAAe,kBAAA;AAAA,IACf,cAAA,EAAgB,sBAAA;AAAA,IAChB,cAAA,EACE,oFAAA;AAAA,IACF,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,+BAAA;AAAA,IACb,cAAA,EAAgB,sBAAA;AAAA,IAChB,sBAAA,EAAwB,+BAAA;AAAA,IACxB,QAAA,EAAU,4BAAA;AAAA,IACV,aAAA,EAAe,4BAAA;AAAA,IACf,eAAA,EAAiB,4BAAA;AAAA,IACjB,UAAA,EAAY,sBAAA;AAAA,IACZ,kBAAA,EAAoB,sBAAA;AAAA,IACpB,kBAAA,EAAoB;AAAA;AAExB,CAAA;AAEA,IAAM,eAAA,GAAmE;AAAA,EACvE,OAAO,EAAC;AAAA,EACR,KAAA,EAAO;AAAA,IACL,aAAA,EAAe,+BAAA;AAAA,IACf,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,aAAA;AAAA,IACb,SAAA,EAAW,aAAA;AAAA,IACX,cAAA,EAAgB,eAAA;AAAA,IAChB,UAAA,EAAY,eAAA;AAAA,IACZ,kBAAA,EAAoB,6BAAA;AAAA,IACpB,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,2BAAA;AAAA,IACb,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,eAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,cAAA,EAAgB,YAAA;AAAA,IAChB,aAAA,EAAe,aAAA;AAAA,IACf,QAAA,EAAU,aAAA;AAAA,IACV,iBAAA,EAAmB,eAAA;AAAA,IACnB,SAAA,EAAW,SAAA;AAAA,IACX,aAAA,EAAe,aAAA;AAAA,IACf,mBAAA,EAAqB,eAAA;AAAA,IACrB,aAAA,EAAe,aAAA;AAAA,IACf,YAAA,EAAc,UAAA;AAAA,IACd,WAAA,EAAa,SAAA;AAAA,IACb,gBAAA,EAAkB,iCAAA;AAAA,IAClB,cAAA,EAAgB,aAAA;AAAA,IAChB,mBAAA,EAAqB,SAAA;AAAA,IACrB,aAAA,EAAe,SAAA;AAAA,IACf,WAAA,EAAa,eAAA;AAAA,IACb,QAAA,EAAU,kDAAA;AAAA,IACV,cAAA,EACE,gFAAA;AAAA,IACF,cAAA,EAAgB,eAAA;AAAA,IAChB,cAAA,EAAgB,4CAAA;AAAA,IAChB,WAAA,EAAa,aAAA;AAAA,IACb,cAAA,EAAgB,yBAAA;AAAA,IAChB,mBAAA,EAAqB,qEAAA;AAAA,IACrB,oBAAA,EAAsB,UAAA;AAAA,IACtB,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,eAAA,EAAiB,aAAA;AAAA,IACjB,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,+BAAA;AAAA,IACf,SAAA,EAAW,4BAAA;AAAA,IACX,SAAA,EAAW,4BAAA;AAAA,IACX,cAAA,EAAgB,kBAAA;AAAA,IAChB,UAAA,EAAY,4BAAA;AAAA,IACZ,kBAAA,EAAoB,6BAAA;AAAA,IACpB,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,8CAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,4BAAA;AAAA,IACb,YAAA,EAAc,4BAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,cAAA,EAAgB,sBAAA;AAAA,IAChB,aAAA,EAAe,4BAAA;AAAA,IACf,QAAA,EAAU,4BAAA;AAAA,IACV,iBAAA,EAAmB,eAAA;AAAA,IACnB,SAAA,EAAW,4BAAA;AAAA,IACX,aAAA,EAAe,4BAAA;AAAA,IACf,mBAAA,EAAqB,eAAA;AAAA,IACrB,YAAA,EAAc,kBAAA;AAAA,IACd,WAAA,EAAa,4BAAA;AAAA,IACb,gBAAA,EAAkB,oCAAA;AAAA,IAClB,mBAAA,EAAqB,4BAAA;AAAA,IACrB,aAAA,EAAe,4BAAA;AAAA,IACf,WAAA,EAAa,4BAAA;AAAA,IACb,QAAA,EAAU,kDAAA;AAAA,IACV,cAAA,EACE,gFAAA;AAAA,IACF,cAAA,EAAgB,4BAAA;AAAA,IAChB,cAAA,EACE,sDAAA;AAAA,IACF,WAAA,EAAa,aAAA;AAAA,IACb,cAAA,EAAgB,yBAAA;AAAA,IAChB,mBAAA,EAAqB,qEAAA;AAAA,IACrB,oBAAA,EAAsB,aAAA;AAAA,IACtB,UAAA,EAAY,4BAAA;AAAA,IACZ,UAAA,EAAY,4BAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,kBAAA;AAAA,IACZ,aAAA,EACE,uEAAA;AAAA,IACF,YAAA,EAAc,iDAAA;AAAA,IACd,SAAA,EAAW,8DAAA;AAAA,IACX,WAAA,EAAa,iCAAA;AAAA,IACb,SAAA,EAAW,8DAAA;AAAA,IACX,SAAA,EAAW,6BAAA;AAAA,IACX,cAAA,EACE,kEAAA;AAAA,IACF,UAAA,EACE,yHAAA;AAAA,IACF,YAAA,EAAc,iBAAA;AAAA,IACd,kBAAA,EAAoB,iCAAA;AAAA,IACpB,oBAAA,EAAsB,iCAAA;AAAA,IACtB,WAAA,EAAa,kDAAA;AAAA,IACb,WAAA,EAAa,kDAAA;AAAA,IACb,kBAAA,EAAoB,iDAAA;AAAA,IACpB,WAAA,EAAa,wEAAA;AAAA,IACb,WAAA,EAAa,kDAAA;AAAA,IACb,kBAAA,EAAoB,iCAAA;AAAA,IACpB,aAAA,EAAe,mCAAA;AAAA,IACf,WAAA,EAAa,6DAAA;AAAA,IACb,YAAA,EAAc,iBAAA;AAAA,IACd,YAAA,EAAc,iBAAA;AAAA,IACd,YAAA,EACE,yHAAA;AAAA,IACF,YAAA,EAAc,uCAAA;AAAA,IACd,cAAA,EACE,yHAAA;AAAA,IACF,aAAA,EACE,kEAAA;AAAA,IACF,WAAA,EAAa,iBAAA;AAAA,IACb,QAAA,EAAU,kDAAA;AAAA,IACV,WAAA,EAAa,mEAAA;AAAA,IACb,iBAAA,EAAmB,6CAAA;AAAA,IACnB,SAAA,EACE,8DAAA;AAAA,IACF,aAAA,EAAe,kDAAA;AAAA,IACf,aAAA,EAAe,mEAAA;AAAA,IACf,mBAAA,EAAqB,6CAAA;AAAA,IACrB,aAAA,EAAe,iBAAA;AAAA,IACf,YAAA,EAAc,iBAAA;AAAA,IACd,UAAA,EAAY,iDAAA;AAAA,IACZ,cAAA,EAAgB,iCAAA;AAAA,IAChB,YAAA,EAAc,mBAAA;AAAA,IACd,WAAA,EACE,8DAAA;AAAA,IACF,gBAAA,EACE,uEAAA;AAAA,IACF,cAAA,EAAgB,iCAAA;AAAA,IAChB,mBAAA,EACE,8DAAA;AAAA,IACF,aAAA,EACE,8DAAA;AAAA,IACF,cAAA,EAAgB,iBAAA;AAAA,IAChB,WAAA,EACE,yHAAA;AAAA,IACF,aAAA,EAAe,aAAA;AAAA,IACf,QAAA,EACE,mIAAA;AAAA,IACF,cAAA,EACE,qKAAA;AAAA,IACF,cAAA,EACE,yHAAA;AAAA,IACF,cAAA,EACE,0NAAA;AAAA,IACF,WAAA,EAAa,iBAAA;AAAA,IACb,WAAA,EAAa,0CAAA;AAAA,IACb,cAAA,EACE,8DAAA;AAAA,IACF,sBAAA,EAAwB,0BAAA;AAAA,IACxB,QAAA,EAAU,uBAAA;AAAA,IACV,mBAAA,EAAqB,wEAAA;AAAA,IACrB,cAAA,EAAgB,iBAAA;AAAA,IAChB,oBAAA,EAAsB,iBAAA;AAAA,IACtB,UAAA,EACE,8DAAA;AAAA,IACF,UAAA,EACE,8DAAA;AAAA,IACF,eAAA,EAAiB,iBAAA;AAAA,IACjB,cAAA,EAAgB,8CAAA;AAAA,IAChB,kBAAA,EAAoB,mFAAA;AAAA,IACpB,2BAAA,EAA6B;AAAA,GAC/B;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,UAAA,EACE,oDAAA;AAAA,IACF,aAAA,EAAe,mCAAA;AAAA,IACf,aAAA,EAAe,0DAAA;AAAA,IACf,WAAA,EACE,kFAAA;AAAA,IACF,YAAA,EAAc,4CAAA;AAAA,IACd,UAAA,EAAY,2CAAA;AAAA,IACZ,SAAA,EAAW,qDAAA;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,gBAAA,EAAkB,eAAA;AAAA,IAClB,SAAA,EAAW,eAAA;AAAA,IACX,WAAA,EAAa,iCAAA;AAAA,IACb,SAAA,EAAW,qDAAA;AAAA,IACX,SAAA,EAAW,2BAAA;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,gBAAA,EAAkB,eAAA;AAAA,IAClB,UAAA,EAAY,YAAA;AAAA,IACZ,gBAAA,EAAkB,eAAA;AAAA,IAClB,YAAA,EAAc,eAAA;AAAA,IACd,cAAA,EACE,6FAAA;AAAA,IACF,WAAA,EAAa,sCAAA;AAAA,IACb,aAAA,EAAe,eAAA;AAAA,IACf,UAAA,EAAY,oDAAA;AAAA,IACZ,YAAA,EAAc,YAAA;AAAA,IACd,kBAAA,EAAoB,4BAAA;AAAA,IACpB,oBAAA,EAAsB,4BAAA;AAAA,IACtB,iBAAA,EAAmB,eAAA;AAAA,IACnB,WAAA,EAAa,qDAAA;AAAA,IACb,aAAA,EAAe,wCAAA;AAAA,IACf,WAAA,EAAa,YAAA;AAAA,IACb,iBAAA,EAAmB,eAAA;AAAA,IACnB,WAAA,EAAa,gEAAA;AAAA,IACb,kBAAA,EAAoB,wCAAA;AAAA,IACpB,aAAA,EAAe,YAAA;AAAA,IACf,mBAAA,EAAqB,eAAA;AAAA,IACrB,WAAA,EAAa,kEAAA;AAAA,IACb,WAAA,EAAa,gEAAA;AAAA,IACb,kBAAA,EAAoB,6BAAA;AAAA,IACpB,cAAA,EAAgB,UAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,gBAAA,EAAkB,eAAA;AAAA,IAClB,aAAA,EAAe,iBAAA;AAAA,IACf,WAAA,EAAa,oDAAA;AAAA,IACb,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa,YAAA;AAAA,IACb,iBAAA,EAAmB,eAAA;AAAA,IACnB,UAAA,EAAY,eAAA;AAAA,IACZ,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa,sDAAA;AAAA,IACb,YAAA,EAAc,oDAAA;AAAA,IACd,aAAA,EAAe,eAAA;AAAA,IACf,iBAAA,EAAmB,aAAA;AAAA,IACnB,YAAA,EAAc,kCAAA;AAAA,IACd,uBAAA,EAAyB,eAAA;AAAA,IACzB,oBAAA,EAAsB,eAAA;AAAA,IACtB,cAAA,EAAgB,oDAAA;AAAA,IAChB,aAAA,EAAe,4CAAA;AAAA,IACf,WAAA,EAAa,2CAAA;AAAA,IACb,WAAA,EAAa,iBAAA;AAAA,IACb,YAAA,EAAc,eAAA;AAAA,IACd,oBAAA,EAAsB,eAAA;AAAA,IACtB,kBAAA,EAAoB,YAAA;AAAA,IACpB,wBAAA,EAA0B,eAAA;AAAA,IAC1B,QAAA,EAAU,iCAAA;AAAA,IACV,WAAA,EAAa,sDAAA;AAAA,IACb,iBAAA,EAAmB,wCAAA;AAAA,IACnB,SAAA,EAAW,4CAAA;AAAA,IACX,aAAA,EAAe,iCAAA;AAAA,IACf,aAAA,EAAe,sDAAA;AAAA,IACf,mBAAA,EAAqB,wCAAA;AAAA,IACrB,aAAA,EAAe,iBAAA;AAAA,IACf,aAAA,EAAe,YAAA;AAAA,IACf,aAAA,EAAe,eAAA;AAAA,IACf,YAAA,EAAc,iBAAA;AAAA,IACd,UAAA,EAAY,4CAAA;AAAA,IACZ,cAAA,EAAgB,+BAAA;AAAA,IAChB,UAAA,EAAY,YAAA;AAAA,IACZ,YAAA,EAAc,kBAAA;AAAA,IACd,WAAA,EAAa,4CAAA;AAAA,IACb,YAAA,EAAc,YAAA;AAAA,IACd,kBAAA,EAAoB,eAAA;AAAA,IACpB,cAAA,EAAgB,gCAAA;AAAA,IAChB,iBAAA,EAAmB,YAAA;AAAA,IACnB,mBAAA,EAAqB,eAAA;AAAA,IACrB,cAAA,EAAgB,eAAA;AAAA,IAChB,gBAAA,EAAkB,kEAAA;AAAA,IAClB,cAAA,EAAgB,4BAAA;AAAA,IAChB,mBAAA,EAAqB,iCAAA;AAAA,IACrB,mBAAA,EAAqB,eAAA;AAAA,IACrB,oBAAA,EAAsB,YAAA;AAAA,IACtB,aAAA,EAAe,iCAAA;AAAA,IACf,gBAAA,EAAkB,kCAAA;AAAA,IAClB,cAAA,EAAgB,+BAAA;AAAA,IAChB,cAAA,EACE,kNAAA;AAAA,IACF,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa,iBAAA;AAAA,IACb,WAAA,EAAa,0CAAA;AAAA,IACb,cAAA,EAAgB,+CAAA;AAAA,IAChB,sBAAA,EAAwB,0BAAA;AAAA,IACxB,QAAA,EAAU,uBAAA;AAAA,IACV,mBAAA,EAAqB,wEAAA;AAAA,IACrB,SAAA,EAAW,eAAA;AAAA,IACX,cAAA,EAAgB,YAAA;AAAA,IAChB,oBAAA,EAAsB,eAAA;AAAA,IACtB,aAAA,EAAe,eAAA;AAAA,IACf,aAAA,EAAe,eAAA;AAAA,IACf,iBAAA,EAAmB,eAAA;AAAA,IACnB,mBAAA,EAAqB,qCAAA;AAAA,IACrB,qBAAA,EAAuB,2CAAA;AAAA,IACvB,SAAA,EAAW,eAAA;AAAA,IACX,cAAA,EAAgB,2BAAA;AAAA,IAChB,eAAA,EAAiB,YAAA;AAAA,IACjB,qBAAA,EAAuB,eAAA;AAAA,IACvB,WAAA,EAAa,oDAAA;AAAA,IACb,SAAA,EAAW,eAAA;AAAA,IACX,aAAA,EAAe,aAAA;AAAA,IACf,QAAA,EACE,oHAAA;AAAA,IACF,eAAA,EAAiB,YAAA;AAAA,IACjB,eAAA,EAAiB,iEAAA;AAAA,IACjB,eAAA,EACE,+IAAA;AAAA,IACF,eAAA,EACE,6KAAA;AAAA,IACF,cAAA,EACE,4FAAA;AAAA,IACF,aAAA,EACE,8DAAA;AAAA,IACF,gBAAA,EAAkB,eAAA;AAAA,IAClB,cAAA,EACE,sJAAA;AAAA,IACF,kBAAA,EAAoB,eAAA;AAAA,IACpB,cAAA,EAAgB,oDAAA;AAAA,IAChB,oBAAA,EAAsB,iBAAA;AAAA,IACtB,UAAA,EAAY,qDAAA;AAAA,IACZ,UAAA,EAAY,qDAAA;AAAA,IACZ,eAAA,EAAiB,iBAAA;AAAA,IACjB,cAAA,EAAgB,6BAAA;AAAA,IAChB,kBAAA,EAAoB,8EAAA;AAAA,IACpB,2BAAA,EAA6B;AAAA;AAEjC,CAAA;AAEA,IAAM,cAAA,GAGF;AAAA,EACF,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,OAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,IAAM,WAAA,GAAuD;AAAA,EAC3D,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,aAAA;AAAA,IACZ,SAAA,EAAW,kBAAA;AAAA,IACX,cAAA,EAAgB,aAAA;AAAA,IAChB,WAAA,EAAa,aAAA;AAAA,IACb,aAAA,EAAe,aAAA;AAAA,IACf,WAAA,EAAa,kBAAA;AAAA,IACb,cAAA,EAAgB,kBAAA;AAAA,IAChB,cAAA,EAAgB,kBAAA;AAAA,IAChB,cAAA,EAAgB,eAAA;AAAA,IAChB,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,SAAA,EAAW,aAAA;AAAA,IACX,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,QAAA,EAAU,SAAA;AAAA,IACV,cAAA,EAAgB,SAAA;AAAA,IAChB,UAAA,EAAY,SAAA;AAAA,IACZ,kBAAA,EAAoB,SAAA;AAAA,IACpB,WAAA,EAAa,SAAA;AAAA,IACb,aAAA,EAAe,SAAA;AAAA,IACf,YAAA,EAAc,SAAA;AAAA,IACd,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,aAAA,EAAe,6EAAA;AAAA,IACf,YAAA,EAAc,yDAAA;AAAA,IACd,aAAA,EAAe,yDAAA;AAAA,IACf,iBAAA,EAAmB,YAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,kDAAA;AAAA,IACX,SAAA,EAAW,kDAAA;AAAA,IACX,UAAA,EAAY,kDAAA;AAAA,IACZ,SAAA,EAAW,kDAAA;AAAA,IACX,WAAA,EAAa,kDAAA;AAAA,IACb,mBAAA,EAAqB,kDAAA;AAAA,IACrB,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,UAAA,EAAY,aAAA;AAAA,IACZ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW,aAAA;AAAA,IACX,cAAA,EAAgB,aAAA;AAAA,IAChB,UAAA,EAAY,aAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,cAAA,EAAgB,aAAA;AAAA,IAChB,UAAA,EAAY,aAAA;AAAA,IACZ,QAAA,EAAU,aAAA;AAAA,IACV,iBAAA,EAAmB,aAAA;AAAA,IACnB,SAAA,EAAW,aAAA;AAAA,IACX,aAAA,EAAe,aAAA;AAAA,IACf,mBAAA,EAAqB,aAAA;AAAA,IACrB,WAAA,EAAa,aAAA;AAAA,IACb,mBAAA,EAAqB,aAAA;AAAA,IACrB,aAAA,EAAe;AAAA;AAEnB,CAAA;AAEA,SAAS,kBAAkB,MAAA,EAA2B;AACpD,EAAA,OACE,cAAA,CAAe,MAAqC,CAAA,IAAK,cAAA,CAAe,OAAA;AAE5E;AAEA,IAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AAEtC,SAAS,cACJ,OAAA,EACY;AACf,EAAA,OAAO,QAAA,CAAS,MAAA,CAAO,CAAC,QAAA,EAAU,GAAA,KAAQ;AACxC,IAAA,QAAA,CAAS,GAAG,CAAA,GAAI,EAAA,CAAG,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,GAAS,GAAG,CAAC,CAAC,CAAA;AAC5D,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,EAAmB,CAAA;AACxB;AAEA,SAAS,eAAe,SAAA,EAA+C;AACrE,EAAA,OAAO,MAAA,CAAO,OAAO,EAAC,EAAG,GAAG,SAAA,CAAU,MAAA,CAAO,OAAO,CAAC,CAAA;AACvD;AAEO,SAAS,sBACd,UAAA,EACmB;AACnB,EAAA,MAAM,MAAA,GAAS,YAAY,MAAA,IAAU,SAAA;AACrC,EAAA,MAAM,OAAA,GAAU,YAAY,OAAA,IAAW,SAAA;AACvC,EAAA,MAAM,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACzC,EAAA,MAAM,OAAA,GAAU,UAAA,EAAY,OAAA,IAAW,QAAA,CAAS,OAAA,IAAW,SAAA;AAC3D,EAAA,MAAM,KAAA,GAAQ,YAAY,KAAA,IAAS,MAAA;AACnC,EAAA,MAAM,MAAA,GAAS,UAAA,EAAY,MAAA,IAAU,QAAA,CAAS,MAAA,IAAU,IAAA;AACxD,EAAA,MAAM,MAAA,GAAS,UAAA,EAAY,MAAA,IAAU,QAAA,CAAS,MAAA,IAAU,OAAA;AACxD,EAAA,MAAM,UAAA,GAAa,UAAA,EAAY,UAAA,IAAc,QAAA,CAAS,UAAA,IAAc,OAAA;AAEpE,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA,EAAQ,WAAA,CAAY,WAAA,EAAa,UAAA,EAAY,MAAM,CAAA;AAAA,IACnD,KAAA,EAAO,UAAA;AAAA,MACL,SAAA;AAAA,MACA,YAAY,MAAM,CAAA;AAAA,MAClB,aAAa,OAAO,CAAA;AAAA,MACpB,YAAY,MAAM,CAAA;AAAA,MAClB,YAAY,MAAM,CAAA;AAAA,MAClB,gBAAgB,UAAU,CAAA;AAAA,MAC1B,UAAA,EAAY;AAAA;AACd,GACF;AACF;AAEO,SAAS,0BAAA,CACd,KAAA,EACA,IAAA,GAAwB,SAAA,EACxB,SAAS,KAAA,EACT;AACA,EAAA,OAAO,EAAA;AAAA,IACL,IAAA,KAAS,SAAA,IAAa,KAAA,CAAM,KAAA,CAAM,aAAA;AAAA,IAClC,IAAA,KAAS,SAAA,IAAa,KAAA,CAAM,KAAA,CAAM,aAAA;AAAA,IAClC,IAAA,KAAS,SAAA,IAAa,KAAA,CAAM,KAAA,CAAM,aAAA;AAAA,IAClC,IAAA,KAAS,SAAA,IAAa,KAAA,CAAM,KAAA,CAAM,aAAA;AAAA,IAClC,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,KAAA,CAAM,YAAA;AAAA,IACjC,IAAA,KAAS,OAAA,IAAW,KAAA,CAAM,KAAA,CAAM,WAAA;AAAA,IAChC,MAAA,IAAU,MAAM,KAAA,CAAM;AAAA,GACxB;AACF;ACnnDA,IAAM,cAAA,GAAiB;AAAA,EACrB,EAAA,EAAI,iBAAA;AAAA,EACJ,EAAA,EAAI,iBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,gBAAA,GAAmB;AAAA,EACvB,MAAA,EAAQ,sCAAA;AAAA,EACR,IAAA,EAAM,qCAAA;AAAA,EACN,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,eAAe,MAAA,EAA0D;AAChF,EAAA,OAAO,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,IAAU,gBAAA;AACjD;AAEA,SAAS,YAAY,IAAA,EAAe;AAClC,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AACrD,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,EAAQ,OAAO,MAAA;AAC1B,EAAA,OAAO,KAAA,CACJ,KAAA,CAAM,CAAA,EAAG,CAAC,EACV,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,CAAA,EAAG,WAAA,EAAa,CAAA,CACpC,KAAK,EAAE,CAAA;AACZ;AAEO,IAAM,UAAA,GAAaC,gBAAA;AAAA,EACxB,SAASC,WAAAA,CACP;AAAA,IACE,GAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,IAAA,KAAS,IAAA,IAAQ,SAAS,IAAA,EAAM;AACnD,MAAA,MAAM,IAAI,UAAU,8CAA8C,CAAA;AAAA,IACpE;AAEA,IAAA,MAAM,kBAAA,GAAqB,yBAAyB,UAAU,CAAA;AAC9D,IAAA,MAAM,sBAAsB,6BAAA,EAA8B;AAC1D,IAAA,MAAM,KAAA,GAAQ,sBAAsB,kBAAkB,CAAA;AACtD,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,cAAA,EAAiB;AACnD,IAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,GAAA,IAAO,SAAA,KAAc,GAAG,CAAA;AACpD,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,GAAG,CAAA,IAAK,CAAC,WAAA;AACnC,IAAA,MAAM,iBAAA,GAAoB,YAAY,IAAI,CAAA;AAC1C,IAAA,MAAM,eAAe,iBAAA,CAAkB,QAAQ,CAAA,GAC3C,UAAA,GACA,kBAAkB,QAAQ,CAAA,GACxB,UAAA,GACA,iBAAA,CAAkB,iBAAiB,CAAA,GACjC,MAAA,GACA,iBAAA,CAAkB,IAAI,IACpB,MAAA,GACA,SAAA;AACV,IAAA,MAAM,WAAW,iBAAA,CAAkB,QAAQ,CAAA,GACvC,QAAA,GACA,kBAAkB,QAAQ,CAAA,GACxB,QAAA,GACA,iBAAA,CAAkB,iBAAiB,CAAA,GACjC,iBAAA,GACA,iBAAA,CAAkB,IAAI,IACpB,IAAA,GACA,GAAA;AACV,IAAA,MAAM,UAAA,GAAa,eAAe,MAAM,CAAA,GACpC,SACA,iBAAA,CAAkB,MAAM,IACtB,QAAA,GACA,MAAA;AAEN,IAAAC,eAAA,CAAU,MAAM;AACd,MAAA,YAAA,CAAa,MAAS,CAAA;AAAA,IACxB,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,mBAAA;AAAA,QACH,GAAG,WAAA;AAAA,QACJ,GAAA;AAAA,QACA,OAAO,KAAA,IAAS,IAAA;AAAA,QAChB,wBAAA,EAAuB,QAAA;AAAA,QACvB,WAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAY,YAAY,OAAA,GAAU,UAAA;AAAA,QAClC,WAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAa,UAAA;AAAA,QACb,eAAA,EAAe,YAAY,MAAA,GAAY,YAAA;AAAA,QACvC,SAAA,EAAW,EAAA;AAAA,UACT,MAAM,KAAA,CAAM,UAAA;AAAA,UACZ,eAAe,IAAI,CAAA;AAAA,UACnB,UAAA,EAAY,IAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,GAAG,MAAM,MAAA,CAAO,MAAA;AAAA,UAChB,GAAG;AAAA,SACL;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,SAAA,mBACCC,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,GAAA,EAAK,OAAO,IAAA,IAAQ,EAAA;AAAA,cACpB,WAAA,EAAU,OAAA;AAAA,cACV,WAAA,EAAW,IAAA;AAAA,cACX,aAAA,EAAa,UAAA;AAAA,cACb,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,WAAA,EAAa,YAAY,KAAK,CAAA;AAAA,cACxD,OAAA,EAAS,MAAM,YAAA,CAAa,GAAG;AAAA;AAAA,WACjC,mBAEAA,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,UAAA;AAAA,cACV,WAAA,EAAW,IAAA;AAAA,cACX,aAAA,EAAa,UAAA;AAAA,cACb,eAAA,EAAe,YAAA;AAAA,cACf,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,cAAA;AAAA,gBACZ,UAAA,EAAY,QAAA;AAAA,gBACZ,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,CAAe,MAAM,CAAA,mBACpBA,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAY,MAAA;AAAA,cACZ,WAAA,EAAU,QAAA;AAAA,cACV,WAAA,EAAW,IAAA;AAAA,cACX,aAAA,EAAa,MAAA;AAAA,cACb,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,YAAA;AAAA,gBACZ,iBAAiB,MAAM,CAAA;AAAA,gBACvB,UAAA,EAAY;AAAA;AACd;AAAA,WACF,GACE,iBAAA,CAAkB,MAAM,CAAA,mBAC1BA,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,QAAA;AAAA,cACV,WAAA,EAAW,IAAA;AAAA,cACX,aAAA,EAAY,QAAA;AAAA,cACZ,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,YAAA,EAAc,YAAY,MAAM,CAAA;AAAA,cAEzD,QAAA,EAAA;AAAA;AAAA,WACH,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AC5JA,IAAM,oBAAA,GAAuB;AAAA,EAC3B,EAAA,EAAI,oBAAA;AAAA,EACJ,EAAA,EAAI,kBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,sBAAA,GAAyB;AAAA,EAC7B,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,kBAAA,GAAqB;AAAA,EACzB,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,aAAa,KAAA,EAA2B;AAC/C,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,IAAA,KAAS,KAAA,GAAQ,MAAA;AAC7D;AAEA,SAAS,WAAA,GAAc;AACrB,EAAA,uBACED,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAU,mEAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAAC,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,CAAA,EAAE,GAAA;AAAA,YACF,SAAA,EAAU,YAAA;AAAA,YACV,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBACAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,YAAA;AAAA,YACV,IAAA,EAAK,cAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AAAA,GACF;AAEJ;AAEO,IAAM,UAAA,GAAaL,gBAAAA;AAAA,EACxB,SAASM,WAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,KAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA,GAAS,KAAA;AAAA,IACT,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,OAAA,GAAU,KAAA;AAAA,IACV,eAAA,GAAkB,KAAA;AAAA,IAClB,UAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA,EAAc,eAAA;AAAA,IACd,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,CAAA,IAAK;AAAA,MAC1B,CAAC,UAAU,MAAM,CAAA;AAAA,MACjB,CAAC,YAAY,QAAQ,CAAA;AAAA,MACrB,CAAC,YAAY,QAAQ,CAAA;AAAA,MACrB,CAAC,WAAW,OAAO,CAAA;AAAA,MACnB,CAAC,mBAAmB,eAAe;AAAA,KACrC,EAAY;AACV,MAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,QAAA,MAAM,IAAI,SAAA,CAAU,CAAA,WAAA,EAAc,IAAI,CAAA,mBAAA,CAAqB,CAAA;AAAA,MAC7D;AAAA,IACF;AACA,IAAA,IAAI,SAAS,MAAA,IAAa,IAAA,KAAS,QAAQ,IAAA,KAAS,IAAA,IAAQ,SAAS,IAAA,EAAM;AACzE,MAAA,MAAM,IAAI,UAAU,8CAA8C,CAAA;AAAA,IACpE;AACA,IAAA,IACE,IAAA,KAAS,MAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,QAAA,IACT,SAAS,OAAA,EACT;AACA,MAAA,MAAM,IAAI,SAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,MAAM,kBAAA,GAAqB,yBAAyB,UAAU,CAAA;AAC9D,IAAA,MAAM,sBAAsB,6BAAA,EAA8B;AAC1D,IAAA,MAAM,QAAQ,qBAAA,CAAsB;AAAA,MAClC,GAAG,kBAAA;AAAA,MACH,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AACD,IAAA,MAAM,gBAAgB,QAAA,IAAY,KAAA;AAClC,IAAA,MAAM,QAAA,GACJ,iBAAA,CAAkB,aAAa,CAAA,KAC9B,OAAO,kBAAkB,QAAA,IAAY,OAAA,CAAQ,aAAA,CAAc,IAAA,EAAM,CAAA,CAAA;AACpE,IAAA,MAAM,iBAAA,GACJ,YAAA,CAAa,SAAS,CAAA,IAAK,aAAa,eAAe,CAAA;AACzD,IAAA,MAAM,YACJ,OAAO,aAAA,KAAkB,QAAA,GACrB,YAAA,CAAa,aAAa,CAAA,GAC1B,MAAA;AACN,IAAA,MAAM,aAAA,GAAgB,aAAa,KAAK,CAAA;AACxC,IAAA,IAAI,YAAY,CAAC,QAAA,IAAY,CAAC,iBAAA,IAAqB,CAAC,aAAA,EAAe;AACjE,MAAA,MAAM,IAAI,SAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,iBAAA,GACJ,qBACA,SAAA,IACA,aAAA;AACF,IAAA,MAAM,mBAAmB,QAAA,IAAY,OAAA;AACrC,IAAA,MAAM,eAAe,IAAA,IAAQ,SAAA;AAC7B,IAAA,MAAM,gBAAgB,KAAA,KAAU,OAAA,GAC5B,YACA,QAAA,GACE,UAAA,GACA,SACE,QAAA,GACA,MAAA,CAAA;AAER,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AAC5D,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,MACxB;AACA,MAAA,IAAI,gBAAA,EAAkB;AACtB,MAAA,OAAA,GAAU,KAAK,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,uBACEF,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACE,GAAG,mBAAA;AAAA,QACH,GAAG,WAAA;AAAA,QACJ,GAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,YAAA,EAAY,iBAAA;AAAA,QACZ,gBAAc,MAAA,IAAU,MAAA;AAAA,QACxB,aAAW,OAAA,IAAW,MAAA;AAAA,QACtB,gBAAc,KAAA,CAAM,OAAA;AAAA,QACpB,gBAAc,KAAA,CAAM,OAAA;AAAA,QACpB,QAAA,EAAU,gBAAA;AAAA,QACV,wBAAA,EAAuB,QAAA;AAAA,QACvB,WAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAY,aAAA;AAAA,QACZ,WAAA,EAAW,YAAA;AAAA,QACX,WAAA,EAAW,IAAA;AAAA,QACX,eAAa,MAAA,IAAU,MAAA;AAAA,QACvB,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,iBAAe,gBAAA,IAAoB,MAAA;AAAA,QACnC,kBAAgB,QAAA,IAAY,MAAA;AAAA,QAC5B,SAAA,EAAW,EAAA;AAAA,UACT,MAAM,KAAA,CAAM,UAAA;AAAA,UACZ,QAAA,IAAY,MAAM,KAAA,CAAM,cAAA;AAAA,UACxB,IAAA,IAAQ,qBAAqB,IAAI,CAAA;AAAA,UACjC,QAAA,IAAY,IAAA,IAAQ,sBAAA,CAAuB,IAAI,CAAA;AAAA,UAC/C,0BAAA,CAA2B,KAAA,EAAO,IAAA,EAAM,MAAM,CAAA;AAAA,UAC9C,gBAAA,IAAoB,MAAM,KAAA,CAAM,cAAA;AAAA,UAChC,UAAA,EAAY,IAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,GAAG,MAAM,MAAA,CAAO,MAAA;AAAA,UAChB,GAAI,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,YAAA,GAAe,MAAA;AAAA,UACzC,GAAI,gBAAA,GAAmB,KAAA,CAAM,MAAA,CAAO,cAAA,GAAiB,MAAA;AAAA,UACrD,GAAG;AAAA,SACL;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QAER,QAAA,EAAA;AAAA,UAAA,OAAA,mBACCC,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,MAAA;AAAA,cACV,YAAA,EAAY,aAAA;AAAA,cACZ,WAAA,EAAW,YAAA;AAAA,cACX,WAAA,EAAW,IAAA;AAAA,cACX,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,UAAA;AAAA,gBACZ,IAAA,IAAQ,mBAAmB,IAAI,CAAA;AAAA,gBAC/B,UAAA,EAAY;AAAA,eACd;AAAA,cAEA,QAAA,kBAAAA,eAAC,WAAA,EAAA,EAAY;AAAA;AAAA,WACf,GACE,uBACFA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,MAAA;AAAA,cACV,YAAA,EAAY,aAAA;AAAA,cACZ,WAAA,EAAW,YAAA;AAAA,cACX,WAAA,EAAW,IAAA;AAAA,cACX,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,UAAA;AAAA,gBACZ,IAAA,IAAQ,mBAAmB,IAAI,CAAA;AAAA,gBAC/B,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA;AAAA,UACH,QAAA,GACC,iBAAA,CAAkB,aAAa,CAAA,mBAC7BA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,OAAA;AAAA,cACV,YAAA,EAAY,aAAA;AAAA,cACZ,WAAA,EAAW,YAAA;AAAA,cACX,WAAA,EAAW,IAAA;AAAA,cACX,SAAA,EAAU,SAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA,GACF,iBAAA,CAAkB,aAAa,oBACjCA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,OAAA;AAAA,cACV,YAAA,EAAY,aAAA;AAAA,cACZ,WAAA,EAAW,YAAA;AAAA,cACX,WAAA,EAAW,IAAA;AAAA,cACX,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,WAAA,EAAa,YAAY,KAAK,CAAA;AAAA,cAEvD,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA;AAAA,UACH,CAAC,OAAA,IAAW,OAAA,mBACXA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,UAAA;AAAA,cACV,YAAA,EAAY,aAAA;AAAA,cACZ,WAAA,EAAW,YAAA;AAAA,cACX,WAAA,EAAW,IAAA;AAAA,cACX,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,UAAA;AAAA,gBACZ,IAAA,IAAQ,mBAAmB,IAAI,CAAA;AAAA,gBAC/B,UAAA,EAAY,IAAA;AAAA,gBACZ,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AC3QA,SAAS,qBAAA,CACP,OACA,MAAA,EACgB;AAChB,EAAA,MAAM,SAAA,GAAY,OAAO,KAAA,KAAU,UAAA,GAAa,OAAM,GAAI,KAAA;AAC1D,EAAA,IAAI,SAAA,KAAc,MAAM,OAAO,IAAA;AAC/B,EAAA,IACE,CAAC,SAAA,IACD,OAAO,cAAc,QAAA,IACrB,SAAA,CAAU,aAAa,CAAA,EACvB;AACA,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,EAAG,MAAM,CAAA,oCAAA,CAAsC,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,SAAA;AACT;AAUO,SAAS,0BAAA,CAA2B;AAAA,EACzC,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAA,EAAsD;AACpD,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,OAAO,qBAAA;AAAA,MACL,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,OAAO,qBAAA;AAAA,MACL,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,aAAa,OAAO,IAAA;AAEzB,EAAA,MAAM,gBAAgB,WAAA,EAAY;AAClC,EAAA,IAAI,aAAA,KAAkB,MAAM,OAAO,IAAA;AACnC,EAAA,IACE,CAAC,aAAA,IACD,OAAO,kBAAkB,QAAA,IACzB,EAAE,UAAU,aAAA,CAAA,EACZ;AACA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,qBAAA;AAAA,IACL,aAAA,CAAc,IAAA;AAAA,IACd;AAAA,GACF;AACF;AC9BO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAA,EAAiE;AAC/D,EAAA,MAAM,QAAA,GAAW,oBAAoB,gBAAA,IAAoB,KAAA;AACzD,EAAA,IAAI,CAAC,WAAW,QAAA,EAAU;AACxB,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA,EAAc,KAAA;AAAA,MACd,SAAA,EAAW,IAAA;AAAA,MACX,gBAAA,EAAkB;AAAA,KACpB;AAAA,EACF;AAEA,EAAA,MAAM,YAAY,0BAAA,CAA2B;AAAA,IAC3C,kBAAkB,iBAAA,KAAsB,MAAA;AAAA,IACxC,iBAAA;AAAA,IACA,kBAAkB,iBAAA,KAAsB,MAAA;AAAA,IACxC,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,QAAA,EAAU,KAAA;AAAA,MACV,YAAA,EAAc,KAAA;AAAA,MACd,SAAA,EAAW,IAAA;AAAA,MACX,gBAAA,EAAkB;AAAA,KACpB;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,IAAA;AAAA,IACT,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc,IAAA;AAAA,IACd,SAAA;AAAA,IACA,gBAAA,EAAkB,MAAA,CAAO,MAAA,CAAO,EAAE,WAAW;AAAA,GAC/C;AACF;AAOA,SAAS,kBAAA,GAAsC;AAC7C,EAAA,OAAO,WAAW,QAAA,IAAY,IAAA;AAChC;AAEO,SAAS,oBAAA,CACd,OAAA,GAAuC,EAAC,EAChB;AACxB,EAAA,MAAM,cAAc,qBAAA,EAAsB;AAC1C,EAAA,MAAM,gBAAgB,uBAAA,EAAwB;AAC9C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIH,eAAS,KAAK,CAAA;AAE5C,EAAAC,gBAAU,MAAM;AACd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,6BAAA,CAA8B;AAAA,IACnC,OAAA;AAAA,IACA,kBAAkB,OAAA,CAAQ,QAAA;AAAA,IAC1B,mBAAmB,OAAA,CAAQ,SAAA;AAAA,IAC3B,kBAAkB,aAAA,CAAc,QAAA;AAAA,IAChC,mBAAmB,aAAA,CAAc,SAAA;AAAA,IACjC,WAAA,EAAa,YAAY,WAAA,IAAe;AAAA,GACzC,CAAA;AACH;AC/FA,SAAS,eAAA,CAAgB,OAAgB,IAAA,EAAc;AACrD,EAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,IAAA,MAAM,IAAI,SAAA,CAAU,CAAA,YAAA,EAAe,IAAI,CAAA,mBAAA,CAAqB,CAAA;AAAA,EAC9D;AACF;AAEA,SAAS,kBAAkB,KAAA,EAAgB;AACzC,EAAA,IACE,UAAU,KAAA,IACV,KAAA,KAAU,YACV,KAAA,KAAU,MAAA,IACV,UAAU,OAAA,EACV;AACA,IAAA,MAAM,IAAI,SAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACF;AAEA,SAAS,gBAAA,CAAiB,UAAqB,QAAA,EAAmB;AAChE,EAAA,IAAII,oBAAA,CAAe,QAAQ,CAAA,IAAK,QAAA,CAAS,SAASC,cAAAA,EAAU;AAC1D,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,uBACEH,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,CAAC,QAAA,IAAY,iBAAA,CAAkB,QAAQ,CAAA,GAAI,CAAA,GAAI,MAAA,EAC5D,QAAA,EACH,CAAA;AAEJ;AAEO,IAAM,WAAA,GAAcL,gBAAAA;AAAA,EACzB,SAASS,YAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA,GAAc,KAAA;AAAA,IACd,SAAA,GAAY,KAAA;AAAA,IACZ,QAAA,GAAW,KAAA;AAAA,IACX,MAAA,GAAS,KAAA;AAAA,IACT,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,IAAI,IAAA,KAAS,MAAA,EAAW,eAAA,CAAgB,IAAA,EAAM,MAAM,CAAA;AACpD,IAAA,eAAA,CAAgB,aAAa,aAAa,CAAA;AAC1C,IAAA,eAAA,CAAgB,UAAU,UAAU,CAAA;AACpC,IAAA,eAAA,CAAgB,QAAQ,QAAQ,CAAA;AAChC,IAAA,iBAAA,CAAkB,SAAS,CAAA;AAE3B,IAAA,MAAM,kBAAA,GAAqB,yBAAyB,UAAU,CAAA;AAC9D,IAAA,MAAM,sBAAsB,6BAAA,EAA8B;AAC1D,IAAA,MAAM,KAAA,GAAQ,sBAAsB,kBAAkB,CAAA;AACtD,IAAA,MAAM,gBAAgB,oBAAA,CAAqB,EAAE,QAAA,EAAU,CAAC,QAAQ,CAAA;AAChE,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIP,eAAS,WAAW,CAAA;AACpE,IAAA,MAAM,eAAe,IAAA,KAAS,MAAA;AAC9B,IAAA,MAAM,OAAA,GAAU,CAAC,QAAA,IAAY,iBAAA,CAAkB,OAAO,CAAA;AACtD,IAAA,MAAM,aAAA,GAAgB,eAAe,IAAA,GAAO,gBAAA;AAC5C,IAAA,MAAM,SAAS,OAAA,IAAW,aAAA;AAC1B,IAAA,MAAM,WAAA,GACJ,MAAA,IAAU,aAAA,CAAc,YAAA,GAAe,UAAA,GAAa,QAAA;AAEtD,IAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAsB;AAC9C,MAAA,IAAI,QAAA,IAAY,CAAC,OAAA,EAAS;AAC1B,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,mBAAA,CAAoB,QAAQ,CAAA;AAAA,MAC9B;AACA,MAAA,YAAA,GAAe,QAAQ,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,QAAA,EAAU,QAAQ,CAAA;AACnD,IAAA,MAAM,cAAA,GAAiB,0BACrBG,cAAAA;AAAA,MAASK,kBAAA,CAAA,OAAA;AAAA,MAAR;AAAA,QACE,GAAG,mBAAA;AAAA,QACJ,IAAA,EAAM,SAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,gBAAA,EAAkB,CAAA;AAAA,QAClB,wBAAA,EAAuB,SAAA;AAAA,QACvB,WAAA,EAAU,SAAA;AAAA,QACV,gBAAA,EAAgB,SAAA;AAAA,QAChB,aAAA,EAAa,WAAA;AAAA,QACb,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,cAAA,EAAgB,YAAY,OAAO,CAAA;AAAA,QAC7D,KAAA,EAAO,MAAM,MAAA,CAAO,OAAA;AAAA,QAEnB,QAAA,EAAA;AAAA;AAAA,KACH,GACE,IAAA;AAEJ,IAAA,uBACEL,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACE,GAAG,mBAAA;AAAA,QACH,GAAG,YAAA;AAAA,QACJ,GAAA;AAAA,QACA,wBAAA,EAAuB,SAAA;AAAA,QACvB,WAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,QAC9B,gBAAA,EAAgB,SAAA;AAAA,QAChB,aAAA,EAAa,WAAA;AAAA,QACb,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,WAAW,EAAA,CAAG,KAAA,CAAM,MAAM,WAAA,EAAa,UAAA,EAAY,MAAM,SAAS,CAAA;AAAA,QAClE,KAAA;AAAA,QAEA,QAAA,kBAAAA,cAAAA;AAAA,UAASK,kBAAA,CAAA,QAAA;AAAA,UAAR;AAAA,YACC,aAAA,EAAe,CAAA;AAAA,YACf,iBAAA,EAAmB,CAAA;AAAA,YACnB,uBAAA,EAAuB,IAAA;AAAA,YAEvB,QAAA,kBAAAN,eAAAA;AAAA,cAASM,kBAAA,CAAA,IAAA;AAAA,cAAR;AAAA,gBACC,IAAA,EAAM,MAAA;AAAA,gBACN,YAAA,EAAc,gBAAA;AAAA,gBACd,aAAA,EAAe,CAAA;AAAA,gBACf,uBAAA,EAAuB,IAAA;AAAA,gBAEvB,QAAA,EAAA;AAAA,kCAAAL,cAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACE,GAAG,mBAAA;AAAA,sBACJ,wBAAA,EAAuB,SAAA;AAAA,sBACvB,WAAA,EAAU,iBAAA;AAAA,sBACV,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,sBAC9B,gBAAA,EAAgB,SAAA;AAAA,sBAChB,aAAA,EAAa,WAAA;AAAA,sBACb,iBAAe,QAAA,IAAY,MAAA;AAAA,sBAC3B,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,cAAA,EAAgB,YAAY,OAAO,CAAA;AAAA,sBAE7D,QAAA,kBAAAA,cAAAA;AAAA,wBAASK,kBAAA,CAAA,OAAA;AAAA,wBAAR;AAAA,0BACC,OAAA,EAAO,IAAA;AAAA,0BACN,GAAG,mBAAA;AAAA,0BACJ,wBAAA,EAAuB,SAAA;AAAA,0BACvB,WAAA,EAAU,SAAA;AAAA,0BACV,gBAAA,EAAgB,SAAA;AAAA,0BAChB,aAAA,EAAa,WAAA;AAAA,0BACb,iBAAe,QAAA,IAAY,MAAA;AAAA,0BAE1B,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,mBACF;AAAA,kBACC,MAAA,IAAU,aAAA,CAAc,YAAA,mBACvBL,cAAAA,CAASK,kBAAA,CAAA,MAAA,EAAR,EAAgB,GAAG,aAAA,CAAc,gBAAA,EAC/B,QAAA,EAAA,cAAA,EACH,CAAA,GAEA;AAAA;AAAA;AAAA;AAEJ;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AACF,CAAA;AC1IA,IAAM,eAAA,GAAiC;AAAA,EACrC,KAAA,EAAO,yDAAA;AAAA,EACP,YAAA,EACE,2EAAA;AAAA,EACF,UAAA,EACE,yEAAA;AAAA,EACF,KAAA,EACE,oFAAA;AAAA,EACF,WAAA,EACE,6EAAA;AAAA,EACF,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,iBAAA,GAAmC;AAAA,EACvC,OAAA,EACE,2FAAA;AAAA,EACF,WAAA,EACE;AACJ,CAAA;AAEA,IAAM,qBAAA,GAEF;AAAA,EACF,OAAA,EACE,+FAAA;AAAA,EACF,iDAAA,EAAmD;AACrD,CAAA;AAEA,IAAM,iBAAA,GAAmC;AAAA,EACvC,OAAA,EACE,2FAAA;AAAA,EACF,UAAA,EACE,wFAAA;AAAA,EACF,WAAA,EACE;AACJ,CAAA;AASO,IAAM,eAAA,GAAkBV,gBAAAA;AAAA,EAC7B,SAASW,gBAAAA,CACP;AAAA,IACE,UAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAc,SAAA,GAAY,wBAAA;AAAA,IAC1B,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,uBACEP,eAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,wBAAA,EAAuB,EAAA;AAAA,QACvB,SAAA,EAAW,EAAA;AAAA,UACT,+EAAA;AAAA,UACA,UAAA,EAAY,IAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,GAAG,eAAA;AAAA,UACH,GAAI,KAAA,KAAU,MAAA,GAAY,IAAA,GAAO,EAAE,KAAA,EAAM;AAAA,UACzC,GAAG;AAAA,SACL;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,MAAA,mBACCC,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,QAAA;AAAA,cACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,UAAA,EAAY,MAAM,CAAA;AAAA,cACrD,KAAA,EAAO,iBAAA;AAAA,cAEN,QAAA,EAAA;AAAA;AAAA,WACH,GACE,IAAA;AAAA,0BAEJA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,YAAA;AAAA,cACV,SAAA,EAAW,EAAA;AAAA,gBACT,yCAAA;AAAA,gBACA,UAAA,EAAY;AAAA,eACd;AAAA,cACA,KAAA,EAAO,qBAAA;AAAA,cAEN,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAEC,yBACCA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,QAAA;AAAA,cACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,UAAA,EAAY,MAAM,CAAA;AAAA,cACrD,KAAA,EAAO,iBAAA;AAAA,cAEN,QAAA,EAAA;AAAA;AAAA,WACH,GACE;AAAA;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;ACjD9B,IAAM,iBAAA,GAAoC;AAAA,EACxC,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,IAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,gBAAA,GAA0D;AAAA,EAC9D,OAAA,EAAS,YAAA;AAAA,EACT,IAAA,EAAM,cAAA;AAAA,EACN,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,SAAA,GAAY;AACnB,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,MAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MAEf,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iBAAA,EAAkB;AAAA;AAAA,GAC5B;AAEJ;AAEA,SAAS,QAAA,GAAW;AAClB,EAAA,uBACED,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MAEf,QAAA,EAAA;AAAA,wBAAAC,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC9BA,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC9BA,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI;AAAA;AAAA;AAAA,GAC/B;AAEJ;AAEA,SAASO,aAAY,IAAA,EAAe;AAClC,EAAA,IAAI,CAAC,MAAM,OAAO,GAAA;AAClB,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AACrD,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,EAAQ,OAAO,GAAA;AAC1B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,WAAA,EAAY;AAChE,EAAA,OAAO,KAAA,CACJ,KAAA,CAAM,CAAA,EAAG,CAAC,EACV,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,CAAC,CAAC,CAAA,CACrB,IAAA,CAAK,EAAE,EACP,WAAA,EAAY;AACjB;AAEA,SAAS,UAAA,CAAW,MAAiB,SAAA,EAAoB;AACvD,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,uBACEP,eAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,0DAAA,EAA4D,SAAS,GACtF,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ;AAEA,SAAS,sBAAsB,QAAA,EAAyC;AACtE,EAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,KAAA,KAAU,QAAA,CAAS,KAAK,CAAA,EAAG,KAAA,IAAS,QAAA,CAAS,KAAA;AAC/F;AAEA,SAAS,uBAAA,CAAwB;AAAA,EAC/B,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,SAAS,OAAA,KAAY,KAAA,IAAS,SAAS,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,IAAA;AAExE,EAAA,MAAM,WAAA,GAAc,iBAAiB,UAAU,CAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,sBAAsB,QAAQ,CAAA;AAEnD,EAAA,uBACED,eAAAA,CAAcS,uBAAA,CAAA,GAAA,EAAb,EACC,QAAA,EAAA;AAAA,oBAAAT,eAAAA;AAAA,MAAcS,uBAAA,CAAA,UAAA;AAAA,MAAb;AAAA,QACC,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,SAAA,EAAW,EAAA;AAAA,UACT,gSAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,UAAA,CAAW,SAAS,IAAI,CAAA;AAAA,0BACzBR,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,mBAAS,KAAA,EAAM,CAAA;AAAA,0BACnDA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qFACb,QAAA,EAAA,YAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,oBACAA,cAAAA,CAAcQ,uBAAA,CAAA,MAAA,EAAb,EACC,QAAA,kBAAAR,cAAAA;AAAA,MAAcQ,uBAAA,CAAA,UAAA;AAAA,MAAb;AAAA,QACC,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,iKAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA,CAAS,qBAAA;AAAA,UACT,UAAA,EAAY;AAAA,SACd;AAAA,QAEA,QAAA,kBAAAR,cAAAA,CAAcQ,uBAAA,CAAA,UAAA,EAAb,EAAwB,OAAO,QAAA,CAAS,KAAA,EAAO,aAAA,EAAe,QAAA,CAAS,UACrE,QAAA,EAAA,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,2BACrBT,eAAAA;AAAA,UAAcS,uBAAA,CAAA,SAAA;AAAA,UAAb;AAAA,YAEC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,SAAA,EAAW,EAAA;AAAA,cACT,2PAAA;AAAA,cACA,WAAA;AAAA,cACA,UAAA,EAAY;AAAA,aACd;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAR,cAAAA,CAAcQ,uCAAb,EAA2B,SAAA,EAAU,mEACpC,QAAA,kBAAAR,cAAAA,CAAC,aAAU,CAAA,EACb,CAAA;AAAA,cACC,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,UAAA,EAAY,QAAQ,CAAA;AAAA,8BAC7CA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,iBAAO,KAAA,EAAM;AAAA;AAAA,WAAA;AAAA,UAb5C,MAAA,CAAO;AAAA,SAef,CAAA,EACH;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA,GAAQ,KAAA;AAAA,EACR,UAAA,GAAa,iBAAA;AAAA,EACb,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,qBAAA,GAAwB,MAAA;AAAA,EACxB,YAAA,GAAe,MAAA;AAAA,EACf,QAAQ,EAAC;AAAA,EACT,UAAA,GAAa,SAAA;AAAA,EACb,YAAY,EAAC;AAAA,EACb,IAAA,GAAO,QAAA;AAAA,EACP,UAAA,GAAa,CAAA;AAAA,EACb,cAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA,GAAiB,QAAA;AAAA,EACjB;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,IAAA,EAAM,IAAA,EAAK,IAAK,YAAA;AACzC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,IAAYO,YAAAA,CAAY,WAAW,CAAA;AACzD,EAAA,MAAM,WAAA,GAAc,iBAAiB,UAAU,CAAA;AAC/C,EAAA,MAAM,mBAAmB,SAAA,CAAU,MAAA;AAAA,IACjC,CAAC,QAAA,KAAa,QAAA,CAAS,YAAY,KAAA,IAAS,QAAA,CAAS,QAAQ,MAAA,GAAS;AAAA,GACxE;AACA,EAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,YAAY,KAAK,CAAA;AAClE,EAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,MAAA,GAAS,CAAA,IAAK,aAAa,MAAA,GAAS,CAAA;AAEzE,EAAA,MAAM,yBACJP,cAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,GAAA,EAAK,KAAK,SAAA,IAAa,WAAA;AAAA,MACvB,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,UAAA,EAAY,MAAM,CAAA;AAAA,MAC3C,QAAA;AAAA,MACA,IAAA,EAAM,WAAA;AAAA,MACN,IAAA,EAAK,IAAA;AAAA,MACL,KAAK,IAAA,CAAK;AAAA;AAAA,GACZ;AAEF,EAAA,MAAM,mBAAmB,cAAA,KAAmB,SAAA;AAE5C,EAAA,uBACED,eAAAA,CAAcS,uBAAA,CAAA,IAAA,EAAb,EACC,QAAA,EAAA;AAAA,oBAAAR,cAAAA,CAAcQ,uBAAA,CAAA,OAAA,EAAb,EAAqB,OAAA,EAAO,MAC3B,QAAA,kBAAAR,cAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,UAAA;AAAA,QACA,WAAW,SAAA,IAAa,WAAA;AAAA,QACxB,SAAA,EAAW,EAAA;AAAA,UACT,mBACI,yJAAA,GACA,sJAAA;AAAA,UACJ,SAAA;AAAA,UACA,UAAA,EAAY,IAAA;AAAA,UACZ,UAAA,EAAY;AAAA,SACd;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,SAAA;AAAA,UACN,KAAA,EAAO,mBAAmB,0BAAA,GAA6B;AAAA,SACzD;AAAA,QACA,SAAS,gBAAA,GAAoB,cAAA,oBAAkBA,cAAAA,CAAC,YAAS,CAAA,GAAM,MAAA;AAAA,QAC/D,IAAA,EAAM,MAAA;AAAA,QACN,UAAU,CAAC,gBAAA;AAAA,QACX,OACE,gBAAA,mBACED,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oFAAA,EACb,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,UACC,IAAA,CAAK,gCACJA,cAAAA,CAAC,UAAK,SAAA,EAAU,mFAAA,EACb,QAAA,EAAA,IAAA,CAAK,aAAA,EACR,CAAA,GACE;AAAA,SAAA,EACN,CAAA,GACE,MAAA;AAAA,QAEN,OAAO,YAAA,IAAgB,WAAA;AAAA,QACvB,IAAA,EAAK;AAAA;AAAA,KACP,EACF,CAAA;AAAA,oBACAA,cAAAA,CAAcQ,uBAAA,CAAA,MAAA,EAAb,EACC,QAAA,kBAAAT,eAAAA;AAAA,MAAcS,uBAAA,CAAA,OAAA;AAAA,MAAb;AAAA,QACC,KAAA;AAAA,QACA,IAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,wJAAA;AAAA,UACA,qBAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACd;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAR,cAAAA,CAAcQ,uBAAA,CAAA,KAAA,EAAb,EAAmB,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,UAAA,EAAY,KAAK,CAAA,EAC5E,QAAA,kBAAAT,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,MAAA;AAAA,4BACDA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,8BAAAC,cAAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,6CAA6C,UAAA,EAAY,QAAQ,GAClF,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,cACC,IAAA,CAAK,gCACJA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,EAAA;AAAA,oBACT,wEAAA;AAAA,oBACA,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,eACR,GACE;AAAA,aAAA,EACN;AAAA,WAAA,EACF,CAAA,EACF,CAAA;AAAA,UAEC,8BACCA,cAAAA;AAAA,YAAcQ,uBAAA,CAAA,SAAA;AAAA,YAAb;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,UAAA,EAAY,SAAS;AAAA;AAAA,WAC1E,GACE,IAAA;AAAA,UAEH,gBAAA,CAAiB,GAAA,CAAI,CAAC,QAAA,EAAU,0BAC/BR,cAAAA;AAAA,YAAC,uBAAA;AAAA,YAAA;AAAA,cAEC,UAAA;AAAA,cACA,UAAA;AAAA,cACA;AAAA,aAAA;AAAA,YAHK,QAAA,CAAS,EAAA,IAAM,CAAA,SAAA,EAAY,KAAK,CAAA;AAAA,WAKxC,CAAA;AAAA,UAEA,iBAAiB,MAAA,GAAS,CAAA,IAAK,YAAA,CAAa,MAAA,GAAS,oBACpDA,cAAAA;AAAA,YAAcQ,uBAAA,CAAA,SAAA;AAAA,YAAb;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,UAAA,EAAY,SAAS;AAAA;AAAA,WAC1E,GACE,IAAA;AAAA,UAEH,aAAa,GAAA,CAAI,CAAC,IAAA,qBACjBT,gBAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,kCACJC,cAAAA;AAAA,cAAcQ,uBAAA,CAAA,SAAA;AAAA,cAAb;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,UAAA,EAAY,SAAS;AAAA;AAAA,aAC1E,GACE,IAAA;AAAA,4BACJT,eAAAA;AAAA,cAAcS,uBAAA,CAAA,IAAA;AAAA,cAAb;AAAA,gBACC,UAAU,IAAA,CAAK,QAAA;AAAA,gBACf,UAAU,IAAA,CAAK,QAAA;AAAA,gBACf,SAAA,EAAW,EAAA;AAAA,kBACT,sPAAA;AAAA,kBACA,WAAA;AAAA,kBACA,IAAA,CAAK,SAAS,QAAA,IACZ,wIAAA;AAAA,kBACF,UAAA,EAAY,IAAA;AAAA,kBACZ,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,UAAA,EAAY;AAAA,iBACxC;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,UAAA,CAAW,IAAA,CAAK,IAAA,EAAM,UAAA,EAAY,QAAQ,CAAA;AAAA,kCAC3CR,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EAA2B,eAAK,KAAA,EAAM,CAAA;AAAA,kBACrD,IAAA,CAAK,2BACJA,cAAAA,CAAC,UAAK,SAAA,EAAU,2DAAA,EACb,QAAA,EAAA,IAAA,CAAK,QAAA,EACR,CAAA,GACE;AAAA;AAAA;AAAA;AACN,WAAA,EAAA,EAzBQ,IAAA,CAAK,EA0Bf,CACD;AAAA;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;ACzXO,SAASS,OAAM,MAAA,EAAuD;AAC3E,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACxC;AAkBO,SAAS,SAAA,CAAU;AAAA,EACxB,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,uBACEV,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWU,GAAAA;AAAA,QACT,yIAAA;AAAA,QACA,SACI,6DAAA,GACA,wFAAA;AAAA,QACJ;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAT,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EAA8C,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,wBAClEA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAW,QAAA,EAAS,CAAA;AAAA,QACnC;AAAA;AAAA;AAAA,GACH;AAEJ;AA+CO,SAAS,SAAA,CAAU;AAAA,EACxB,IAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,0BAAA;AAAA,EACd,aAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,KACvB,IAAA,CACG,MAAM,GAAG,CAAA,CACT,IAAI,CAAC,CAAA,KAAM,EAAE,CAAC,CAAC,EACf,IAAA,CAAK,EAAE,EACP,WAAA,EAAY,CACZ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAEf,EAAA,uBACED,eAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWU,GAAAA;AAAA,QACT,6KAAA;AAAA,QACA;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAV,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,iDAAA;AAAA,YACV,SAAS,IAAA,CAAK,OAAA;AAAA,YAEd,QAAA,EAAA;AAAA,8BAAAC,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAWS,GAAAA;AAAA,oBACT,qEAAA;AAAA,oBACA,IAAA,CAAK,MACD,gBAAA,GACA;AAAA,mBACN;AAAA,kBAEC,QAAA,EAAA,IAAA,CAAK,sBACJT,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAK,IAAA,CAAK,GAAA;AAAA,sBACV,KAAK,IAAA,CAAK,KAAA;AAAA,sBACV,SAAA,EAAU;AAAA;AAAA,mBACZ,mBAEAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAqB,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAE;AAAA;AAAA,eAE9D;AAAA,8BACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,eAAK,KAAA,EACR;AAAA;AAAA;AAAA,SACF;AAAA,QAGC,QAAQ,IAAA,CAAK,MAAA,GAAS,qBACrBD,eAAAA,CAAAI,qBAAA,EACE,QAAA,EAAA;AAAA,0BAAAH,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EAAqC,CAAA;AAAA,0BACpDA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BACb,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEAAA,EACZ,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,wBACTA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAWS,GAAAA;AAAA,gBACT,qHAAA;AAAA,gBACA,GAAA,CAAI,EAAA,KAAO,SAAA,GACP,gEAAA,GACA;AAAA,eACN;AAAA,cACA,OAAA,EAAS,MAAM,WAAA,GAAc,GAAA,CAAI,EAAE,CAAA;AAAA,cAElC,QAAA,EAAA,GAAA,CAAI;AAAA,aAAA;AAAA,YATA,GAAA,CAAI;AAAA,WAWZ,GACH,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,QAAA,CAEA,CAAC,QAAQ,IAAA,CAAK,MAAA,KAAW,sBAAMT,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,wBAGzDD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,IAAA,oBACCA,eAAAA,CAAcW,uBAAA,CAAA,IAAA,EAAb,EACC,QAAA,EAAA;AAAA,4BAAAV,cAAAA,CAAcU,uBAAA,CAAA,OAAA,EAAb,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAV,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,+JAAA,EACf,QAAA,EAAA,IAAA,CAAK,KAAA,mBACJA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAK,IAAA,CAAK,KAAA;AAAA,gBACV,KAAK,IAAA,CAAK,IAAA;AAAA,gBACV,SAAA,EAAU;AAAA;AAAA,aACZ,mBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kGAAA,EACZ,QAAA,EAAA,IAAA,CAAK,IAAA,GAAO,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,GAAI,GAAA,EAC5C,GAEJ,CAAA,EACF,CAAA;AAAA,4BACAA,cAAAA,CAAcU,uBAAA,CAAA,MAAA,EAAb,EACC,QAAA,kBAAAX,eAAAA;AAAA,cAAcW,uBAAA,CAAA,OAAA;AAAA,cAAb;AAAA,gBACC,SAAA,EAAU,sKAAA;AAAA,gBACV,UAAA,EAAY,CAAA;AAAA,gBACZ,KAAA,EAAM,KAAA;AAAA,gBAGN,QAAA,EAAA;AAAA,kCAAAX,eAAAA,CAAcW,uBAAA,CAAA,KAAA,EAAb,EAAmB,SAAA,EAAU,iDAAA,EAC3B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,wBACJV,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAK,IAAA,CAAK,KAAA;AAAA,wBACV,KAAK,IAAA,CAAK,IAAA;AAAA,wBACV,SAAA,EAAU;AAAA;AAAA,qBACZ,mBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGAAA,EACZ,QAAA,EAAA,IAAA,CAAK,IAAA,GAAO,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,GAAI,GAAA,EAC5C,CAAA;AAAA,oCAEFD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,sCAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kCAAA,EACb,eAAK,IAAA,EACR,CAAA;AAAA,sBACC,IAAA,CAAK,yBACJA,cAAAA,CAAC,UAAK,SAAA,EAAU,+DAAA,EACb,eAAK,KAAA,EACR;AAAA,qBAAA,EAEJ;AAAA,mBAAA,EACF,CAAA;AAAA,kCAEAA,cAAAA,CAAcU,uBAAA,CAAA,SAAA,EAAb,EAAuB,WAAU,mCAAA,EAAoC,CAAA;AAAA,kCAEtEX,eAAAA,CAAcW,uBAAA,CAAA,KAAA,EAAb,EACE,QAAA,EAAA;AAAA,oBAAA,aAAA;AAAA,oCAGDX,eAAAA;AAAA,sBAAcW,uBAAA,CAAA,IAAA;AAAA,sBAAb;AAAA,wBACC,SAAA,EAAU,wLAAA;AAAA,wBACV,QAAA,EAAU,MAAM,QAAA,IAAW;AAAA,wBAE3B,QAAA,EAAA;AAAA,0CAAAX,eAAAA;AAAA,4BAAC,KAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAM,4BAAA;AAAA,8BACN,KAAA,EAAM,IAAA;AAAA,8BACN,MAAA,EAAO,IAAA;AAAA,8BACP,OAAA,EAAQ,WAAA;AAAA,8BACR,IAAA,EAAK,MAAA;AAAA,8BACL,MAAA,EAAO,cAAA;AAAA,8BACP,WAAA,EAAY,KAAA;AAAA,8BACZ,aAAA,EAAc,OAAA;AAAA,8BACd,cAAA,EAAe,OAAA;AAAA,8BAEf,QAAA,EAAA;AAAA,gDAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,yCAAA,EAA0C,CAAA;AAAA,gDAClDA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,kBAAA,EAAmB,CAAA;AAAA,gDACpCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA,2BACvC;AAAA,0BACC;AAAA;AAAA;AAAA;AACH,mBAAA,EACF;AAAA;AAAA;AAAA,aACF,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AAwCO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,0BAAA;AAAA,EACd,MAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACED,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWU,GAAAA;AAAA,QACT,uLAAA;AAAA,QACA;AAAA,OACF;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,IAAA,oBACCV,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,iDAAA;AAAA,YACV,SAAS,IAAA,CAAK,OAAA;AAAA,YAEd,QAAA,EAAA;AAAA,8BAAAC,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAWS,GAAAA;AAAA,oBACT,qEAAA;AAAA,oBACA,IAAA,CAAK,MACD,gBAAA,GACA;AAAA,mBACN;AAAA,kBAEC,QAAA,EAAA,IAAA,CAAK,sBACJT,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAK,IAAA,CAAK,GAAA;AAAA,sBACV,KAAK,IAAA,CAAK,KAAA;AAAA,sBACV,SAAA,EAAU;AAAA;AAAA,mBACZ,mBAEAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAqB,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAE;AAAA;AAAA,eAE9D;AAAA,8BACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,eAAK,KAAA,EACR;AAAA;AAAA;AAAA,SACF;AAAA,wBAIFA,cAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,QAAA;AAAA,YACP,YAAA;AAAA,YACA,UAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QAAA,CAGE,WAAW,MAAA,qBACXD,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,OAAA,oBACCC,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8EACb,QAAA,kBAAAD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,cAAA,OAAA,CAAQ,wBACPC,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAK,OAAA,CAAQ,KAAA;AAAA,kBACb,KAAK,OAAA,CAAQ,IAAA;AAAA,kBACb,SAAA,EAAU;AAAA;AAAA,eACZ,mBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sGAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAA,GACL,OAAA,CAAQ,KAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KACvB,GAAA,EACN,CAAA;AAAA,8BAEFA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CAAA,EACb,kBAAQ,IAAA,EACX;AAAA,aAAA,EACF,CAAA;AAAA,YACC,4BACCA,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,QAAA;AAAA,gBACT,SAAA,EAAU,qGAAA;AAAA,gBACV,KAAA,EAAO,WAAA;AAAA,gBAEP,QAAA,kBAAAD,eAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,4BAAA;AAAA,oBACN,KAAA,EAAM,IAAA;AAAA,oBACN,MAAA,EAAO,IAAA;AAAA,oBACP,OAAA,EAAQ,WAAA;AAAA,oBACR,IAAA,EAAK,MAAA;AAAA,oBACL,MAAA,EAAO,cAAA;AAAA,oBACP,WAAA,EAAY,KAAA;AAAA,oBACZ,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe,OAAA;AAAA,oBAEf,QAAA,EAAA;AAAA,sCAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,yCAAA,EAA0C,CAAA;AAAA,sCAClDA,cAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,kBAAA,EAAmB,CAAA;AAAA,sCACpCA,cAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA;AACvC;AAAA;AACF,WAAA,EAEJ,CAAA,EACF,CAAA;AAAA,UAED;AAAA,SAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAYA,SAAS,cAAA,CAAe;AAAA,EACtB,KAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIH,eAAkC,MAAM;AACtE,IAAA,MAAM,MAA+B,EAAC;AACtC,IAAA,CAAC,qBAAA,IAAyB,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA,EAAG,OAAA,CAAQ,CAAC,EAAA,KAAO;AAChE,MAAA,GAAA,CAAI,EAAE,CAAA,GAAI,IAAA;AAAA,IACZ,CAAC,CAAA;AACD,IAAA,OAAO,GAAA;AAAA,EACT,CAAC,CAAA;AACD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,eAEhD,YAAY,CAAA;AAEd,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,MAAA,oBAAA,CAAqB,YAAY,CAAA;AAAA,IACnC;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,MAAA,GAAS,CAAC,EAAA,KAAe;AAC7B,IAAA,WAAA,CAAY,CAAC,IAAA,MAAmC;AAAA,MAC9C,GAAG,IAAA;AAAA,MACH,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE;AAAA,KAChB,CAAE,CAAA;AAAA,EACJ,CAAA;AACA,EAAA,MAAM,uBAAuB,YAAA,IAAgB,iBAAA;AAE7C,EAAA,uBACEC,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,+BAAA;AAAA,MACV,KAAA,EAAO,EAAE,cAAA,EAAgB,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,MAEzD,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,WAAO,QAAA,EAAA,CAAA,0DAAA,CAAA,EAA6D,CAAA;AAAA,wBACrEA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wFACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,UAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,YAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,CAAK,EAAE,CAAA,IAAK,IAAA;AACxC,YAAA,uBACED,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAC,cAAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBACC,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,OAAA,EAAS,MAAM,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AAAA,kBAC7B,yBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,kBAAAA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAM,4BAAA;AAAA,sBACN,KAAA,EAAM,IAAA;AAAA,sBACN,MAAA,EAAO,IAAA;AAAA,sBACP,OAAA,EAAQ,WAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,MAAA,EAAO,cAAA;AAAA,sBACP,WAAA,EAAY,GAAA;AAAA,sBACZ,aAAA,EAAc,OAAA;AAAA,sBACd,cAAA,EAAe,OAAA;AAAA,sBACf,SAAA,EAAU,0EAAA;AAAA,sBACV,KAAA,EAAO;AAAA,wBACL,SAAA,EAAW,aACP,eAAA,GACA;AAAA,uBACN;AAAA,sBAEA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA;AAAA,mBAC1B,EACF,CAAA;AAAA,kBAGD,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,eACR;AAAA,cACC,UAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACZ,QAAA,EAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,qBAClBA,cAAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBAEC,MAAA,EAAQ,MAAM,EAAA,KAAO,oBAAA;AAAA,kBACrB,SAAS,MAAM;AACb,oBAAA,oBAAA,CAAqB,MAAM,EAAE,CAAA;AAC7B,oBAAA,UAAA,GAAa,MAAM,EAAE,CAAA;AAAA,kBACvB,CAAA;AAAA,kBAEC,QAAA,EAAA,KAAA,CAAM;AAAA,iBAAA;AAAA,gBAPF,KAAA,CAAM;AAAA,eASd,CAAA,EACH;AAAA,aAAA,EAAA,EA5CM,KAAK,EA8Cf,CAAA;AAAA,UAEJ;AACA,UAAA,uBACEA,cAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cAEC,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,MAAA,EAAQ,KAAK,EAAA,KAAO,oBAAA;AAAA,cACpB,SAAS,MAAM;AACb,gBAAA,oBAAA,CAAqB,KAAK,EAAE,CAAA;AAC5B,gBAAA,UAAA,GAAa,KAAK,EAAE,CAAA;AAAA,cACtB,CAAA;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA,aAAA;AAAA,YARD,IAAA,CAAK;AAAA,WASZ;AAAA,QAEJ,CAAC,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AAiBO,SAAS,SAAA,CAAU;AAAA,EACxB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR;AACF,CAAA,EAAmB;AACjB,EAAA,uBACED,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWU,GAAAA;AAAA,QACT,8GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,eAAA,EAAiB,mBAAA,EAAoB;AAAA,MAE7C,QAAA,EAAA;AAAA,QAAA,MAAA,GAAS,MAAA,GAAS,IAAA;AAAA,wBACnBV,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yEAAA,EACZ,QAAA,EAAA;AAAA,UAAA,OAAA,GAAU,OAAA,GAAU,IAAA;AAAA,0BACrBC,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWS,GAAAA;AAAA,gBACT,yGAAA;AAAA,gBACA,CAAC,KAAA,IAAS;AAAA,eACZ;AAAA,cAEC,kBACC,QAAA,mBAEAT,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAA0B,QAAA,EAAS;AAAA;AAAA;AAEtD,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAuEA,IAAM,wCAAA,GAA2C,SAAA;AACjD,IAAM,yCAAA,GAA4C,SAAA;AAClD,IAAM,mCAAA,GAAsC,gCAAA;AAC5C,IAAM,2CAAA,GAA8C,EAAA;AACpD,IAAM,uCAAA,GAA0C,EAAA;AAChD,IAAM,uCAAA,GAA0C,GAAA;AAChD,IAAM,qDAAA,GAAwD,EAAA;AAC9D,IAAM,mDAAA,GAAsD,EAAA;AAC5D,IAAM,qDAAA,GAAwD,CAAA;AAC9D,IAAM,8CAAA,GAAiD,EAAA;AACvD,IAAM,8CAAA,GAAiD,EAAA;AACvD,IAAM,oCAAA,GAAuD;AAAA,EAC3D,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,IAAA;AAAA,EACR,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,uCAAA,GAGF;AAAA,EACF,MAAM,EAAE,GAAA,EAAK,gBAAgB,IAAA,EAAM,eAAA,EAAiB,OAAO,eAAA,EAAgB;AAAA,EAC3E,EAAA,EAAI;AAAA,IACF,GAAA,EAAK,YAAA;AAAA,IACL,IAAA,EAAM,+BAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,EAAA,EAAI;AAAA,IACF,GAAA,EAAK,YAAA;AAAA,IACL,IAAA,EAAM,+BAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,EAAA,EAAI;AAAA,IACF,GAAA,EAAK,YAAA;AAAA,IACL,IAAA,EAAM,+BAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,EAAA,EAAI;AAAA,IACF,GAAA,EAAK,YAAA;AAAA,IACL,IAAA,EAAM,+BAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,GAAA,EAAK,cAAA;AAAA,IACL,IAAA,EAAM,iCAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAA;AAEA,SAAS,mBAAmB,KAAA,EAAgB;AAC1C,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,MAAA,CAAO,SAAS,KAAK,CAAA;AACrD,IAAA,OAAO,2CAAA;AACT,EAAA,OAAO,IAAA,CAAK,GAAA;AAAA,IACV,uCAAA;AAAA,IACA,KAAK,GAAA,CAAI,uCAAA,EAAyC,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC;AAAA,GACrE;AACF;AAEA,SAAS,4BAA4B,QAAA,EAAkB;AACrD,EAAA,OAAO,QAAA,IAAY,wDACf,qDAAA,GACA,mDAAA;AACN;AAEA,SAAS,qBAAqB,QAAA,EAAkB;AAC9C,EAAA,OAAO,QAAA,IAAY,wDACf,8CAAA,GACA,8CAAA;AACN;AAEA,SAAS,yBAAA,CACP,UAAA,GAAgC,SAAA,EAChC,IAAA,GAAiC,KAAA,EACjC;AACA,EAAA,IAAI,eAAe,SAAA,EAAW;AAC5B,IAAA,IAAI,IAAA,KAAS,QAAQ,OAAO,6BAAA;AAC5B,IAAA,IAAI,IAAA,KAAS,SAAS,OAAO,6BAAA;AAC7B,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,OAAO,uCAAA,CAAwC,UAAU,CAAA,CAAE,IAAI,CAAA;AACjE;AAEA,SAAS,oBAAA,CACP,UAAA,GAAgC,OAAA,EAChC,WAAA,GAAkC,QAAA,EAClC;AACA,EAAA,MAAM,OAAA,GACJ,WAAA,KAAgB,QAAA,GACZ,mFAAA,GACA,mDAAA;AACN,EAAA,OAAO,eAAe,YAAA,GAClBS,GAAAA;AAAA,IACE,gMAAA;AAAA,IACA;AAAA,GACF,GACAA,GAAAA;AAAA,IACE,sKAAA;AAAA,IACA;AAAA,GACF;AACN;AAEA,SAAS,oBAAA,CACP,UAAA,GAAgC,OAAA,EAChC,QAAA,EACA,UAA0B,MAAA,EACX;AACf,EAAA,MAAM,iBAAA,GAAoB,4BAA4B,QAAQ,CAAA;AAC9D,EAAA,MAAM,kBAAA,GAAqB,wBAAA;AAC3B,EAAA,MAAM,KAAA,GAAuB;AAAA,IAC3B,MAAA,EAAQ,sDAAsD,QAAQ,CAAA,GAAA,CAAA;AAAA,IACtE,SAAA,EAAW,sDAAsD,QAAQ,CAAA,GAAA,CAAA;AAAA,IACzE,UAAA,EAAY,GAAG,iBAAiB,CAAA,EAAA,CAAA;AAAA,IAChC,aAAA,EAAe,GAAG,iBAAiB,CAAA,EAAA,CAAA;AAAA,IACnC,UAAA,EAAY,gEAAgE,kBAAkB,CAAA,CAAA,CAAA;AAAA,IAC9F,KAAA,EACE,sFAAA;AAAA,IACF,WAAA,EACE,OAAA,KAAY,QAAA,GACR,wFAAA,GACA,mFAAA;AAAA,IACN,YAAA,EACE,UAAA,KAAe,YAAA,GACX,GAAA,GACA,kFAAA;AAAA,IACN,SAAA,EACE,OAAA,KAAY,QAAA,GACR,0FAAA,GACA,gEAAA;AAAA,IACN,cAAA,EAAgB,CAAA,qEAAA,EAAwE,OAAA,KAAY,QAAA,GAAW,SAAS,KAAK,CAAA,EAAA;AAAA,GAC/H;AAEA,EAAA,IAAI,eAAe,YAAA,EAAc;AAC/B,IAAA,KAAA,CAAM,UAAA,GAAa,0CAAA;AACnB,IAAA,KAAA,CAAM,WAAA,GAAc,0CAAA;AACpB,IAAA,KAAA,CAAM,SAAA,GAAY,0CAAA;AAClB,IAAA,KAAA,CAAM,KAAA,GAAQ,kDAAA;AAAA,EAChB;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,cAAkC,QAAA,EAAU;AACtE,EAAA,IAAI,WAAA,KAAgB,QAAQ,OAAO,eAAA;AACnC,EAAA,IAAI,WAAA,KAAgB,SAAS,OAAO,aAAA;AACpC,EAAA,OAAO,gBAAA;AACT;AAEA,SAAS,mBAAA,CACP,MAAA,EACA,cAAA,GAAiB,IAAA,EACF;AACf,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,kEAAA;AAAA,IACR,YAAA,EAAc,iBACV,gFAAA,GACA,MAAA;AAAA,IACJ,aAAA,EACE,0EAAA;AAAA,IACF,SAAA,EAAW,gEAAA;AAAA,IACX,KAAA,EAAO,SACH,4FAAA,GACA,2FAAA;AAAA,IACJ,UAAA,EAAY,SACR,uFAAA,GACA,aAAA;AAAA,IACJ,WAAA,EAAa,SACT,mFAAA,GACA,aAAA;AAAA,IACJ,QAAA,EACE,sEAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AACF;AAEA,SAAS,oBAAA,CACP,OACA,YAAA,EACoB;AACpB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,IAAA,CAAK,EAAA,KAAO,YAAA,EAAc,OAAO,IAAA,CAAK,EAAA;AAC1C,IAAA,IAAI,KAAK,QAAA,EAAU,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,OAAO,YAAY,CAAA;AAC1D,MAAA,OAAO,IAAA,CAAK,EAAA;AAAA,EAChB;AACA,EAAA,OAAO,YAAA;AACT;AAEA,SAAS,yBAAyB,MAAA,EAAgC;AAChE,EAAA,OACE,OAAO,KAAA,KACN,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,KAAA,GAAQ,MAAA,CAAA;AAEvD;AAEA,SAAS,6BAAA,CAA8B;AAAA,EACrC,OAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,IAAA;AAE5B,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACET,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,MAAA,MAAM,KAAA,GAAQ,yBAAyB,MAAM,CAAA;AAC7C,MAAA,uBACEA,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UAEC,UAAA,EAAY,oCAAA;AAAA,UACZ,SAAS,MAAA,CAAO,KAAA;AAAA,UAChB,SAAA,EAAU,OAAA;AAAA,UACV,MAAA,EAAM,IAAA;AAAA,UAEN,QAAA,kBAAAA,cAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,UAAA,EAAY,oCAAA;AAAA,cACZ,IAAA,EAAK,OAAA;AAAA,cACL,QAAA,EAAQ,IAAA;AAAA,cACR,MAAM,MAAA,CAAO,IAAA;AAAA,cACb,SAAS,MAAA,CAAO,OAAA;AAAA,cAChB,KAAA;AAAA,cACA,SAAA,EAAW,KAAA;AAAA,cACX,SAAA,EAAWS,GAAAA;AAAA,gBACT,yFAAA;AAAA,gBACA,6HAAA;AAAA,gBACA;AAAA;AACF;AAAA;AACF,SAAA;AAAA,QAnBK,MAAA,CAAO;AAAA,OAoBd;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACET,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZA,cAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MAEC,UAAA,EAAY,oCAAA;AAAA,MACZ,IAAA,EAAK,OAAA;AAAA,MACL,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,uBAAOA,cAAAA,CAAC,UAAK,SAAA,EAAU,UAAA,EAAY,iBAAO,KAAA,EAAM,CAAA;AAAA,MAChD,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,KAAA,EAAO,yBAAyB,MAAM,CAAA;AAAA,MACtC,SAAA,EAAWS,GAAAA;AAAA,QACT,2IAAA;AAAA,QACA,gIAAA;AAAA,QACA;AAAA;AACF,KAAA;AAAA,IAXK,MAAA,CAAO;AAAA,GAaf,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,YAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,MAAA,GAASE,aAA8B,IAAI,CAAA;AACjD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAId,cAAAA;AAAA,IAC1C;AAAC,GACH;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,EAAA,KAAe;AACjC,IAAA,iBAAA,CAAkB,CAAC,OAAA,MAAa;AAAA,MAC9B,GAAG,OAAA;AAAA,MACH,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE;AAAA,KACnB,CAAE,CAAA;AAAA,EACJ,CAAA;AAEA,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAA,EAAe;AACpB,IAAA,iBAAA,CAAkB,CAAC,OAAA,MAAa;AAAA,MAC9B,GAAG,OAAA;AAAA,MACH,CAAC,aAAA,CAAc,EAAE,GAAG;AAAA,KACtB,CAAE,CAAA;AAEF,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,qBAAA,CAAsB,MAAM;AACjD,MAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,EAAS,aAAA;AAAA,QACpC,CAAA,kCAAA,EAAqC,GAAA,CAAI,MAAA,CAAO,aAAA,CAAc,EAAE,CAAC,CAAA,EAAA;AAAA,OACnE;AACA,MAAA,IAAI,yBAAyB,WAAA,EAAa;AACxC,QAAA,aAAA,CAAc,cAAA,CAAe;AAAA,UAC3B,QAAA,EAAU,MAAA;AAAA,UACV,KAAA,EAAO,SAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,OAAO,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,uBACEC,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,+BAAA;AAAA,MACV,KAAA,EAAO,EAAE,cAAA,EAAgB,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,MAEzD,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,WAAO,QAAA,EAAA,CAAA,qEAAA,CAAA,EAAwE,CAAA;AAAA,wBAChFA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,MAAA;AAAA,YACL,SAAA,EAAU,iGAAA;AAAA,YAET,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,cAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA;AAC7C,cAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,cAAA,CAAe,IAAA,CAAK,EAAE,CAAC,CAAA;AAClD,cAAA,MAAM,QAAA,GAAW,iBAAiB,IAAA,CAAK,EAAA;AAEvC,cAAA,IAAI,OAAA,EAAS;AACX,gBAAA,uBACED,eAAAA,CAAC,KAAA,EAAA,EAAkB,iCAAA,EAAiC,KAAK,EAAA,EACvD,QAAA,EAAA;AAAA,kCAAAC,cAAAA;AAAA,oBAAC,SAAA;AAAA,oBAAA;AAAA,sBACC,MAAM,IAAA,CAAK,IAAA;AAAA,sBACX,OAAA,EAAS,MAAM,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAAA,sBACjC,yBACEA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BACb,QAAA,kBAAAA,cAAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAM,4BAAA;AAAA,0BACN,KAAA,EAAM,IAAA;AAAA,0BACN,MAAA,EAAO,IAAA;AAAA,0BACP,OAAA,EAAQ,WAAA;AAAA,0BACR,IAAA,EAAK,MAAA;AAAA,0BACL,MAAA,EAAO,cAAA;AAAA,0BACP,WAAA,EAAY,GAAA;AAAA,0BACZ,aAAA,EAAc,OAAA;AAAA,0BACd,cAAA,EAAe,OAAA;AAAA,0BACf,SAAA,EAAU,0EAAA;AAAA,0BACV,KAAA,EAAO;AAAA,4BACL,SAAA,EAAW,aACP,eAAA,GACA;AAAA,2BACN;AAAA,0BAEA,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA;AAAA,uBAC1B,EACF,CAAA;AAAA,sBAGD,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,mBACR;AAAA,kBACC,UAAA,mBACCA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACZ,QAAA,EAAA,IAAA,CAAK,QAAA,EAAU,GAAA,CAAI,CAAC,KAAA,qBACnBA,cAAAA;AAAA,oBAAC,SAAA;AAAA,oBAAA;AAAA,sBAEC,MAAA,EAAQ,iBAAiB,KAAA,CAAM,EAAA;AAAA,sBAC/B,OAAA,EAAS,MAAM,UAAA,GAAa,KAAA,CAAM,EAAE,CAAA;AAAA,sBAEnC,QAAA,EAAA,KAAA,CAAM;AAAA,qBAAA;AAAA,oBAJF,KAAA,CAAM;AAAA,mBAMd,GACH,CAAA,GACE;AAAA,iBAAA,EAAA,EA1CI,KAAK,EA2Cf,CAAA;AAAA,cAEJ;AAEA,cAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EAAkB,iCAAA,EAAiC,IAAA,CAAK,IACvD,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,SAAA;AAAA,gBAAA;AAAA,kBACC,MAAA,EAAQ,QAAA;AAAA,kBACR,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,OAAA,EAAS,MAAM,UAAA,GAAa,IAAA,CAAK,EAAE,CAAA;AAAA,kBAElC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,eACR,EAAA,EAPQ,KAAK,EAQf,CAAA;AAAA,YAEJ,CAAC;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,UAAA,GAAa,SAAS,IAAA,CAAK,KAAA;AACjC,EAAA,MAAM,2BACJA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWS,GAAAA;AAAA,QACT,8EAAA;AAAA,QACA,IAAA,CAAK,MACD,gBAAA,GACA;AAAA,OACN;AAAA,MAEC,QAAA,EAAA,IAAA,CAAK,sBACJT,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAK,IAAA,CAAK,GAAA;AAAA,UACV,KAAK,IAAA,CAAK,KAAA;AAAA,UACV,SAAA,EAAU;AAAA;AAAA,OACZ,mBAEAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAqB,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAE;AAAA;AAAA,GAE9D;AAGF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBACEA,cAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY,oCAAA;AAAA,QACZ,OAAA,EAAS,UAAA;AAAA,QACT,SAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAM,IAAA;AAAA,QAEN,QAAA,kBAAAA,cAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,oCAAA;AAAA,YACZ,SAAA,EAAW,OAAO,UAAA,KAAe,QAAA,GAAW,aAAa,IAAA,CAAK,KAAA;AAAA,YAC9D,SAAA,EAAU,wGAAA;AAAA,YACV,IAAA,EAAM,QAAA;AAAA,YACN,QAAA,EAAQ,IAAA;AAAA,YACR,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,KAAA,EAAO,OAAO,UAAA,KAAe,QAAA,GAAW,aAAa,IAAA,CAAK,KAAA;AAAA,YAC1D,IAAA,EAAK;AAAA;AAAA;AACP;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAY,oCAAA;AAAA,MACZ,WAAW,IAAA,CAAK,KAAA;AAAA,MAChB,SAAA,EAAU,oHAAA;AAAA,MACV,UAAA,EAAY,EAAE,IAAA,EAAM,SAAA,EAAU;AAAA,MAC9B,IAAA,EAAM,QAAA;AAAA,MACN,uBACEA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wEACb,QAAA,EAAA,UAAA,EACH,CAAA;AAAA,MAEF,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,KAAA,EAAO,OAAO,UAAA,KAAe,QAAA,GAAW,aAAa,IAAA,CAAK,KAAA;AAAA,MAC1D,IAAA,EAAK;AAAA;AAAA,GACP;AAEJ;AAEA,SAAS,OAAA,CAAQ;AAAA,EACf,WAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,SAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAeG;AACD,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM,YAAA,GAAe,oBAAA,CAAqB,KAAA,EAAO,YAAY,CAAA;AAE7D,IAAA,uBACED,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4HAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACZ,QAAA,EAAA,MAAA,oBAAUA,cAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAS,IAAA,EAAC,IAAA,EAAY,KAAA,EAAc,CAAA,EAC/D,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,sEAAA;AAAA,UACV,KAAA,EAAO,EAAE,cAAA,EAAgB,MAAA,EAAQ,iBAAiB,MAAA,EAAO;AAAA,UAExD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,QAAA,GAAW,iBAAiB,IAAA,CAAK,EAAA;AACvC,YAAA,uBACEA,cAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBAEC,UAAA,EAAY,oCAAA;AAAA,gBACZ,SAAS,IAAA,CAAK,KAAA;AAAA,gBACd,SAAA,EAAU,OAAA;AAAA,gBACV,MAAA,EAAM,IAAA;AAAA,gBAEN,QAAA,kBAAAA,cAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,UAAA,EAAY,oCAAA;AAAA,oBACZ,IAAA,EAAK,OAAA;AAAA,oBACL,MAAA,EAAQ,QAAA;AAAA,oBACR,QAAA,EAAQ,IAAA;AAAA,oBACR,MAAM,IAAA,CAAK,IAAA;AAAA,oBACX,SAAS,MAAM;AACb,sBAAA,YAAA,GAAe,KAAK,EAAE,CAAA;AACtB,sBAAA,iBAAA,GAAoB,KAAK,CAAA;AACzB,sBAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AAC3B,sBAAA,UAAA,GAAa,KAAK,EAAE,CAAA;AAAA,oBACtB,CAAA;AAAA,oBACA,OACE,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,GAAW,KAAK,KAAA,GAAQ,MAAA;AAAA,oBAEhD,WACE,OAAO,IAAA,CAAK,UAAU,QAAA,GAAW,IAAA,CAAK,QAAQ,IAAA,CAAK,EAAA;AAAA,oBAErD,SAAA,EAAWS,GAAAA;AAAA,sBACT,6EAAA;AAAA,sBACA,iEAAA;AAAA,sBACA,WACI,2FAAA,GACA;AAAA;AACN;AAAA;AACF,eAAA;AAAA,cA/BK,IAAA,CAAK;AAAA,aAgCZ;AAAA,UAEJ,CAAC;AAAA;AAAA,OACH;AAAA,sBACAV,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+FAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,6BAAA,EAAA,EAA8B,OAAA,EAAkB,OAAA,EAAO,IAAA,EAAC,CAAA;AAAA,QACxD,uCACCA,cAAAA,CAAC,SAAI,SAAA,EAAU,mEAAA,EACZ,gCACH,CAAA,GACE;AAAA,OAAA,EACN;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACED,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uKAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA,MAAA,oBAAUA,cAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAY,KAAA,EAAc,CAAA,EACrD,CAAA;AAAA,oBACAA,cAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,YAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,oBACAD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6FAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,cAAAA,CAAC,6BAAA,EAAA,EAA8B,OAAA,EAAkB,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,MAChE,MAAA;AAAA,MACA,8BACCA,cAAAA,CAAC,SAAI,SAAA,EAAU,+CAAA,EACZ,uBACH,CAAA,GACE;AAAA,KAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,kBAAA,CAAmB,EAAE,IAAA,EAAK,EAAsB;AACvD,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAWS,GAAAA;AAAA,QACT,oDAAA;AAAA,QACA,IAAA,IAAQ;AAAA,OACV;AAAA,MACA,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MAEf,QAAA,kBAAAT,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA,GACzB;AAEJ;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,YAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,qBAAA;AAAA,EACA,sBAAA;AAAA,EACA,mBAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAUG;AACD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIH,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgBc,aAA6C,IAAI,CAAA;AACvE,EAAA,MAAM,uBAAA,GAA0BA,aAAO,KAAK,CAAA;AAE5C,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,CAAC,cAAc,OAAA,EAAS;AAC5B,IAAA,YAAA,CAAa,cAAc,OAAO,CAAA;AAClC,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,eAAA,EAAgB;AAChB,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,eAAA,EAAgB;AAChB,IAAA,aAAA,CAAc,OAAA,GAAU,WAAW,MAAM;AACvC,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,IAC1B,GAAG,GAAG,CAAA;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,8BAA8B,MAAM;AACxC,IAAA,MAAM,iBAAA,GAAoB,KAAK,QAAA,EAAU,IAAA,CAAK,CAAC,KAAA,KAAU,CAAC,MAAM,QAAQ,CAAA;AACxE,IAAA,IAAI,CAAC,mBAAmB,OAAO,KAAA;AAE/B,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,UAAA,GAAa,kBAAkB,EAAE,CAAA;AACjC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAAb,eAAAA,CAAU,MAAM,eAAA,EAAiB,EAAE,CAAA;AAEnC,EAAA,uBACEC,gBAAcW,uBAAA,CAAA,IAAA,EAAb,EAAkB,OAAO,KAAA,EAAO,IAAA,EAAY,cAAc,OAAA,EACzD,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAAcU,uBAAA,CAAA,OAAA,EAAb,EAAqB,OAAA,EAAO,MAC3B,QAAA,kBAAAV,cAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY,oCAAA;AAAA,QACZ,IAAA,EAAK,OAAA;AAAA,QACL,QAAQ,QAAA,IAAY,IAAA;AAAA,QACpB,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,OAAA,kBAASA,cAAAA,CAAC,kBAAA,EAAA,EAAmB,IAAA,EAAY,CAAA;AAAA,QACzC,uBAAOA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8BAA8B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC3D,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,SAAS,MAAM;AACb,UAAA,MAAM,uBAAuB,uBAAA,CAAwB,OAAA;AACrD,UAAA,uBAAA,CAAwB,OAAA,GAAU,KAAA;AAClC,UAAA,IAAI,oBAAA,IAAwB,6BAA4B,EAAG;AAC3D,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,QACd,CAAA;AAAA,QACA,eAAe,MAAM;AACnB,UAAA,uBAAA,CAAwB,OAAA,GAAU,IAAA;AAAA,QACpC,CAAA;AAAA,QACA,iBAAiB,MAAM;AACrB,UAAA,uBAAA,CAAwB,OAAA,GAAU,KAAA;AAAA,QACpC,CAAA;AAAA,QACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,UAAA,IAAI,CAAC,IAAA,IAAS,KAAA,CAAM,QAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAM;AAC3D,UAAA,IAAI,2BAAA,EAA4B,EAAG,KAAA,CAAM,cAAA,EAAe;AAAA,QAC1D,CAAA;AAAA,QACA,YAAA,EAAc,QAAA;AAAA,QACd,YAAA,EAAc,iBAAA;AAAA,QACd,KAAA,EAAO,mBAAA,CAAoB,QAAA,IAAY,IAAA,EAAM,cAAc,CAAA;AAAA,QAC3D,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,8DAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACT;AAAA,QACA,SAAA,EAAWS,GAAAA;AAAA,UACT,2CAAA;AAAA,UACA,qBAAA;AAAA,UACA,QAAA,IAAY,OACR,EAAA,GACA;AAAA;AACN;AAAA,KACF,EACF,CAAA;AAAA,oBACAT,cAAAA,CAAcU,uBAAA,CAAA,MAAA,EAAb,EACC,QAAA,kBAAAV,cAAAA;AAAA,MAAcU,uBAAA,CAAA,OAAA;AAAA,MAAb;AAAA,QACC,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,gBAAA,EAAkB,CAAC,KAAA,KAAU,KAAA,CAAM,cAAA,EAAe;AAAA,QAClD,YAAA,EAAc,QAAA;AAAA,QACd,YAAA,EAAc,iBAAA;AAAA,QACd,SAAA,EAAWD,GAAAA;AAAA,UACT,4DAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,UAAA,EACE,kFAAA;AAAA,UACF,WAAA,EACE,mFAAA;AAAA,UACF,KAAA,EACE,6FAAA;AAAA,UACF,SAAA,EACE,4FAAA;AAAA,UACF,cAAA,EACE;AAAA,SACJ;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK,QAAA,EAAU,GAAA,CAAI,CAAC,0BACnBV,eAAAA;AAAA,UAAcW,uBAAA,CAAA,IAAA;AAAA,UAAb;AAAA,YAEC,UAAU,KAAA,CAAM,QAAA;AAAA,YAChB,SAAA,EAAWD,GAAAA;AAAA,cACT,uvBAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,KAAA,EAAO,mBAAA;AAAA,cACL,MAAM,EAAA,KAAO,YAAA;AAAA,cACb;AAAA,aACF;AAAA,YACA,UAAU,MAAM;AACd,cAAA,IAAI,MAAM,QAAA,EAAU;AACpB,cAAA,OAAA,CAAQ,KAAK,CAAA;AACb,cAAA,UAAA,GAAa,MAAM,EAAE,CAAA;AAAA,YACvB,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,IAAA,mBACLT,cAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,8FAAA,EACb,QAAA,EAAA,KAAA,CAAM,MACT,CAAA,GACE,IAAA;AAAA,8BACJA,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACb,QAAA,EAAA,KAAA,CAAM,YAAA,IAAgB,MAAM,KAAA,EAC/B,CAAA;AAAA,cACC,KAAA,CAAM;AAAA;AAAA,WAAA;AAAA,UAxBF,KAAA,CAAM;AAAA,SA0Bd;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAUO,SAAS,qBAAA,CAAsB;AAAA,EACpC,YAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA,GAAa,SAAA;AAAA,EACb;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,qBAAA,GAAwB,0BAA0B,UAAU,CAAA;AAClE,EAAA,MAAM,sBAAA,GAAyB,0BAA0B,UAAU,CAAA;AACnE,EAAA,MAAM,mBAAA,GAAsB,0BAA0B,UAAU,CAAA;AAChE,EAAA,MAAM,iBAAiB,UAAA,KAAe,SAAA;AAEtC,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kDACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,IAAA,MAAM,QAAA,GAAW,YAAA,KAAiB,IAAA,CAAK,EAAA,IAAM,iBAAiB,IAAA,CAAK,EAAA;AACnE,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,YAAA,IAAgB,IAAA,CAAK,KAAA;AAExC,IAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AACzB,MAAA,uBACEA,cAAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UAEC,YAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,qBAAA;AAAA,UACA,sBAAA;AAAA,UACA,mBAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA,SAAA;AAAA,QATK,IAAA,CAAK;AAAA,OAUZ;AAAA,IAEJ;AAEA,IAAA,uBACEA,cAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEC,UAAA,EAAY,oCAAA;AAAA,QACZ,IAAA,EAAK,OAAA;AAAA,QACL,MAAA,EAAQ,QAAA;AAAA,QACR,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,KAAA,kBACED,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA8B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACnD,IAAA,CAAK;AAAA,SAAA,EACR,CAAA;AAAA,QAEF,OAAA,EAAS,MAAM,UAAA,GAAa,IAAA,CAAK,EAAE,CAAA;AAAA,QACnC,KAAA,EAAO,mBAAA,CAAoB,QAAA,EAAU,cAAc,CAAA;AAAA,QACnD,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,8DAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACT;AAAA,QACA,SAAA,EAAWS,GAAAA;AAAA,UACT,2CAAA;AAAA,UACA,qBAAA;AAAA,UACA,WACI,EAAA,GACA;AAAA;AACN,OAAA;AAAA,MAxBK,IAAA,CAAK;AAAA,KAyBZ;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAiBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,YAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAW,EAAC;AAAA,EACZ;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,MAAA,EAAQ,QAAQ,CAAA;AACpD,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,OAAA;AACzC,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,SAAA;AACzC,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,MAAA;AACnC,EAAA,MAAM,YAAA,GAAe,qBAAqB,QAAQ,CAAA;AAClD,EAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,UAAA,EAAY,QAAA,EAAU,OAAO,CAAA;AACrE,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,MAAA,EAAQ,UAAU,CAAA;AAEjD,EAAA,uBACEV,eAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWU,GAAAA;AAAA,QACT,oBAAA,CAAqB,UAAA,EAAY,MAAA,EAAQ,WAAW,CAAA;AAAA,QACpD;AAAA,OACF;AAAA,MACA,yBAAA,EAAwB,EAAA;AAAA,MACxB,iCAAA,EAAiC,OAAA;AAAA,MACjC,KAAA,EAAO,UAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAT,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA,KAAA,KACE,uBACCA,cAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,oCAAA;AAAA,YACZ,IAAA,EAAK,OAAA;AAAA,YACL,sBACEA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWS,GAAAA;AAAA,kBACT,6DAAA;AAAA,kBACA,IAAA,CAAK,MACD,+CAAA,GACA;AAAA,iBACN;AAAA,gBACA,KAAA,EACE,IAAA,CAAK,GAAA,GACD,EAAE,MAAA,EAAQ,YAAA,EAAa,GACvB,EAAE,KAAA,EAAO,YAAA,EAAc,MAAA,EAAQ,YAAA,EAAa;AAAA,gBAGjD,QAAA,EAAA,IAAA,CAAK,sBACJT,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAK,IAAA,CAAK,GAAA;AAAA,oBACV,KAAK,IAAA,CAAK,KAAA;AAAA,oBACV,SAAA,EAAU;AAAA;AAAA,iBACZ,mBAEAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBACb,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EACtB;AAAA;AAAA,aAEJ;AAAA,YAEF,KAAA,EACE,iCACEA,cAAAA,CAAC,UAAK,SAAA,EAAU,gFAAA,EACb,QAAA,EAAA,MAAA,EAAQ,UAAA,EACX,CAAA,GACE,IAAA;AAAA,YAEN,WAAW,IAAA,CAAK,KAAA;AAAA,YAChB,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,SAAA,EAAU,qGAAA;AAAA,YACV,YACE,IAAA,CAAK,GAAA,GAAM,EAAE,IAAA,EAAM,4BAA2B,GAAI,MAAA;AAAA,YAEpD,SAAS,IAAA,CAAK;AAAA;AAAA,YAEd,IAAA,CAAA,EACR,CAAA;AAAA,wBAEAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWS,GAAAA;AAAA,cACT,2BAAA;AAAA,cACA,kBAAA,CAAmB,QAAQ,WAAW;AAAA,aACxC;AAAA,YAEA,0BAAAT,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wFAAA,EACZ,wCACCA,cAAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,YAAA;AAAA,gBACA,YAAA;AAAA,gBACA,KAAA,EAAO,QAAA;AAAA,gBACP,UAAA;AAAA,gBACA;AAAA;AAAA,aACF,EAEJ;AAAA;AAAA,SACF;AAAA,wBAEAD,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACZ,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AAEO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,YAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,WAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,2BAAA;AAAA,EACA,qBAAA,GAAwB,yCAAA;AAAA,EACxB,WAAA,GAAc,SAAA;AAAA,EACd,uBAAA,GAA0B,KAAA;AAAA,EAC1B,oBAAA,GAAuB,wCAAA;AAAA,EACvB,kBAAA,GAAqB,gBAAA;AAAA,EACrB,KAAA,GAAQ,KAAA;AAAA,EACR,cAAA;AAAA,EACA,aAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,wBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA,GAAuB,kBAAA;AAAA,EACvB,gBAAA,EAAkB,0BAAA;AAAA,EAClB,kBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA,GAAuB,mBAAA;AAAA,EACvB,oBAAA,GAAuB;AACzB,CAAA,EAA0B;AACxB,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAC1CF,eAAyB,WAAW,CAAA;AACtC,EAAA,MAAM,CAAC,4BAAA,EAA8B,+BAA+B,CAAA,GAClEA,eAAS,uBAAuB,CAAA;AAClC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAGhC,IAAI,CAAA;AACd,EAAA,MAAM,mBAAmB,IAAA,KAAS,MAAA;AAClC,EAAA,MAAM,+BAA+B,0BAAA,KAA+B,MAAA;AACpE,EAAA,MAAM,cAAA,GAAiB,mBAAmB,IAAA,GAAO,gBAAA;AACjD,EAAA,MAAM,gBAAA,GAAmB,+BACrB,0BAAA,GACA,4BAAA;AACJ,EAAA,MAAM,gBAAgB,cAAA,KAAmB,SAAA;AACzC,EAAA,MAAM,YAAA,GAAe,mBACjB,qBAAA,GACA,oBAAA;AAEJ,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,MAAA,mBAAA,CAAoB,WAAW,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAElC,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,4BAAA,EAA8B;AACjC,MAAA,+BAAA,CAAgC,uBAAuB,CAAA;AAAA,IACzD;AAAA,EACF,CAAA,EAAG,CAAC,uBAAA,EAAyB,4BAA4B,CAAC,CAAA;AAE1D,EAAA,MAAM,iBAAA,GAAoB,CAAC,QAAA,KAA6B;AACtD,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,MAAA,mBAAA,CAAoB,QAAQ,CAAA;AAAA,IAC9B;AACA,IAAA,YAAA,GAAe,QAAQ,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,SAAA,KAAuB;AAC3C,IAAA,IAAI,CAAC,4BAAA,EAA8B;AACjC,MAAA,+BAAA,CAAgC,SAAS,CAAA;AAAA,IAC3C;AACA,IAAA,wBAAA,GAA2B,SAAS,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,MAAM,oBAA8C,EAAC;AACrD,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,iBAAA,CAAkB,IAAA,CAAK;AAAA,MACrB,EAAA,EAAI,gBAAA;AAAA,MACJ,KAAA,EAAO,oBAAA;AAAA,MACP,OAAA,EAAS,MAAM,iBAAA,CAAkB,SAAS,CAAA;AAAA,MAC1C,sBACEC,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,4BAAA;AAAA,UACN,SAAA,EAAU,8BAAA;AAAA,UACV,OAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAK,MAAA;AAAA,UACL,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe,OAAA;AAAA,UAEf,QAAA,EAAA;AAAA,4BAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,4BAChDA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,SAAA,EAAU;AAAA;AAAA;AAAA;AACpB,KAEH,CAAA;AAAA,EACH;AACA,EAAA,iBAAA,CAAkB,IAAA,CAAK;AAAA,IACrB,EAAA,EAAI,gBAAA;AAAA,IACJ,KAAA,EAAO,mBAAmB,kBAAA,GAAqB,oBAAA;AAAA,IAC/C,OAAA,EAAS,MAAM,YAAA,CAAa,CAAC,gBAAgB,CAAA;AAAA,IAC7C,sBACED,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,SAAA,EAAU,mBAAA;AAAA,QACV,OAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,KAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QAEf,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,0BAChDA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,SAAA,EAAU,CAAA;AAAA,0BAClBA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,gBAAA,GAAmB,kBAAkB,gBAAA,EAAkB;AAAA;AAAA;AAAA;AAClE,GAEH,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,aAAA,GAAgB,IAAA,mBAC9BA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWS,GAAAA;AAAA,QACT,kEAAA;AAAA,QACA,mBAAmB,uBAAA,GAA0B;AAAA,OAC/C;AAAA,MACA,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,YAAA;AAAA,QACP,wBAAA,EAA0B;AAAA,OAC5B;AAAA,MAEA,QAAA,kBAAAT,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,aAAa,kBAAA,IAAsB,WAAA;AAAA,UACnC,YAAA;AAAA,UACA,OAAA,EAAS,iBAAA;AAAA,UACT,SAAA,EAAW,gBAAA;AAAA,UACX,sBAAsB,2BAAA,IAA+B,WAAA;AAAA,UACrD,MAAA,EAAQ,aAAA;AAAA,UACR,MAAA,EAAQ,aAAA;AAAA,UACR,KAAA,EAAO,QAAA;AAAA,UACP,IAAA;AAAA,UACA,iBAAA,EAAmB,YAAA;AAAA,UACnB,UAAA;AAAA,UACA,YAAA,EAAc,CAAC,MAAA,KACb,gBAAA,CAAiB,CAAC,IAAA,MAAU;AAAA,YAC1B,EAAA,EAAI,MAAA;AAAA,YACJ,KAAA,EAAA,CAAQ,IAAA,EAAM,KAAA,IAAS,CAAA,IAAK;AAAA,WAC9B,CAAE,CAAA;AAAA,UAEJ,aAAA;AAAA,UACA,OAAO,aAAA,EAAe;AAAA;AAAA;AACxB;AAAA,GACF;AAGF,EAAA,MAAM,MAAA,GAAS,gCACbA,cAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,YAAA;AAAA,MACA,YAAA,EACE,YAAA,IAAgB,oBAAA,CAAqB,QAAA,EAAU,YAAY,CAAA;AAAA,MAE7D,OAAA,EACE,eAAA,mBACED,eAAAA,CAAAI,qBAAA,EACG,QAAA,EAAA;AAAA,QAAA,cAAA;AAAA,wBACDH,cAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,oCAAA;AAAA,YACZ,IAAA,EAAK,OAAA;AAAA,YACL,sBACED,eAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAM,4BAAA;AAAA,gBACN,SAAA,EAAU,kBAAA;AAAA,gBACV,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,WAAA,EAAY,KAAA;AAAA,gBACZ,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe,OAAA;AAAA,gBAEf,QAAA,EAAA;AAAA,kCAAAC,cAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,kCAChDA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,SAAA,EAAU,CAAA;AAAA,kCAClBA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA;AAAA;AAAA,aAC1B;AAAA,YAEF,uBACEA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8BACb,QAAA,EAAA,oBAAA,EACH,CAAA;AAAA,YAEF,OAAA,EAAS,MAAM,iBAAA,CAAkB,SAAS,CAAA;AAAA,YAC1C,SAAA,EAAWS,GAAAA;AAAA,cACT,6MAAA;AAAA,cACA,yBAAA,CAA0B,eAAe,UAAU;AAAA;AACrD;AAAA;AACF,OAAA,EACF,CAAA,GAEA,cAAA;AAAA,MAGJ,WAAA;AAAA,MACA,KAAA,EAAO,kBAAA;AAAA,MACP,MAAA,EAAQ,aAAA;AAAA,MACR,IAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA;AAAA,GACF,GACE,IAAA;AAEJ,EAAA,uBACET,cAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ","file":"index.js","sourcesContent":["import type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n agentWorkbench: {\n label: 'Session activity',\n reasoning: 'Reasoning',\n plan: 'Plan',\n taskNoDetail: 'No additional details',\n modes: { chatbot: 'Chatbot', agent: 'Agent' },\n composer: {\n send: 'Send message',\n stop: 'Stop generating',\n queue: 'Queue message',\n attach: 'Add photos or files',\n voice: 'Start voice input',\n webSearch: 'Web search',\n model: 'Model',\n reasoning: 'Reasoning effort',\n permissions: 'Permissions',\n removeAttachment: 'Remove attachment',\n editQueued: 'Edit queued message',\n deleteQueued: 'Delete queued message',\n moveUp: 'Move message up',\n moveDown: 'Move message down',\n queued: 'Queued messages',\n uploading: 'Uploading',\n noModels: 'No models available',\n message: 'Message',\n attachmentOnly: 'Attachment',\n reasoningOptions: { low: 'Low', medium: 'Medium', high: 'High', xhigh: 'Extra high' },\n permissionOptions: { 'approval-required': 'Approval required', 'auto-approve': 'Auto approve', 'full-access': 'Full access' },\n },\n tool: {\n input: 'Input',\n output: 'Output',\n status: {\n pending: 'Pending',\n running: 'Running',\n completed: 'Completed',\n failed: 'Error',\n denied: 'Denied',\n },\n },\n approval: {\n approve: 'Approve',\n reject: 'Reject',\n approved: 'Approved',\n rejected: 'Rejected',\n },\n artifact: {\n pending: 'Preparing',\n ready: 'Ready',\n failed: 'Failed',\n open: ({ name }) => `Open ${name}`,\n },\n run: {\n stopping: 'Stopping...',\n stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n },\n usage: {\n label: 'Context usage',\n context: ({ used, total }) => `${used} / ${total} tokens`,\n },\n navigation: {\n search: 'Search agents and sessions',\n searchShortcut: 'Focus search',\n clearSearch: 'Clear search',\n tabsLabel: 'Agent workbench navigation',\n agents: 'Agents',\n sessions: 'Sessions',\n newAgent: 'New Agent',\n newSession: 'New Session',\n capabilities: 'Capabilities & Extensions',\n settings: 'Agent Settings',\n allAgents: 'All Agents',\n recentSessions: 'Recent Sessions',\n builtIn: 'Built-in',\n noDescription: 'No description',\n loading: 'Loading...',\n emptyAgents: 'No agents yet',\n emptySessions: 'No sessions yet',\n noResults: 'No matching results',\n retry: 'Retry',\n pin: 'Pin',\n unpin: 'Unpin',\n rename: 'Rename',\n delete: 'Delete',\n actions: 'Actions',\n save: 'Save',\n cancel: 'Cancel',\n running: 'Running',\n completed: 'Completed',\n failed: 'Failed',\n contextUsage: ({ percent }) => `${percent}% context used`,\n },\n details: {\n title: 'Task details',\n description: 'Summary and workspace activity',\n duration: 'Duration',\n updated: 'Updated',\n model: 'Model',\n mode: 'Mode',\n permissions: 'Permissions',\n tokenUsage: 'Token usage',\n summary: 'Summary',\n summaryEmpty: 'No summary is available yet.',\n summaryFailed: 'The summary could not be generated.',\n highlights: 'Highlights',\n pendingItems: 'Pending items',\n tabs: {\n label: 'Task detail views',\n summary: 'Summary',\n workspace: 'Workspace',\n },\n status: {\n queued: 'Queued',\n running: 'Running',\n waiting_approval: 'Waiting for approval',\n stopping: 'Stopping',\n stopped: 'Stopped',\n completed: 'Completed',\n failed: 'Failed',\n },\n state: {\n loading: { title: 'Loading task details', description: 'Restoring the latest session activity.' },\n empty: { title: 'No task selected', description: 'Select a task to inspect its details.' },\n error: { title: 'Unable to load task details', description: 'Try again after the session is available.' },\n },\n actions: {\n close: 'Close task details',\n copySummary: 'Copy summary',\n retry: 'Retry',\n retrySummary: 'Retry summary',\n resume: 'Resume',\n continueInNewTask: 'Continue in new task',\n editAndRerun: 'Edit and rerun',\n export: 'Export',\n },\n workspace: {\n diffs: 'Code changes',\n files: 'Files',\n terminals: 'Terminals',\n tests: 'Tests',\n artifacts: 'Artifacts',\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: { added: 'Added', modified: 'Modified', deleted: 'Deleted', renamed: 'Renamed' },\n fileOperation: { upsert: 'Updated', delete: 'Deleted' },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n tool: {\n ...base.agentWorkbench.tool,\n ...override.agentWorkbench?.tool,\n status: {\n ...base.agentWorkbench.tool.status,\n ...override.agentWorkbench?.tool?.status,\n },\n },\n approval: {\n ...base.agentWorkbench.approval,\n ...override.agentWorkbench?.approval,\n },\n artifact: {\n ...base.agentWorkbench.artifact,\n ...override.agentWorkbench?.artifact,\n },\n run: {\n ...base.agentWorkbench.run,\n ...override.agentWorkbench?.run,\n },\n usage: {\n ...base.agentWorkbench.usage,\n ...override.agentWorkbench?.usage,\n },\n navigation: {\n ...base.agentWorkbench.navigation,\n ...override.agentWorkbench?.navigation,\n },\n details: {\n ...base.agentWorkbench.details,\n ...override.agentWorkbench?.details,\n tabs: {\n ...base.agentWorkbench.details.tabs,\n ...override.agentWorkbench?.details?.tabs,\n },\n status: {\n ...base.agentWorkbench.details.status,\n ...override.agentWorkbench?.details?.status,\n },\n state: {\n loading: {\n ...base.agentWorkbench.details.state.loading,\n ...override.agentWorkbench?.details?.state?.loading,\n },\n empty: {\n ...base.agentWorkbench.details.state.empty,\n ...override.agentWorkbench?.details?.state?.empty,\n },\n error: {\n ...base.agentWorkbench.details.state.error,\n ...override.agentWorkbench?.details?.state?.error,\n },\n },\n actions: {\n ...base.agentWorkbench.details.actions,\n ...override.agentWorkbench?.details?.actions,\n },\n workspace: {\n ...base.agentWorkbench.details.workspace,\n ...override.agentWorkbench?.details?.workspace,\n diffStatus: {\n ...base.agentWorkbench.details.workspace.diffStatus,\n ...override.agentWorkbench?.details?.workspace?.diffStatus,\n },\n fileOperation: {\n ...base.agentWorkbench.details.workspace.fileOperation,\n ...override.agentWorkbench?.details?.workspace?.fileOperation,\n },\n },\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import type {\n BaseAppearance,\n BaseBackground,\n BaseBorder,\n BaseControlTone,\n BaseDensity,\n BaseHeadingSize,\n BaseLayoutAlign,\n BaseLayoutJustify,\n BaseLayoutLength,\n BaseListMarker,\n BaseListSpacing,\n BaseRadius,\n BaseResolvedTheme,\n BaseThemePresetId,\n BaseThemeSlots,\n BaseThemeStyles,\n BaseTypographySize,\n BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n 'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n 'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n 'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n '[scrollbar-width:thin]',\n '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n '[&::-webkit-scrollbar-corner]:bg-transparent',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n 'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n buttonBase:\n cn(\n 'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n 'cursor-pointer disabled:!cursor-not-allowed',\n motionInteractive,\n ),\n buttonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n buttonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n buttonSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n buttonWarning:\n 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n buttonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n buttonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n buttonDisabled: '!cursor-not-allowed opacity-60',\n buttonIconOnly: 'w-9 px-0',\n buttonIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n buttonLabel: 'min-w-0 truncate',\n badgeBase:\n cn(\n 'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n motionBase,\n ),\n badgeDefault: 'border-border/60 bg-background text-foreground',\n badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n badgeLabel: 'min-w-0 truncate',\n textRoot: 'min-w-0 break-words leading-6',\n textSizeXs: 'text-xs',\n textSizeSm: 'text-sm',\n textSizeMd: 'text-base',\n textSizeLg: 'text-lg',\n textSizeXl: 'text-xl',\n typographyToneDefault: 'text-foreground',\n typographyToneMuted: 'text-muted-foreground',\n typographyTonePrimary: 'text-primary',\n typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n typographyToneDanger: 'text-destructive-text',\n typographyToneInherit: 'text-inherit',\n headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n headingSizeXs: 'text-sm leading-5',\n headingSizeSm: 'text-base leading-6',\n headingSizeMd: 'text-lg leading-7',\n headingSizeLg: 'text-xl leading-7',\n headingSizeXl: 'text-2xl leading-8',\n headingSize2xl: 'text-3xl leading-9',\n linkRoot:\n 'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n codeInline:\n 'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n codeBlock:\n 'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n codeContent: 'font-mono text-sm leading-6',\n kbdRoot:\n 'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n listSpacingCompact: '[&>li+li]:mt-1',\n listSpacingDefault: '[&>li+li]:mt-2',\n listSpacingRelaxed: '[&>li+li]:mt-3',\n listMarkerNone: 'list-none ps-0',\n listMarkerDisc: 'list-disc',\n listMarkerCircle: 'list-[circle]',\n listMarkerSquare: 'list-[square]',\n listMarkerDecimal: 'list-decimal',\n listMarkerLowerAlpha: 'list-[lower-alpha]',\n listMarkerUpperAlpha: 'list-[upper-alpha]',\n listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n stackRoot: 'flex min-w-0 flex-col',\n inlineRoot: 'flex min-w-0 flex-row',\n gridRoot: 'grid min-w-0',\n containerRoot: 'mx-auto w-full min-w-0',\n aspectRatioRoot:\n 'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n spinnerRoot:\n 'inline-flex shrink-0 items-center justify-center text-current align-middle',\n spinnerIndicator:\n 'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n visuallyHiddenRoot: 'sr-only',\n visuallyHiddenFocusable:\n 'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n stepsHorizontal:\n 'flex w-full max-w-full items-start overflow-x-auto pb-2',\n stepsVertical: 'grid',\n stepsItem: 'relative min-w-0',\n stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n stepsItemVertical: 'pb-6 last:pb-0',\n stepsTrigger:\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n stepsTriggerInteractive:\n 'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n stepsIndicator:\n 'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n stepsIndicatorCompleted:\n 'border-primary bg-primary text-primary-foreground',\n stepsIndicatorError:\n 'border-destructive bg-destructive text-destructive-foreground',\n stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n stepsDescription:\n 'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n stepsStatus: 'sr-only',\n stepsConnector: 'shrink-0 bg-border',\n stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n stepsConnectorVertical:\n 'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n stepsConnectorCompleted: 'bg-primary/60',\n stepsConnectorError: 'bg-destructive/60',\n scrollAreaViewport: 'min-h-0 min-w-0',\n numberInputControl: 'tabular-nums',\n numberInputStepControls:\n 'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n numberInputStepButton:\n 'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n passwordInputControl: 'pe-2',\n passwordInputToggle:\n 'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n inputGroupRoot:\n cn(\n 'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n motionBase,\n ),\n inputGroupInvalid:\n 'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n inputGroupContent:\n 'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n inputGroupStartElement:\n 'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n inputGroupEndElement:\n 'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n inputGroupStartAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n inputGroupEndAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n panelRoot:\n cn(\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n motionInteractive,\n ),\n panelInteractive:\n 'cursor-pointer hover:shadow-md',\n panelSelected: 'border-primary/45 bg-primary/5',\n panelDisabled: '!cursor-not-allowed opacity-60',\n panelMedia:\n 'shrink-0 overflow-hidden',\n panelHeader: 'min-w-0 p-4',\n panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n panelBodyStandalone: 'pt-4',\n panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n stateRoot:\n cn(\n 'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n motionBase,\n ),\n stateIcon:\n 'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n stateTitle: 'text-sm font-semibold text-foreground',\n stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n loadingSpinner:\n 'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n fieldRoot: 'grid min-w-0 gap-2',\n fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n fieldRequired: 'text-destructive-text',\n fieldDescription: 'text-sm leading-5 text-muted-foreground',\n fieldMessage: 'text-sm leading-5 text-muted-foreground',\n fieldControl: 'min-w-0',\n controlWrapper:\n cn(\n 'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n motionBase,\n ),\n controlBase:\n 'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n controlInput: 'h-9',\n controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n controlIcon:\n 'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n controlTrailing:\n 'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n controlInvalid:\n 'border-destructive/45 focus-within:border-destructive/60',\n controlDisabled: '!cursor-not-allowed opacity-60',\n controlReadOnly: 'bg-muted/35',\n selectChevron:\n cn(\n 'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n ),\n selectMenu:\n 'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n selectOption:\n cn(\n 'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n motionInteractive,\n ),\n selectOptionActive: 'bg-accent text-accent-foreground',\n selectOptionSelected: 'bg-primary/10 text-primary',\n selectOptionDisabled: '!cursor-not-allowed opacity-50',\n selectPlaceholder: 'text-muted-foreground',\n selectNative: 'sr-only',\n switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n switchInput: 'sr-only',\n switchTrack:\n cn(\n 'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n motionBase,\n ),\n switchThumb:\n cn(\n 'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n motionTransform,\n ),\n switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n switchDisabled: '!cursor-not-allowed opacity-60',\n switchContent: 'grid min-w-0 gap-1',\n switchLabel: 'text-sm font-medium leading-none text-foreground',\n switchDescription: 'text-sm leading-5 text-muted-foreground',\n checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n checkboxInput: 'sr-only',\n checkboxBox:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n checkboxBoxInvalid: 'border-destructive/50',\n checkboxIndicator: 'text-[11px] font-bold leading-none',\n checkboxDisabled: '!cursor-not-allowed opacity-60',\n checkboxContent: 'grid min-w-0 gap-1',\n checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n radioGroupRoot: 'grid min-w-0 gap-2',\n radioOption:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n motionInteractive,\n 'hover:bg-muted/35',\n ),\n radioInput: 'sr-only',\n radioMarker:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n radioMarkerChecked: 'border-primary/50 bg-primary/10',\n radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n radioContent: 'grid min-w-0 gap-1',\n radioLabel: 'text-sm font-medium leading-none text-foreground',\n radioDescription: 'text-sm leading-5 text-muted-foreground',\n dialogRoot: 'relative',\n dialogTrigger: '',\n dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n dialogOverlay:\n 'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dialogContent:\n 'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n dialogPanel:\n cn(\n 'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n 'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n ),\n dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n dialogDescription: 'text-sm leading-6 text-muted-foreground',\n dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n dialogFooter:\n 'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n dialogClose:\n cn(\n 'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownRoot: 'relative inline-flex min-w-0',\n dropdownTrigger: '',\n dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n dropdownMenu:\n 'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n dropdownMenuEnd: 'left-auto right-0',\n dropdownLabel:\n 'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n dropdownSeparator: 'my-1 h-px bg-border/70',\n dropdownItem:\n cn(\n 'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownItemDanger:\n 'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n dropdownItemDisabled:\n '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n dropdownItemLabel: 'min-w-0 truncate',\n dropdownItemDescription:\n 'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n dropdownItemShortcut:\n 'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n tooltipRoot: 'relative inline-flex min-w-0',\n tooltipTrigger: 'inline-flex min-w-0',\n tooltipContent:\n 'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n noticeBase:\n cn(\n 'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n motionBase,\n 'motion-safe:animate-in motion-safe:fade-in',\n ),\n noticeDefault: 'border-border bg-background text-foreground',\n noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n noticeSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n noticeDanger:\n 'border-destructive/30 bg-destructive/10 text-destructive-text',\n noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n noticeIcon:\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n noticeTitle: 'font-semibold leading-5',\n noticeDescription: 'leading-6',\n noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n dividerRoot: cn('shrink-0 border-border/70', motionBase),\n dividerLabel:\n 'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n sectionHeaderRoot:\n 'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n sectionHeaderContent: 'grid min-w-0 gap-1',\n sectionHeaderEyebrow:\n 'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n tabsRoot: 'grid min-w-0 gap-3',\n tabsList:\n cn(\n 'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n tabsTrigger:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n motionInteractive,\n ),\n tabsTriggerActive:\n 'bg-background text-foreground shadow-sm',\n tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n tabsPanel:\n 'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n segmentedRoot:\n cn(\n 'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n segmentedItem:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n motionInteractive,\n ),\n segmentedItemActive:\n 'bg-background text-foreground shadow-sm',\n segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n progressRoot: 'grid min-w-0 gap-2',\n progressTrack:\n 'h-2 w-full overflow-hidden rounded-full bg-muted',\n progressIndicator:\n 'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n skeletonRoot:\n 'relative overflow-hidden rounded-md bg-muted/70',\n avatarRoot:\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n avatarImage:\n 'h-full w-full object-cover',\n avatarFallback:\n 'flex h-full w-full items-center justify-center bg-muted text-foreground',\n avatarStatus:\n 'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n toolbarRoot:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n motionBase,\n ),\n toolbarLeading: 'flex min-w-0 items-center gap-3',\n toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n toolbarContent: 'min-w-0 flex-1',\n toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n breadcrumbLink:\n 'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n paginationRoot:\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n paginationInfo: 'min-w-0 text-muted-foreground',\n paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n paginationButton:\n 'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n paginationPage:\n 'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n paginationEllipsis:\n 'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n descriptionListRoot:\n 'grid min-w-0 gap-3 text-sm',\n descriptionListItem:\n 'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n descriptionListTerm:\n 'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n accordionRoot: 'grid min-w-0 gap-2',\n accordionItem:\n 'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTrigger:\n 'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTriggerIcon:\n cn(\n 'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n 'motion-reduce:transition-none',\n ),\n accordionPanel:\n 'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n menuTrigger: 'inline-flex min-w-0',\n menuContent:\n 'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n motionInteractive,\n ),\n menuItemDefault: 'text-foreground',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n menuItemDisabled:\n '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'min-w-0 flex-1 truncate',\n menuItemShortcut:\n 'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n menuCheckboxIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuRadioIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuSubTrigger:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n motionInteractive,\n ),\n menuSubTriggerIcon:\n 'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n menuSubContent:\n 'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n tableContainer:\n cn(\n 'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n tableScrollbarChrome,\n motionBase,\n ),\n tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableCaption: 'mt-3 text-sm text-muted-foreground',\n tableHeader:\n cn(\n 'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n tableStickyHeaderCells,\n ),\n tableBody: '[&_tr:last-child>*]:border-b-0',\n tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n tableFooterBar:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n motionBase,\n ),\n tableFooterBarAttached:\n '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n tableFooterBarContent: 'min-w-0 flex-1',\n tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n tableSplitRoot:\n 'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableSplitHeader:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n tableSplitBody:\n cn(\n 'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n tableScrollbarChrome,\n ),\n tableSplitFooter:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n tableSplitRow:\n 'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n tableSplitHead: 'flex min-w-0 overflow-hidden',\n tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n tableRow:\n cn(\n '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n motionBase,\n ),\n tableRowInteractive:\n 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n tableRowDisabled: '!cursor-not-allowed opacity-60',\n tableHead:\n 'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n tableHeadMain: 'flex min-w-0 items-center gap-2',\n tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n tableHeadText: 'grid min-w-0 gap-0.5',\n tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n tableHeadActions: 'flex shrink-0 items-center gap-1',\n tableHeadSortButton:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n motionBase,\n ),\n tableHeadSortIcon:\n cn(\n 'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n motionTransform,\n ),\n tableHeadDragHandle:\n cn(\n 'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableHeadResizeHandle:\n cn(\n 'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n tableCellAlignCenter: 'text-center',\n tableCellAlignRight: 'text-right',\n tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n tableEmptyCell: 'px-4 py-10 text-center',\n tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n tableEmptyIcon:\n 'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n tableEmptyTitle: 'text-sm font-semibold text-foreground',\n tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n tableLoadingCell: 'px-3 py-2',\n tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n layoutRoot:\n cn(\n 'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n motionBase,\n ),\n layoutRootFull: 'h-full min-h-0',\n layoutHeader: 'min-w-0',\n layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n layoutFooter: 'min-w-0',\n layoutPane:\n cn(\n 'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n motionBase,\n ),\n layoutPaneScrollable: 'overflow-auto',\n layoutPaneBordered: 'border border-border/70',\n layoutPaneMuted: 'bg-muted/25',\n layoutPaneSoft: 'bg-background/95 shadow-sm',\n layoutPaneTransparent: 'bg-transparent shadow-none',\n layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n layoutSplitHorizontal: 'grid-flow-col',\n layoutSplitVertical: 'grid-flow-row',\n layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n layoutSplitPrimary: '',\n layoutSplitSecondary: '',\n layoutResizeHandle:\n cn(\n 'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n layoutResizeHandleDisabled: 'cursor-default opacity-60',\n layoutResizeHandleIndicator:\n 'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n compact: {\n buttonBase: 'h-8 px-2.5 text-xs',\n buttonIconOnly: 'h-8 w-8 px-0',\n badgeBase: 'px-1.5 py-0 text-[11px]',\n panelHeader: 'p-3',\n panelBody: 'px-3 pb-3 text-xs',\n panelBodyStandalone: 'pt-3',\n panelFooter: 'px-3 py-2',\n stateRoot: 'min-h-36 px-4 py-7',\n stateIcon: 'mb-3 h-10 w-10',\n fieldRoot: 'gap-1.5',\n fieldLabel: 'text-xs',\n fieldDescription: 'text-xs leading-5',\n fieldMessage: 'text-xs leading-5',\n controlInput: 'h-8 text-xs',\n controlTextarea: 'min-h-20 text-xs',\n controlSelect: 'h-8 text-xs',\n selectMenu: 'text-xs',\n selectOption: 'min-h-7 px-2 py-1 text-xs',\n switchTrack: 'h-5 w-9',\n switchThumb: 'h-3.5 w-3.5',\n checkboxBox: 'h-3.5 w-3.5',\n checkboxLabel: 'text-xs',\n checkboxDescription: 'text-xs leading-5',\n radioOption: 'px-2 py-1.5 text-xs',\n radioMarker: 'h-3.5 w-3.5',\n radioIndicator: 'h-1.5 w-1.5',\n radioLabel: 'text-xs',\n radioDescription: 'text-xs leading-5',\n dialogPanel: 'max-w-md',\n dialogHeader: 'px-4 py-3',\n dialogTitle: 'text-sm leading-5',\n dialogDescription: 'text-xs leading-5',\n dialogBody: 'px-4 py-3 text-xs',\n dialogFooter: 'px-4 py-3',\n dropdownMenu: 'min-w-44 text-xs',\n dropdownItem: 'px-2 py-1.5 text-xs',\n tooltipContent: 'text-[11px] leading-4',\n noticeBase: 'px-3 py-2 text-xs',\n dividerLabel: 'text-[11px]',\n sectionHeaderRoot: 'gap-2',\n sectionHeaderTitle: 'text-sm leading-5',\n sectionHeaderDescription: 'text-xs leading-5',\n tabsList: 'gap-0.5 p-0.5',\n tabsTrigger: 'px-2 py-1 text-xs',\n tabsPanel: 'p-3 text-xs',\n segmentedRoot: 'gap-0.5 p-0.5',\n segmentedItem: 'px-2 py-1 text-xs',\n progressTrack: 'h-1.5',\n avatarRoot: 'text-xs',\n toolbarRoot: 'gap-2 px-3 py-2',\n toolbarTitle: 'text-xs',\n toolbarDescription: 'text-xs leading-5',\n paginationButton: 'h-7 min-w-7 px-2 text-xs',\n paginationPage: 'h-7 min-w-7 px-2 text-xs',\n descriptionListRoot: 'gap-2 text-xs',\n descriptionListItem: 'px-2 py-1.5',\n descriptionListTerm: 'text-[11px]',\n descriptionListValue: 'text-xs leading-5',\n accordionTrigger: 'px-3 py-2 text-xs',\n accordionPanel: 'px-3 py-2 text-xs leading-5',\n menuContent: 'min-w-40 p-0.5 text-xs',\n menuSubContent: 'min-w-36 p-0.5 text-xs',\n menuLabel: 'px-2 py-1 text-[11px]',\n menuItem: 'min-h-7 px-2 py-1 text-xs',\n menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n menuItemShortcut: 'text-[11px]',\n tableContainer: '[--base-table-header-height:2.25rem]',\n tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n tableCell: 'px-2 py-1.5 text-xs',\n tableHeadLabel: 'text-[11px]',\n tableHeadDescription: 'text-[10px] leading-3',\n tableLoadingCell: 'px-2 py-1.5',\n layoutRoot: 'gap-2 p-2',\n layoutBody: 'gap-2',\n layoutPane: 'rounded-md text-xs',\n layoutResizeHandleHorizontal: 'w-1.5',\n layoutResizeHandleVertical: 'h-1.5',\n },\n default: {\n buttonBase: 'h-9',\n },\n comfortable: {\n buttonBase: 'h-10 px-3.5',\n buttonIconOnly: 'h-10 w-10 px-0',\n badgeBase: 'px-2.5 py-1',\n panelHeader: 'p-5',\n panelBody: 'px-5 pb-5',\n panelBodyStandalone: 'pt-5',\n panelFooter: 'px-5 py-3.5',\n stateRoot: 'min-h-56 px-8 py-12',\n stateIcon: 'mb-5 h-14 w-14',\n fieldRoot: 'gap-2.5',\n controlInput: 'h-10',\n controlTextarea: 'min-h-28',\n controlSelect: 'h-10',\n selectMenu: 'p-1.5',\n selectOption: 'min-h-9 px-3 py-2',\n switchTrack: 'h-7 w-12',\n switchThumb: 'h-5 w-5',\n checkboxBox: 'h-5 w-5',\n radioOption: 'px-4 py-3',\n radioMarker: 'h-5 w-5',\n radioIndicator: 'h-2.5 w-2.5',\n dialogPanel: 'max-w-xl',\n dialogHeader: 'px-6 py-5',\n dialogBody: 'px-6 py-5',\n dialogFooter: 'px-6 py-5',\n dropdownMenu: 'min-w-56',\n dropdownItem: 'px-3 py-2.5',\n noticeBase: 'px-5 py-4',\n sectionHeaderTitle: 'text-lg leading-7',\n tabsTrigger: 'px-3.5 py-2',\n tabsPanel: 'p-5',\n segmentedItem: 'px-3.5 py-2',\n progressTrack: 'h-2.5',\n toolbarRoot: 'px-5 py-4',\n paginationButton: 'h-9 min-w-9 px-3',\n paginationPage: 'h-9 min-w-9 px-3',\n descriptionListItem: 'px-4 py-3',\n accordionTrigger: 'px-5 py-4',\n accordionPanel: 'px-5 py-4',\n menuContent: 'min-w-48 p-1.5',\n menuSubContent: 'min-w-44 p-1.5',\n menuItem: 'min-h-9 px-3 py-2',\n menuSubTrigger: 'min-h-9 px-3 py-2',\n tableContainer: '[--base-table-header-height:3rem]',\n tableHead: 'h-12 px-4 py-3',\n tableCell: 'px-4 py-3',\n tableLoadingCell: 'px-4 py-3',\n layoutRoot: 'gap-4 p-4',\n layoutBody: 'gap-4',\n layoutPane: 'rounded-xl',\n layoutResizeHandleHorizontal: 'w-2.5',\n layoutResizeHandleVertical: 'h-2.5',\n },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'rounded-none',\n badgeBase: 'rounded-none',\n panelRoot: 'rounded-none',\n stateRoot: 'rounded-none',\n stateIcon: 'rounded-none',\n controlWrapper: 'rounded-none',\n selectMenu: 'rounded-none',\n selectOption: 'rounded-none',\n switchTrack: 'rounded-none',\n switchThumb: 'rounded-none',\n checkboxBox: 'rounded-none',\n radioOption: 'rounded-none',\n dialogPanel: 'rounded-none',\n dialogClose: 'rounded-none',\n dropdownMenu: 'rounded-none',\n dropdownItem: 'rounded-none',\n tooltipContent: 'rounded-none',\n noticeBase: 'rounded-none',\n tabsList: 'rounded-none',\n tabsTrigger: 'rounded-none',\n tabsPanel: 'rounded-none',\n segmentedRoot: 'rounded-none',\n segmentedItem: 'rounded-none',\n progressTrack: 'rounded-none',\n progressIndicator: 'rounded-none',\n skeletonRoot: 'rounded-none',\n avatarRoot: 'rounded-none',\n avatarStatus: 'rounded-none',\n toolbarRoot: 'rounded-none',\n paginationButton: 'rounded-none',\n paginationPage: 'rounded-none',\n descriptionListItem: 'rounded-none',\n accordionItem: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n menuSubTrigger: 'rounded-none',\n menuSubContent: 'rounded-none',\n tableContainer: 'rounded-none',\n tableEmptyIcon: 'rounded-none',\n tableLoadingSkeleton: 'rounded-none',\n layoutRoot: 'rounded-none',\n layoutPane: 'rounded-none',\n },\n sm: {\n buttonBase: 'rounded-sm',\n badgeBase: 'rounded-sm',\n panelRoot: 'rounded-sm',\n stateRoot: 'rounded-sm',\n stateIcon: 'rounded-sm',\n controlWrapper: 'rounded-sm',\n selectMenu: 'rounded-sm',\n selectOption: 'rounded-sm',\n switchTrack: 'rounded-sm',\n switchThumb: 'rounded-sm',\n checkboxBox: 'rounded-sm',\n radioOption: 'rounded-sm',\n dialogPanel: 'rounded-sm',\n dialogClose: 'rounded-sm',\n dropdownMenu: 'rounded-sm',\n dropdownItem: 'rounded-sm',\n tooltipContent: 'rounded-sm',\n noticeBase: 'rounded-sm',\n tabsList: 'rounded-sm',\n tabsTrigger: 'rounded-sm',\n tabsPanel: 'rounded-sm',\n segmentedRoot: 'rounded-sm',\n segmentedItem: 'rounded-sm',\n progressTrack: 'rounded-sm',\n progressIndicator: 'rounded-sm',\n skeletonRoot: 'rounded-sm',\n avatarRoot: 'rounded-sm',\n avatarStatus: 'rounded-sm',\n toolbarRoot: 'rounded-sm',\n paginationButton: 'rounded-sm',\n paginationPage: 'rounded-sm',\n descriptionListItem: 'rounded-sm',\n accordionItem: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n menuSubTrigger: 'rounded-sm',\n menuSubContent: 'rounded-sm',\n tableContainer: 'rounded-sm',\n tableEmptyIcon: 'rounded-sm',\n tableLoadingSkeleton: 'rounded-sm',\n layoutRoot: 'rounded-sm',\n layoutPane: 'rounded-sm',\n },\n md: {},\n lg: {\n buttonBase: 'rounded-lg',\n badgeBase: 'rounded-lg',\n panelRoot: 'rounded-xl',\n stateRoot: 'rounded-xl',\n stateIcon: 'rounded-xl',\n controlWrapper: 'rounded-lg',\n selectMenu: 'rounded-lg',\n selectOption: 'rounded-md',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-md',\n radioOption: 'rounded-xl',\n dialogPanel: 'rounded-xl',\n dialogClose: 'rounded-lg',\n dropdownMenu: 'rounded-lg',\n dropdownItem: 'rounded-md',\n tooltipContent: 'rounded-md',\n noticeBase: 'rounded-xl',\n tabsList: 'rounded-xl',\n tabsTrigger: 'rounded-lg',\n tabsPanel: 'rounded-xl',\n segmentedRoot: 'rounded-xl',\n segmentedItem: 'rounded-lg',\n skeletonRoot: 'rounded-lg',\n toolbarRoot: 'rounded-xl',\n descriptionListItem: 'rounded-lg',\n accordionItem: 'rounded-xl',\n menuContent: 'rounded-lg',\n menuItem: 'rounded-md',\n menuSubTrigger: 'rounded-md',\n menuSubContent: 'rounded-lg',\n tableContainer: 'rounded-xl',\n tableEmptyIcon: 'rounded-xl',\n tableLoadingSkeleton: 'rounded-lg',\n layoutRoot: 'rounded-xl',\n layoutPane: 'rounded-xl',\n },\n xl: {\n buttonBase: 'rounded-xl',\n badgeBase: 'rounded-xl',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-2xl',\n controlWrapper: 'rounded-xl',\n selectMenu: 'rounded-xl',\n selectOption: 'rounded-lg',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-lg',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-xl',\n dropdownMenu: 'rounded-xl',\n dropdownItem: 'rounded-lg',\n tooltipContent: 'rounded-lg',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-2xl',\n tabsTrigger: 'rounded-xl',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-2xl',\n segmentedItem: 'rounded-xl',\n skeletonRoot: 'rounded-xl',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-xl',\n paginationPage: 'rounded-xl',\n descriptionListItem: 'rounded-xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-xl',\n menuItem: 'rounded-lg',\n menuSubTrigger: 'rounded-lg',\n menuSubContent: 'rounded-xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-2xl',\n tableLoadingSkeleton: 'rounded-xl',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n full: {\n buttonBase: 'rounded-full',\n badgeBase: 'rounded-full',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-full',\n controlWrapper: 'rounded-full',\n selectMenu: 'rounded-2xl',\n selectOption: 'rounded-full',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-full',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-full',\n dropdownMenu: 'rounded-2xl',\n dropdownItem: 'rounded-full',\n tooltipContent: 'rounded-full',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-full',\n tabsTrigger: 'rounded-full',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-full',\n segmentedItem: 'rounded-full',\n progressTrack: 'rounded-full',\n progressIndicator: 'rounded-full',\n skeletonRoot: 'rounded-full',\n avatarRoot: 'rounded-full',\n avatarStatus: 'rounded-full',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-full',\n paginationPage: 'rounded-full',\n descriptionListItem: 'rounded-2xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-2xl',\n menuItem: 'rounded-full',\n menuSubTrigger: 'rounded-full',\n menuSubContent: 'rounded-2xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-full',\n tableLoadingSkeleton: 'rounded-full',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'border-transparent',\n badgeBase: 'border-transparent',\n panelRoot: 'border-transparent',\n panelFooter: 'border-transparent',\n stateRoot: 'border-transparent',\n controlWrapper: 'border-transparent',\n selectMenu: 'border-transparent',\n switchTrack: 'border-transparent',\n checkboxBox: 'border-transparent',\n radioOption: 'border-transparent',\n radioMarker: 'border-transparent',\n dialogPanel: 'border-transparent',\n dialogHeader: 'border-transparent',\n dialogFooter: 'border-transparent',\n dropdownMenu: 'border-transparent',\n tooltipContent: 'border-transparent',\n noticeBase: 'border-transparent',\n dividerRoot: 'border-transparent',\n tabsList: 'border-transparent',\n tabsPanel: 'border-transparent',\n segmentedRoot: 'border-transparent',\n avatarRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n paginationButton: 'border-transparent',\n descriptionListItem: 'border-transparent',\n accordionItem: 'border-transparent',\n accordionPanel: 'border-transparent',\n menuContent: 'border-transparent',\n menuSeparator: 'bg-transparent',\n menuSubContent: 'border-transparent',\n tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n tableHeader: 'border-transparent',\n tableFooter: '[&_tr>*]:border-transparent',\n tableFooterBar: 'border-transparent',\n tableFooterBarAttached: 'border-t border-transparent',\n tableRow: '[&>*]:border-transparent',\n tableEmptyRow: '[&>*]:border-transparent',\n tableLoadingRow: '[&>*]:border-transparent',\n layoutRoot: 'border-transparent',\n layoutPaneBordered: 'border-transparent',\n layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n },\n subtle: {\n buttonDefault: 'border-border/60',\n badgeDefault: 'border-border/60',\n panelRoot: 'border-border/60',\n panelFooter: 'border-border/60',\n stateRoot: 'border-border/60',\n controlWrapper: 'border-border/60',\n selectMenu: 'border-border/60',\n switchTrack: 'border-border/60',\n checkboxBox: 'border-border/60',\n radioOption: 'border-border/60',\n radioMarker: 'border-border/60',\n dialogPanel: 'border-border/60',\n dialogHeader: 'border-border/60',\n dialogFooter: 'border-border/60',\n dropdownMenu: 'border-border/60',\n tooltipContent: 'border-border/60',\n noticeDefault: 'border-border/60',\n dividerRoot: 'border-border/60',\n tabsList: 'border-border/60',\n tabsPanel: 'border-border/60',\n segmentedRoot: 'border-border/60',\n avatarRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n paginationButton: 'border-border/60',\n descriptionListItem: 'border-border/60',\n accordionItem: 'border-border/60',\n accordionPanel: 'border-border/60',\n menuContent: 'border-border/60',\n menuSeparator: 'bg-border/60',\n menuSubContent: 'border-border/60',\n tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n tableHeader: 'border-border/60',\n tableFooter: '[&_tr>*]:border-border/60',\n tableFooterBar: 'border-border/60',\n tableFooterBarAttached: 'border-t border-border/60',\n tableRow: '[&>*]:border-border/50',\n tableEmptyRow: '[&>*]:border-border/50',\n tableLoadingRow: '[&>*]:border-border/50',\n layoutRoot: 'border-border/60',\n layoutPaneBordered: 'border-border/60',\n },\n solid: {},\n strong: {\n buttonDefault: 'border-foreground/20',\n badgeDefault: 'border-foreground/20',\n panelRoot: 'border-foreground/20',\n panelFooter: 'border-foreground/20',\n stateRoot: 'border-foreground/20',\n controlWrapper: 'border-foreground/20',\n selectMenu: 'border-foreground/20',\n switchTrack: 'border-foreground/20',\n checkboxBox: 'border-foreground/20',\n radioOption: 'border-foreground/20',\n radioMarker: 'border-foreground/20',\n dialogPanel: 'border-foreground/20',\n dialogHeader: 'border-foreground/15',\n dialogFooter: 'border-foreground/15',\n dropdownMenu: 'border-foreground/20',\n tooltipContent: 'border-foreground/20',\n noticeDefault: 'border-foreground/20',\n dividerRoot: 'border-foreground/20',\n tabsList: 'border-foreground/20',\n tabsPanel: 'border-foreground/20',\n segmentedRoot: 'border-foreground/20',\n avatarRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n paginationButton: 'border-foreground/20',\n descriptionListItem: 'border-foreground/20',\n accordionItem: 'border-foreground/20',\n accordionPanel: 'border-foreground/20',\n menuContent: 'border-foreground/20',\n menuSeparator: 'bg-foreground/15',\n menuSubContent: 'border-foreground/20',\n tableContainer:\n 'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n tableHeader: 'border-foreground/20',\n tableFooter: '[&_tr>*]:border-foreground/20',\n tableFooterBar: 'border-foreground/20',\n tableFooterBarAttached: 'border-t border-foreground/20',\n tableRow: '[&>*]:border-foreground/15',\n tableEmptyRow: '[&>*]:border-foreground/15',\n tableLoadingRow: '[&>*]:border-foreground/15',\n layoutRoot: 'border-foreground/20',\n layoutPaneBordered: 'border-foreground/20',\n layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n plain: {},\n muted: {\n buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n panelRoot: 'bg-card',\n panelFooter: 'bg-muted/20',\n stateRoot: 'bg-muted/20',\n controlWrapper: 'bg-background',\n selectMenu: 'bg-background',\n selectOptionActive: 'bg-muted/70 text-foreground',\n checkboxBox: 'bg-background',\n radioOption: 'bg-card hover:bg-muted/45',\n radioMarker: 'bg-background',\n dialogPanel: 'bg-card',\n dropdownMenu: 'bg-background',\n dropdownItem: 'hover:bg-muted/60',\n tooltipContent: 'bg-popover',\n noticeDefault: 'bg-muted/20',\n tabsList: 'bg-muted/35',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-card',\n segmentedRoot: 'bg-muted/35',\n segmentedItemActive: 'bg-background',\n progressTrack: 'bg-muted/60',\n skeletonRoot: 'bg-muted',\n toolbarRoot: 'bg-card',\n paginationButton: 'bg-background hover:bg-muted/60',\n paginationPage: 'bg-muted/60',\n descriptionListItem: 'bg-card',\n accordionItem: 'bg-card',\n menuContent: 'bg-background',\n menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n menuSubTrigger:\n 'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n menuSubContent: 'bg-background',\n tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/35',\n tableFooterBar: 'bg-muted/30 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n tableLoadingSkeleton: 'bg-muted',\n layoutRoot: 'bg-card',\n layoutPane: 'bg-card',\n layoutPaneMuted: 'bg-muted/35',\n layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n },\n soft: {\n buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n panelRoot: 'bg-background/95 shadow-sm',\n stateRoot: 'bg-background/95 shadow-sm',\n controlWrapper: 'bg-background/95',\n selectMenu: 'bg-background/95 shadow-xl',\n selectOptionActive: 'bg-muted/60 text-foreground',\n checkboxBox: 'bg-background/95',\n radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n radioMarker: 'bg-background/95',\n dialogPanel: 'bg-background/95 shadow-xl',\n dropdownMenu: 'bg-background/95 shadow-xl',\n dropdownItem: 'hover:bg-muted/55',\n tooltipContent: 'bg-popover shadow-xl',\n noticeDefault: 'bg-background/95 shadow-sm',\n tabsList: 'bg-background/60 shadow-sm',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-background/95 shadow-sm',\n segmentedRoot: 'bg-background/60 shadow-sm',\n segmentedItemActive: 'bg-background',\n skeletonRoot: 'bg-background/80',\n toolbarRoot: 'bg-background/95 shadow-sm',\n paginationButton: 'bg-background/95 hover:bg-muted/55',\n descriptionListItem: 'bg-background/95 shadow-sm',\n accordionItem: 'bg-background/95 shadow-sm',\n menuContent: 'bg-background/95 shadow-xl',\n menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n menuSubTrigger:\n 'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n menuSubContent: 'bg-background/95 shadow-xl',\n tableContainer:\n 'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/25',\n tableFooterBar: 'bg-muted/25 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n tableLoadingSkeleton: 'bg-muted/65',\n layoutRoot: 'bg-background/95 shadow-sm',\n layoutPane: 'bg-background/95 shadow-sm',\n layoutPaneSoft: 'bg-background/95 shadow-md',\n },\n glass: {\n buttonBase: 'backdrop-blur-md',\n buttonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n panelFooter: 'border-white/10 bg-white/[0.05]',\n stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n stateIcon: 'bg-white/10 text-foreground',\n controlWrapper:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n selectMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n selectOption: 'text-foreground',\n selectOptionActive: 'bg-white/[0.14] text-foreground',\n selectOptionSelected: 'bg-white/[0.18] text-foreground',\n switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n dialogOverlay: 'bg-background/45 backdrop-blur-md',\n dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n dialogHeader: 'border-white/10',\n dialogFooter: 'border-white/10',\n dropdownMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n tooltipContent:\n 'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n noticeDefault:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n dividerRoot: 'border-white/15',\n tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n tabsPanel:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n progressTrack: 'bg-white/[0.12]',\n skeletonRoot: 'bg-white/[0.16]',\n avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n avatarFallback: 'bg-white/[0.12] text-foreground',\n avatarStatus: 'border-background',\n toolbarRoot:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n paginationButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.12] text-foreground',\n descriptionListItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionPanel: 'border-white/10',\n menuContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n menuSubTrigger:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n menuSubContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n tableContainer:\n 'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n tableHeadLabel: 'text-foreground',\n tableLoadingSkeleton: 'bg-white/[0.16]',\n layoutRoot:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n layoutPane:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n layoutPaneMuted: 'bg-white/[0.08]',\n layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n dark: {\n buttonBase:\n 'border-white/15 text-white shadow-lg backdrop-blur',\n buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n buttonMuted:\n 'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n panelTitle: 'text-white',\n panelDescription: 'text-white/65',\n panelBody: 'text-white/85',\n panelFooter: 'border-white/10 bg-white/[0.04]',\n stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n stateIcon: 'bg-white/10 text-white/75',\n stateTitle: 'text-white',\n stateDescription: 'text-white/65',\n fieldLabel: 'text-white',\n fieldDescription: 'text-white/65',\n fieldMessage: 'text-white/65',\n controlWrapper:\n 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n controlBase: 'text-white placeholder:text-white/45',\n selectChevron: 'text-white/65',\n selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n selectOption: 'text-white',\n selectOptionActive: 'bg-white/[0.12] text-white',\n selectOptionSelected: 'bg-white/[0.16] text-white',\n selectPlaceholder: 'text-white/45',\n switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n switchChecked: 'border-white/25 bg-white/25 text-white',\n switchLabel: 'text-white',\n switchDescription: 'text-white/65',\n checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n checkboxLabel: 'text-white',\n checkboxDescription: 'text-white/65',\n radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n radioMarkerChecked: 'border-white/25 bg-white/25',\n radioIndicator: 'bg-white',\n radioLabel: 'text-white',\n radioDescription: 'text-white/65',\n dialogOverlay: 'bg-slate-950/75',\n dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n dialogHeader: 'border-white/10',\n dialogTitle: 'text-white',\n dialogDescription: 'text-white/65',\n dialogBody: 'text-white/85',\n dialogFooter: 'border-white/10',\n dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n dropdownLabel: 'text-white/55',\n dropdownSeparator: 'bg-white/15',\n dropdownItem: 'text-white hover:bg-white/[0.10]',\n dropdownItemDescription: 'text-white/55',\n dropdownItemShortcut: 'text-white/55',\n tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n dividerRoot: 'border-white/15',\n dividerLabel: 'text-white/55',\n sectionHeaderEyebrow: 'text-white/55',\n sectionHeaderTitle: 'text-white',\n sectionHeaderDescription: 'text-white/65',\n tabsList: 'border-white/10 bg-white/[0.08]',\n tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n segmentedRoot: 'border-white/10 bg-white/[0.08]',\n segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n progressTrack: 'bg-white/[0.12]',\n progressLabel: 'text-white',\n progressValue: 'text-white/65',\n skeletonRoot: 'bg-white/[0.14]',\n avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n avatarFallback: 'bg-white/[0.10] text-white/75',\n avatarText: 'text-white',\n avatarStatus: 'border-slate-950',\n toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n toolbarTitle: 'text-white',\n toolbarDescription: 'text-white/65',\n breadcrumbLink: 'text-white/65 hover:text-white',\n breadcrumbCurrent: 'text-white',\n breadcrumbSeparator: 'text-white/45',\n paginationInfo: 'text-white/65',\n paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.14] text-white',\n descriptionListItem: 'border-white/10 bg-white/[0.06]',\n descriptionListTerm: 'text-white/55',\n descriptionListValue: 'text-white',\n accordionItem: 'border-white/10 bg-white/[0.06]',\n accordionTrigger: 'text-white hover:bg-white/[0.08]',\n accordionPanel: 'border-white/10 text-white/70',\n tableContainer:\n 'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n tableRoot: 'text-white',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n tableHead: 'text-white/65',\n tableHeadLabel: 'text-white',\n tableHeadDescription: 'text-white/55',\n tableHeadMeta: 'text-white/55',\n tableHeadIcon: 'text-white/55',\n tableHeadSortIcon: 'text-white/55',\n tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n tableCell: 'text-white/85',\n tableEmptyIcon: 'bg-white/10 text-white/65',\n tableEmptyTitle: 'text-white',\n tableEmptyDescription: 'text-white/60',\n menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n menuLabel: 'text-white/55',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n menuItemDefault: 'text-white',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-white/65 focus:text-white data-[highlighted]:text-white',\n menuItemShortcut: 'text-white/45',\n menuSubTrigger:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n menuSubTriggerIcon: 'text-white/55',\n menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n tableLoadingSkeleton: 'bg-white/[0.14]',\n layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPaneMuted: 'bg-white/[0.06]',\n layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n};\n\nconst presetDefaults: Record<\n BaseThemePresetId,\n Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'muted',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n glass: {\n density: 'default',\n radius: 'xl',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'strong',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n soft: {\n buttonBase: 'font-medium',\n panelRoot: 'border-border/70',\n controlWrapper: 'font-medium',\n tabsTrigger: 'font-medium',\n segmentedItem: 'font-medium',\n toolbarRoot: 'border-border/70',\n tableContainer: 'border-border/70',\n tableFooterBar: 'border-border/70',\n tableHeadLabel: 'font-semibold',\n menuItemLabel: 'font-medium',\n },\n compact: {\n buttonBase: 'text-xs',\n badgeBase: 'text-[11px]',\n fieldLabel: 'text-xs',\n controlBase: 'text-xs',\n selectOption: 'text-xs',\n menuItem: 'text-xs',\n menuSubTrigger: 'text-xs',\n noticeBase: 'text-xs',\n sectionHeaderTitle: 'text-sm',\n tabsTrigger: 'text-xs',\n segmentedItem: 'text-xs',\n toolbarTitle: 'text-xs',\n paginationRoot: 'text-xs',\n },\n 'tinted-glass': {\n buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n progressIndicator: 'bg-primary',\n avatarStatus: 'border-background',\n },\n glass: {\n panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n },\n 'hard-edge': {\n buttonBase: 'shadow-none',\n panelRoot: 'shadow-none',\n stateRoot: 'shadow-none',\n controlWrapper: 'shadow-none',\n selectMenu: 'shadow-none',\n menuContent: 'shadow-none',\n menuSubContent: 'shadow-none',\n noticeBase: 'shadow-none',\n tabsList: 'shadow-none',\n tabsTriggerActive: 'shadow-none',\n tabsPanel: 'shadow-none',\n segmentedRoot: 'shadow-none',\n segmentedItemActive: 'shadow-none',\n toolbarRoot: 'shadow-none',\n descriptionListItem: 'shadow-none',\n accordionItem: 'shadow-none',\n },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n appearance?: BaseAppearance,\n): BaseResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const variant = appearance?.variant ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const state = appearance?.state ?? 'idle';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n variant,\n density,\n state,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getBaseButtonToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n active = false,\n) {\n return cn(\n tone === 'default' && theme.slots.buttonDefault,\n tone === 'primary' && theme.slots.buttonPrimary,\n tone === 'success' && theme.slots.buttonSuccess,\n tone === 'warning' && theme.slots.buttonWarning,\n tone === 'danger' && theme.slots.buttonDanger,\n tone === 'muted' && theme.slots.buttonMuted,\n active && theme.slots.buttonActive,\n );\n}\n\nexport function getBaseBadgeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.badgeDefault,\n tone === 'primary' && theme.slots.badgePrimary,\n tone === 'success' && theme.slots.badgeSuccess,\n tone === 'warning' && theme.slots.badgeWarning,\n tone === 'danger' && theme.slots.badgeDanger,\n tone === 'muted' && theme.slots.badgeMuted,\n );\n}\n\nexport function getBaseNoticeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.noticeDefault,\n tone === 'primary' && theme.slots.noticePrimary,\n tone === 'success' && theme.slots.noticeSuccess,\n tone === 'warning' && theme.slots.noticeWarning,\n tone === 'danger' && theme.slots.noticeDanger,\n tone === 'muted' && theme.slots.noticeMuted,\n );\n}\n\nexport function getBaseMenuItemToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.menuItemDefault,\n tone === 'primary' && theme.slots.menuItemPrimary,\n tone === 'success' && theme.slots.menuItemSuccess,\n tone === 'warning' && theme.slots.menuItemWarning,\n tone === 'danger' && theme.slots.menuItemDanger,\n tone === 'muted' && theme.slots.menuItemMuted,\n );\n}\n\nexport function getBaseTypographyToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseTypographyTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.typographyToneDefault,\n tone === 'muted' && theme.slots.typographyToneMuted,\n tone === 'primary' && theme.slots.typographyTonePrimary,\n tone === 'success' && theme.slots.typographyToneSuccess,\n tone === 'warning' && theme.slots.typographyToneWarning,\n tone === 'danger' && theme.slots.typographyToneDanger,\n tone === 'inherit' && theme.slots.typographyToneInherit,\n );\n}\n\nexport function getBaseTextSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseTypographySize = 'md',\n) {\n return cn(\n size === 'xs' && theme.slots.textSizeXs,\n size === 'sm' && theme.slots.textSizeSm,\n size === 'md' && theme.slots.textSizeMd,\n size === 'lg' && theme.slots.textSizeLg,\n size === 'xl' && theme.slots.textSizeXl,\n );\n}\n\nexport function getBaseHeadingSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseHeadingSize = 'lg',\n) {\n return cn(\n size === 'xs' && theme.slots.headingSizeXs,\n size === 'sm' && theme.slots.headingSizeSm,\n size === 'md' && theme.slots.headingSizeMd,\n size === 'lg' && theme.slots.headingSizeLg,\n size === 'xl' && theme.slots.headingSizeXl,\n size === '2xl' && theme.slots.headingSize2xl,\n );\n}\n\nexport function getBaseListSpacingClassName(\n theme: BaseResolvedTheme,\n spacing: BaseListSpacing = 'default',\n) {\n return cn(\n spacing === 'compact' && theme.slots.listSpacingCompact,\n spacing === 'default' && theme.slots.listSpacingDefault,\n spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n );\n}\n\nexport function getBaseListMarkerClassName(\n theme: BaseResolvedTheme,\n marker: Exclude<BaseListMarker, 'auto'>,\n) {\n return cn(\n marker === 'none' && theme.slots.listMarkerNone,\n marker === 'disc' && theme.slots.listMarkerDisc,\n marker === 'circle' && theme.slots.listMarkerCircle,\n marker === 'square' && theme.slots.listMarkerSquare,\n marker === 'decimal' && theme.slots.listMarkerDecimal,\n marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n const pairs: Record<string, string> = { ')': '(', ']': '[' };\n const stack: string[] = [];\n\n for (const character of value) {\n if (character === '(' || character === '[') {\n stack.push(character);\n } else if (character === ')' || character === ']') {\n if (stack.pop() !== pairs[character]) return false;\n }\n }\n\n return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n if (match[1].toLowerCase() === 'var') {\n return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n }\n\n return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n componentName: string,\n propName: string,\n value: BaseLayoutLength,\n) {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n return `${value}px`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n (!cssLengthPattern.test(normalized) &&\n !isSupportedCssLengthFunction(normalized))\n ) {\n throw new TypeError(\n `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n );\n }\n\n return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n if (typeof value === 'number') {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n return `repeat(${value}, minmax(0, 1fr))`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n /\\burl\\s*\\(/i.test(normalized) ||\n !hasBalancedDelimiters(normalized) ||\n !gridTemplateTokenPattern.test(normalized)\n ) {\n throw new TypeError(\n 'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n );\n }\n\n return normalized;\n}\n\ntype BaseLayoutAlignValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'stretch'\n | 'baseline';\n\ntype BaseLayoutJustifyValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n BaseLayoutJustify,\n BaseLayoutJustifyValue\n> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n componentName: string,\n value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n throw new TypeError(\n `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n );\n }\n return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n componentName: string,\n value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n throw new TypeError(\n `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n );\n }\n return layoutJustifyValues[value];\n}\n","import { forwardRef, useEffect, useState } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseAvatarProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst sizeClassNames = {\n sm: 'h-7 w-7 text-xs',\n md: 'h-9 w-9 text-sm',\n lg: 'h-12 w-12 text-base',\n} as const;\n\nconst statusClassNames = {\n online: 'bg-[hsl(var(--success,142_72%_29%))]',\n busy: 'bg-[hsl(var(--warning,45_93%_47%))]',\n offline: 'bg-muted-foreground',\n neutral: 'bg-muted-foreground',\n} as const;\n\nfunction isStatusPreset(status: unknown): status is keyof typeof statusClassNames {\n return typeof status === 'string' && status in statusClassNames;\n}\n\nfunction getInitials(name?: string) {\n if (!name) return undefined;\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (!words.length) return undefined;\n return words\n .slice(0, 2)\n .map((word) => word[0]?.toUpperCase())\n .join('');\n}\n\nexport const BaseAvatar = forwardRef<HTMLDivElement, BaseAvatarProps>(\n function BaseAvatar(\n {\n src,\n alt,\n name,\n initials,\n icon,\n status,\n size = 'md',\n appearance,\n className,\n classNames,\n style,\n children,\n title,\n ...avatarProps\n },\n ref,\n ) {\n if (size !== 'sm' && size !== 'md' && size !== 'lg') {\n throw new TypeError('BaseAvatar size must be \"sm\", \"md\", or \"lg\".');\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const [failedSrc, setFailedSrc] = useState<string>();\n const imageFailed = Boolean(src && failedSrc === src);\n const showImage = Boolean(src) && !imageFailed;\n const generatedInitials = getInitials(name);\n const fallbackKind = hasRenderableNode(children)\n ? 'children'\n : hasRenderableNode(initials)\n ? 'initials'\n : hasRenderableNode(generatedInitials)\n ? 'name'\n : hasRenderableNode(icon)\n ? 'icon'\n : 'default';\n const fallback = hasRenderableNode(children)\n ? children\n : hasRenderableNode(initials)\n ? initials\n : hasRenderableNode(generatedInitials)\n ? generatedInitials\n : hasRenderableNode(icon)\n ? icon\n : '?';\n const statusKind = isStatusPreset(status)\n ? status\n : hasRenderableNode(status)\n ? 'custom'\n : undefined;\n\n useEffect(() => {\n setFailedSrc(undefined);\n }, [src]);\n\n return (\n <div\n {...componentAttributes}\n {...avatarProps}\n ref={ref}\n title={title ?? name}\n data-monkeys-component=\"avatar\"\n data-slot=\"root\"\n data-state={showImage ? 'image' : 'fallback'}\n data-size={size}\n data-status={statusKind}\n data-fallback={showImage ? undefined : fallbackKind}\n className={cn(\n theme.slots.avatarRoot,\n sizeClassNames[size],\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.avatar,\n ...style,\n }}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt ?? name ?? ''}\n data-slot=\"image\"\n data-size={size}\n data-status={statusKind}\n className={cn(theme.slots.avatarImage, classNames?.image)}\n onError={() => setFailedSrc(src)}\n />\n ) : (\n <span\n data-slot=\"fallback\"\n data-size={size}\n data-status={statusKind}\n data-fallback={fallbackKind}\n className={cn(\n theme.slots.avatarFallback,\n classNames?.fallback,\n classNames?.text,\n )}\n >\n {fallback}\n </span>\n )}\n\n {isStatusPreset(status) ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"status\"\n data-size={size}\n data-status={status}\n className={cn(\n theme.slots.avatarStatus,\n statusClassNames[status],\n classNames?.status,\n )}\n />\n ) : hasRenderableNode(status) ? (\n <span\n data-slot=\"status\"\n data-size={size}\n data-status=\"custom\"\n className={cn(theme.slots.avatarStatus, classNames?.status)}\n >\n {status}\n </span>\n ) : null}\n </div>\n );\n },\n);\n","import { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseButtonProps } from './types';\nimport {\n getBaseButtonToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst buttonSizeClassNames = {\n sm: 'h-8 px-2.5 text-xs',\n md: 'h-9 px-3 text-sm',\n lg: 'h-10 px-3.5 text-base',\n} as const;\n\nconst iconOnlySizeClassNames = {\n sm: 'h-8 w-8 px-0',\n md: 'h-9 w-9 px-0',\n lg: 'h-10 w-10 px-0',\n} as const;\n\nconst iconSizeClassNames = {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\nfunction nonEmptyText(value: string | undefined) {\n return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction LoadingIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-full w-full motion-safe:animate-spin motion-reduce:animate-none\"\n fill=\"none\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n className=\"opacity-25\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n />\n </svg>\n );\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n function BaseButton(\n {\n children,\n label,\n icon,\n endIcon,\n type = 'button',\n title,\n ariaLabel,\n tone,\n size,\n active = false,\n iconOnly = false,\n disabled = false,\n loading = false,\n stopPropagation = false,\n appearance,\n variant,\n density,\n state,\n className,\n classNames,\n style,\n onClick,\n 'aria-label': nativeAriaLabel,\n ...buttonProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['active', active],\n ['iconOnly', iconOnly],\n ['disabled', disabled],\n ['loading', loading],\n ['stopPropagation', stopPropagation],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseButton ${name} must be a boolean.`);\n }\n }\n if (size !== undefined && size !== 'sm' && size !== 'md' && size !== 'lg') {\n throw new TypeError('BaseButton size must be \"sm\", \"md\", or \"lg\".');\n }\n if (\n tone !== undefined &&\n tone !== 'default' &&\n tone !== 'primary' &&\n tone !== 'success' &&\n tone !== 'warning' &&\n tone !== 'danger' &&\n tone !== 'muted'\n ) {\n throw new TypeError(\n 'BaseButton tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance({\n ...resolvedAppearance,\n variant,\n density,\n state,\n });\n const resolvedLabel = children ?? label;\n const hasLabel =\n hasRenderableNode(resolvedLabel) &&\n (typeof resolvedLabel !== 'string' || Boolean(resolvedLabel.trim()));\n const explicitAriaLabel =\n nonEmptyText(ariaLabel) ?? nonEmptyText(nativeAriaLabel);\n const labelText =\n typeof resolvedLabel === 'string'\n ? nonEmptyText(resolvedLabel)\n : undefined;\n const resolvedTitle = nonEmptyText(title);\n if (iconOnly && !hasLabel && !explicitAriaLabel && !resolvedTitle) {\n throw new TypeError(\n 'BaseButton iconOnly requires ariaLabel, aria-label, title, or a renderable label.',\n );\n }\n const resolvedAriaLabel =\n explicitAriaLabel ??\n labelText ??\n resolvedTitle;\n const resolvedDisabled = disabled || loading;\n const resolvedTone = tone ?? 'default';\n const resolvedState = state ?? (loading\n ? 'loading'\n : disabled\n ? 'disabled'\n : active\n ? 'active'\n : 'idle');\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n if (resolvedDisabled) return;\n onClick?.(event);\n };\n\n return (\n <button\n {...componentAttributes}\n {...buttonProps}\n ref={ref}\n type={type}\n title={title}\n aria-label={resolvedAriaLabel}\n aria-pressed={active || undefined}\n aria-busy={loading || undefined}\n data-variant={theme.variant}\n data-density={theme.density}\n disabled={resolvedDisabled}\n data-monkeys-component=\"button\"\n data-slot=\"root\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n data-active={active || undefined}\n data-loading={loading || undefined}\n data-disabled={resolvedDisabled || undefined}\n data-icon-only={iconOnly || undefined}\n className={cn(\n theme.slots.buttonBase,\n iconOnly && theme.slots.buttonIconOnly,\n size && buttonSizeClassNames[size],\n iconOnly && size && iconOnlySizeClassNames[size],\n getBaseButtonToneClassName(theme, tone, active),\n resolvedDisabled && theme.slots.buttonDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.button,\n ...(active ? theme.styles.buttonActive : undefined),\n ...(resolvedDisabled ? theme.styles.buttonDisabled : undefined),\n ...style,\n }}\n onClick={handleClick}\n >\n {loading ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n <LoadingIcon />\n </span>\n ) : icon ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n {icon}\n </span>\n ) : null}\n {iconOnly ? (\n hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className=\"sr-only\"\n >\n {resolvedLabel}\n </span>\n ) : null\n ) : hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(theme.slots.buttonLabel, classNames?.label)}\n >\n {resolvedLabel}\n </span>\n ) : null}\n {!loading && endIcon ? (\n <span\n data-slot=\"end-icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n classNames?.endIcon,\n )}\n >\n {endIcon}\n </span>\n ) : null}\n </button>\n );\n },\n);\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n value: BasePortalContainer,\n source: string,\n): Element | null {\n const candidate = typeof value === 'function' ? value() : value;\n if (candidate === null) return null;\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n candidate.nodeType !== 1\n ) {\n throw new TypeError(`${source} must resolve to an Element or null.`);\n }\n return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n explicitProvided: boolean;\n explicitContainer?: BasePortalContainer;\n providerProvided: boolean;\n providerContainer?: BasePortalContainer;\n getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n explicitProvided,\n explicitContainer,\n providerProvided,\n providerContainer,\n getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n if (explicitProvided) {\n return resolveContainerValue(\n explicitContainer as BasePortalContainer,\n 'BasePortal container',\n );\n }\n if (providerProvided) {\n return resolveContainerValue(\n providerContainer as BasePortalContainer,\n 'MonkeysProvider portal.container',\n );\n }\n if (!getDocument) return null;\n\n const ownerDocument = getDocument();\n if (ownerDocument === null) return null;\n if (\n !ownerDocument ||\n typeof ownerDocument !== 'object' ||\n !('body' in ownerDocument)\n ) {\n throw new TypeError(\n 'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n );\n }\n return resolveContainerValue(\n ownerDocument.body,\n 'MonkeysProvider environment.getDocument().body',\n );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n throw new TypeError('BasePortal disabled must be a boolean.');\n }\n if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n throw new TypeError('BasePortal inline must be a boolean.');\n }\n\n const disabled = props.disabled ?? portalOptions.disabled ?? false;\n if (!mounted || disabled || props.inline) {\n return <>{props.children}</>;\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: props.container !== undefined,\n explicitContainer: props.container,\n providerProvided: portalOptions.container !== undefined,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument,\n });\n\n return container\n ? createPortal(props.children, container)\n : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n mounted: boolean;\n explicitDisabled?: boolean;\n explicitContainer?: MonkeysPortalContainer;\n providerDisabled?: boolean;\n providerContainer?: MonkeysPortalContainer;\n getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n mounted: boolean;\n disabled: boolean;\n shouldPortal: false;\n container: null;\n radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n mounted: true;\n disabled: false;\n shouldPortal: true;\n container: Element;\n radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n | BaseOverlayPortalInlineState\n | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled,\n explicitContainer,\n providerDisabled,\n providerContainer,\n getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n const disabled = explicitDisabled ?? providerDisabled ?? false;\n if (!mounted || disabled) {\n return {\n mounted,\n disabled,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: explicitContainer !== undefined,\n explicitContainer,\n providerProvided: providerContainer !== undefined,\n providerContainer,\n getDocument,\n });\n\n if (!container) {\n return {\n mounted: true,\n disabled: false,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n return {\n mounted: true,\n disabled: false,\n shouldPortal: true,\n container,\n radixPortalProps: Object.freeze({ container }),\n };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled: options.disabled,\n explicitContainer: options.container,\n providerDisabled: portalOptions.disabled,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument ?? getDefaultDocument,\n });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n children: ReactNode,\n portal: BaseOverlayPortalState,\n) {\n return portal.shouldPortal\n ? createPortal(children, portal.container)\n : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n children,\n container,\n disabled,\n}: BaseOverlayPortalProps) {\n const portal = useBaseOverlayPortal({ container, disabled });\n return renderBaseOverlayPortalContent(children, portal);\n}\n","import * as Tooltip from '@radix-ui/react-tooltip';\nimport {\n Fragment,\n forwardRef,\n isValidElement,\n useState,\n type ReactNode,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type { BaseTooltipPlacement, BaseTooltipProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction validateBoolean(value: unknown, name: string) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseTooltip ${name} must be a boolean.`);\n }\n}\n\nfunction validatePlacement(value: unknown) {\n if (\n value !== 'top' &&\n value !== 'bottom' &&\n value !== 'left' &&\n value !== 'right'\n ) {\n throw new TypeError(\n 'BaseTooltip placement must be \"top\", \"bottom\", \"left\", or \"right\".',\n );\n }\n}\n\nfunction normalizeTrigger(children: ReactNode, disabled: boolean) {\n if (isValidElement(children) && children.type !== Fragment) {\n return children;\n }\n\n return (\n <span tabIndex={!disabled && hasRenderableNode(children) ? 0 : undefined}>\n {children}\n </span>\n );\n}\n\nexport const BaseTooltip = forwardRef<HTMLSpanElement, BaseTooltipProps>(\n function BaseTooltip(\n {\n content,\n children,\n open,\n defaultOpen = false,\n placement = 'top',\n disabled = false,\n portal = false,\n appearance,\n className,\n classNames,\n style,\n onOpenChange,\n ...tooltipProps\n },\n ref,\n ) {\n if (open !== undefined) validateBoolean(open, 'open');\n validateBoolean(defaultOpen, 'defaultOpen');\n validateBoolean(disabled, 'disabled');\n validateBoolean(portal, 'portal');\n validatePlacement(placement);\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const canShow = !disabled && hasRenderableNode(content);\n const requestedOpen = isControlled ? open : uncontrolledOpen;\n const isOpen = canShow && requestedOpen;\n const portalState =\n portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (nextOpen && !canShow) return;\n if (!isControlled) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n const trigger = normalizeTrigger(children, disabled);\n const tooltipContent = canShow ? (\n <Tooltip.Content\n {...componentAttributes}\n side={placement}\n sideOffset={8}\n collisionPadding={8}\n data-monkeys-component=\"tooltip\"\n data-slot=\"content\"\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.tooltipContent, classNames?.content)}\n style={theme.styles.tooltip}\n >\n {content}\n </Tooltip.Content>\n ) : null;\n\n return (\n <span\n {...componentAttributes}\n {...tooltipProps}\n ref={ref}\n data-monkeys-component=\"tooltip\"\n data-slot=\"root\"\n data-state={isOpen ? 'open' : 'closed'}\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.tooltipRoot, classNames?.root, className)}\n style={style}\n >\n <Tooltip.Provider\n delayDuration={0}\n skipDelayDuration={0}\n disableHoverableContent\n >\n <Tooltip.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n delayDuration={0}\n disableHoverableContent\n >\n <span\n {...componentAttributes}\n data-monkeys-component=\"tooltip\"\n data-slot=\"trigger-wrapper\"\n data-state={isOpen ? 'open' : 'closed'}\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.tooltipTrigger, classNames?.trigger)}\n >\n <Tooltip.Trigger\n asChild\n {...componentAttributes}\n data-monkeys-component=\"tooltip\"\n data-slot=\"trigger\"\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n >\n {trigger}\n </Tooltip.Trigger>\n </span>\n {portal && overlayPortal.shouldPortal ? (\n <Tooltip.Portal {...overlayPortal.radixPortalProps}>\n {tooltipContent}\n </Tooltip.Portal>\n ) : (\n tooltipContent\n )}\n </Tooltip.Root>\n </Tooltip.Provider>\n </span>\n );\n },\n);\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../base/utils\";\n\nexport interface AppShellSidebarClassNames {\n root?: string;\n header?: string;\n navigation?: string;\n footer?: string;\n}\n\nexport interface AppShellSidebarProps extends Omit<\n ComponentPropsWithoutRef<\"aside\">,\n \"children\"\n> {\n /**\n * Primary navigation content. Routing, permissions and navigation state stay\n * with the consuming application.\n */\n navigation: ReactNode;\n /** Optional content placed above the primary navigation. */\n header?: ReactNode;\n /** Optional utility area kept separate from the primary navigation. */\n footer?: ReactNode;\n /** Width override. Defaults to the component token, then 16rem. */\n width?: CSSProperties[\"width\"];\n classNames?: AppShellSidebarClassNames;\n}\n\nconst rootTokenStyles: CSSProperties = {\n width: \"var(--monkeys-component-app-shell-sidebar-width, 16rem)\",\n borderRadius:\n \"var(--monkeys-component-app-shell-sidebar-radius, var(--radius, 0.75rem))\",\n background:\n \"var(--monkeys-component-app-shell-sidebar-background, hsl(var(--card)))\",\n color:\n \"var(--monkeys-component-app-shell-sidebar-foreground, hsl(var(--card-foreground)))\",\n borderColor:\n \"var(--monkeys-component-app-shell-sidebar-border-color, hsl(var(--border)))\",\n boxShadow: \"var(--monkeys-component-app-shell-sidebar-shadow, none)\",\n};\n\nconst headerTokenStyles: CSSProperties = {\n padding:\n \"var(--monkeys-component-app-shell-sidebar-header-padding, var(--global-spacing, 0.75rem))\",\n borderColor:\n \"var(--monkeys-component-app-shell-sidebar-header-border-color, hsl(var(--border)))\",\n};\n\nconst navigationTokenStyles: CSSProperties & {\n \"--monkeys-component-accordion-item-border-color\": string;\n} = {\n padding:\n \"var(--monkeys-component-app-shell-sidebar-navigation-padding, var(--global-spacing, 0.75rem))\",\n \"--monkeys-component-accordion-item-border-color\": \"transparent\",\n};\n\nconst footerTokenStyles: CSSProperties = {\n padding:\n \"var(--monkeys-component-app-shell-sidebar-footer-padding, var(--global-spacing, 0.75rem))\",\n background:\n \"var(--monkeys-component-app-shell-sidebar-footer-background, hsl(var(--muted) / 0.22))\",\n borderColor:\n \"var(--monkeys-component-app-shell-sidebar-footer-border-color, hsl(var(--border)))\",\n};\n\n/**\n * Persistent, outermost application navigation surface.\n *\n * This is intentionally a single shell component rather than a composition of\n * generic sidebar primitives. It owns the surface hierarchy while applications\n * retain routing and navigation behavior inside the semantic slots.\n */\nexport const AppShellSidebar = forwardRef<HTMLElement, AppShellSidebarProps>(\n function AppShellSidebar(\n {\n navigation,\n header,\n footer,\n width,\n className,\n classNames,\n style,\n \"aria-label\": ariaLabel = \"Application navigation\",\n ...props\n },\n ref,\n ) {\n return (\n <aside\n ref={ref}\n aria-label={ariaLabel}\n data-app-shell-sidebar=\"\"\n className={cn(\n \"relative isolate flex h-full min-h-0 shrink-0 flex-col overflow-hidden border\",\n classNames?.root,\n className,\n )}\n style={{\n ...rootTokenStyles,\n ...(width === undefined ? null : { width }),\n ...style,\n }}\n {...props}\n >\n {header ? (\n <div\n data-slot=\"header\"\n className={cn(\"shrink-0 border-b\", classNames?.header)}\n style={headerTokenStyles}\n >\n {header}\n </div>\n ) : null}\n\n <div\n data-slot=\"navigation\"\n className={cn(\n \"relative min-h-0 flex-1 overflow-hidden\",\n classNames?.navigation,\n )}\n style={navigationTokenStyles}\n >\n {navigation}\n </div>\n\n {footer ? (\n <div\n data-slot=\"footer\"\n className={cn(\"shrink-0 border-t\", classNames?.footer)}\n style={footerTokenStyles}\n >\n {footer}\n </div>\n ) : null}\n </aside>\n );\n },\n);\n\nAppShellSidebar.displayName = \"AppShellSidebar\";\n","import type { ReactNode } from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport {\n BaseAvatar,\n BaseButton,\n cn,\n type BaseAppearance,\n} from '../base';\n\nexport type UserAccountMenuRadius =\n | 'default'\n | 'none'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'full';\n\nexport type UserAccountMenuSide = 'top' | 'right' | 'bottom' | 'left';\nexport type UserAccountMenuTriggerVariant = 'avatar' | 'profile';\n\nexport interface UserAccountMenuUser {\n avatarAlt?: string;\n avatarUrl?: string;\n initials?: string;\n name?: string;\n secondaryText?: ReactNode;\n}\n\nexport interface UserAccountMenuSelectorOption {\n disabled?: boolean;\n icon?: ReactNode;\n label: ReactNode;\n value: string;\n}\n\nexport interface UserAccountMenuSelectorConfig {\n contentWidthClassName?: string;\n disabled?: boolean;\n id?: string;\n icon?: ReactNode;\n label: ReactNode;\n onChange?: (value: string) => void;\n options: UserAccountMenuSelectorOption[];\n value: string;\n visible?: boolean;\n}\n\nexport interface UserAccountMenuItem {\n disabled?: boolean;\n icon?: ReactNode;\n id: string;\n label: ReactNode;\n onSelect?: () => void;\n separatorBefore?: boolean;\n shortcut?: ReactNode;\n tone?: 'default' | 'danger';\n visible?: boolean;\n}\n\nexport interface UserAccountMenuClassNames {\n avatar?: string;\n content?: string;\n dangerItem?: string;\n item?: string;\n itemIcon?: string;\n label?: string;\n root?: string;\n secondaryText?: string;\n separator?: string;\n subContent?: string;\n subTrigger?: string;\n trigger?: string;\n userName?: string;\n}\n\nexport interface UserAccountMenuProps {\n align?: 'start' | 'center' | 'end';\n appearance?: BaseAppearance;\n ariaLabel?: string;\n className?: string;\n classNames?: UserAccountMenuClassNames;\n contentWidthClassName?: string;\n fallbackName?: string;\n items?: UserAccountMenuItem[];\n menuRadius?: UserAccountMenuRadius;\n selectors?: UserAccountMenuSelectorConfig[];\n side?: UserAccountMenuSide;\n sideOffset?: number;\n triggerEndIcon?: ReactNode;\n triggerTitle?: string;\n triggerVariant?: UserAccountMenuTriggerVariant;\n user: UserAccountMenuUser;\n}\n\nconst defaultAppearance: BaseAppearance = {\n preset: 'soft',\n density: 'compact',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n};\n\nconst radiusClassNames: Record<UserAccountMenuRadius, string> = {\n default: 'rounded-md',\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n};\n\nfunction CheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-3 w-3\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n );\n}\n\nfunction getInitials(name?: string) {\n if (!name) return 'U';\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (!words.length) return 'U';\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase();\n return words\n .slice(0, 2)\n .map((word) => word[0])\n .join('')\n .toUpperCase();\n}\n\nfunction renderIcon(icon: ReactNode, className?: string) {\n if (!icon) return null;\n return (\n <span className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center', className)}>\n {icon}\n </span>\n );\n}\n\nfunction getCurrentOptionLabel(selector: UserAccountMenuSelectorConfig) {\n return selector.options.find((option) => option.value === selector.value)?.label ?? selector.value;\n}\n\nfunction UserAccountMenuSelector({\n classNames,\n menuRadius,\n selector,\n}: {\n classNames?: UserAccountMenuClassNames;\n menuRadius: UserAccountMenuRadius;\n selector: UserAccountMenuSelectorConfig;\n}) {\n if (selector.visible === false || selector.options.length === 0) return null;\n\n const radiusClass = radiusClassNames[menuRadius];\n const currentLabel = getCurrentOptionLabel(selector);\n\n return (\n <DropdownMenu.Sub>\n <DropdownMenu.SubTrigger\n disabled={selector.disabled}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radiusClass,\n classNames?.subTrigger,\n )}\n >\n {renderIcon(selector.icon)}\n <span className=\"min-w-0 truncate\">{selector.label}</span>\n <span className=\"ml-auto min-w-0 max-w-[7rem] truncate text-xs text-[hsl(var(--muted-foreground))]\">\n {currentLabel}\n </span>\n </DropdownMenu.SubTrigger>\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n sideOffset={8}\n className={cn(\n 'z-50 min-w-40 border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1.5 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95',\n radiusClass,\n selector.contentWidthClassName,\n classNames?.subContent,\n )}\n >\n <DropdownMenu.RadioGroup value={selector.value} onValueChange={selector.onChange}>\n {selector.options.map((option) => (\n <DropdownMenu.RadioItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 pl-8 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radiusClass,\n classNames?.item,\n )}\n >\n <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex h-4 w-4 items-center justify-center\">\n <CheckIcon />\n </DropdownMenu.ItemIndicator>\n {renderIcon(option.icon, classNames?.itemIcon)}\n <span className=\"min-w-0 truncate\">{option.label}</span>\n </DropdownMenu.RadioItem>\n ))}\n </DropdownMenu.RadioGroup>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n );\n}\n\nexport function UserAccountMenu({\n align = 'end',\n appearance = defaultAppearance,\n ariaLabel,\n className,\n classNames,\n contentWidthClassName = 'w-56',\n fallbackName = 'User',\n items = [],\n menuRadius = 'default',\n selectors = [],\n side = 'bottom',\n sideOffset = 8,\n triggerEndIcon,\n triggerTitle,\n triggerVariant = 'avatar',\n user,\n}: UserAccountMenuProps) {\n const displayName = user.name?.trim() || fallbackName;\n const initials = user.initials ?? getInitials(displayName);\n const radiusClass = radiusClassNames[menuRadius];\n const visibleSelectors = selectors.filter(\n (selector) => selector.visible !== false && selector.options.length > 0,\n );\n const visibleItems = items.filter((item) => item.visible !== false);\n const hasMenuBody = visibleSelectors.length > 0 || visibleItems.length > 0;\n\n const avatar = (\n <BaseAvatar\n appearance={appearance}\n alt={user.avatarAlt ?? displayName}\n className={cn('h-8 w-8', classNames?.avatar)}\n initials={initials}\n name={displayName}\n size=\"sm\"\n src={user.avatarUrl}\n />\n );\n const isProfileTrigger = triggerVariant === 'profile';\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <BaseButton\n appearance={appearance}\n ariaLabel={ariaLabel ?? displayName}\n className={cn(\n isProfileTrigger\n ? 'h-auto w-full justify-start rounded-lg border-transparent bg-transparent px-2 py-2 text-left shadow-none transition-all hover:bg-[hsl(var(--muted))]/60'\n : 'h-9 w-9 overflow-visible rounded-full border-transparent bg-transparent p-0 shadow-none transition-all hover:ring-2 hover:ring-[hsl(var(--ring))]/20',\n className,\n classNames?.root,\n classNames?.trigger,\n )}\n classNames={{\n icon: 'h-8 w-8',\n label: isProfileTrigger ? 'min-w-0 flex-1 text-left' : undefined,\n }}\n endIcon={isProfileTrigger ? (triggerEndIcon ?? <MoreIcon />) : undefined}\n icon={avatar}\n iconOnly={!isProfileTrigger}\n label={\n isProfileTrigger ? (\n <span className=\"flex min-w-0 flex-col items-start\">\n <span className=\"max-w-full truncate text-sm font-medium leading-none text-[hsl(var(--foreground))]\">\n {displayName}\n </span>\n {user.secondaryText ? (\n <span className=\"mt-1 max-w-full truncate text-xs leading-none text-[hsl(var(--muted-foreground))]\">\n {user.secondaryText}\n </span>\n ) : null}\n </span>\n ) : undefined\n }\n title={triggerTitle ?? displayName}\n tone=\"muted\"\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1.5 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95',\n contentWidthClassName,\n radiusClass,\n classNames?.content,\n )}\n >\n <DropdownMenu.Label className={cn('px-2 py-1.5 font-normal', classNames?.label)}>\n <div className=\"flex min-w-0 items-center gap-2\">\n {avatar}\n <div className=\"flex min-w-0 flex-col\">\n <span className={cn('truncate text-sm font-medium leading-none', classNames?.userName)}>\n {displayName}\n </span>\n {user.secondaryText ? (\n <span\n className={cn(\n 'truncate pt-1 text-xs leading-none text-[hsl(var(--muted-foreground))]',\n classNames?.secondaryText,\n )}\n >\n {user.secondaryText}\n </span>\n ) : null}\n </div>\n </div>\n </DropdownMenu.Label>\n\n {hasMenuBody ? (\n <DropdownMenu.Separator\n className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n />\n ) : null}\n\n {visibleSelectors.map((selector, index) => (\n <UserAccountMenuSelector\n key={selector.id ?? `selector-${index}`}\n classNames={classNames}\n menuRadius={menuRadius}\n selector={selector}\n />\n ))}\n\n {visibleSelectors.length > 0 && visibleItems.length > 0 ? (\n <DropdownMenu.Separator\n className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n />\n ) : null}\n\n {visibleItems.map((item) => (\n <div key={item.id}>\n {item.separatorBefore ? (\n <DropdownMenu.Separator\n className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n />\n ) : null}\n <DropdownMenu.Item\n disabled={item.disabled}\n onSelect={item.onSelect}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radiusClass,\n item.tone === 'danger' &&\n 'text-[hsl(var(--destructive))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--destructive))] focus:text-[hsl(var(--destructive))]',\n classNames?.item,\n item.tone === 'danger' && classNames?.dangerItem,\n )}\n >\n {renderIcon(item.icon, classNames?.itemIcon)}\n <span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\n {item.shortcut ? (\n <span className=\"ml-3 shrink-0 text-xs text-[hsl(var(--muted-foreground))]\">\n {item.shortcut}\n </span>\n ) : null}\n </DropdownMenu.Item>\n </div>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { BaseButton, BaseTooltip, type BaseAppearance } from \"../base\";\nexport { AppShellSidebar } from \"./AppShellSidebar\";\nexport type {\n AppShellSidebarClassNames,\n AppShellSidebarProps,\n} from \"./AppShellSidebar\";\nexport { UserAccountMenu } from \"./UserAccountMenu\";\nexport type {\n UserAccountMenuClassNames,\n UserAccountMenuItem,\n UserAccountMenuProps,\n UserAccountMenuRadius,\n UserAccountMenuSelectorConfig,\n UserAccountMenuSelectorOption,\n UserAccountMenuSide,\n UserAccountMenuTriggerVariant,\n UserAccountMenuUser,\n} from \"./UserAccountMenu\";\n\n// ============================================================\n// cn utility (inline clsx + tailwind-merge–lite for zero deps)\n// ============================================================\nexport function cn(...inputs: (string | undefined | null | false)[]): string {\n return inputs.filter(Boolean).join(\" \");\n}\n\n// ============================================================\n// NavButton\n// ============================================================\nexport interface NavButtonProps {\n /** 是否处于激活状态 */\n active?: boolean;\n /** 左侧图标 */\n icon?: ReactNode;\n /** 右侧附加内容(如 chevron) */\n postfix?: ReactNode;\n /** 点击回调 */\n onClick?: () => void;\n className?: string;\n children: ReactNode;\n}\n\nexport function NavButton({\n active,\n icon,\n postfix,\n onClick,\n className,\n children,\n}: NavButtonProps) {\n return (\n <div\n className={cn(\n \"flex w-full cursor-pointer select-none items-center gap-2 rounded-xl border p-2 text-xs text-[hsl(var(--foreground))] transition-colors\",\n active\n ? \"border-[hsl(var(--input))] bg-[hsl(var(--muted))] font-bold\"\n : \"border-transparent hover:border-[hsl(var(--input))]/60 hover:bg-[hsl(var(--muted))]/60\",\n className,\n )}\n onClick={onClick}\n >\n <div className=\"w-[20px] [&_svg]:h-[16px] [&_svg]:w-[16px]\">{icon}</div>\n <span className=\"text-sm\">{children}</span>\n {postfix}\n </div>\n );\n}\n\n// ============================================================\n// AppHeader\n// ============================================================\nexport interface HeaderTab {\n id: string;\n label: string;\n}\n\nexport interface AppHeaderLogo {\n /** Logo 图片 URL,若为空则显示 fallback */\n url?: string;\n /** 品牌名称 */\n title: string;\n /** 点击 Logo 回调 */\n onClick?: () => void;\n}\n\nexport interface AppHeaderUser {\n name?: string;\n email?: string;\n photo?: string;\n}\n\nexport interface AppHeaderProps {\n /** 品牌 Logo */\n logo: AppHeaderLogo;\n /** 导航 tabs */\n tabs?: HeaderTab[];\n /** 当前激活的 tab id */\n activeTab?: string;\n /** tab 切换回调 */\n onTabChange?: (tabId: string) => void;\n /** 用户信息 */\n user?: AppHeaderUser;\n /** 退出登录回调 */\n onLogout?: () => void;\n /** 退出登录文案 */\n logoutLabel?: string;\n /** 用户菜单中的额外菜单项(在退出登录按钮之前渲染) */\n userMenuItems?: ReactNode;\n /** header 右侧额外内容 */\n extra?: ReactNode;\n className?: string;\n}\n\nexport function AppHeader({\n logo,\n tabs,\n activeTab,\n onTabChange,\n user,\n onLogout,\n logoutLabel = \"退出登录\",\n userMenuItems,\n extra,\n className,\n}: AppHeaderProps) {\n const getUserInitials = (name: string) =>\n name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n return (\n <header\n className={cn(\n \"flex h-[72px] w-full shrink-0 items-center justify-between gap-4 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n className,\n )}\n >\n {/* Logo */}\n <div\n className=\"flex shrink-0 cursor-pointer items-center gap-2\"\n onClick={logo.onClick}\n >\n <div\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-lg overflow-hidden\",\n logo.url\n ? \"bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"h-full w-full object-contain\"\n />\n ) : (\n <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n )}\n </div>\n <span className=\"text-lg font-semibold whitespace-nowrap\">\n {logo.title}\n </span>\n </div>\n\n {/* Separator + Tabs */}\n {tabs && tabs.length > 0 && (\n <>\n <div className=\"h-1/2 w-px bg-[hsl(var(--border))]\" />\n <div className=\"flex flex-1 items-center\">\n <div className=\"inline-flex h-9 items-center gap-1 rounded-md bg-transparent p-1\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all\",\n tab.id === activeTab\n ? \"bg-[hsl(var(--muted))] text-[hsl(var(--foreground))] shadow-sm\"\n : \"text-[hsl(var(--muted-foreground))] hover:bg-[hsl(var(--muted))]/50\",\n )}\n onClick={() => onTabChange?.(tab.id)}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n </>\n )}\n {(!tabs || tabs.length === 0) && <div className=\"flex-1\" />}\n\n {/* Right side */}\n <div className=\"flex shrink-0 items-center gap-4\">\n {extra}\n {user && (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button className=\"flex h-8 w-8 items-center justify-center rounded-full hover:ring-2 hover:ring-[hsl(var(--ring))]/20 transition-all overflow-hidden focus-visible:outline-none\">\n {user.photo ? (\n <img\n src={user.photo}\n alt={user.name}\n className=\"h-8 w-8 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-xs font-medium\">\n {user.name ? getUserInitials(user.name) : \"U\"}\n </div>\n )}\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className=\"z-50 w-52 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n sideOffset={5}\n align=\"end\"\n >\n {/* User info label */}\n <DropdownMenu.Label className=\"flex items-center gap-2 px-2 py-1.5 font-normal\">\n {user.photo ? (\n <img\n src={user.photo}\n alt={user.name}\n className=\"h-8 w-8 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-xs font-medium\">\n {user.name ? getUserInitials(user.name) : \"U\"}\n </div>\n )}\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium leading-none\">\n {user.name}\n </span>\n {user.email && (\n <span className=\"text-xs text-[hsl(var(--muted-foreground))] leading-none mt-1\">\n {user.email}\n </span>\n )}\n </div>\n </DropdownMenu.Label>\n\n <DropdownMenu.Separator className=\"h-px bg-[hsl(var(--border))] my-1\" />\n\n <DropdownMenu.Group>\n {userMenuItems}\n\n {/* Logout */}\n <DropdownMenu.Item\n className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-[hsl(var(--destructive))] outline-none transition-colors hover:bg-[hsl(var(--accent))]\"\n onSelect={() => onLogout?.()}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n {logoutLabel}\n </DropdownMenu.Item>\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n )}\n </div>\n </header>\n );\n}\n\n// ============================================================\n// AppSidebar\n// ============================================================\nexport interface SidebarNavItem {\n id: string;\n label: string;\n icon?: ReactNode;\n /** 如果有 children 则为分组,点击展开/折叠 */\n children?: SidebarNavItem[];\n}\n\nexport interface SidebarAccount {\n name?: string;\n photo?: string;\n}\n\nexport interface AppSidebarProps {\n /** Logo */\n logo?: AppHeaderLogo;\n /** 导航菜单 */\n navItems: SidebarNavItem[];\n /** 当前路径/激活的 item id */\n activeItemId?: string;\n /** 点击导航项回调 */\n onNavigate?: (itemId: string) => void;\n /** 账户信息 */\n account?: SidebarAccount;\n /** 退出登录回调 */\n onLogout?: () => void;\n /** 退出登录文案 */\n logoutLabel?: string;\n /** 底部额外内容(如版本号) */\n footer?: ReactNode;\n /** 默认展开的分组 id 列表 */\n defaultExpandedGroups?: string[];\n className?: string;\n}\n\nexport function AppSidebar({\n logo,\n navItems,\n activeItemId,\n onNavigate,\n account,\n onLogout,\n logoutLabel = \"退出登录\",\n footer,\n defaultExpandedGroups,\n className,\n}: AppSidebarProps) {\n return (\n <div\n className={cn(\n \"flex w-[13.7rem] shrink-0 flex-col justify-between gap-[var(--global-spacing,0.75rem)] overflow-y-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-5\",\n className,\n )}\n >\n {/* Logo */}\n {logo && (\n <div\n className=\"flex shrink-0 cursor-pointer items-center gap-2\"\n onClick={logo.onClick}\n >\n <div\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-lg overflow-hidden\",\n logo.url\n ? \"bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"h-full w-full object-contain\"\n />\n ) : (\n <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n )}\n </div>\n <span className=\"text-lg font-semibold whitespace-nowrap\">\n {logo.title}\n </span>\n </div>\n )}\n\n {/* Navigation */}\n <SidebarNavList\n items={navItems}\n activeItemId={activeItemId}\n onNavigate={onNavigate}\n defaultExpandedGroups={defaultExpandedGroups}\n />\n\n {/* Account Section */}\n {(account || footer) && (\n <div className=\"flex flex-col gap-2\">\n {account && (\n <div className=\"flex w-full flex-col gap-2 rounded-lg bg-[hsl(var(--muted))] p-2 shadow-sm\">\n <div className=\"flex w-full items-center justify-between px-3 py-1\">\n <div className=\"flex items-center gap-2\">\n {account.photo ? (\n <img\n src={account.photo}\n alt={account.name}\n className=\"h-5 w-5 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-[10px] font-medium\">\n {account.name\n ? account.name.charAt(0).toUpperCase()\n : \"U\"}\n </div>\n )}\n <span className=\"text-xs font-medium truncate max-w-[100px]\">\n {account.name}\n </span>\n </div>\n {onLogout && (\n <button\n onClick={onLogout}\n className=\"flex items-center justify-center text-[hsl(var(--destructive))] hover:opacity-80 transition-opacity\"\n title={logoutLabel}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )}\n {footer}\n </div>\n )}\n </div>\n );\n}\n\n// ============================================================\n// SidebarNavList (internal accordion-style nav)\n// ============================================================\ninterface SidebarNavListProps {\n items: SidebarNavItem[];\n activeItemId?: string;\n onNavigate?: (itemId: string) => void;\n defaultExpandedGroups?: string[];\n}\n\nfunction SidebarNavList({\n items,\n activeItemId,\n onNavigate,\n defaultExpandedGroups,\n}: SidebarNavListProps) {\n const [expanded, setExpanded] = useState<Record<string, boolean>>(() => {\n const map: Record<string, boolean> = {};\n (defaultExpandedGroups ?? items.map((i) => i.id)).forEach((id) => {\n map[id] = true;\n });\n return map;\n });\n const [localActiveItemId, setLocalActiveItemId] = useState<\n string | undefined\n >(activeItemId);\n\n useEffect(() => {\n if (activeItemId !== undefined) {\n setLocalActiveItemId(activeItemId);\n }\n }, [activeItemId]);\n\n const toggle = (id: string) => {\n setExpanded((prev: Record<string, boolean>) => ({\n ...prev,\n [id]: !prev[id],\n }));\n };\n const resolvedActiveItemId = activeItemId ?? localActiveItemId;\n\n return (\n <div\n className=\"h-full flex-1 overflow-y-auto\"\n style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n >\n <style>{`.monkeys-sidebar-nav::-webkit-scrollbar { display: none; }`}</style>\n <div className=\"monkeys-sidebar-nav flex w-full flex-col gap-2 text-xs text-[hsl(var(--foreground))]\">\n {items.map((item) => {\n if (item.children && item.children.length > 0) {\n const isExpanded = expanded[item.id] ?? true;\n return (\n <div key={item.id}>\n <NavButton\n icon={item.icon}\n onClick={() => toggle(item.id)}\n postfix={\n <div className=\"flex flex-1 justify-end\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"shrink-0 text-[hsl(var(--foreground))] transition-transform duration-200\"\n style={{\n transform: isExpanded\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n }\n >\n {item.label}\n </NavButton>\n {isExpanded && (\n <div className=\"flex flex-col gap-1 mt-1\">\n {item.children.map((child) => (\n <NavButton\n key={child.id}\n active={child.id === resolvedActiveItemId}\n onClick={() => {\n setLocalActiveItemId(child.id);\n onNavigate?.(child.id);\n }}\n >\n {child.label}\n </NavButton>\n ))}\n </div>\n )}\n </div>\n );\n }\n return (\n <NavButton\n key={item.id}\n icon={item.icon}\n active={item.id === resolvedActiveItemId}\n onClick={() => {\n setLocalActiveItemId(item.id);\n onNavigate?.(item.id);\n }}\n >\n {item.label}\n </NavButton>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ============================================================\n// AppLayout\n// ============================================================\nexport interface AppLayoutProps {\n /** header 组件 */\n header?: ReactNode;\n /** sidebar 组件 */\n sidebar?: ReactNode;\n /** 主内容 */\n children: ReactNode;\n /** 是否 flush 布局(无内边距) */\n flush?: boolean;\n className?: string;\n}\n\nexport function AppLayout({\n header,\n sidebar,\n children,\n flush = false,\n className,\n}: AppLayoutProps) {\n return (\n <div\n className={cn(\n \"flex h-screen flex-col gap-[var(--global-spacing,0.75rem)] overflow-hidden p-[var(--global-spacing,0.75rem)]\",\n className,\n )}\n style={{ backgroundColor: \"hsl(var(--muted))\" }}\n >\n {header ? header : null}\n <div className=\"flex flex-1 gap-[var(--global-spacing,0.75rem)] overflow-hidden min-h-0\">\n {sidebar ? sidebar : null}\n <main\n className={cn(\n \"flex-1 min-h-0 overflow-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))]\",\n !flush && \"overflow-y-auto\",\n )}\n >\n {flush ? (\n children\n ) : (\n <div className=\"h-full overflow-y-auto\">{children}</div>\n )}\n </main>\n </div>\n </div>\n );\n}\n\n// ============================================================\n// NavigationLayout\n// ============================================================\nexport type NavigationMode = \"sidebar\" | \"headbar\";\nexport type HeadbarLayoutMode = \"boxed\" | \"full-bleed\";\nexport type HeadbarMenuRadius =\n \"default\" | \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type HeadbarNavPosition = \"left\" | \"center\" | \"right\";\nexport type HeadbarSurface = \"card\" | \"glassy\" | \"ghost\";\n\nexport interface LayoutNavItem {\n id: string;\n label: ReactNode;\n headbarLabel?: ReactNode;\n icon?: ReactNode;\n children?: LayoutNavItem[];\n disabled?: boolean;\n trailing?: ReactNode;\n}\n\ninterface NavigationLayoutAction {\n id: string;\n label: ReactNode;\n title?: string;\n icon?: ReactNode;\n onClick?: () => void;\n}\n\nexport interface HeadbarLayout {\n brandTitle?: ReactNode;\n heightPx?: number;\n layoutMode?: HeadbarLayoutMode;\n menuRadius?: HeadbarMenuRadius;\n navPosition?: HeadbarNavPosition;\n surface?: HeadbarSurface;\n}\n\nexport interface NavigationLayoutProps {\n activeItemId?: string;\n activeRootId?: string;\n allowModeSwitch?: boolean;\n accountMenu?: ReactNode;\n children: ReactNode;\n className?: string;\n collapsedSidebarAccountMenu?: ReactNode;\n collapsedSidebarWidth?: string;\n defaultMode?: NavigationMode;\n defaultSidebarCollapsed?: boolean;\n expandedSidebarWidth?: string;\n expandSidebarLabel?: string;\n flush?: boolean;\n headbarActions?: ReactNode;\n headbarLayout?: HeadbarLayout;\n logo?: AppHeaderLogo;\n mode?: NavigationMode;\n navItems: LayoutNavItem[];\n onModeChange?: (mode: NavigationMode) => void;\n onNavigate?: (itemId: string) => void;\n onSidebarCollapsedChange?: (collapsed: boolean) => void;\n renderHeadbarExtra?: ReactNode;\n collapseSidebarLabel?: string;\n sidebarCollapsed?: boolean;\n sidebarAccountMenu?: ReactNode;\n sidebarFooter?: ReactNode;\n sidebarHeader?: ReactNode;\n switchToHeadbarLabel?: string;\n switchToSidebarLabel?: string;\n}\n\nconst NAVIGATION_LAYOUT_SIDEBAR_EXPANDED_WIDTH = \"13.7rem\";\nconst NAVIGATION_LAYOUT_SIDEBAR_COLLAPSED_WIDTH = \"4.25rem\";\nconst NAVIGATION_LAYOUT_TRANSITION_TIMING = \"cubic-bezier(0.22, 1, 0.36, 1)\";\nconst NAVIGATION_LAYOUT_HEADBAR_DEFAULT_HEIGHT_PX = 72;\nconst NAVIGATION_LAYOUT_HEADBAR_MIN_HEIGHT_PX = 56;\nconst NAVIGATION_LAYOUT_HEADBAR_MAX_HEIGHT_PX = 120;\nconst NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX = 64;\nconst NAVIGATION_LAYOUT_HEADBAR_BOXED_VERTICAL_PADDING_PX = 12;\nconst NAVIGATION_LAYOUT_HEADBAR_COMPACT_VERTICAL_PADDING_PX = 8;\nconst NAVIGATION_LAYOUT_HEADBAR_LOGO_DEFAULT_SIZE_PX = 44;\nconst NAVIGATION_LAYOUT_HEADBAR_LOGO_COMPACT_SIZE_PX = 36;\nconst NAVIGATION_LAYOUT_DEFAULT_APPEARANCE: BaseAppearance = {\n preset: \"soft\",\n density: \"compact\",\n radius: \"lg\",\n border: \"subtle\",\n background: \"soft\",\n};\n\nconst NAVIGATION_LAYOUT_MENU_RADIUS_CLASS_MAP: Record<\n Exclude<HeadbarMenuRadius, \"default\">,\n { all: string; left: string; right: string }\n> = {\n none: { all: \"rounded-none\", left: \"!rounded-none\", right: \"!rounded-none\" },\n sm: {\n all: \"rounded-sm\",\n left: \"!rounded-l-sm !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-sm\",\n },\n md: {\n all: \"rounded-md\",\n left: \"!rounded-l-md !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-md\",\n },\n lg: {\n all: \"rounded-lg\",\n left: \"!rounded-l-lg !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-lg\",\n },\n xl: {\n all: \"rounded-xl\",\n left: \"!rounded-l-xl !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-xl\",\n },\n full: {\n all: \"rounded-full\",\n left: \"!rounded-l-full !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-full\",\n },\n};\n\nfunction clampHeadbarHeight(value?: number) {\n if (typeof value !== \"number\" || !Number.isFinite(value))\n return NAVIGATION_LAYOUT_HEADBAR_DEFAULT_HEIGHT_PX;\n return Math.min(\n NAVIGATION_LAYOUT_HEADBAR_MAX_HEIGHT_PX,\n Math.max(NAVIGATION_LAYOUT_HEADBAR_MIN_HEIGHT_PX, Math.round(value)),\n );\n}\n\nfunction getHeadbarVerticalPaddingPx(heightPx: number) {\n return heightPx <= NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX\n ? NAVIGATION_LAYOUT_HEADBAR_COMPACT_VERTICAL_PADDING_PX\n : NAVIGATION_LAYOUT_HEADBAR_BOXED_VERTICAL_PADDING_PX;\n}\n\nfunction getHeadbarLogoSizePx(heightPx: number) {\n return heightPx <= NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX\n ? NAVIGATION_LAYOUT_HEADBAR_LOGO_COMPACT_SIZE_PX\n : NAVIGATION_LAYOUT_HEADBAR_LOGO_DEFAULT_SIZE_PX;\n}\n\nfunction getHeadbarMenuRadiusClass(\n menuRadius: HeadbarMenuRadius = \"default\",\n part: \"all\" | \"left\" | \"right\" = \"all\",\n) {\n if (menuRadius === \"default\") {\n if (part === \"left\") return \"rounded-l-lg rounded-r-none\";\n if (part === \"right\") return \"rounded-l-none rounded-r-lg\";\n return \"rounded-lg\";\n }\n return NAVIGATION_LAYOUT_MENU_RADIUS_CLASS_MAP[menuRadius][part];\n}\n\nfunction getHeadbarFrameClass(\n layoutMode: HeadbarLayoutMode = \"boxed\",\n navPosition: HeadbarNavPosition = \"center\",\n) {\n const columns =\n navPosition === \"center\"\n ? \"grid-cols-[minmax(max-content,1fr)_minmax(0,max-content)_minmax(max-content,1fr)]\"\n : \"grid-cols-[max-content_minmax(0,1fr)_max-content]\";\n return layoutMode === \"full-bleed\"\n ? cn(\n \"sticky top-0 z-40 grid w-full shrink-0 items-center gap-4 rounded-none border-b border-x-0 border-t-0 border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n columns,\n )\n : cn(\n \"sticky top-0 z-40 grid w-full shrink-0 items-center gap-4 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n columns,\n );\n}\n\nfunction getHeadbarFrameStyle(\n layoutMode: HeadbarLayoutMode = \"boxed\",\n heightPx: number,\n surface: HeadbarSurface = \"card\",\n): CSSProperties {\n const verticalPaddingPx = getHeadbarVerticalPaddingPx(heightPx);\n const fallbackBackground = \"hsl(var(--background))\";\n const style: CSSProperties = {\n height: `var(--monkeys-component-navigation-headbar-height, ${heightPx}px)`,\n minHeight: `var(--monkeys-component-navigation-headbar-height, ${heightPx}px)`,\n paddingTop: `${verticalPaddingPx}px`,\n paddingBottom: `${verticalPaddingPx}px`,\n background: `var(--monkeys-component-navigation-headbar-frame-background, ${fallbackBackground})`,\n color:\n \"var(--monkeys-component-navigation-headbar-frame-foreground, hsl(var(--foreground)))\",\n borderColor:\n surface === \"glassy\"\n ? \"var(--monkeys-component-navigation-headbar-frame-border-color, rgb(255 255 255 / 0.5))\"\n : \"var(--monkeys-component-navigation-headbar-frame-border-color, hsl(var(--input)))\",\n borderRadius:\n layoutMode === \"full-bleed\"\n ? \"0\"\n : \"var(--monkeys-component-navigation-headbar-frame-radius, var(--radius, 0.75rem))\",\n boxShadow:\n surface === \"glassy\"\n ? \"var(--monkeys-component-navigation-headbar-frame-shadow, inset 0 0 0 0 rgb(0 0 0 / 0.1))\"\n : \"var(--monkeys-component-navigation-headbar-frame-shadow, none)\",\n backdropFilter: `blur(var(--monkeys-component-navigation-headbar-frame-backdrop-blur, ${surface === \"glassy\" ? \"45px\" : \"0px\"}))`,\n };\n\n if (layoutMode === \"full-bleed\") {\n style.marginLeft = \"calc(var(--global-spacing,0.75rem) * -1)\";\n style.marginRight = \"calc(var(--global-spacing,0.75rem) * -1)\";\n style.marginTop = \"calc(var(--global-spacing,0.75rem) * -1)\";\n style.width = \"calc(100% + (var(--global-spacing,0.75rem) * 2))\";\n }\n\n return style;\n}\n\nfunction getHeadbarNavClass(navPosition: HeadbarNavPosition = \"center\") {\n if (navPosition === \"left\") return \"justify-start\";\n if (navPosition === \"right\") return \"justify-end\";\n return \"justify-center\";\n}\n\nfunction getHeadbarItemStyle(\n active: boolean,\n useTokenRadius = true,\n): CSSProperties {\n return {\n height: \"var(--monkeys-component-navigation-headbar-item-height, 2.25rem)\",\n borderRadius: useTokenRadius\n ? \"var(--monkeys-component-navigation-headbar-item-radius, var(--radius, 0.5rem))\"\n : undefined,\n paddingInline:\n \"var(--monkeys-component-navigation-headbar-item-padding-inline, 0.75rem)\",\n columnGap: \"var(--monkeys-component-navigation-headbar-item-gap, 0.375rem)\",\n color: active\n ? \"var(--monkeys-component-navigation-headbar-item-active-foreground, hsl(var(--foreground)))\"\n : \"var(--monkeys-component-navigation-headbar-item-foreground, hsl(var(--muted-foreground)))\",\n background: active\n ? \"var(--monkeys-component-navigation-headbar-item-active-background, hsl(var(--muted)))\"\n : \"transparent\",\n borderColor: active\n ? \"var(--monkeys-component-navigation-headbar-item-active-border-color, transparent)\"\n : \"transparent\",\n fontSize:\n \"var(--monkeys-component-navigation-headbar-item-font-size, 0.875rem)\",\n fontWeight:\n \"var(--monkeys-component-navigation-headbar-item-font-weight, 500)\",\n };\n}\n\nfunction findNavigationRootId(\n items: LayoutNavItem[],\n activeItemId?: string,\n): string | undefined {\n for (const item of items) {\n if (item.id === activeItemId) return item.id;\n if (item.children?.some((child) => child.id === activeItemId))\n return item.id;\n }\n return activeItemId;\n}\n\nfunction getNavigationActionTitle(action: NavigationLayoutAction) {\n return (\n action.title ||\n (typeof action.label === \"string\" ? action.label : undefined)\n );\n}\n\nfunction NavigationLayoutActionButtons({\n actions,\n compact,\n}: {\n actions: NavigationLayoutAction[];\n compact: boolean;\n}) {\n if (!actions.length) return null;\n\n if (compact) {\n return (\n <div className=\"flex flex-col items-center gap-2\">\n {actions.map((action) => {\n const title = getNavigationActionTitle(action);\n return (\n <BaseTooltip\n key={action.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n content={action.label}\n placement=\"right\"\n portal\n >\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n iconOnly\n icon={action.icon}\n onClick={action.onClick}\n title={title}\n ariaLabel={title}\n className={cn(\n \"h-10 w-10 rounded-lg border-transparent text-[hsl(var(--muted-foreground))] shadow-none\",\n \"hover:-translate-y-0.5 hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))] hover:text-[hsl(var(--foreground))]\",\n \"active:translate-y-0 active:scale-[0.96]\",\n )}\n />\n </BaseTooltip>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {actions.map((action) => (\n <BaseButton\n key={action.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n icon={action.icon}\n label={<span className=\"truncate\">{action.label}</span>}\n onClick={action.onClick}\n title={getNavigationActionTitle(action)}\n className={cn(\n \"h-9 w-full justify-start gap-2.5 rounded-lg border-transparent px-3 text-left text-[13px] text-[hsl(var(--muted-foreground))] shadow-none\",\n \"hover:-translate-y-0.5 hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))]/70 hover:text-[hsl(var(--foreground))]\",\n \"active:translate-y-0 active:scale-[0.985]\",\n )}\n />\n ))}\n </div>\n );\n}\n\nfunction SidebarNavigationList({\n activeItemId,\n items,\n onNavigate,\n revealRequest,\n}: {\n activeItemId?: string;\n items: LayoutNavItem[];\n onNavigate?: (itemId: string) => void;\n revealRequest?: { id: string; nonce: number } | null;\n}) {\n const navRef = useRef<HTMLDivElement | null>(null);\n const [expandedByRoot, setExpandedByRoot] = useState<Record<string, boolean>>(\n {},\n );\n\n const toggleRoot = (id: string) => {\n setExpandedByRoot((current) => ({\n ...current,\n [id]: !current[id],\n }));\n };\n\n useEffect(() => {\n if (!revealRequest) return;\n setExpandedByRoot((current) => ({\n ...current,\n [revealRequest.id]: true,\n }));\n\n const frameId = window.requestAnimationFrame(() => {\n const targetElement = navRef.current?.querySelector(\n `[data-navigation-sidebar-root-id=\"${CSS.escape(revealRequest.id)}\"]`,\n );\n if (targetElement instanceof HTMLElement) {\n targetElement.scrollIntoView({\n behavior: \"auto\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n });\n\n return () => window.cancelAnimationFrame(frameId);\n }, [revealRequest]);\n\n return (\n <div\n className=\"h-full flex-1 overflow-y-auto\"\n style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n >\n <style>{`.monkeys-navigation-sidebar-nav::-webkit-scrollbar { display: none; }`}</style>\n <div\n ref={navRef}\n className=\"monkeys-navigation-sidebar-nav flex w-full flex-col gap-2 text-xs text-[hsl(var(--foreground))]\"\n >\n {items.map((item) => {\n const isGroup = Boolean(item.children?.length);\n const isExpanded = Boolean(expandedByRoot[item.id]);\n const isActive = activeItemId === item.id;\n\n if (isGroup) {\n return (\n <div key={item.id} data-navigation-sidebar-root-id={item.id}>\n <NavButton\n icon={item.icon}\n onClick={() => toggleRoot(item.id)}\n postfix={\n <div className=\"flex flex-1 justify-end\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"shrink-0 text-[hsl(var(--foreground))] transition-transform duration-200\"\n style={{\n transform: isExpanded\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n }\n >\n {item.label}\n </NavButton>\n {isExpanded ? (\n <div className=\"mt-1 flex flex-col gap-1\">\n {item.children?.map((child) => (\n <NavButton\n key={child.id}\n active={activeItemId === child.id}\n onClick={() => onNavigate?.(child.id)}\n >\n {child.label}\n </NavButton>\n ))}\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div key={item.id} data-navigation-sidebar-root-id={item.id}>\n <NavButton\n active={isActive}\n icon={item.icon}\n onClick={() => onNavigate?.(item.id)}\n >\n {item.label}\n </NavButton>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction SidebarBrand({\n collapsed,\n logo,\n title,\n}: {\n collapsed?: boolean;\n logo?: AppHeaderLogo;\n title?: ReactNode;\n}) {\n if (!logo) return null;\n\n const brandTitle = title ?? logo.title;\n const logoMark = (\n <div\n className={cn(\n \"flex h-9 w-9 shrink-0 items-center justify-center overflow-hidden rounded-lg\",\n logo.url\n ? \"bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"h-full w-full object-contain\"\n />\n ) : (\n <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n )}\n </div>\n );\n\n if (collapsed) {\n return (\n <BaseTooltip\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n content={brandTitle}\n placement=\"right\"\n portal\n >\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n ariaLabel={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n className=\"h-10 w-10 rounded-lg border-transparent bg-transparent p-0 shadow-none hover:bg-[hsl(var(--muted))]/60\"\n icon={logoMark}\n iconOnly\n onClick={logo.onClick}\n title={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n tone=\"muted\"\n />\n </BaseTooltip>\n );\n }\n\n return (\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n ariaLabel={logo.title}\n className=\"h-auto w-full justify-start gap-3 border-transparent bg-transparent p-0 text-left shadow-none hover:bg-transparent\"\n classNames={{ icon: \"h-9 w-9\" }}\n icon={logoMark}\n label={\n <span className=\"min-w-0 truncate text-sm font-semibold text-[hsl(var(--foreground))]\">\n {brandTitle}\n </span>\n }\n onClick={logo.onClick}\n title={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n tone=\"muted\"\n />\n );\n}\n\nfunction Sidebar({\n accountMenu,\n activeItemId,\n actions = [],\n collapsed,\n collapsedAccountMenu,\n footer,\n header,\n items,\n logo,\n onCollapsedChange,\n onNavigate,\n onRevealRoot,\n revealRequest,\n title,\n}: {\n accountMenu?: ReactNode;\n activeItemId?: string;\n actions?: NavigationLayoutAction[];\n collapsed?: boolean;\n collapsedAccountMenu?: ReactNode;\n footer?: ReactNode;\n header?: ReactNode;\n items: LayoutNavItem[];\n logo?: AppHeaderLogo;\n onCollapsedChange?: (collapsed: boolean) => void;\n onNavigate?: (itemId: string) => void;\n onRevealRoot?: (rootId: string) => void;\n revealRequest?: { id: string; nonce: number } | null;\n title?: ReactNode;\n}) {\n if (collapsed) {\n const activeRootId = findNavigationRootId(items, activeItemId);\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-2 shadow-sm\">\n <div className=\"mb-3 flex shrink-0 justify-center\">\n {header ?? <SidebarBrand collapsed logo={logo} title={title} />}\n </div>\n <div\n className=\"flex min-h-0 flex-1 flex-col items-center gap-2 overflow-y-auto pb-3\"\n style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n >\n {items.map((item) => {\n const isActive = activeRootId === item.id;\n return (\n <BaseTooltip\n key={item.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n content={item.label}\n placement=\"right\"\n portal\n >\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n active={isActive}\n iconOnly\n icon={item.icon}\n onClick={() => {\n onRevealRoot?.(item.id);\n onCollapsedChange?.(false);\n if (item.children?.length) return;\n onNavigate?.(item.id);\n }}\n title={\n typeof item.label === \"string\" ? item.label : undefined\n }\n ariaLabel={\n typeof item.label === \"string\" ? item.label : item.id\n }\n className={cn(\n \"h-10 w-10 rounded-lg border text-[hsl(var(--muted-foreground))] shadow-none\",\n \"hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.96]\",\n isActive\n ? \"border-[hsl(var(--input))] bg-[hsl(var(--muted))] text-[hsl(var(--foreground))] shadow-sm\"\n : \"border-transparent hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))]/70 hover:text-[hsl(var(--foreground))]\",\n )}\n />\n </BaseTooltip>\n );\n })}\n </div>\n <div className=\"-mx-2 mt-2 border-t border-[hsl(var(--input))] bg-[hsl(var(--background))] px-2 pt-2.5 pb-0.5\">\n <NavigationLayoutActionButtons actions={actions} compact />\n {collapsedAccountMenu ? (\n <div className=\"mt-2 flex justify-center border-t border-[hsl(var(--input))] pt-2\">\n {collapsedAccountMenu}\n </div>\n ) : null}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col justify-between gap-0 overflow-y-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] px-5 pt-5 pb-1.5\">\n <div className=\"mb-4 shrink-0\">\n {header ?? <SidebarBrand logo={logo} title={title} />}\n </div>\n <SidebarNavigationList\n activeItemId={activeItemId}\n items={items}\n onNavigate={onNavigate}\n revealRequest={revealRequest}\n />\n <div className=\"-mx-5 mt-2 border-t border-[hsl(var(--input))] bg-[hsl(var(--background))] px-4 pt-2.5 pb-1\">\n <NavigationLayoutActionButtons actions={actions} compact={false} />\n {footer}\n {accountMenu ? (\n <div className=\"mt-2 border-t border-[hsl(var(--input))] pt-2\">\n {accountMenu}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction HeadbarChevronIcon({ open }: { open: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-200\",\n open && \"rotate-180\",\n )}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nfunction HeadbarNavMenuItem({\n activeItemId,\n isActive,\n item,\n label,\n menuButtonRadiusClass,\n menuContentRadiusClass,\n menuItemRadiusClass,\n onNavigate,\n useTokenRadius,\n}: {\n activeItemId?: string;\n isActive: boolean;\n item: LayoutNavItem;\n label: ReactNode;\n menuButtonRadiusClass: string;\n menuContentRadiusClass: string;\n menuItemRadiusClass: string;\n onNavigate?: (itemId: string) => void;\n useTokenRadius: boolean;\n}) {\n const [open, setOpen] = useState(false);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const wasOpenOnPointerDownRef = useRef(false);\n\n const clearCloseTimer = () => {\n if (!closeTimerRef.current) return;\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n };\n\n const openMenu = () => {\n clearCloseTimer();\n setOpen(true);\n };\n\n const scheduleCloseMenu = () => {\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, 120);\n };\n\n const navigateToFirstEnabledChild = () => {\n const firstEnabledChild = item.children?.find((child) => !child.disabled);\n if (!firstEnabledChild) return false;\n\n setOpen(false);\n onNavigate?.(firstEnabledChild.id);\n return true;\n };\n\n useEffect(() => clearCloseTimer, []);\n\n return (\n <DropdownMenu.Root modal={false} open={open} onOpenChange={setOpen}>\n <DropdownMenu.Trigger asChild>\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n active={isActive || open}\n icon={item.icon}\n endIcon={<HeadbarChevronIcon open={open} />}\n label={<span className=\"truncate whitespace-nowrap\">{label}</span>}\n disabled={item.disabled}\n onClick={() => {\n const wasOpenOnPointerDown = wasOpenOnPointerDownRef.current;\n wasOpenOnPointerDownRef.current = false;\n if (wasOpenOnPointerDown && navigateToFirstEnabledChild()) return;\n setOpen(true);\n }}\n onPointerDown={() => {\n wasOpenOnPointerDownRef.current = open;\n }}\n onPointerCancel={() => {\n wasOpenOnPointerDownRef.current = false;\n }}\n onKeyDown={(event) => {\n if (!open || (event.key !== \"Enter\" && event.key !== \" \")) return;\n if (navigateToFirstEnabledChild()) event.preventDefault();\n }}\n onMouseEnter={openMenu}\n onMouseLeave={scheduleCloseMenu}\n style={getHeadbarItemStyle(isActive || open, useTokenRadius)}\n classNames={{\n icon: \"text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current\",\n label: \"text-[inherit] [&_*]:!text-[inherit]\",\n }}\n className={cn(\n \"max-w-[12rem] shrink-0 border shadow-none\",\n menuButtonRadiusClass,\n isActive || open\n ? \"\"\n : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n )}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align=\"start\"\n sideOffset={5}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onMouseEnter={openMenu}\n onMouseLeave={scheduleCloseMenu}\n className={cn(\n \"z-50 min-w-56 border p-1.5 animate-in fade-in-0 zoom-in-95\",\n menuContentRadiusClass,\n )}\n style={{\n background:\n \"var(--monkeys-component-navigation-headbar-menu-background, hsl(var(--popover)))\",\n borderColor:\n \"var(--monkeys-component-navigation-headbar-menu-border-color, hsl(var(--border)))\",\n color:\n \"var(--monkeys-component-navigation-headbar-menu-foreground, hsl(var(--popover-foreground)))\",\n boxShadow:\n \"var(--monkeys-component-navigation-headbar-menu-shadow, 0 10px 15px -3px rgb(0 0 0 / 0.1))\",\n backdropFilter:\n \"blur(var(--monkeys-component-navigation-headbar-menu-backdrop-blur, 0px))\",\n }}\n >\n {item.children?.map((child) => (\n <DropdownMenu.Item\n key={child.id}\n disabled={child.disabled}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2.5 px-3 py-2 text-sm outline-none transition-colors hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))] focus:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] focus:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))] data-[highlighted]:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] data-[highlighted]:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))]\",\n menuItemRadiusClass,\n )}\n style={getHeadbarItemStyle(\n child.id === activeItemId,\n useTokenRadius,\n )}\n onSelect={() => {\n if (child.disabled) return;\n setOpen(false);\n onNavigate?.(child.id);\n }}\n >\n {child.icon ? (\n <span className=\"inline-flex h-4 w-4 shrink-0 items-center justify-center text-[hsl(var(--muted-foreground))]\">\n {child.icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">\n {child.headbarLabel ?? child.label}\n </span>\n {child.trailing}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\nexport interface NavigationHeadbarMenuProps {\n activeItemId?: string;\n activeRootId?: string;\n items: LayoutNavItem[];\n menuRadius?: HeadbarMenuRadius;\n onNavigate?: (itemId: string) => void;\n}\n\nexport function NavigationHeadbarMenu({\n activeItemId,\n activeRootId,\n items,\n menuRadius = \"default\",\n onNavigate,\n}: NavigationHeadbarMenuProps) {\n const menuButtonRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n const menuContentRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n const menuItemRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n const useTokenRadius = menuRadius === \"default\";\n\n return (\n <div className=\"flex w-max min-w-0 shrink-0 items-center gap-1\">\n {items.map((item) => {\n const isActive = activeRootId === item.id || activeItemId === item.id;\n const label = item.headbarLabel ?? item.label;\n\n if (item.children?.length) {\n return (\n <HeadbarNavMenuItem\n key={item.id}\n activeItemId={activeItemId}\n isActive={isActive}\n item={item}\n label={label}\n menuButtonRadiusClass={menuButtonRadiusClass}\n menuContentRadiusClass={menuContentRadiusClass}\n menuItemRadiusClass={menuItemRadiusClass}\n onNavigate={onNavigate}\n useTokenRadius={useTokenRadius}\n />\n );\n }\n\n return (\n <BaseButton\n key={item.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n active={isActive}\n disabled={item.disabled}\n icon={item.icon}\n label={\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"truncate whitespace-nowrap\">{label}</span>\n {item.trailing}\n </span>\n }\n onClick={() => onNavigate?.(item.id)}\n style={getHeadbarItemStyle(isActive, useTokenRadius)}\n classNames={{\n icon: \"text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current\",\n label: \"text-[inherit] [&_*]:!text-[inherit]\",\n }}\n className={cn(\n \"max-w-[12rem] shrink-0 border shadow-none\",\n menuButtonRadiusClass,\n isActive\n ? \"\"\n : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n )}\n />\n );\n })}\n </div>\n );\n}\n\nexport interface NavigationHeadbarProps {\n activeItemId?: string;\n activeRootId?: string;\n actions?: ReactNode;\n accountMenu?: ReactNode;\n className?: string;\n extra?: ReactNode;\n layout?: HeadbarLayout;\n brand?: ReactNode;\n logo?: AppHeaderLogo;\n navigation?: ReactNode;\n navItems?: LayoutNavItem[];\n onNavigate?: (itemId: string) => void;\n}\n\nexport function NavigationHeadbar({\n activeItemId,\n activeRootId,\n actions,\n accountMenu,\n className,\n extra,\n layout,\n brand,\n logo,\n navigation,\n navItems = [],\n onNavigate,\n}: NavigationHeadbarProps) {\n const heightPx = clampHeadbarHeight(layout?.heightPx);\n const layoutMode = layout?.layoutMode ?? \"boxed\";\n const menuRadius = layout?.menuRadius ?? \"default\";\n const surface = layout?.surface ?? \"card\";\n const logoHeightPx = getHeadbarLogoSizePx(heightPx);\n const frameStyle = getHeadbarFrameStyle(layoutMode, heightPx, surface);\n const showBrandTitle = Boolean(layout?.brandTitle);\n\n return (\n <header\n className={cn(\n getHeadbarFrameClass(layoutMode, layout?.navPosition),\n className,\n )}\n data-navigation-headbar=\"\"\n data-navigation-headbar-surface={surface}\n style={frameStyle}\n >\n <div className=\"flex min-w-0 items-center justify-start\">\n {brand ??\n (logo ? (\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n icon={\n <div\n className={cn(\n \"flex items-center justify-center overflow-hidden rounded-lg\",\n logo.url\n ? \"w-auto max-w-[min(22rem,30vw)] bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n style={\n logo.url\n ? { height: logoHeightPx }\n : { width: logoHeightPx, height: logoHeightPx }\n }\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"block h-full w-auto object-contain\"\n />\n ) : (\n <span className=\"text-base font-bold\">\n {logo.title.charAt(0)}\n </span>\n )}\n </div>\n }\n label={\n showBrandTitle ? (\n <span className=\"truncate whitespace-nowrap text-base font-medium text-[hsl(var(--foreground))]\">\n {layout?.brandTitle}\n </span>\n ) : null\n }\n ariaLabel={logo.title}\n title={logo.title}\n className=\"h-auto min-w-0 justify-start border-transparent bg-transparent p-0 shadow-none hover:bg-transparent\"\n classNames={\n logo.url ? { icon: \"!h-auto !w-auto shrink-0\" } : undefined\n }\n onClick={logo.onClick}\n />\n ) : null)}\n </div>\n\n <div\n className={cn(\n \"flex min-w-0 items-center\",\n getHeadbarNavClass(layout?.navPosition),\n )}\n >\n <div className=\"no-scrollbar flex max-w-full min-w-0 items-center overflow-x-auto overscroll-x-contain\">\n {navigation ?? (\n <NavigationHeadbarMenu\n activeItemId={activeItemId}\n activeRootId={activeRootId}\n items={navItems}\n menuRadius={menuRadius}\n onNavigate={onNavigate}\n />\n )}\n </div>\n </div>\n\n <div className=\"flex min-w-0 items-center justify-end gap-3\">\n {actions}\n {extra}\n {accountMenu}\n </div>\n </header>\n );\n}\n\nexport function NavigationLayout({\n activeItemId,\n activeRootId,\n allowModeSwitch = false,\n accountMenu,\n children,\n className,\n collapsedSidebarAccountMenu,\n collapsedSidebarWidth = NAVIGATION_LAYOUT_SIDEBAR_COLLAPSED_WIDTH,\n defaultMode = \"headbar\",\n defaultSidebarCollapsed = false,\n expandedSidebarWidth = NAVIGATION_LAYOUT_SIDEBAR_EXPANDED_WIDTH,\n expandSidebarLabel = \"Expand sidebar\",\n flush = false,\n headbarActions,\n headbarLayout,\n logo,\n mode,\n navItems,\n onModeChange,\n onNavigate,\n onSidebarCollapsedChange,\n renderHeadbarExtra,\n collapseSidebarLabel = \"Collapse sidebar\",\n sidebarCollapsed: controlledSidebarCollapsed,\n sidebarAccountMenu,\n sidebarFooter,\n sidebarHeader,\n switchToHeadbarLabel = \"Switch to headbar\",\n switchToSidebarLabel = \"Switch to sidebar\",\n}: NavigationLayoutProps) {\n const [uncontrolledMode, setUncontrolledMode] =\n useState<NavigationMode>(defaultMode);\n const [uncontrolledSidebarCollapsed, setUncontrolledSidebarCollapsed] =\n useState(defaultSidebarCollapsed);\n const [revealRequest, setRevealRequest] = useState<{\n id: string;\n nonce: number;\n } | null>(null);\n const isModeControlled = mode !== undefined;\n const isSidebarCollapsedControlled = controlledSidebarCollapsed !== undefined;\n const navigationMode = isModeControlled ? mode : uncontrolledMode;\n const sidebarCollapsed = isSidebarCollapsedControlled\n ? controlledSidebarCollapsed\n : uncontrolledSidebarCollapsed;\n const isHeadbarMode = navigationMode === \"headbar\";\n const sidebarWidth = sidebarCollapsed\n ? collapsedSidebarWidth\n : expandedSidebarWidth;\n\n useEffect(() => {\n if (!isModeControlled) {\n setUncontrolledMode(defaultMode);\n }\n }, [defaultMode, isModeControlled]);\n\n useEffect(() => {\n if (!isSidebarCollapsedControlled) {\n setUncontrolledSidebarCollapsed(defaultSidebarCollapsed);\n }\n }, [defaultSidebarCollapsed, isSidebarCollapsedControlled]);\n\n const setNavigationMode = (nextMode: NavigationMode) => {\n if (!isModeControlled) {\n setUncontrolledMode(nextMode);\n }\n onModeChange?.(nextMode);\n };\n\n const setCollapsed = (collapsed: boolean) => {\n if (!isSidebarCollapsedControlled) {\n setUncontrolledSidebarCollapsed(collapsed);\n }\n onSidebarCollapsedChange?.(collapsed);\n };\n\n const navigationActions: NavigationLayoutAction[] = [];\n if (allowModeSwitch) {\n navigationActions.push({\n id: \"toggle-headbar\",\n label: switchToHeadbarLabel,\n onClick: () => setNavigationMode(\"headbar\"),\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-[18px] w-[18px] rotate-180\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M3 9h18\" />\n </svg>\n ),\n });\n }\n navigationActions.push({\n id: \"toggle-sidebar\",\n label: sidebarCollapsed ? expandSidebarLabel : collapseSidebarLabel,\n onClick: () => setCollapsed(!sidebarCollapsed),\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-[18px] w-[18px]\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d={sidebarCollapsed ? \"m14 9 3 3-3 3\" : \"m16 15-3-3 3-3\"} />\n </svg>\n ),\n });\n\n const sidebar = isHeadbarMode ? null : (\n <div\n className={cn(\n \"relative h-full min-h-0 shrink-0 transition-[width] duration-260\",\n sidebarCollapsed ? \"z-20 overflow-visible\" : \"z-10 overflow-hidden\",\n )}\n style={{\n width: sidebarWidth,\n transitionTimingFunction: NAVIGATION_LAYOUT_TRANSITION_TIMING,\n }}\n >\n <Sidebar\n accountMenu={sidebarAccountMenu ?? accountMenu}\n activeItemId={activeItemId}\n actions={navigationActions}\n collapsed={sidebarCollapsed}\n collapsedAccountMenu={collapsedSidebarAccountMenu ?? accountMenu}\n footer={sidebarFooter}\n header={sidebarHeader}\n items={navItems}\n logo={logo}\n onCollapsedChange={setCollapsed}\n onNavigate={onNavigate}\n onRevealRoot={(rootId) =>\n setRevealRequest((prev) => ({\n id: rootId,\n nonce: (prev?.nonce ?? 0) + 1,\n }))\n }\n revealRequest={revealRequest}\n title={headbarLayout?.brandTitle}\n />\n </div>\n );\n\n const header = isHeadbarMode ? (\n <NavigationHeadbar\n activeItemId={activeItemId}\n activeRootId={\n activeRootId ?? findNavigationRootId(navItems, activeItemId)\n }\n actions={\n allowModeSwitch ? (\n <>\n {headbarActions}\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 shrink-0\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"m14 9 3 3-3 3\" />\n </svg>\n }\n label={\n <span className=\"truncate whitespace-nowrap\">\n {switchToSidebarLabel}\n </span>\n }\n onClick={() => setNavigationMode(\"sidebar\")}\n className={cn(\n \"h-auto min-w-0 shrink px-3 py-2 text-sm font-medium text-[hsl(var(--muted-foreground))] shadow-none hover:border-[hsl(var(--input))]/70 hover:bg-[hsl(var(--muted))]/60 hover:text-[hsl(var(--foreground))]\",\n getHeadbarMenuRadiusClass(headbarLayout?.menuRadius),\n )}\n />\n </>\n ) : (\n headbarActions\n )\n }\n accountMenu={accountMenu}\n extra={renderHeadbarExtra}\n layout={headbarLayout}\n logo={logo}\n navItems={navItems}\n onNavigate={onNavigate}\n />\n ) : null;\n\n return (\n <AppLayout\n header={header}\n sidebar={sidebar}\n flush={flush}\n className={className}\n >\n {children}\n </AppLayout>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/utils.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseAvatar.tsx","../../../src/components/base/BaseButton.tsx","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/BaseTooltip.tsx","../../../src/components/layout/AppShellSidebar.tsx","../../../src/components/layout/UserAccountMenu.tsx","../../../src/components/layout/index.tsx"],"names":["createContext","useContext","useMemo","twMerge","forwardRef","BaseAvatar","useState","useEffect","jsxs","jsx","BaseButton","isValidElement","Fragment","BaseTooltip","Tooltip","AppShellSidebar","getInitials","DropdownMenu","cn","DropdownMenu2","useRef"],"mappings":"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","file":"index.js","sourcesContent":["import type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n agentWorkbench: {\n label: 'Session activity',\n reasoning: 'Reasoning',\n plan: 'Plan',\n taskNoDetail: 'No additional details',\n modes: { chatbot: 'Chatbot', agent: 'Agent' },\n composer: {\n send: 'Send message',\n stop: 'Stop generating',\n queue: 'Queue message',\n attach: 'Add photos or files',\n voice: 'Start voice input',\n webSearch: 'Web search',\n model: 'Model',\n reasoning: 'Reasoning effort',\n permissions: 'Permissions',\n removeAttachment: 'Remove attachment',\n editQueued: 'Edit queued message',\n deleteQueued: 'Delete queued message',\n moveUp: 'Move message up',\n moveDown: 'Move message down',\n queued: 'Queued messages',\n uploading: 'Uploading',\n noModels: 'No models available',\n message: 'Message',\n attachmentOnly: 'Attachment',\n reasoningOptions: { low: 'Low', medium: 'Medium', high: 'High', xhigh: 'Extra high' },\n permissionOptions: { 'approval-required': 'Approval required', 'auto-approve': 'Auto approve', 'full-access': 'Full access' },\n },\n tool: {\n input: 'Input',\n output: 'Output',\n status: {\n pending: 'Pending',\n running: 'Running',\n completed: 'Completed',\n failed: 'Error',\n denied: 'Denied',\n },\n },\n approval: {\n approve: 'Approve',\n reject: 'Reject',\n approved: 'Approved',\n rejected: 'Rejected',\n },\n artifact: {\n pending: 'Preparing',\n ready: 'Ready',\n failed: 'Failed',\n open: ({ name }) => `Open ${name}`,\n },\n run: {\n stopping: 'Stopping...',\n stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n },\n usage: {\n label: 'Context usage',\n context: ({ used, total }) => `${used} / ${total} tokens`,\n },\n navigation: {\n search: 'Search agents and sessions',\n searchShortcut: 'Focus search',\n clearSearch: 'Clear search',\n tabsLabel: 'Agent workbench navigation',\n agents: 'Agents',\n sessions: 'Sessions',\n newAgent: 'New Agent',\n newSession: 'New Session',\n capabilities: 'Capabilities & Extensions',\n settings: 'Agent Settings',\n allAgents: 'All Agents',\n recentSessions: 'Recent Sessions',\n builtIn: 'Built-in',\n noDescription: 'No description',\n loading: 'Loading...',\n emptyAgents: 'No agents yet',\n emptySessions: 'No sessions yet',\n noResults: 'No matching results',\n retry: 'Retry',\n pin: 'Pin',\n unpin: 'Unpin',\n rename: 'Rename',\n delete: 'Delete',\n actions: 'Actions',\n save: 'Save',\n cancel: 'Cancel',\n running: 'Running',\n completed: 'Completed',\n failed: 'Failed',\n contextUsage: ({ percent }) => `${percent}% context used`,\n },\n details: {\n title: 'Task details',\n description: 'Summary and workspace activity',\n duration: 'Duration',\n updated: 'Updated',\n model: 'Model',\n mode: 'Mode',\n permissions: 'Permissions',\n tokenUsage: 'Token usage',\n summary: 'Summary',\n summaryEmpty: 'No summary is available yet.',\n summaryFailed: 'The summary could not be generated.',\n highlights: 'Highlights',\n pendingItems: 'Pending items',\n tabs: {\n label: 'Task detail views',\n summary: 'Summary',\n workspace: 'Workspace',\n },\n status: {\n queued: 'Queued',\n running: 'Running',\n waiting_approval: 'Waiting for approval',\n stopping: 'Stopping',\n stopped: 'Stopped',\n completed: 'Completed',\n failed: 'Failed',\n },\n state: {\n loading: { title: 'Loading task details', description: 'Restoring the latest session activity.' },\n empty: { title: 'No task selected', description: 'Select a task to inspect its details.' },\n error: { title: 'Unable to load task details', description: 'Try again after the session is available.' },\n },\n actions: {\n close: 'Close task details',\n copySummary: 'Copy summary',\n retry: 'Retry',\n retrySummary: 'Retry summary',\n resume: 'Resume',\n continueInNewTask: 'Continue in new task',\n editAndRerun: 'Edit and rerun',\n export: 'Export',\n },\n workspace: {\n diffs: 'Code changes',\n files: 'Files',\n terminals: 'Terminals',\n tests: 'Tests',\n artifacts: 'Artifacts',\n exitCode: ({ code }) => `Exit code ${code}`,\n diffStatus: { added: 'Added', modified: 'Modified', deleted: 'Deleted', renamed: 'Renamed' },\n fileOperation: { upsert: 'Updated', delete: 'Deleted' },\n },\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n agentWorkbench: {\n ...base.agentWorkbench,\n ...override.agentWorkbench,\n modes: {\n ...base.agentWorkbench.modes,\n ...override.agentWorkbench?.modes,\n },\n composer: {\n ...base.agentWorkbench.composer,\n ...override.agentWorkbench?.composer,\n },\n tool: {\n ...base.agentWorkbench.tool,\n ...override.agentWorkbench?.tool,\n status: {\n ...base.agentWorkbench.tool.status,\n ...override.agentWorkbench?.tool?.status,\n },\n },\n approval: {\n ...base.agentWorkbench.approval,\n ...override.agentWorkbench?.approval,\n },\n artifact: {\n ...base.agentWorkbench.artifact,\n ...override.agentWorkbench?.artifact,\n },\n run: {\n ...base.agentWorkbench.run,\n ...override.agentWorkbench?.run,\n },\n usage: {\n ...base.agentWorkbench.usage,\n ...override.agentWorkbench?.usage,\n },\n navigation: {\n ...base.agentWorkbench.navigation,\n ...override.agentWorkbench?.navigation,\n },\n details: {\n ...base.agentWorkbench.details,\n ...override.agentWorkbench?.details,\n tabs: {\n ...base.agentWorkbench.details.tabs,\n ...override.agentWorkbench?.details?.tabs,\n },\n status: {\n ...base.agentWorkbench.details.status,\n ...override.agentWorkbench?.details?.status,\n },\n state: {\n loading: {\n ...base.agentWorkbench.details.state.loading,\n ...override.agentWorkbench?.details?.state?.loading,\n },\n empty: {\n ...base.agentWorkbench.details.state.empty,\n ...override.agentWorkbench?.details?.state?.empty,\n },\n error: {\n ...base.agentWorkbench.details.state.error,\n ...override.agentWorkbench?.details?.state?.error,\n },\n },\n actions: {\n ...base.agentWorkbench.details.actions,\n ...override.agentWorkbench?.details?.actions,\n },\n workspace: {\n ...base.agentWorkbench.details.workspace,\n ...override.agentWorkbench?.details?.workspace,\n diffStatus: {\n ...base.agentWorkbench.details.workspace.diffStatus,\n ...override.agentWorkbench?.details?.workspace?.diffStatus,\n },\n fileOperation: {\n ...base.agentWorkbench.details.workspace.fileOperation,\n ...override.agentWorkbench?.details?.workspace?.fileOperation,\n },\n },\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import type {\n BaseAppearance,\n BaseBackground,\n BaseBorder,\n BaseControlTone,\n BaseDensity,\n BaseHeadingSize,\n BaseLayoutAlign,\n BaseLayoutJustify,\n BaseLayoutLength,\n BaseListMarker,\n BaseListSpacing,\n BaseRadius,\n BaseResolvedTheme,\n BaseThemePresetId,\n BaseThemeSlots,\n BaseThemeStyles,\n BaseTypographySize,\n BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n 'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n 'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n 'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n '[scrollbar-width:thin]',\n '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n '[&::-webkit-scrollbar-corner]:bg-transparent',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n 'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n buttonBase:\n cn(\n 'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n 'cursor-pointer disabled:!cursor-not-allowed',\n motionInteractive,\n ),\n buttonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n buttonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n buttonSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n buttonWarning:\n 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n buttonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n buttonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n buttonDisabled: '!cursor-not-allowed opacity-60',\n buttonIconOnly: 'w-9 px-0',\n buttonIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n buttonLabel: 'min-w-0 truncate',\n badgeBase:\n cn(\n 'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n motionBase,\n ),\n badgeDefault: 'border-border/60 bg-background text-foreground',\n badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n badgeLabel: 'min-w-0 truncate',\n textRoot: 'min-w-0 break-words leading-6',\n textSizeXs: 'text-xs',\n textSizeSm: 'text-sm',\n textSizeMd: 'text-base',\n textSizeLg: 'text-lg',\n textSizeXl: 'text-xl',\n typographyToneDefault: 'text-foreground',\n typographyToneMuted: 'text-muted-foreground',\n typographyTonePrimary: 'text-primary',\n typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n typographyToneDanger: 'text-destructive-text',\n typographyToneInherit: 'text-inherit',\n headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n headingSizeXs: 'text-sm leading-5',\n headingSizeSm: 'text-base leading-6',\n headingSizeMd: 'text-lg leading-7',\n headingSizeLg: 'text-xl leading-7',\n headingSizeXl: 'text-2xl leading-8',\n headingSize2xl: 'text-3xl leading-9',\n linkRoot:\n 'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n codeInline:\n 'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n codeBlock:\n 'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n codeContent: 'font-mono text-sm leading-6',\n kbdRoot:\n 'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n listSpacingCompact: '[&>li+li]:mt-1',\n listSpacingDefault: '[&>li+li]:mt-2',\n listSpacingRelaxed: '[&>li+li]:mt-3',\n listMarkerNone: 'list-none ps-0',\n listMarkerDisc: 'list-disc',\n listMarkerCircle: 'list-[circle]',\n listMarkerSquare: 'list-[square]',\n listMarkerDecimal: 'list-decimal',\n listMarkerLowerAlpha: 'list-[lower-alpha]',\n listMarkerUpperAlpha: 'list-[upper-alpha]',\n listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n stackRoot: 'flex min-w-0 flex-col',\n inlineRoot: 'flex min-w-0 flex-row',\n gridRoot: 'grid min-w-0',\n containerRoot: 'mx-auto w-full min-w-0',\n aspectRatioRoot:\n 'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n spinnerRoot:\n 'inline-flex shrink-0 items-center justify-center text-current align-middle',\n spinnerIndicator:\n 'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n visuallyHiddenRoot: 'sr-only',\n visuallyHiddenFocusable:\n 'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n stepsHorizontal:\n 'flex w-full max-w-full items-start overflow-x-auto pb-2',\n stepsVertical: 'grid',\n stepsItem: 'relative min-w-0',\n stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n stepsItemVertical: 'pb-6 last:pb-0',\n stepsTrigger:\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n stepsTriggerInteractive:\n 'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n stepsIndicator:\n 'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n stepsIndicatorCompleted:\n 'border-primary bg-primary text-primary-foreground',\n stepsIndicatorError:\n 'border-destructive bg-destructive text-destructive-foreground',\n stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n stepsDescription:\n 'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n stepsStatus: 'sr-only',\n stepsConnector: 'shrink-0 bg-border',\n stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n stepsConnectorVertical:\n 'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n stepsConnectorCompleted: 'bg-primary/60',\n stepsConnectorError: 'bg-destructive/60',\n scrollAreaViewport: 'min-h-0 min-w-0',\n numberInputControl: 'tabular-nums',\n numberInputStepControls:\n 'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n numberInputStepButton:\n 'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n passwordInputControl: 'pe-2',\n passwordInputToggle:\n 'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n inputGroupRoot:\n cn(\n 'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n motionBase,\n ),\n inputGroupInvalid:\n 'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n inputGroupContent:\n 'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n inputGroupStartElement:\n 'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n inputGroupEndElement:\n 'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n inputGroupStartAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n inputGroupEndAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n panelRoot:\n cn(\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n motionInteractive,\n ),\n panelInteractive:\n 'cursor-pointer hover:shadow-md',\n panelSelected: 'border-primary/45 bg-primary/5',\n panelDisabled: '!cursor-not-allowed opacity-60',\n panelMedia:\n 'shrink-0 overflow-hidden',\n panelHeader: 'min-w-0 p-4',\n panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n panelBodyStandalone: 'pt-4',\n panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n stateRoot:\n cn(\n 'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n motionBase,\n ),\n stateIcon:\n 'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n stateTitle: 'text-sm font-semibold text-foreground',\n stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n loadingSpinner:\n 'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n fieldRoot: 'grid min-w-0 gap-2',\n fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n fieldRequired: 'text-destructive-text',\n fieldDescription: 'text-sm leading-5 text-muted-foreground',\n fieldMessage: 'text-sm leading-5 text-muted-foreground',\n fieldControl: 'min-w-0',\n controlWrapper:\n cn(\n 'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n motionBase,\n ),\n controlBase:\n 'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n controlInput: 'h-9',\n controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n controlIcon:\n 'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n controlTrailing:\n 'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n controlInvalid:\n 'border-destructive/45 focus-within:border-destructive/60',\n controlDisabled: '!cursor-not-allowed opacity-60',\n controlReadOnly: 'bg-muted/35',\n selectChevron:\n cn(\n 'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n ),\n selectMenu:\n 'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n selectOption:\n cn(\n 'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n motionInteractive,\n ),\n selectOptionActive: 'bg-accent text-accent-foreground',\n selectOptionSelected: 'bg-primary/10 text-primary',\n selectOptionDisabled: '!cursor-not-allowed opacity-50',\n selectPlaceholder: 'text-muted-foreground',\n selectNative: 'sr-only',\n switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n switchInput: 'sr-only',\n switchTrack:\n cn(\n 'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n motionBase,\n ),\n switchThumb:\n cn(\n 'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n motionTransform,\n ),\n switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n switchDisabled: '!cursor-not-allowed opacity-60',\n switchContent: 'grid min-w-0 gap-1',\n switchLabel: 'text-sm font-medium leading-none text-foreground',\n switchDescription: 'text-sm leading-5 text-muted-foreground',\n checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n checkboxInput: 'sr-only',\n checkboxBox:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n checkboxBoxInvalid: 'border-destructive/50',\n checkboxIndicator: 'text-[11px] font-bold leading-none',\n checkboxDisabled: '!cursor-not-allowed opacity-60',\n checkboxContent: 'grid min-w-0 gap-1',\n checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n radioGroupRoot: 'grid min-w-0 gap-2',\n radioOption:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n motionInteractive,\n 'hover:bg-muted/35',\n ),\n radioInput: 'sr-only',\n radioMarker:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n radioMarkerChecked: 'border-primary/50 bg-primary/10',\n radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n radioContent: 'grid min-w-0 gap-1',\n radioLabel: 'text-sm font-medium leading-none text-foreground',\n radioDescription: 'text-sm leading-5 text-muted-foreground',\n dialogRoot: 'relative',\n dialogTrigger: '',\n dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n dialogOverlay:\n 'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dialogContent:\n 'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n dialogPanel:\n cn(\n 'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n 'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n ),\n dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n dialogDescription: 'text-sm leading-6 text-muted-foreground',\n dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n dialogFooter:\n 'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n dialogClose:\n cn(\n 'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownRoot: 'relative inline-flex min-w-0',\n dropdownTrigger: '',\n dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n dropdownMenu:\n 'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n dropdownMenuEnd: 'left-auto right-0',\n dropdownLabel:\n 'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n dropdownSeparator: 'my-1 h-px bg-border/70',\n dropdownItem:\n cn(\n 'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownItemDanger:\n 'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n dropdownItemDisabled:\n '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n dropdownItemLabel: 'min-w-0 truncate',\n dropdownItemDescription:\n 'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n dropdownItemShortcut:\n 'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n tooltipRoot: 'relative inline-flex min-w-0',\n tooltipTrigger: 'inline-flex min-w-0',\n tooltipContent:\n 'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n noticeBase:\n cn(\n 'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n motionBase,\n 'motion-safe:animate-in motion-safe:fade-in',\n ),\n noticeDefault: 'border-border bg-background text-foreground',\n noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n noticeSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n noticeDanger:\n 'border-destructive/30 bg-destructive/10 text-destructive-text',\n noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n noticeIcon:\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n noticeTitle: 'font-semibold leading-5',\n noticeDescription: 'leading-6',\n noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n dividerRoot: cn('shrink-0 border-border/70', motionBase),\n dividerLabel:\n 'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n sectionHeaderRoot:\n 'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n sectionHeaderContent: 'grid min-w-0 gap-1',\n sectionHeaderEyebrow:\n 'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n tabsRoot: 'grid min-w-0 gap-3',\n tabsList:\n cn(\n 'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n tabsTrigger:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n motionInteractive,\n ),\n tabsTriggerActive:\n 'bg-background text-foreground shadow-sm',\n tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n tabsPanel:\n 'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n segmentedRoot:\n cn(\n 'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n segmentedItem:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n motionInteractive,\n ),\n segmentedItemActive:\n 'bg-background text-foreground shadow-sm',\n segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n progressRoot: 'grid min-w-0 gap-2',\n progressTrack:\n 'h-2 w-full overflow-hidden rounded-full bg-muted',\n progressIndicator:\n 'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n skeletonRoot:\n 'relative overflow-hidden rounded-md bg-muted/70',\n avatarRoot:\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n avatarImage:\n 'h-full w-full object-cover',\n avatarFallback:\n 'flex h-full w-full items-center justify-center bg-muted text-foreground',\n avatarStatus:\n 'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n toolbarRoot:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n motionBase,\n ),\n toolbarLeading: 'flex min-w-0 items-center gap-3',\n toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n toolbarContent: 'min-w-0 flex-1',\n toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n breadcrumbLink:\n 'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n paginationRoot:\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n paginationInfo: 'min-w-0 text-muted-foreground',\n paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n paginationButton:\n 'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n paginationPage:\n 'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n paginationEllipsis:\n 'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n descriptionListRoot:\n 'grid min-w-0 gap-3 text-sm',\n descriptionListItem:\n 'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n descriptionListTerm:\n 'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n accordionRoot: 'grid min-w-0 gap-2',\n accordionItem:\n 'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTrigger:\n 'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTriggerIcon:\n cn(\n 'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n 'motion-reduce:transition-none',\n ),\n accordionPanel:\n 'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n menuTrigger: 'inline-flex min-w-0',\n menuContent:\n 'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n motionInteractive,\n ),\n menuItemDefault: 'text-foreground',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n menuItemDisabled:\n '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'min-w-0 flex-1 truncate',\n menuItemShortcut:\n 'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n menuCheckboxIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuRadioIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuSubTrigger:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n motionInteractive,\n ),\n menuSubTriggerIcon:\n 'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n menuSubContent:\n 'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n tableContainer:\n cn(\n 'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n tableScrollbarChrome,\n motionBase,\n ),\n tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableCaption: 'mt-3 text-sm text-muted-foreground',\n tableHeader:\n cn(\n 'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n tableStickyHeaderCells,\n ),\n tableBody: '[&_tr:last-child>*]:border-b-0',\n tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n tableFooterBar:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n motionBase,\n ),\n tableFooterBarAttached:\n '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n tableFooterBarContent: 'min-w-0 flex-1',\n tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n tableSplitRoot:\n 'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableSplitHeader:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n tableSplitBody:\n cn(\n 'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n tableScrollbarChrome,\n ),\n tableSplitFooter:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n tableSplitRow:\n 'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n tableSplitHead: 'flex min-w-0 overflow-hidden',\n tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n tableRow:\n cn(\n '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n motionBase,\n ),\n tableRowInteractive:\n 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n tableRowDisabled: '!cursor-not-allowed opacity-60',\n tableHead:\n 'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n tableHeadMain: 'flex min-w-0 items-center gap-2',\n tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n tableHeadText: 'grid min-w-0 gap-0.5',\n tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n tableHeadActions: 'flex shrink-0 items-center gap-1',\n tableHeadSortButton:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n motionBase,\n ),\n tableHeadSortIcon:\n cn(\n 'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n motionTransform,\n ),\n tableHeadDragHandle:\n cn(\n 'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableHeadResizeHandle:\n cn(\n 'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n tableCellAlignCenter: 'text-center',\n tableCellAlignRight: 'text-right',\n tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n tableEmptyCell: 'px-4 py-10 text-center',\n tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n tableEmptyIcon:\n 'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n tableEmptyTitle: 'text-sm font-semibold text-foreground',\n tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n tableLoadingCell: 'px-3 py-2',\n tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n layoutRoot:\n cn(\n 'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n motionBase,\n ),\n layoutRootFull: 'h-full min-h-0',\n layoutHeader: 'min-w-0',\n layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n layoutFooter: 'min-w-0',\n layoutPane:\n cn(\n 'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n motionBase,\n ),\n layoutPaneScrollable: 'overflow-auto',\n layoutPaneBordered: 'border border-border/70',\n layoutPaneMuted: 'bg-muted/25',\n layoutPaneSoft: 'bg-background/95 shadow-sm',\n layoutPaneTransparent: 'bg-transparent shadow-none',\n layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n layoutSplitHorizontal: 'grid-flow-col',\n layoutSplitVertical: 'grid-flow-row',\n layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n layoutSplitPrimary: '',\n layoutSplitSecondary: '',\n layoutResizeHandle:\n cn(\n 'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n layoutResizeHandleDisabled: 'cursor-default opacity-60',\n layoutResizeHandleIndicator:\n 'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n compact: {\n buttonBase: 'h-8 px-2.5 text-xs',\n buttonIconOnly: 'h-8 w-8 px-0',\n badgeBase: 'px-1.5 py-0 text-[11px]',\n panelHeader: 'p-3',\n panelBody: 'px-3 pb-3 text-xs',\n panelBodyStandalone: 'pt-3',\n panelFooter: 'px-3 py-2',\n stateRoot: 'min-h-36 px-4 py-7',\n stateIcon: 'mb-3 h-10 w-10',\n fieldRoot: 'gap-1.5',\n fieldLabel: 'text-xs',\n fieldDescription: 'text-xs leading-5',\n fieldMessage: 'text-xs leading-5',\n controlInput: 'h-8 text-xs',\n controlTextarea: 'min-h-20 text-xs',\n controlSelect: 'h-8 text-xs',\n selectMenu: 'text-xs',\n selectOption: 'min-h-7 px-2 py-1 text-xs',\n switchTrack: 'h-5 w-9',\n switchThumb: 'h-3.5 w-3.5',\n checkboxBox: 'h-3.5 w-3.5',\n checkboxLabel: 'text-xs',\n checkboxDescription: 'text-xs leading-5',\n radioOption: 'px-2 py-1.5 text-xs',\n radioMarker: 'h-3.5 w-3.5',\n radioIndicator: 'h-1.5 w-1.5',\n radioLabel: 'text-xs',\n radioDescription: 'text-xs leading-5',\n dialogPanel: 'max-w-md',\n dialogHeader: 'px-4 py-3',\n dialogTitle: 'text-sm leading-5',\n dialogDescription: 'text-xs leading-5',\n dialogBody: 'px-4 py-3 text-xs',\n dialogFooter: 'px-4 py-3',\n dropdownMenu: 'min-w-44 text-xs',\n dropdownItem: 'px-2 py-1.5 text-xs',\n tooltipContent: 'text-[11px] leading-4',\n noticeBase: 'px-3 py-2 text-xs',\n dividerLabel: 'text-[11px]',\n sectionHeaderRoot: 'gap-2',\n sectionHeaderTitle: 'text-sm leading-5',\n sectionHeaderDescription: 'text-xs leading-5',\n tabsList: 'gap-0.5 p-0.5',\n tabsTrigger: 'px-2 py-1 text-xs',\n tabsPanel: 'p-3 text-xs',\n segmentedRoot: 'gap-0.5 p-0.5',\n segmentedItem: 'px-2 py-1 text-xs',\n progressTrack: 'h-1.5',\n avatarRoot: 'text-xs',\n toolbarRoot: 'gap-2 px-3 py-2',\n toolbarTitle: 'text-xs',\n toolbarDescription: 'text-xs leading-5',\n paginationButton: 'h-7 min-w-7 px-2 text-xs',\n paginationPage: 'h-7 min-w-7 px-2 text-xs',\n descriptionListRoot: 'gap-2 text-xs',\n descriptionListItem: 'px-2 py-1.5',\n descriptionListTerm: 'text-[11px]',\n descriptionListValue: 'text-xs leading-5',\n accordionTrigger: 'px-3 py-2 text-xs',\n accordionPanel: 'px-3 py-2 text-xs leading-5',\n menuContent: 'min-w-40 p-0.5 text-xs',\n menuSubContent: 'min-w-36 p-0.5 text-xs',\n menuLabel: 'px-2 py-1 text-[11px]',\n menuItem: 'min-h-7 px-2 py-1 text-xs',\n menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n menuItemShortcut: 'text-[11px]',\n tableContainer: '[--base-table-header-height:2.25rem]',\n tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n tableCell: 'px-2 py-1.5 text-xs',\n tableHeadLabel: 'text-[11px]',\n tableHeadDescription: 'text-[10px] leading-3',\n tableLoadingCell: 'px-2 py-1.5',\n layoutRoot: 'gap-2 p-2',\n layoutBody: 'gap-2',\n layoutPane: 'rounded-md text-xs',\n layoutResizeHandleHorizontal: 'w-1.5',\n layoutResizeHandleVertical: 'h-1.5',\n },\n default: {\n buttonBase: 'h-9',\n },\n comfortable: {\n buttonBase: 'h-10 px-3.5',\n buttonIconOnly: 'h-10 w-10 px-0',\n badgeBase: 'px-2.5 py-1',\n panelHeader: 'p-5',\n panelBody: 'px-5 pb-5',\n panelBodyStandalone: 'pt-5',\n panelFooter: 'px-5 py-3.5',\n stateRoot: 'min-h-56 px-8 py-12',\n stateIcon: 'mb-5 h-14 w-14',\n fieldRoot: 'gap-2.5',\n controlInput: 'h-10',\n controlTextarea: 'min-h-28',\n controlSelect: 'h-10',\n selectMenu: 'p-1.5',\n selectOption: 'min-h-9 px-3 py-2',\n switchTrack: 'h-7 w-12',\n switchThumb: 'h-5 w-5',\n checkboxBox: 'h-5 w-5',\n radioOption: 'px-4 py-3',\n radioMarker: 'h-5 w-5',\n radioIndicator: 'h-2.5 w-2.5',\n dialogPanel: 'max-w-xl',\n dialogHeader: 'px-6 py-5',\n dialogBody: 'px-6 py-5',\n dialogFooter: 'px-6 py-5',\n dropdownMenu: 'min-w-56',\n dropdownItem: 'px-3 py-2.5',\n noticeBase: 'px-5 py-4',\n sectionHeaderTitle: 'text-lg leading-7',\n tabsTrigger: 'px-3.5 py-2',\n tabsPanel: 'p-5',\n segmentedItem: 'px-3.5 py-2',\n progressTrack: 'h-2.5',\n toolbarRoot: 'px-5 py-4',\n paginationButton: 'h-9 min-w-9 px-3',\n paginationPage: 'h-9 min-w-9 px-3',\n descriptionListItem: 'px-4 py-3',\n accordionTrigger: 'px-5 py-4',\n accordionPanel: 'px-5 py-4',\n menuContent: 'min-w-48 p-1.5',\n menuSubContent: 'min-w-44 p-1.5',\n menuItem: 'min-h-9 px-3 py-2',\n menuSubTrigger: 'min-h-9 px-3 py-2',\n tableContainer: '[--base-table-header-height:3rem]',\n tableHead: 'h-12 px-4 py-3',\n tableCell: 'px-4 py-3',\n tableLoadingCell: 'px-4 py-3',\n layoutRoot: 'gap-4 p-4',\n layoutBody: 'gap-4',\n layoutPane: 'rounded-xl',\n layoutResizeHandleHorizontal: 'w-2.5',\n layoutResizeHandleVertical: 'h-2.5',\n },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'rounded-none',\n badgeBase: 'rounded-none',\n panelRoot: 'rounded-none',\n stateRoot: 'rounded-none',\n stateIcon: 'rounded-none',\n controlWrapper: 'rounded-none',\n selectMenu: 'rounded-none',\n selectOption: 'rounded-none',\n switchTrack: 'rounded-none',\n switchThumb: 'rounded-none',\n checkboxBox: 'rounded-none',\n radioOption: 'rounded-none',\n dialogPanel: 'rounded-none',\n dialogClose: 'rounded-none',\n dropdownMenu: 'rounded-none',\n dropdownItem: 'rounded-none',\n tooltipContent: 'rounded-none',\n noticeBase: 'rounded-none',\n tabsList: 'rounded-none',\n tabsTrigger: 'rounded-none',\n tabsPanel: 'rounded-none',\n segmentedRoot: 'rounded-none',\n segmentedItem: 'rounded-none',\n progressTrack: 'rounded-none',\n progressIndicator: 'rounded-none',\n skeletonRoot: 'rounded-none',\n avatarRoot: 'rounded-none',\n avatarStatus: 'rounded-none',\n toolbarRoot: 'rounded-none',\n paginationButton: 'rounded-none',\n paginationPage: 'rounded-none',\n descriptionListItem: 'rounded-none',\n accordionItem: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n menuSubTrigger: 'rounded-none',\n menuSubContent: 'rounded-none',\n tableContainer: 'rounded-none',\n tableEmptyIcon: 'rounded-none',\n tableLoadingSkeleton: 'rounded-none',\n layoutRoot: 'rounded-none',\n layoutPane: 'rounded-none',\n },\n sm: {\n buttonBase: 'rounded-sm',\n badgeBase: 'rounded-sm',\n panelRoot: 'rounded-sm',\n stateRoot: 'rounded-sm',\n stateIcon: 'rounded-sm',\n controlWrapper: 'rounded-sm',\n selectMenu: 'rounded-sm',\n selectOption: 'rounded-sm',\n switchTrack: 'rounded-sm',\n switchThumb: 'rounded-sm',\n checkboxBox: 'rounded-sm',\n radioOption: 'rounded-sm',\n dialogPanel: 'rounded-sm',\n dialogClose: 'rounded-sm',\n dropdownMenu: 'rounded-sm',\n dropdownItem: 'rounded-sm',\n tooltipContent: 'rounded-sm',\n noticeBase: 'rounded-sm',\n tabsList: 'rounded-sm',\n tabsTrigger: 'rounded-sm',\n tabsPanel: 'rounded-sm',\n segmentedRoot: 'rounded-sm',\n segmentedItem: 'rounded-sm',\n progressTrack: 'rounded-sm',\n progressIndicator: 'rounded-sm',\n skeletonRoot: 'rounded-sm',\n avatarRoot: 'rounded-sm',\n avatarStatus: 'rounded-sm',\n toolbarRoot: 'rounded-sm',\n paginationButton: 'rounded-sm',\n paginationPage: 'rounded-sm',\n descriptionListItem: 'rounded-sm',\n accordionItem: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n menuSubTrigger: 'rounded-sm',\n menuSubContent: 'rounded-sm',\n tableContainer: 'rounded-sm',\n tableEmptyIcon: 'rounded-sm',\n tableLoadingSkeleton: 'rounded-sm',\n layoutRoot: 'rounded-sm',\n layoutPane: 'rounded-sm',\n },\n md: {},\n lg: {\n buttonBase: 'rounded-lg',\n badgeBase: 'rounded-lg',\n panelRoot: 'rounded-xl',\n stateRoot: 'rounded-xl',\n stateIcon: 'rounded-xl',\n controlWrapper: 'rounded-lg',\n selectMenu: 'rounded-lg',\n selectOption: 'rounded-md',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-md',\n radioOption: 'rounded-xl',\n dialogPanel: 'rounded-xl',\n dialogClose: 'rounded-lg',\n dropdownMenu: 'rounded-lg',\n dropdownItem: 'rounded-md',\n tooltipContent: 'rounded-md',\n noticeBase: 'rounded-xl',\n tabsList: 'rounded-xl',\n tabsTrigger: 'rounded-lg',\n tabsPanel: 'rounded-xl',\n segmentedRoot: 'rounded-xl',\n segmentedItem: 'rounded-lg',\n skeletonRoot: 'rounded-lg',\n toolbarRoot: 'rounded-xl',\n descriptionListItem: 'rounded-lg',\n accordionItem: 'rounded-xl',\n menuContent: 'rounded-lg',\n menuItem: 'rounded-md',\n menuSubTrigger: 'rounded-md',\n menuSubContent: 'rounded-lg',\n tableContainer: 'rounded-xl',\n tableEmptyIcon: 'rounded-xl',\n tableLoadingSkeleton: 'rounded-lg',\n layoutRoot: 'rounded-xl',\n layoutPane: 'rounded-xl',\n },\n xl: {\n buttonBase: 'rounded-xl',\n badgeBase: 'rounded-xl',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-2xl',\n controlWrapper: 'rounded-xl',\n selectMenu: 'rounded-xl',\n selectOption: 'rounded-lg',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-lg',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-xl',\n dropdownMenu: 'rounded-xl',\n dropdownItem: 'rounded-lg',\n tooltipContent: 'rounded-lg',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-2xl',\n tabsTrigger: 'rounded-xl',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-2xl',\n segmentedItem: 'rounded-xl',\n skeletonRoot: 'rounded-xl',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-xl',\n paginationPage: 'rounded-xl',\n descriptionListItem: 'rounded-xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-xl',\n menuItem: 'rounded-lg',\n menuSubTrigger: 'rounded-lg',\n menuSubContent: 'rounded-xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-2xl',\n tableLoadingSkeleton: 'rounded-xl',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n full: {\n buttonBase: 'rounded-full',\n badgeBase: 'rounded-full',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-full',\n controlWrapper: 'rounded-full',\n selectMenu: 'rounded-2xl',\n selectOption: 'rounded-full',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-full',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-full',\n dropdownMenu: 'rounded-2xl',\n dropdownItem: 'rounded-full',\n tooltipContent: 'rounded-full',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-full',\n tabsTrigger: 'rounded-full',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-full',\n segmentedItem: 'rounded-full',\n progressTrack: 'rounded-full',\n progressIndicator: 'rounded-full',\n skeletonRoot: 'rounded-full',\n avatarRoot: 'rounded-full',\n avatarStatus: 'rounded-full',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-full',\n paginationPage: 'rounded-full',\n descriptionListItem: 'rounded-2xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-2xl',\n menuItem: 'rounded-full',\n menuSubTrigger: 'rounded-full',\n menuSubContent: 'rounded-2xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-full',\n tableLoadingSkeleton: 'rounded-full',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'border-transparent',\n badgeBase: 'border-transparent',\n panelRoot: 'border-transparent',\n panelFooter: 'border-transparent',\n stateRoot: 'border-transparent',\n controlWrapper: 'border-transparent',\n selectMenu: 'border-transparent',\n switchTrack: 'border-transparent',\n checkboxBox: 'border-transparent',\n radioOption: 'border-transparent',\n radioMarker: 'border-transparent',\n dialogPanel: 'border-transparent',\n dialogHeader: 'border-transparent',\n dialogFooter: 'border-transparent',\n dropdownMenu: 'border-transparent',\n tooltipContent: 'border-transparent',\n noticeBase: 'border-transparent',\n dividerRoot: 'border-transparent',\n tabsList: 'border-transparent',\n tabsPanel: 'border-transparent',\n segmentedRoot: 'border-transparent',\n avatarRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n paginationButton: 'border-transparent',\n descriptionListItem: 'border-transparent',\n accordionItem: 'border-transparent',\n accordionPanel: 'border-transparent',\n menuContent: 'border-transparent',\n menuSeparator: 'bg-transparent',\n menuSubContent: 'border-transparent',\n tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n tableHeader: 'border-transparent',\n tableFooter: '[&_tr>*]:border-transparent',\n tableFooterBar: 'border-transparent',\n tableFooterBarAttached: 'border-t border-transparent',\n tableRow: '[&>*]:border-transparent',\n tableEmptyRow: '[&>*]:border-transparent',\n tableLoadingRow: '[&>*]:border-transparent',\n layoutRoot: 'border-transparent',\n layoutPaneBordered: 'border-transparent',\n layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n },\n subtle: {\n buttonDefault: 'border-border/60',\n badgeDefault: 'border-border/60',\n panelRoot: 'border-border/60',\n panelFooter: 'border-border/60',\n stateRoot: 'border-border/60',\n controlWrapper: 'border-border/60',\n selectMenu: 'border-border/60',\n switchTrack: 'border-border/60',\n checkboxBox: 'border-border/60',\n radioOption: 'border-border/60',\n radioMarker: 'border-border/60',\n dialogPanel: 'border-border/60',\n dialogHeader: 'border-border/60',\n dialogFooter: 'border-border/60',\n dropdownMenu: 'border-border/60',\n tooltipContent: 'border-border/60',\n noticeDefault: 'border-border/60',\n dividerRoot: 'border-border/60',\n tabsList: 'border-border/60',\n tabsPanel: 'border-border/60',\n segmentedRoot: 'border-border/60',\n avatarRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n paginationButton: 'border-border/60',\n descriptionListItem: 'border-border/60',\n accordionItem: 'border-border/60',\n accordionPanel: 'border-border/60',\n menuContent: 'border-border/60',\n menuSeparator: 'bg-border/60',\n menuSubContent: 'border-border/60',\n tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n tableHeader: 'border-border/60',\n tableFooter: '[&_tr>*]:border-border/60',\n tableFooterBar: 'border-border/60',\n tableFooterBarAttached: 'border-t border-border/60',\n tableRow: '[&>*]:border-border/50',\n tableEmptyRow: '[&>*]:border-border/50',\n tableLoadingRow: '[&>*]:border-border/50',\n layoutRoot: 'border-border/60',\n layoutPaneBordered: 'border-border/60',\n },\n solid: {},\n strong: {\n buttonDefault: 'border-foreground/20',\n badgeDefault: 'border-foreground/20',\n panelRoot: 'border-foreground/20',\n panelFooter: 'border-foreground/20',\n stateRoot: 'border-foreground/20',\n controlWrapper: 'border-foreground/20',\n selectMenu: 'border-foreground/20',\n switchTrack: 'border-foreground/20',\n checkboxBox: 'border-foreground/20',\n radioOption: 'border-foreground/20',\n radioMarker: 'border-foreground/20',\n dialogPanel: 'border-foreground/20',\n dialogHeader: 'border-foreground/15',\n dialogFooter: 'border-foreground/15',\n dropdownMenu: 'border-foreground/20',\n tooltipContent: 'border-foreground/20',\n noticeDefault: 'border-foreground/20',\n dividerRoot: 'border-foreground/20',\n tabsList: 'border-foreground/20',\n tabsPanel: 'border-foreground/20',\n segmentedRoot: 'border-foreground/20',\n avatarRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n paginationButton: 'border-foreground/20',\n descriptionListItem: 'border-foreground/20',\n accordionItem: 'border-foreground/20',\n accordionPanel: 'border-foreground/20',\n menuContent: 'border-foreground/20',\n menuSeparator: 'bg-foreground/15',\n menuSubContent: 'border-foreground/20',\n tableContainer:\n 'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n tableHeader: 'border-foreground/20',\n tableFooter: '[&_tr>*]:border-foreground/20',\n tableFooterBar: 'border-foreground/20',\n tableFooterBarAttached: 'border-t border-foreground/20',\n tableRow: '[&>*]:border-foreground/15',\n tableEmptyRow: '[&>*]:border-foreground/15',\n tableLoadingRow: '[&>*]:border-foreground/15',\n layoutRoot: 'border-foreground/20',\n layoutPaneBordered: 'border-foreground/20',\n layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n plain: {},\n muted: {\n buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n panelRoot: 'bg-card',\n panelFooter: 'bg-muted/20',\n stateRoot: 'bg-muted/20',\n controlWrapper: 'bg-background',\n selectMenu: 'bg-background',\n selectOptionActive: 'bg-muted/70 text-foreground',\n checkboxBox: 'bg-background',\n radioOption: 'bg-card hover:bg-muted/45',\n radioMarker: 'bg-background',\n dialogPanel: 'bg-card',\n dropdownMenu: 'bg-background',\n dropdownItem: 'hover:bg-muted/60',\n tooltipContent: 'bg-popover',\n noticeDefault: 'bg-muted/20',\n tabsList: 'bg-muted/35',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-card',\n segmentedRoot: 'bg-muted/35',\n segmentedItemActive: 'bg-background',\n progressTrack: 'bg-muted/60',\n skeletonRoot: 'bg-muted',\n toolbarRoot: 'bg-card',\n paginationButton: 'bg-background hover:bg-muted/60',\n paginationPage: 'bg-muted/60',\n descriptionListItem: 'bg-card',\n accordionItem: 'bg-card',\n menuContent: 'bg-background',\n menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n menuSubTrigger:\n 'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n menuSubContent: 'bg-background',\n tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/35',\n tableFooterBar: 'bg-muted/30 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n tableLoadingSkeleton: 'bg-muted',\n layoutRoot: 'bg-card',\n layoutPane: 'bg-card',\n layoutPaneMuted: 'bg-muted/35',\n layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n },\n soft: {\n buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n panelRoot: 'bg-background/95 shadow-sm',\n stateRoot: 'bg-background/95 shadow-sm',\n controlWrapper: 'bg-background/95',\n selectMenu: 'bg-background/95 shadow-xl',\n selectOptionActive: 'bg-muted/60 text-foreground',\n checkboxBox: 'bg-background/95',\n radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n radioMarker: 'bg-background/95',\n dialogPanel: 'bg-background/95 shadow-xl',\n dropdownMenu: 'bg-background/95 shadow-xl',\n dropdownItem: 'hover:bg-muted/55',\n tooltipContent: 'bg-popover shadow-xl',\n noticeDefault: 'bg-background/95 shadow-sm',\n tabsList: 'bg-background/60 shadow-sm',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-background/95 shadow-sm',\n segmentedRoot: 'bg-background/60 shadow-sm',\n segmentedItemActive: 'bg-background',\n skeletonRoot: 'bg-background/80',\n toolbarRoot: 'bg-background/95 shadow-sm',\n paginationButton: 'bg-background/95 hover:bg-muted/55',\n descriptionListItem: 'bg-background/95 shadow-sm',\n accordionItem: 'bg-background/95 shadow-sm',\n menuContent: 'bg-background/95 shadow-xl',\n menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n menuSubTrigger:\n 'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n menuSubContent: 'bg-background/95 shadow-xl',\n tableContainer:\n 'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/25',\n tableFooterBar: 'bg-muted/25 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n tableLoadingSkeleton: 'bg-muted/65',\n layoutRoot: 'bg-background/95 shadow-sm',\n layoutPane: 'bg-background/95 shadow-sm',\n layoutPaneSoft: 'bg-background/95 shadow-md',\n },\n glass: {\n buttonBase: 'backdrop-blur-md',\n buttonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n panelFooter: 'border-white/10 bg-white/[0.05]',\n stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n stateIcon: 'bg-white/10 text-foreground',\n controlWrapper:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n selectMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n selectOption: 'text-foreground',\n selectOptionActive: 'bg-white/[0.14] text-foreground',\n selectOptionSelected: 'bg-white/[0.18] text-foreground',\n switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n dialogOverlay: 'bg-background/45 backdrop-blur-md',\n dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n dialogHeader: 'border-white/10',\n dialogFooter: 'border-white/10',\n dropdownMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n tooltipContent:\n 'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n noticeDefault:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n dividerRoot: 'border-white/15',\n tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n tabsPanel:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n progressTrack: 'bg-white/[0.12]',\n skeletonRoot: 'bg-white/[0.16]',\n avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n avatarFallback: 'bg-white/[0.12] text-foreground',\n avatarStatus: 'border-background',\n toolbarRoot:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n paginationButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.12] text-foreground',\n descriptionListItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionPanel: 'border-white/10',\n menuContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n menuSubTrigger:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n menuSubContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n tableContainer:\n 'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n tableHeadLabel: 'text-foreground',\n tableLoadingSkeleton: 'bg-white/[0.16]',\n layoutRoot:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n layoutPane:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n layoutPaneMuted: 'bg-white/[0.08]',\n layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n dark: {\n buttonBase:\n 'border-white/15 text-white shadow-lg backdrop-blur',\n buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n buttonMuted:\n 'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n panelTitle: 'text-white',\n panelDescription: 'text-white/65',\n panelBody: 'text-white/85',\n panelFooter: 'border-white/10 bg-white/[0.04]',\n stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n stateIcon: 'bg-white/10 text-white/75',\n stateTitle: 'text-white',\n stateDescription: 'text-white/65',\n fieldLabel: 'text-white',\n fieldDescription: 'text-white/65',\n fieldMessage: 'text-white/65',\n controlWrapper:\n 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n controlBase: 'text-white placeholder:text-white/45',\n selectChevron: 'text-white/65',\n selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n selectOption: 'text-white',\n selectOptionActive: 'bg-white/[0.12] text-white',\n selectOptionSelected: 'bg-white/[0.16] text-white',\n selectPlaceholder: 'text-white/45',\n switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n switchChecked: 'border-white/25 bg-white/25 text-white',\n switchLabel: 'text-white',\n switchDescription: 'text-white/65',\n checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n checkboxLabel: 'text-white',\n checkboxDescription: 'text-white/65',\n radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n radioMarkerChecked: 'border-white/25 bg-white/25',\n radioIndicator: 'bg-white',\n radioLabel: 'text-white',\n radioDescription: 'text-white/65',\n dialogOverlay: 'bg-slate-950/75',\n dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n dialogHeader: 'border-white/10',\n dialogTitle: 'text-white',\n dialogDescription: 'text-white/65',\n dialogBody: 'text-white/85',\n dialogFooter: 'border-white/10',\n dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n dropdownLabel: 'text-white/55',\n dropdownSeparator: 'bg-white/15',\n dropdownItem: 'text-white hover:bg-white/[0.10]',\n dropdownItemDescription: 'text-white/55',\n dropdownItemShortcut: 'text-white/55',\n tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n dividerRoot: 'border-white/15',\n dividerLabel: 'text-white/55',\n sectionHeaderEyebrow: 'text-white/55',\n sectionHeaderTitle: 'text-white',\n sectionHeaderDescription: 'text-white/65',\n tabsList: 'border-white/10 bg-white/[0.08]',\n tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n segmentedRoot: 'border-white/10 bg-white/[0.08]',\n segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n progressTrack: 'bg-white/[0.12]',\n progressLabel: 'text-white',\n progressValue: 'text-white/65',\n skeletonRoot: 'bg-white/[0.14]',\n avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n avatarFallback: 'bg-white/[0.10] text-white/75',\n avatarText: 'text-white',\n avatarStatus: 'border-slate-950',\n toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n toolbarTitle: 'text-white',\n toolbarDescription: 'text-white/65',\n breadcrumbLink: 'text-white/65 hover:text-white',\n breadcrumbCurrent: 'text-white',\n breadcrumbSeparator: 'text-white/45',\n paginationInfo: 'text-white/65',\n paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.14] text-white',\n descriptionListItem: 'border-white/10 bg-white/[0.06]',\n descriptionListTerm: 'text-white/55',\n descriptionListValue: 'text-white',\n accordionItem: 'border-white/10 bg-white/[0.06]',\n accordionTrigger: 'text-white hover:bg-white/[0.08]',\n accordionPanel: 'border-white/10 text-white/70',\n tableContainer:\n 'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n tableRoot: 'text-white',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n tableHead: 'text-white/65',\n tableHeadLabel: 'text-white',\n tableHeadDescription: 'text-white/55',\n tableHeadMeta: 'text-white/55',\n tableHeadIcon: 'text-white/55',\n tableHeadSortIcon: 'text-white/55',\n tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n tableCell: 'text-white/85',\n tableEmptyIcon: 'bg-white/10 text-white/65',\n tableEmptyTitle: 'text-white',\n tableEmptyDescription: 'text-white/60',\n menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n menuLabel: 'text-white/55',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n menuItemDefault: 'text-white',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-white/65 focus:text-white data-[highlighted]:text-white',\n menuItemShortcut: 'text-white/45',\n menuSubTrigger:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n menuSubTriggerIcon: 'text-white/55',\n menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n tableLoadingSkeleton: 'bg-white/[0.14]',\n layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPaneMuted: 'bg-white/[0.06]',\n layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n};\n\nconst presetDefaults: Record<\n BaseThemePresetId,\n Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'muted',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n glass: {\n density: 'default',\n radius: 'xl',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'strong',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n soft: {\n buttonBase: 'font-medium',\n panelRoot: 'border-border/70',\n controlWrapper: 'font-medium',\n tabsTrigger: 'font-medium',\n segmentedItem: 'font-medium',\n toolbarRoot: 'border-border/70',\n tableContainer: 'border-border/70',\n tableFooterBar: 'border-border/70',\n tableHeadLabel: 'font-semibold',\n menuItemLabel: 'font-medium',\n },\n compact: {\n buttonBase: 'text-xs',\n badgeBase: 'text-[11px]',\n fieldLabel: 'text-xs',\n controlBase: 'text-xs',\n selectOption: 'text-xs',\n menuItem: 'text-xs',\n menuSubTrigger: 'text-xs',\n noticeBase: 'text-xs',\n sectionHeaderTitle: 'text-sm',\n tabsTrigger: 'text-xs',\n segmentedItem: 'text-xs',\n toolbarTitle: 'text-xs',\n paginationRoot: 'text-xs',\n },\n 'tinted-glass': {\n buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n progressIndicator: 'bg-primary',\n avatarStatus: 'border-background',\n },\n glass: {\n panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n },\n 'hard-edge': {\n buttonBase: 'shadow-none',\n panelRoot: 'shadow-none',\n stateRoot: 'shadow-none',\n controlWrapper: 'shadow-none',\n selectMenu: 'shadow-none',\n menuContent: 'shadow-none',\n menuSubContent: 'shadow-none',\n noticeBase: 'shadow-none',\n tabsList: 'shadow-none',\n tabsTriggerActive: 'shadow-none',\n tabsPanel: 'shadow-none',\n segmentedRoot: 'shadow-none',\n segmentedItemActive: 'shadow-none',\n toolbarRoot: 'shadow-none',\n descriptionListItem: 'shadow-none',\n accordionItem: 'shadow-none',\n },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n appearance?: BaseAppearance,\n): BaseResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const variant = appearance?.variant ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const state = appearance?.state ?? 'idle';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n variant,\n density,\n state,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getBaseButtonToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n active = false,\n) {\n return cn(\n tone === 'default' && theme.slots.buttonDefault,\n tone === 'primary' && theme.slots.buttonPrimary,\n tone === 'success' && theme.slots.buttonSuccess,\n tone === 'warning' && theme.slots.buttonWarning,\n tone === 'danger' && theme.slots.buttonDanger,\n tone === 'muted' && theme.slots.buttonMuted,\n active && theme.slots.buttonActive,\n );\n}\n\nexport function getBaseBadgeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.badgeDefault,\n tone === 'primary' && theme.slots.badgePrimary,\n tone === 'success' && theme.slots.badgeSuccess,\n tone === 'warning' && theme.slots.badgeWarning,\n tone === 'danger' && theme.slots.badgeDanger,\n tone === 'muted' && theme.slots.badgeMuted,\n );\n}\n\nexport function getBaseNoticeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.noticeDefault,\n tone === 'primary' && theme.slots.noticePrimary,\n tone === 'success' && theme.slots.noticeSuccess,\n tone === 'warning' && theme.slots.noticeWarning,\n tone === 'danger' && theme.slots.noticeDanger,\n tone === 'muted' && theme.slots.noticeMuted,\n );\n}\n\nexport function getBaseMenuItemToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.menuItemDefault,\n tone === 'primary' && theme.slots.menuItemPrimary,\n tone === 'success' && theme.slots.menuItemSuccess,\n tone === 'warning' && theme.slots.menuItemWarning,\n tone === 'danger' && theme.slots.menuItemDanger,\n tone === 'muted' && theme.slots.menuItemMuted,\n );\n}\n\nexport function getBaseTypographyToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseTypographyTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.typographyToneDefault,\n tone === 'muted' && theme.slots.typographyToneMuted,\n tone === 'primary' && theme.slots.typographyTonePrimary,\n tone === 'success' && theme.slots.typographyToneSuccess,\n tone === 'warning' && theme.slots.typographyToneWarning,\n tone === 'danger' && theme.slots.typographyToneDanger,\n tone === 'inherit' && theme.slots.typographyToneInherit,\n );\n}\n\nexport function getBaseTextSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseTypographySize = 'md',\n) {\n return cn(\n size === 'xs' && theme.slots.textSizeXs,\n size === 'sm' && theme.slots.textSizeSm,\n size === 'md' && theme.slots.textSizeMd,\n size === 'lg' && theme.slots.textSizeLg,\n size === 'xl' && theme.slots.textSizeXl,\n );\n}\n\nexport function getBaseHeadingSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseHeadingSize = 'lg',\n) {\n return cn(\n size === 'xs' && theme.slots.headingSizeXs,\n size === 'sm' && theme.slots.headingSizeSm,\n size === 'md' && theme.slots.headingSizeMd,\n size === 'lg' && theme.slots.headingSizeLg,\n size === 'xl' && theme.slots.headingSizeXl,\n size === '2xl' && theme.slots.headingSize2xl,\n );\n}\n\nexport function getBaseListSpacingClassName(\n theme: BaseResolvedTheme,\n spacing: BaseListSpacing = 'default',\n) {\n return cn(\n spacing === 'compact' && theme.slots.listSpacingCompact,\n spacing === 'default' && theme.slots.listSpacingDefault,\n spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n );\n}\n\nexport function getBaseListMarkerClassName(\n theme: BaseResolvedTheme,\n marker: Exclude<BaseListMarker, 'auto'>,\n) {\n return cn(\n marker === 'none' && theme.slots.listMarkerNone,\n marker === 'disc' && theme.slots.listMarkerDisc,\n marker === 'circle' && theme.slots.listMarkerCircle,\n marker === 'square' && theme.slots.listMarkerSquare,\n marker === 'decimal' && theme.slots.listMarkerDecimal,\n marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n const pairs: Record<string, string> = { ')': '(', ']': '[' };\n const stack: string[] = [];\n\n for (const character of value) {\n if (character === '(' || character === '[') {\n stack.push(character);\n } else if (character === ')' || character === ']') {\n if (stack.pop() !== pairs[character]) return false;\n }\n }\n\n return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n if (match[1].toLowerCase() === 'var') {\n return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n }\n\n return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n componentName: string,\n propName: string,\n value: BaseLayoutLength,\n) {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n return `${value}px`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n (!cssLengthPattern.test(normalized) &&\n !isSupportedCssLengthFunction(normalized))\n ) {\n throw new TypeError(\n `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n );\n }\n\n return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n if (typeof value === 'number') {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n return `repeat(${value}, minmax(0, 1fr))`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n /\\burl\\s*\\(/i.test(normalized) ||\n !hasBalancedDelimiters(normalized) ||\n !gridTemplateTokenPattern.test(normalized)\n ) {\n throw new TypeError(\n 'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n );\n }\n\n return normalized;\n}\n\ntype BaseLayoutAlignValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'stretch'\n | 'baseline';\n\ntype BaseLayoutJustifyValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n BaseLayoutJustify,\n BaseLayoutJustifyValue\n> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n componentName: string,\n value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n throw new TypeError(\n `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n );\n }\n return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n componentName: string,\n value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n throw new TypeError(\n `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n );\n }\n return layoutJustifyValues[value];\n}\n","import { forwardRef, useEffect, useState } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseAvatarProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst sizeClassNames = {\n sm: 'h-7 w-7 text-xs',\n md: 'h-9 w-9 text-sm',\n lg: 'h-12 w-12 text-base',\n} as const;\n\nconst statusClassNames = {\n online: 'bg-[hsl(var(--success,142_72%_29%))]',\n busy: 'bg-[hsl(var(--warning,45_93%_47%))]',\n offline: 'bg-muted-foreground',\n neutral: 'bg-muted-foreground',\n} as const;\n\nfunction isStatusPreset(status: unknown): status is keyof typeof statusClassNames {\n return typeof status === 'string' && status in statusClassNames;\n}\n\nfunction getInitials(name?: string) {\n if (!name) return undefined;\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (!words.length) return undefined;\n return words\n .slice(0, 2)\n .map((word) => word[0]?.toUpperCase())\n .join('');\n}\n\nexport const BaseAvatar = forwardRef<HTMLDivElement, BaseAvatarProps>(\n function BaseAvatar(\n {\n src,\n alt,\n name,\n initials,\n icon,\n status,\n size = 'md',\n appearance,\n className,\n classNames,\n style,\n children,\n title,\n ...avatarProps\n },\n ref,\n ) {\n if (size !== 'sm' && size !== 'md' && size !== 'lg') {\n throw new TypeError('BaseAvatar size must be \"sm\", \"md\", or \"lg\".');\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const [failedSrc, setFailedSrc] = useState<string>();\n const imageFailed = Boolean(src && failedSrc === src);\n const showImage = Boolean(src) && !imageFailed;\n const generatedInitials = getInitials(name);\n const fallbackKind = hasRenderableNode(children)\n ? 'children'\n : hasRenderableNode(initials)\n ? 'initials'\n : hasRenderableNode(generatedInitials)\n ? 'name'\n : hasRenderableNode(icon)\n ? 'icon'\n : 'default';\n const fallback = hasRenderableNode(children)\n ? children\n : hasRenderableNode(initials)\n ? initials\n : hasRenderableNode(generatedInitials)\n ? generatedInitials\n : hasRenderableNode(icon)\n ? icon\n : '?';\n const statusKind = isStatusPreset(status)\n ? status\n : hasRenderableNode(status)\n ? 'custom'\n : undefined;\n\n useEffect(() => {\n setFailedSrc(undefined);\n }, [src]);\n\n return (\n <div\n {...componentAttributes}\n {...avatarProps}\n ref={ref}\n title={title ?? name}\n data-monkeys-component=\"avatar\"\n data-slot=\"root\"\n data-state={showImage ? 'image' : 'fallback'}\n data-size={size}\n data-status={statusKind}\n data-fallback={showImage ? undefined : fallbackKind}\n className={cn(\n theme.slots.avatarRoot,\n sizeClassNames[size],\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.avatar,\n ...style,\n }}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt ?? name ?? ''}\n data-slot=\"image\"\n data-size={size}\n data-status={statusKind}\n className={cn(theme.slots.avatarImage, classNames?.image)}\n onError={() => setFailedSrc(src)}\n />\n ) : (\n <span\n data-slot=\"fallback\"\n data-size={size}\n data-status={statusKind}\n data-fallback={fallbackKind}\n className={cn(\n theme.slots.avatarFallback,\n classNames?.fallback,\n classNames?.text,\n )}\n >\n {fallback}\n </span>\n )}\n\n {isStatusPreset(status) ? (\n <span\n aria-hidden=\"true\"\n data-slot=\"status\"\n data-size={size}\n data-status={status}\n className={cn(\n theme.slots.avatarStatus,\n statusClassNames[status],\n classNames?.status,\n )}\n />\n ) : hasRenderableNode(status) ? (\n <span\n data-slot=\"status\"\n data-size={size}\n data-status=\"custom\"\n className={cn(theme.slots.avatarStatus, classNames?.status)}\n >\n {status}\n </span>\n ) : null}\n </div>\n );\n },\n);\n","import { forwardRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport type { BaseButtonProps } from './types';\nimport {\n getBaseButtonToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst buttonSizeClassNames = {\n sm: 'h-8 px-2.5 text-xs',\n md: 'h-9 px-3 text-sm',\n lg: 'h-10 px-3.5 text-base',\n} as const;\n\nconst iconOnlySizeClassNames = {\n sm: 'h-8 w-8 px-0',\n md: 'h-9 w-9 px-0',\n lg: 'h-10 w-10 px-0',\n} as const;\n\nconst iconSizeClassNames = {\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\nfunction nonEmptyText(value: string | undefined) {\n return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction LoadingIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n className=\"h-full w-full motion-safe:animate-spin motion-reduce:animate-none\"\n fill=\"none\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n className=\"opacity-25\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M12 3a9 9 0 0 1 9 9h-3a6 6 0 0 0-6-6V3Z\"\n />\n </svg>\n );\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n function BaseButton(\n {\n children,\n label,\n icon,\n endIcon,\n type = 'button',\n title,\n ariaLabel,\n tone,\n size,\n active = false,\n iconOnly = false,\n disabled = false,\n loading = false,\n stopPropagation = false,\n appearance,\n variant,\n density,\n state,\n className,\n classNames,\n style,\n onClick,\n 'aria-label': nativeAriaLabel,\n ...buttonProps\n },\n ref,\n ) {\n for (const [name, value] of [\n ['active', active],\n ['iconOnly', iconOnly],\n ['disabled', disabled],\n ['loading', loading],\n ['stopPropagation', stopPropagation],\n ] as const) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseButton ${name} must be a boolean.`);\n }\n }\n if (size !== undefined && size !== 'sm' && size !== 'md' && size !== 'lg') {\n throw new TypeError('BaseButton size must be \"sm\", \"md\", or \"lg\".');\n }\n if (\n tone !== undefined &&\n tone !== 'default' &&\n tone !== 'primary' &&\n tone !== 'success' &&\n tone !== 'warning' &&\n tone !== 'danger' &&\n tone !== 'muted'\n ) {\n throw new TypeError(\n 'BaseButton tone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance({\n ...resolvedAppearance,\n variant,\n density,\n state,\n });\n const resolvedLabel = children ?? label;\n const hasLabel =\n hasRenderableNode(resolvedLabel) &&\n (typeof resolvedLabel !== 'string' || Boolean(resolvedLabel.trim()));\n const explicitAriaLabel =\n nonEmptyText(ariaLabel) ?? nonEmptyText(nativeAriaLabel);\n const labelText =\n typeof resolvedLabel === 'string'\n ? nonEmptyText(resolvedLabel)\n : undefined;\n const resolvedTitle = nonEmptyText(title);\n if (iconOnly && !hasLabel && !explicitAriaLabel && !resolvedTitle) {\n throw new TypeError(\n 'BaseButton iconOnly requires ariaLabel, aria-label, title, or a renderable label.',\n );\n }\n const resolvedAriaLabel =\n explicitAriaLabel ??\n labelText ??\n resolvedTitle;\n const resolvedDisabled = disabled || loading;\n const resolvedTone = tone ?? 'default';\n const resolvedState = state ?? (loading\n ? 'loading'\n : disabled\n ? 'disabled'\n : active\n ? 'active'\n : 'idle');\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (stopPropagation) {\n event.stopPropagation();\n }\n if (resolvedDisabled) return;\n onClick?.(event);\n };\n\n return (\n <button\n {...componentAttributes}\n {...buttonProps}\n ref={ref}\n type={type}\n title={title}\n aria-label={resolvedAriaLabel}\n aria-pressed={active || undefined}\n aria-busy={loading || undefined}\n data-variant={theme.variant}\n data-density={theme.density}\n disabled={resolvedDisabled}\n data-monkeys-component=\"button\"\n data-slot=\"root\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n data-active={active || undefined}\n data-loading={loading || undefined}\n data-disabled={resolvedDisabled || undefined}\n data-icon-only={iconOnly || undefined}\n className={cn(\n theme.slots.buttonBase,\n iconOnly && theme.slots.buttonIconOnly,\n size && buttonSizeClassNames[size],\n iconOnly && size && iconOnlySizeClassNames[size],\n getBaseButtonToneClassName(theme, tone, active),\n resolvedDisabled && theme.slots.buttonDisabled,\n classNames?.root,\n className,\n )}\n style={{\n ...theme.styles.button,\n ...(active ? theme.styles.buttonActive : undefined),\n ...(resolvedDisabled ? theme.styles.buttonDisabled : undefined),\n ...style,\n }}\n onClick={handleClick}\n >\n {loading ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n <LoadingIcon />\n </span>\n ) : icon ? (\n <span\n data-slot=\"icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n )}\n >\n {icon}\n </span>\n ) : null}\n {iconOnly ? (\n hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className=\"sr-only\"\n >\n {resolvedLabel}\n </span>\n ) : null\n ) : hasRenderableNode(resolvedLabel) ? (\n <span\n data-slot=\"label\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(theme.slots.buttonLabel, classNames?.label)}\n >\n {resolvedLabel}\n </span>\n ) : null}\n {!loading && endIcon ? (\n <span\n data-slot=\"end-icon\"\n data-state={resolvedState}\n data-tone={resolvedTone}\n data-size={size}\n className={cn(\n theme.slots.buttonIcon,\n size && iconSizeClassNames[size],\n classNames?.icon,\n classNames?.endIcon,\n )}\n >\n {endIcon}\n </span>\n ) : null}\n </button>\n );\n },\n);\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n value: BasePortalContainer,\n source: string,\n): Element | null {\n const candidate = typeof value === 'function' ? value() : value;\n if (candidate === null) return null;\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n candidate.nodeType !== 1\n ) {\n throw new TypeError(`${source} must resolve to an Element or null.`);\n }\n return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n explicitProvided: boolean;\n explicitContainer?: BasePortalContainer;\n providerProvided: boolean;\n providerContainer?: BasePortalContainer;\n getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n explicitProvided,\n explicitContainer,\n providerProvided,\n providerContainer,\n getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n if (explicitProvided) {\n return resolveContainerValue(\n explicitContainer as BasePortalContainer,\n 'BasePortal container',\n );\n }\n if (providerProvided) {\n return resolveContainerValue(\n providerContainer as BasePortalContainer,\n 'MonkeysProvider portal.container',\n );\n }\n if (!getDocument) return null;\n\n const ownerDocument = getDocument();\n if (ownerDocument === null) return null;\n if (\n !ownerDocument ||\n typeof ownerDocument !== 'object' ||\n !('body' in ownerDocument)\n ) {\n throw new TypeError(\n 'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n );\n }\n return resolveContainerValue(\n ownerDocument.body,\n 'MonkeysProvider environment.getDocument().body',\n );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n throw new TypeError('BasePortal disabled must be a boolean.');\n }\n if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n throw new TypeError('BasePortal inline must be a boolean.');\n }\n\n const disabled = props.disabled ?? portalOptions.disabled ?? false;\n if (!mounted || disabled || props.inline) {\n return <>{props.children}</>;\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: props.container !== undefined,\n explicitContainer: props.container,\n providerProvided: portalOptions.container !== undefined,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument,\n });\n\n return container\n ? createPortal(props.children, container)\n : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n mounted: boolean;\n explicitDisabled?: boolean;\n explicitContainer?: MonkeysPortalContainer;\n providerDisabled?: boolean;\n providerContainer?: MonkeysPortalContainer;\n getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n mounted: boolean;\n disabled: boolean;\n shouldPortal: false;\n container: null;\n radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n mounted: true;\n disabled: false;\n shouldPortal: true;\n container: Element;\n radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n | BaseOverlayPortalInlineState\n | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled,\n explicitContainer,\n providerDisabled,\n providerContainer,\n getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n const disabled = explicitDisabled ?? providerDisabled ?? false;\n if (!mounted || disabled) {\n return {\n mounted,\n disabled,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: explicitContainer !== undefined,\n explicitContainer,\n providerProvided: providerContainer !== undefined,\n providerContainer,\n getDocument,\n });\n\n if (!container) {\n return {\n mounted: true,\n disabled: false,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n return {\n mounted: true,\n disabled: false,\n shouldPortal: true,\n container,\n radixPortalProps: Object.freeze({ container }),\n };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled: options.disabled,\n explicitContainer: options.container,\n providerDisabled: portalOptions.disabled,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument ?? getDefaultDocument,\n });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n children: ReactNode,\n portal: BaseOverlayPortalState,\n) {\n return portal.shouldPortal\n ? createPortal(children, portal.container)\n : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n children,\n container,\n disabled,\n}: BaseOverlayPortalProps) {\n const portal = useBaseOverlayPortal({ container, disabled });\n return renderBaseOverlayPortalContent(children, portal);\n}\n","import * as Tooltip from '@radix-ui/react-tooltip';\nimport {\n Fragment,\n forwardRef,\n isValidElement,\n useState,\n type ReactNode,\n} from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type { BaseTooltipPlacement, BaseTooltipProps } from './types';\nimport { resolveBaseAppearance } from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nfunction validateBoolean(value: unknown, name: string) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseTooltip ${name} must be a boolean.`);\n }\n}\n\nfunction validatePlacement(value: unknown) {\n if (\n value !== 'top' &&\n value !== 'bottom' &&\n value !== 'left' &&\n value !== 'right'\n ) {\n throw new TypeError(\n 'BaseTooltip placement must be \"top\", \"bottom\", \"left\", or \"right\".',\n );\n }\n}\n\nfunction normalizeTrigger(children: ReactNode, disabled: boolean) {\n if (isValidElement(children) && children.type !== Fragment) {\n return children;\n }\n\n return (\n <span tabIndex={!disabled && hasRenderableNode(children) ? 0 : undefined}>\n {children}\n </span>\n );\n}\n\nexport const BaseTooltip = forwardRef<HTMLSpanElement, BaseTooltipProps>(\n function BaseTooltip(\n {\n content,\n children,\n open,\n defaultOpen = false,\n placement = 'top',\n disabled = false,\n portal = false,\n appearance,\n className,\n classNames,\n style,\n onOpenChange,\n ...tooltipProps\n },\n ref,\n ) {\n if (open !== undefined) validateBoolean(open, 'open');\n validateBoolean(defaultOpen, 'defaultOpen');\n validateBoolean(disabled, 'disabled');\n validateBoolean(portal, 'portal');\n validatePlacement(placement);\n\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const theme = resolveBaseAppearance(resolvedAppearance);\n const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = open !== undefined;\n const canShow = !disabled && hasRenderableNode(content);\n const requestedOpen = isControlled ? open : uncontrolledOpen;\n const isOpen = canShow && requestedOpen;\n const portalState =\n portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (nextOpen && !canShow) return;\n if (!isControlled) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n const trigger = normalizeTrigger(children, disabled);\n const tooltipContent = canShow ? (\n <Tooltip.Content\n {...componentAttributes}\n side={placement}\n sideOffset={8}\n collisionPadding={8}\n data-monkeys-component=\"tooltip\"\n data-slot=\"content\"\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.tooltipContent, classNames?.content)}\n style={theme.styles.tooltip}\n >\n {content}\n </Tooltip.Content>\n ) : null;\n\n return (\n <span\n {...componentAttributes}\n {...tooltipProps}\n ref={ref}\n data-monkeys-component=\"tooltip\"\n data-slot=\"root\"\n data-state={isOpen ? 'open' : 'closed'}\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.tooltipRoot, classNames?.root, className)}\n style={style}\n >\n <Tooltip.Provider\n delayDuration={0}\n skipDelayDuration={0}\n disableHoverableContent\n >\n <Tooltip.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n delayDuration={0}\n disableHoverableContent\n >\n <span\n {...componentAttributes}\n data-monkeys-component=\"tooltip\"\n data-slot=\"trigger-wrapper\"\n data-state={isOpen ? 'open' : 'closed'}\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n className={cn(theme.slots.tooltipTrigger, classNames?.trigger)}\n >\n <Tooltip.Trigger\n asChild\n {...componentAttributes}\n data-monkeys-component=\"tooltip\"\n data-slot=\"trigger\"\n data-placement={placement}\n data-portal={portalState}\n data-disabled={disabled || undefined}\n >\n {trigger}\n </Tooltip.Trigger>\n </span>\n {portal && overlayPortal.shouldPortal ? (\n <Tooltip.Portal {...overlayPortal.radixPortalProps}>\n {tooltipContent}\n </Tooltip.Portal>\n ) : (\n tooltipContent\n )}\n </Tooltip.Root>\n </Tooltip.Provider>\n </span>\n );\n },\n);\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../base/utils\";\n\nexport interface AppShellSidebarClassNames {\n root?: string;\n header?: string;\n navigation?: string;\n footer?: string;\n}\n\nexport interface AppShellSidebarProps extends Omit<\n ComponentPropsWithoutRef<\"aside\">,\n \"children\"\n> {\n /**\n * Primary navigation content. Routing, permissions and navigation state stay\n * with the consuming application.\n */\n navigation: ReactNode;\n /** Optional content placed above the primary navigation. */\n header?: ReactNode;\n /** Optional utility area kept separate from the primary navigation. */\n footer?: ReactNode;\n /** Width override. Defaults to the component token, then 16rem. */\n width?: CSSProperties[\"width\"];\n classNames?: AppShellSidebarClassNames;\n}\n\nconst rootTokenStyles: CSSProperties = {\n width: \"var(--monkeys-component-app-shell-sidebar-width, 16rem)\",\n borderRadius:\n \"var(--monkeys-component-app-shell-sidebar-radius, var(--radius, 0.75rem))\",\n background:\n \"var(--monkeys-component-app-shell-sidebar-background, hsl(var(--card)))\",\n color:\n \"var(--monkeys-component-app-shell-sidebar-foreground, hsl(var(--card-foreground)))\",\n borderColor:\n \"var(--monkeys-component-app-shell-sidebar-border-color, hsl(var(--border)))\",\n boxShadow: \"var(--monkeys-component-app-shell-sidebar-shadow, none)\",\n};\n\nconst headerTokenStyles: CSSProperties = {\n padding:\n \"var(--monkeys-component-app-shell-sidebar-header-padding, var(--global-spacing, 0.75rem))\",\n borderColor:\n \"var(--monkeys-component-app-shell-sidebar-header-border-color, hsl(var(--border)))\",\n};\n\nconst navigationTokenStyles: CSSProperties & {\n \"--monkeys-component-accordion-item-border-color\": string;\n} = {\n padding:\n \"var(--monkeys-component-app-shell-sidebar-navigation-padding, var(--global-spacing, 0.75rem))\",\n \"--monkeys-component-accordion-item-border-color\": \"transparent\",\n};\n\nconst footerTokenStyles: CSSProperties = {\n padding:\n \"var(--monkeys-component-app-shell-sidebar-footer-padding, var(--global-spacing, 0.75rem))\",\n background:\n \"var(--monkeys-component-app-shell-sidebar-footer-background, hsl(var(--muted) / 0.22))\",\n borderColor:\n \"var(--monkeys-component-app-shell-sidebar-footer-border-color, hsl(var(--border)))\",\n};\n\n/**\n * Persistent, outermost application navigation surface.\n *\n * This is intentionally a single shell component rather than a composition of\n * generic sidebar primitives. It owns the surface hierarchy while applications\n * retain routing and navigation behavior inside the semantic slots.\n */\nexport const AppShellSidebar = forwardRef<HTMLElement, AppShellSidebarProps>(\n function AppShellSidebar(\n {\n navigation,\n header,\n footer,\n width,\n className,\n classNames,\n style,\n \"aria-label\": ariaLabel = \"Application navigation\",\n ...props\n },\n ref,\n ) {\n return (\n <aside\n ref={ref}\n aria-label={ariaLabel}\n data-app-shell-sidebar=\"\"\n className={cn(\n \"relative isolate flex h-full min-h-0 shrink-0 flex-col overflow-hidden border\",\n classNames?.root,\n className,\n )}\n style={{\n ...rootTokenStyles,\n ...(width === undefined ? null : { width }),\n ...style,\n }}\n {...props}\n >\n {header ? (\n <div\n data-slot=\"header\"\n className={cn(\"shrink-0 border-b\", classNames?.header)}\n style={headerTokenStyles}\n >\n {header}\n </div>\n ) : null}\n\n <div\n data-slot=\"navigation\"\n className={cn(\n \"relative min-h-0 flex-1 overflow-hidden\",\n classNames?.navigation,\n )}\n style={navigationTokenStyles}\n >\n {navigation}\n </div>\n\n {footer ? (\n <div\n data-slot=\"footer\"\n className={cn(\"shrink-0 border-t\", classNames?.footer)}\n style={footerTokenStyles}\n >\n {footer}\n </div>\n ) : null}\n </aside>\n );\n },\n);\n\nAppShellSidebar.displayName = \"AppShellSidebar\";\n","import type { ReactNode } from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nimport {\n BaseAvatar,\n BaseButton,\n cn,\n type BaseAppearance,\n} from '../base';\n\nexport type UserAccountMenuRadius =\n | 'default'\n | 'none'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'full';\n\nexport type UserAccountMenuSide = 'top' | 'right' | 'bottom' | 'left';\nexport type UserAccountMenuTriggerVariant = 'avatar' | 'profile';\n\nexport interface UserAccountMenuUser {\n avatarAlt?: string;\n avatarUrl?: string;\n initials?: string;\n name?: string;\n secondaryText?: ReactNode;\n}\n\nexport interface UserAccountMenuSelectorOption {\n disabled?: boolean;\n icon?: ReactNode;\n label: ReactNode;\n value: string;\n}\n\nexport interface UserAccountMenuSelectorConfig {\n contentWidthClassName?: string;\n disabled?: boolean;\n id?: string;\n icon?: ReactNode;\n label: ReactNode;\n onChange?: (value: string) => void;\n options: UserAccountMenuSelectorOption[];\n value: string;\n visible?: boolean;\n}\n\nexport interface UserAccountMenuItem {\n disabled?: boolean;\n icon?: ReactNode;\n id: string;\n label: ReactNode;\n onSelect?: () => void;\n separatorBefore?: boolean;\n shortcut?: ReactNode;\n tone?: 'default' | 'danger';\n visible?: boolean;\n}\n\nexport interface UserAccountMenuClassNames {\n avatar?: string;\n content?: string;\n dangerItem?: string;\n item?: string;\n itemIcon?: string;\n label?: string;\n root?: string;\n secondaryText?: string;\n separator?: string;\n subContent?: string;\n subTrigger?: string;\n trigger?: string;\n userName?: string;\n}\n\nexport interface UserAccountMenuProps {\n align?: 'start' | 'center' | 'end';\n appearance?: BaseAppearance;\n ariaLabel?: string;\n className?: string;\n classNames?: UserAccountMenuClassNames;\n contentWidthClassName?: string;\n fallbackName?: string;\n items?: UserAccountMenuItem[];\n menuRadius?: UserAccountMenuRadius;\n selectors?: UserAccountMenuSelectorConfig[];\n side?: UserAccountMenuSide;\n sideOffset?: number;\n triggerEndIcon?: ReactNode;\n triggerTitle?: string;\n triggerVariant?: UserAccountMenuTriggerVariant;\n user: UserAccountMenuUser;\n}\n\nconst defaultAppearance: BaseAppearance = {\n preset: 'soft',\n density: 'compact',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n};\n\nconst radiusClassNames: Record<UserAccountMenuRadius, string> = {\n default: 'rounded-md',\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n full: 'rounded-full',\n};\n\nfunction CheckIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-3 w-3\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction MoreIcon() {\n return (\n <svg\n aria-hidden=\"true\"\n className=\"h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n );\n}\n\nfunction getInitials(name?: string) {\n if (!name) return 'U';\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (!words.length) return 'U';\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase();\n return words\n .slice(0, 2)\n .map((word) => word[0])\n .join('')\n .toUpperCase();\n}\n\nfunction renderIcon(icon: ReactNode, className?: string) {\n if (!icon) return null;\n return (\n <span className={cn('inline-flex h-4 w-4 shrink-0 items-center justify-center', className)}>\n {icon}\n </span>\n );\n}\n\nfunction getCurrentOptionLabel(selector: UserAccountMenuSelectorConfig) {\n return selector.options.find((option) => option.value === selector.value)?.label ?? selector.value;\n}\n\nfunction UserAccountMenuSelector({\n classNames,\n menuRadius,\n selector,\n}: {\n classNames?: UserAccountMenuClassNames;\n menuRadius: UserAccountMenuRadius;\n selector: UserAccountMenuSelectorConfig;\n}) {\n if (selector.visible === false || selector.options.length === 0) return null;\n\n const radiusClass = radiusClassNames[menuRadius];\n const currentLabel = getCurrentOptionLabel(selector);\n\n return (\n <DropdownMenu.Sub>\n <DropdownMenu.SubTrigger\n disabled={selector.disabled}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[state=open]:bg-[hsl(var(--accent))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radiusClass,\n classNames?.subTrigger,\n )}\n >\n {renderIcon(selector.icon)}\n <span className=\"min-w-0 truncate\">{selector.label}</span>\n <span className=\"ml-auto min-w-0 max-w-[7rem] truncate text-xs text-[hsl(var(--muted-foreground))]\">\n {currentLabel}\n </span>\n </DropdownMenu.SubTrigger>\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n sideOffset={8}\n className={cn(\n 'z-50 min-w-40 border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1.5 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95',\n radiusClass,\n selector.contentWidthClassName,\n classNames?.subContent,\n )}\n >\n <DropdownMenu.RadioGroup value={selector.value} onValueChange={selector.onChange}>\n {selector.options.map((option) => (\n <DropdownMenu.RadioItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 pl-8 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radiusClass,\n classNames?.item,\n )}\n >\n <DropdownMenu.ItemIndicator className=\"absolute left-2 inline-flex h-4 w-4 items-center justify-center\">\n <CheckIcon />\n </DropdownMenu.ItemIndicator>\n {renderIcon(option.icon, classNames?.itemIcon)}\n <span className=\"min-w-0 truncate\">{option.label}</span>\n </DropdownMenu.RadioItem>\n ))}\n </DropdownMenu.RadioGroup>\n </DropdownMenu.SubContent>\n </DropdownMenu.Portal>\n </DropdownMenu.Sub>\n );\n}\n\nexport function UserAccountMenu({\n align = 'end',\n appearance = defaultAppearance,\n ariaLabel,\n className,\n classNames,\n contentWidthClassName = 'w-56',\n fallbackName = 'User',\n items = [],\n menuRadius = 'default',\n selectors = [],\n side = 'bottom',\n sideOffset = 8,\n triggerEndIcon,\n triggerTitle,\n triggerVariant = 'avatar',\n user,\n}: UserAccountMenuProps) {\n const displayName = user.name?.trim() || fallbackName;\n const initials = user.initials ?? getInitials(displayName);\n const radiusClass = radiusClassNames[menuRadius];\n const visibleSelectors = selectors.filter(\n (selector) => selector.visible !== false && selector.options.length > 0,\n );\n const visibleItems = items.filter((item) => item.visible !== false);\n const hasMenuBody = visibleSelectors.length > 0 || visibleItems.length > 0;\n\n const avatar = (\n <BaseAvatar\n appearance={appearance}\n alt={user.avatarAlt ?? displayName}\n className={cn('h-8 w-8', classNames?.avatar)}\n initials={initials}\n name={displayName}\n size=\"sm\"\n src={user.avatarUrl}\n />\n );\n const isProfileTrigger = triggerVariant === 'profile';\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <BaseButton\n appearance={appearance}\n ariaLabel={ariaLabel ?? displayName}\n className={cn(\n isProfileTrigger\n ? 'h-auto w-full justify-start rounded-lg border-transparent bg-transparent px-2 py-2 text-left shadow-none transition-all hover:bg-[hsl(var(--muted))]/60'\n : 'h-9 w-9 overflow-visible rounded-full border-transparent bg-transparent p-0 shadow-none transition-all hover:ring-2 hover:ring-[hsl(var(--ring))]/20',\n className,\n classNames?.root,\n classNames?.trigger,\n )}\n classNames={{\n icon: 'h-8 w-8',\n label: isProfileTrigger ? 'min-w-0 flex-1 text-left' : undefined,\n }}\n endIcon={isProfileTrigger ? (triggerEndIcon ?? <MoreIcon />) : undefined}\n icon={avatar}\n iconOnly={!isProfileTrigger}\n label={\n isProfileTrigger ? (\n <span className=\"flex min-w-0 flex-col items-start\">\n <span className=\"max-w-full truncate text-sm font-medium leading-none text-[hsl(var(--foreground))]\">\n {displayName}\n </span>\n {user.secondaryText ? (\n <span className=\"mt-1 max-w-full truncate text-xs leading-none text-[hsl(var(--muted-foreground))]\">\n {user.secondaryText}\n </span>\n ) : null}\n </span>\n ) : undefined\n }\n title={triggerTitle ?? displayName}\n tone=\"muted\"\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1.5 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95',\n contentWidthClassName,\n radiusClass,\n classNames?.content,\n )}\n >\n <DropdownMenu.Label className={cn('px-2 py-1.5 font-normal', classNames?.label)}>\n <div className=\"flex min-w-0 items-center gap-2\">\n {avatar}\n <div className=\"flex min-w-0 flex-col\">\n <span className={cn('truncate text-sm font-medium leading-none', classNames?.userName)}>\n {displayName}\n </span>\n {user.secondaryText ? (\n <span\n className={cn(\n 'truncate pt-1 text-xs leading-none text-[hsl(var(--muted-foreground))]',\n classNames?.secondaryText,\n )}\n >\n {user.secondaryText}\n </span>\n ) : null}\n </div>\n </div>\n </DropdownMenu.Label>\n\n {hasMenuBody ? (\n <DropdownMenu.Separator\n className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n />\n ) : null}\n\n {visibleSelectors.map((selector, index) => (\n <UserAccountMenuSelector\n key={selector.id ?? `selector-${index}`}\n classNames={classNames}\n menuRadius={menuRadius}\n selector={selector}\n />\n ))}\n\n {visibleSelectors.length > 0 && visibleItems.length > 0 ? (\n <DropdownMenu.Separator\n className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n />\n ) : null}\n\n {visibleItems.map((item) => (\n <div key={item.id}>\n {item.separatorBefore ? (\n <DropdownMenu.Separator\n className={cn('my-1 h-px bg-[hsl(var(--border))]', classNames?.separator)}\n />\n ) : null}\n <DropdownMenu.Item\n disabled={item.disabled}\n onSelect={item.onSelect}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2 px-2 py-2 text-sm outline-none transition-colors hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))] data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radiusClass,\n item.tone === 'danger' &&\n 'text-[hsl(var(--destructive))] hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--destructive))] focus:text-[hsl(var(--destructive))]',\n classNames?.item,\n item.tone === 'danger' && classNames?.dangerItem,\n )}\n >\n {renderIcon(item.icon, classNames?.itemIcon)}\n <span className=\"min-w-0 flex-1 truncate\">{item.label}</span>\n {item.shortcut ? (\n <span className=\"ml-3 shrink-0 text-xs text-[hsl(var(--muted-foreground))]\">\n {item.shortcut}\n </span>\n ) : null}\n </DropdownMenu.Item>\n </div>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n","import {\n Fragment,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { BaseButton, BaseTooltip, type BaseAppearance } from \"../base\";\nexport { AppShellSidebar } from \"./AppShellSidebar\";\nexport type {\n AppShellSidebarClassNames,\n AppShellSidebarProps,\n} from \"./AppShellSidebar\";\nexport { UserAccountMenu } from \"./UserAccountMenu\";\nexport type {\n UserAccountMenuClassNames,\n UserAccountMenuItem,\n UserAccountMenuProps,\n UserAccountMenuRadius,\n UserAccountMenuSelectorConfig,\n UserAccountMenuSelectorOption,\n UserAccountMenuSide,\n UserAccountMenuTriggerVariant,\n UserAccountMenuUser,\n} from \"./UserAccountMenu\";\n\n// ============================================================\n// cn utility (inline clsx + tailwind-merge–lite for zero deps)\n// ============================================================\nexport function cn(...inputs: (string | undefined | null | false)[]): string {\n return inputs.filter(Boolean).join(\" \");\n}\n\n// ============================================================\n// NavButton\n// ============================================================\nexport interface NavButtonProps {\n /** 是否处于激活状态 */\n active?: boolean;\n /** 左侧图标 */\n icon?: ReactNode;\n /** 右侧附加内容(如 chevron) */\n postfix?: ReactNode;\n /** 点击回调 */\n onClick?: () => void;\n className?: string;\n children: ReactNode;\n}\n\nexport function NavButton({\n active,\n icon,\n postfix,\n onClick,\n className,\n children,\n}: NavButtonProps) {\n return (\n <div\n className={cn(\n \"flex w-full cursor-pointer select-none items-center gap-2 rounded-xl border p-2 text-xs text-[hsl(var(--foreground))] transition-colors\",\n active\n ? \"border-[hsl(var(--input))] bg-[hsl(var(--muted))] font-bold\"\n : \"border-transparent hover:border-[hsl(var(--input))]/60 hover:bg-[hsl(var(--muted))]/60\",\n className,\n )}\n onClick={onClick}\n >\n <div className=\"w-[20px] [&_svg]:h-[16px] [&_svg]:w-[16px]\">{icon}</div>\n <span className=\"text-sm\">{children}</span>\n {postfix}\n </div>\n );\n}\n\n// ============================================================\n// AppHeader\n// ============================================================\nexport interface HeaderTab {\n id: string;\n label: string;\n}\n\nexport interface AppHeaderLogo {\n /** Logo 图片 URL,若为空则显示 fallback */\n url?: string;\n /** 品牌名称 */\n title: string;\n /** 点击 Logo 回调 */\n onClick?: () => void;\n}\n\nexport interface AppHeaderUser {\n name?: string;\n email?: string;\n photo?: string;\n}\n\nexport interface AppHeaderProps {\n /** 品牌 Logo */\n logo: AppHeaderLogo;\n /** 导航 tabs */\n tabs?: HeaderTab[];\n /** 当前激活的 tab id */\n activeTab?: string;\n /** tab 切换回调 */\n onTabChange?: (tabId: string) => void;\n /** 用户信息 */\n user?: AppHeaderUser;\n /** 退出登录回调 */\n onLogout?: () => void;\n /** 退出登录文案 */\n logoutLabel?: string;\n /** 用户菜单中的额外菜单项(在退出登录按钮之前渲染) */\n userMenuItems?: ReactNode;\n /** header 右侧额外内容 */\n extra?: ReactNode;\n className?: string;\n}\n\nexport function AppHeader({\n logo,\n tabs,\n activeTab,\n onTabChange,\n user,\n onLogout,\n logoutLabel = \"退出登录\",\n userMenuItems,\n extra,\n className,\n}: AppHeaderProps) {\n const getUserInitials = (name: string) =>\n name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n return (\n <header\n className={cn(\n \"flex h-[72px] w-full shrink-0 items-center justify-between gap-4 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n className,\n )}\n >\n {/* Logo */}\n <div\n className=\"flex shrink-0 cursor-pointer items-center gap-2\"\n onClick={logo.onClick}\n >\n <div\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-lg overflow-hidden\",\n logo.url\n ? \"bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"h-full w-full object-contain\"\n />\n ) : (\n <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n )}\n </div>\n <span className=\"text-lg font-semibold whitespace-nowrap\">\n {logo.title}\n </span>\n </div>\n\n {/* Separator + Tabs */}\n {tabs && tabs.length > 0 && (\n <>\n <div className=\"h-1/2 w-px bg-[hsl(var(--border))]\" />\n <div className=\"flex flex-1 items-center\">\n <div className=\"inline-flex h-9 items-center gap-1 rounded-md bg-transparent p-1\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all\",\n tab.id === activeTab\n ? \"bg-[hsl(var(--muted))] text-[hsl(var(--foreground))] shadow-sm\"\n : \"text-[hsl(var(--muted-foreground))] hover:bg-[hsl(var(--muted))]/50\",\n )}\n onClick={() => onTabChange?.(tab.id)}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n </>\n )}\n {(!tabs || tabs.length === 0) && <div className=\"flex-1\" />}\n\n {/* Right side */}\n <div className=\"flex shrink-0 items-center gap-4\">\n {extra}\n {user && (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button className=\"flex h-8 w-8 items-center justify-center rounded-full hover:ring-2 hover:ring-[hsl(var(--ring))]/20 transition-all overflow-hidden focus-visible:outline-none\">\n {user.photo ? (\n <img\n src={user.photo}\n alt={user.name}\n className=\"h-8 w-8 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-xs font-medium\">\n {user.name ? getUserInitials(user.name) : \"U\"}\n </div>\n )}\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className=\"z-50 w-52 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--popover))] p-1 text-[hsl(var(--popover-foreground))] shadow-md animate-in fade-in-0 zoom-in-95\"\n sideOffset={5}\n align=\"end\"\n >\n {/* User info label */}\n <DropdownMenu.Label className=\"flex items-center gap-2 px-2 py-1.5 font-normal\">\n {user.photo ? (\n <img\n src={user.photo}\n alt={user.name}\n className=\"h-8 w-8 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-xs font-medium\">\n {user.name ? getUserInitials(user.name) : \"U\"}\n </div>\n )}\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium leading-none\">\n {user.name}\n </span>\n {user.email && (\n <span className=\"text-xs text-[hsl(var(--muted-foreground))] leading-none mt-1\">\n {user.email}\n </span>\n )}\n </div>\n </DropdownMenu.Label>\n\n <DropdownMenu.Separator className=\"h-px bg-[hsl(var(--border))] my-1\" />\n\n <DropdownMenu.Group>\n {userMenuItems}\n\n {/* Logout */}\n <DropdownMenu.Item\n className=\"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-[hsl(var(--destructive))] outline-none transition-colors hover:bg-[hsl(var(--accent))]\"\n onSelect={() => onLogout?.()}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n {logoutLabel}\n </DropdownMenu.Item>\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n )}\n </div>\n </header>\n );\n}\n\n// ============================================================\n// AppSidebar\n// ============================================================\nexport interface SidebarNavItem {\n id: string;\n label: string;\n icon?: ReactNode;\n /** 如果有 children 则为分组,点击展开/折叠 */\n children?: SidebarNavItem[];\n}\n\nexport interface SidebarAccount {\n name?: string;\n photo?: string;\n}\n\nexport interface AppSidebarProps {\n /** Logo */\n logo?: AppHeaderLogo;\n /** 导航菜单 */\n navItems: SidebarNavItem[];\n /** 当前路径/激活的 item id */\n activeItemId?: string;\n /** 点击导航项回调 */\n onNavigate?: (itemId: string) => void;\n /** 账户信息 */\n account?: SidebarAccount;\n /** 退出登录回调 */\n onLogout?: () => void;\n /** 退出登录文案 */\n logoutLabel?: string;\n /** 底部额外内容(如版本号) */\n footer?: ReactNode;\n /** 默认展开的分组 id 列表 */\n defaultExpandedGroups?: string[];\n className?: string;\n}\n\nexport function AppSidebar({\n logo,\n navItems,\n activeItemId,\n onNavigate,\n account,\n onLogout,\n logoutLabel = \"退出登录\",\n footer,\n defaultExpandedGroups,\n className,\n}: AppSidebarProps) {\n return (\n <div\n className={cn(\n \"flex w-[13.7rem] shrink-0 flex-col justify-between gap-[var(--global-spacing,0.75rem)] overflow-y-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-5\",\n className,\n )}\n >\n {/* Logo */}\n {logo && (\n <div\n className=\"flex shrink-0 cursor-pointer items-center gap-2\"\n onClick={logo.onClick}\n >\n <div\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-lg overflow-hidden\",\n logo.url\n ? \"bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"h-full w-full object-contain\"\n />\n ) : (\n <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n )}\n </div>\n <span className=\"text-lg font-semibold whitespace-nowrap\">\n {logo.title}\n </span>\n </div>\n )}\n\n {/* Navigation */}\n <SidebarNavList\n items={navItems}\n activeItemId={activeItemId}\n onNavigate={onNavigate}\n defaultExpandedGroups={defaultExpandedGroups}\n />\n\n {/* Account Section */}\n {(account || footer) && (\n <div className=\"flex flex-col gap-2\">\n {account && (\n <div className=\"flex w-full flex-col gap-2 rounded-lg bg-[hsl(var(--muted))] p-2 shadow-sm\">\n <div className=\"flex w-full items-center justify-between px-3 py-1\">\n <div className=\"flex items-center gap-2\">\n {account.photo ? (\n <img\n src={account.photo}\n alt={account.name}\n className=\"h-5 w-5 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex h-5 w-5 items-center justify-center rounded-full bg-[hsl(var(--muted))] text-[10px] font-medium\">\n {account.name\n ? account.name.charAt(0).toUpperCase()\n : \"U\"}\n </div>\n )}\n <span className=\"text-xs font-medium truncate max-w-[100px]\">\n {account.name}\n </span>\n </div>\n {onLogout && (\n <button\n onClick={onLogout}\n className=\"flex items-center justify-center text-[hsl(var(--destructive))] hover:opacity-80 transition-opacity\"\n title={logoutLabel}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )}\n {footer}\n </div>\n )}\n </div>\n );\n}\n\n// ============================================================\n// SidebarNavList (internal accordion-style nav)\n// ============================================================\ninterface SidebarNavListProps {\n items: SidebarNavItem[];\n activeItemId?: string;\n onNavigate?: (itemId: string) => void;\n defaultExpandedGroups?: string[];\n}\n\nfunction SidebarNavList({\n items,\n activeItemId,\n onNavigate,\n defaultExpandedGroups,\n}: SidebarNavListProps) {\n const [expanded, setExpanded] = useState<Record<string, boolean>>(() => {\n const map: Record<string, boolean> = {};\n (defaultExpandedGroups ?? items.map((i) => i.id)).forEach((id) => {\n map[id] = true;\n });\n return map;\n });\n const [localActiveItemId, setLocalActiveItemId] = useState<\n string | undefined\n >(activeItemId);\n\n useEffect(() => {\n if (activeItemId !== undefined) {\n setLocalActiveItemId(activeItemId);\n }\n }, [activeItemId]);\n\n const toggle = (id: string) => {\n setExpanded((prev: Record<string, boolean>) => ({\n ...prev,\n [id]: !prev[id],\n }));\n };\n const resolvedActiveItemId = activeItemId ?? localActiveItemId;\n\n return (\n <div\n className=\"h-full flex-1 overflow-y-auto\"\n style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n >\n <style>{`.monkeys-sidebar-nav::-webkit-scrollbar { display: none; }`}</style>\n <div className=\"monkeys-sidebar-nav flex w-full flex-col gap-2 text-xs text-[hsl(var(--foreground))]\">\n {items.map((item) => {\n if (item.children && item.children.length > 0) {\n const isExpanded = expanded[item.id] ?? true;\n return (\n <div key={item.id}>\n <NavButton\n icon={item.icon}\n onClick={() => toggle(item.id)}\n postfix={\n <div className=\"flex flex-1 justify-end\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"shrink-0 text-[hsl(var(--foreground))] transition-transform duration-200\"\n style={{\n transform: isExpanded\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n }\n >\n {item.label}\n </NavButton>\n {isExpanded && (\n <div className=\"flex flex-col gap-1 mt-1\">\n {item.children.map((child) => (\n <NavButton\n key={child.id}\n active={child.id === resolvedActiveItemId}\n onClick={() => {\n setLocalActiveItemId(child.id);\n onNavigate?.(child.id);\n }}\n >\n {child.label}\n </NavButton>\n ))}\n </div>\n )}\n </div>\n );\n }\n return (\n <NavButton\n key={item.id}\n icon={item.icon}\n active={item.id === resolvedActiveItemId}\n onClick={() => {\n setLocalActiveItemId(item.id);\n onNavigate?.(item.id);\n }}\n >\n {item.label}\n </NavButton>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ============================================================\n// AppLayout\n// ============================================================\nexport interface AppLayoutProps {\n /** header 组件 */\n header?: ReactNode;\n /** sidebar 组件 */\n sidebar?: ReactNode;\n /** 主内容 */\n children: ReactNode;\n /** 是否 flush 布局(无内边距) */\n flush?: boolean;\n className?: string;\n}\n\nexport function AppLayout({\n header,\n sidebar,\n children,\n flush = false,\n className,\n}: AppLayoutProps) {\n return (\n <div\n className={cn(\n \"flex h-screen flex-col gap-[var(--global-spacing,0.75rem)] overflow-hidden p-[var(--global-spacing,0.75rem)]\",\n className,\n )}\n style={{ backgroundColor: \"hsl(var(--muted))\" }}\n >\n {header ? header : null}\n <div className=\"flex flex-1 gap-[var(--global-spacing,0.75rem)] overflow-hidden min-h-0\">\n {sidebar ? sidebar : null}\n <main\n className={cn(\n \"flex-1 min-h-0 overflow-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))]\",\n !flush && \"overflow-y-auto\",\n )}\n >\n {flush ? (\n children\n ) : (\n <div className=\"h-full overflow-y-auto\">{children}</div>\n )}\n </main>\n </div>\n </div>\n );\n}\n\n// ============================================================\n// NavigationLayout\n// ============================================================\nexport type NavigationMode = \"sidebar\" | \"headbar\";\nexport type HeadbarLayoutMode = \"boxed\" | \"full-bleed\";\nexport type HeadbarMenuRadius =\n \"default\" | \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type HeadbarNavPosition = \"left\" | \"center\" | \"right\";\nexport type HeadbarSurface = \"card\" | \"glassy\" | \"ghost\";\n\nexport interface LayoutNavItem {\n id: string;\n label: ReactNode;\n headbarLabel?: ReactNode;\n icon?: ReactNode;\n children?: LayoutNavItem[];\n disabled?: boolean;\n trailing?: ReactNode;\n headbarSecondaryAction?: ReactNode;\n}\n\ninterface NavigationLayoutAction {\n id: string;\n label: ReactNode;\n title?: string;\n icon?: ReactNode;\n onClick?: () => void;\n}\n\nexport interface HeadbarLayout {\n brandTitle?: ReactNode;\n heightPx?: number;\n layoutMode?: HeadbarLayoutMode;\n menuRadius?: HeadbarMenuRadius;\n navPosition?: HeadbarNavPosition;\n surface?: HeadbarSurface;\n}\n\nexport interface NavigationLayoutProps {\n activeItemId?: string;\n activeRootId?: string;\n allowModeSwitch?: boolean;\n accountMenu?: ReactNode;\n children: ReactNode;\n className?: string;\n collapsedSidebarAccountMenu?: ReactNode;\n collapsedSidebarWidth?: string;\n defaultMode?: NavigationMode;\n defaultSidebarCollapsed?: boolean;\n expandedSidebarWidth?: string;\n expandSidebarLabel?: string;\n flush?: boolean;\n headbarActions?: ReactNode;\n headbarLayout?: HeadbarLayout;\n logo?: AppHeaderLogo;\n mode?: NavigationMode;\n navItems: LayoutNavItem[];\n onModeChange?: (mode: NavigationMode) => void;\n onNavigate?: (itemId: string) => void;\n onSidebarCollapsedChange?: (collapsed: boolean) => void;\n renderHeadbarExtra?: ReactNode;\n collapseSidebarLabel?: string;\n sidebarCollapsed?: boolean;\n sidebarAccountMenu?: ReactNode;\n sidebarFooter?: ReactNode;\n sidebarHeader?: ReactNode;\n switchToHeadbarLabel?: string;\n switchToSidebarLabel?: string;\n}\n\nconst NAVIGATION_LAYOUT_SIDEBAR_EXPANDED_WIDTH = \"13.7rem\";\nconst NAVIGATION_LAYOUT_SIDEBAR_COLLAPSED_WIDTH = \"4.25rem\";\nconst NAVIGATION_LAYOUT_TRANSITION_TIMING = \"cubic-bezier(0.22, 1, 0.36, 1)\";\nconst NAVIGATION_LAYOUT_HEADBAR_DEFAULT_HEIGHT_PX = 72;\nconst NAVIGATION_LAYOUT_HEADBAR_MIN_HEIGHT_PX = 56;\nconst NAVIGATION_LAYOUT_HEADBAR_MAX_HEIGHT_PX = 120;\nconst NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX = 64;\nconst NAVIGATION_LAYOUT_HEADBAR_BOXED_VERTICAL_PADDING_PX = 12;\nconst NAVIGATION_LAYOUT_HEADBAR_COMPACT_VERTICAL_PADDING_PX = 8;\nconst NAVIGATION_LAYOUT_HEADBAR_LOGO_DEFAULT_SIZE_PX = 44;\nconst NAVIGATION_LAYOUT_HEADBAR_LOGO_COMPACT_SIZE_PX = 36;\nconst NAVIGATION_LAYOUT_DEFAULT_APPEARANCE: BaseAppearance = {\n preset: \"soft\",\n density: \"compact\",\n radius: \"lg\",\n border: \"subtle\",\n background: \"soft\",\n};\n\nconst NAVIGATION_LAYOUT_MENU_RADIUS_CLASS_MAP: Record<\n Exclude<HeadbarMenuRadius, \"default\">,\n { all: string; left: string; right: string }\n> = {\n none: { all: \"rounded-none\", left: \"!rounded-none\", right: \"!rounded-none\" },\n sm: {\n all: \"rounded-sm\",\n left: \"!rounded-l-sm !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-sm\",\n },\n md: {\n all: \"rounded-md\",\n left: \"!rounded-l-md !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-md\",\n },\n lg: {\n all: \"rounded-lg\",\n left: \"!rounded-l-lg !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-lg\",\n },\n xl: {\n all: \"rounded-xl\",\n left: \"!rounded-l-xl !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-xl\",\n },\n full: {\n all: \"rounded-full\",\n left: \"!rounded-l-full !rounded-r-none\",\n right: \"!rounded-l-none !rounded-r-full\",\n },\n};\n\nfunction clampHeadbarHeight(value?: number) {\n if (typeof value !== \"number\" || !Number.isFinite(value))\n return NAVIGATION_LAYOUT_HEADBAR_DEFAULT_HEIGHT_PX;\n return Math.min(\n NAVIGATION_LAYOUT_HEADBAR_MAX_HEIGHT_PX,\n Math.max(NAVIGATION_LAYOUT_HEADBAR_MIN_HEIGHT_PX, Math.round(value)),\n );\n}\n\nfunction getHeadbarVerticalPaddingPx(heightPx: number) {\n return heightPx <= NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX\n ? NAVIGATION_LAYOUT_HEADBAR_COMPACT_VERTICAL_PADDING_PX\n : NAVIGATION_LAYOUT_HEADBAR_BOXED_VERTICAL_PADDING_PX;\n}\n\nfunction getHeadbarLogoSizePx(heightPx: number) {\n return heightPx <= NAVIGATION_LAYOUT_HEADBAR_COMPACT_HEIGHT_THRESHOLD_PX\n ? NAVIGATION_LAYOUT_HEADBAR_LOGO_COMPACT_SIZE_PX\n : NAVIGATION_LAYOUT_HEADBAR_LOGO_DEFAULT_SIZE_PX;\n}\n\nfunction getHeadbarMenuRadiusClass(\n menuRadius: HeadbarMenuRadius = \"default\",\n part: \"all\" | \"left\" | \"right\" = \"all\",\n) {\n if (menuRadius === \"default\") {\n if (part === \"left\") return \"rounded-l-lg rounded-r-none\";\n if (part === \"right\") return \"rounded-l-none rounded-r-lg\";\n return \"rounded-lg\";\n }\n return NAVIGATION_LAYOUT_MENU_RADIUS_CLASS_MAP[menuRadius][part];\n}\n\nfunction getHeadbarFrameClass(\n layoutMode: HeadbarLayoutMode = \"boxed\",\n navPosition: HeadbarNavPosition = \"center\",\n) {\n const columns =\n navPosition === \"center\"\n ? \"grid-cols-[minmax(max-content,1fr)_minmax(0,max-content)_minmax(max-content,1fr)]\"\n : \"grid-cols-[max-content_minmax(0,1fr)_max-content]\";\n return layoutMode === \"full-bleed\"\n ? cn(\n \"sticky top-0 z-40 grid w-full shrink-0 items-center gap-4 rounded-none border-b border-x-0 border-t-0 border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n columns,\n )\n : cn(\n \"sticky top-0 z-40 grid w-full shrink-0 items-center gap-4 rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-[var(--global-spacing,0.75rem)]\",\n columns,\n );\n}\n\nfunction getHeadbarFrameStyle(\n layoutMode: HeadbarLayoutMode = \"boxed\",\n heightPx: number,\n surface: HeadbarSurface = \"card\",\n): CSSProperties {\n const verticalPaddingPx = getHeadbarVerticalPaddingPx(heightPx);\n const fallbackBackground = \"hsl(var(--background))\";\n const style: CSSProperties = {\n height: `var(--monkeys-component-navigation-headbar-height, ${heightPx}px)`,\n minHeight: `var(--monkeys-component-navigation-headbar-height, ${heightPx}px)`,\n paddingTop: `${verticalPaddingPx}px`,\n paddingBottom: `${verticalPaddingPx}px`,\n background: `var(--monkeys-component-navigation-headbar-frame-background, ${fallbackBackground})`,\n color:\n \"var(--monkeys-component-navigation-headbar-frame-foreground, hsl(var(--foreground)))\",\n borderColor:\n surface === \"glassy\"\n ? \"var(--monkeys-component-navigation-headbar-frame-border-color, rgb(255 255 255 / 0.5))\"\n : \"var(--monkeys-component-navigation-headbar-frame-border-color, hsl(var(--input)))\",\n borderRadius:\n layoutMode === \"full-bleed\"\n ? \"0\"\n : \"var(--monkeys-component-navigation-headbar-frame-radius, var(--radius, 0.75rem))\",\n boxShadow:\n surface === \"glassy\"\n ? \"var(--monkeys-component-navigation-headbar-frame-shadow, inset 0 0 0 0 rgb(0 0 0 / 0.1))\"\n : \"var(--monkeys-component-navigation-headbar-frame-shadow, none)\",\n backdropFilter: `blur(var(--monkeys-component-navigation-headbar-frame-backdrop-blur, ${surface === \"glassy\" ? \"45px\" : \"0px\"}))`,\n };\n\n if (layoutMode === \"full-bleed\") {\n style.marginLeft = \"calc(var(--global-spacing,0.75rem) * -1)\";\n style.marginRight = \"calc(var(--global-spacing,0.75rem) * -1)\";\n style.marginTop = \"calc(var(--global-spacing,0.75rem) * -1)\";\n style.width = \"calc(100% + (var(--global-spacing,0.75rem) * 2))\";\n }\n\n return style;\n}\n\nfunction getHeadbarNavClass(navPosition: HeadbarNavPosition = \"center\") {\n if (navPosition === \"left\") return \"justify-start\";\n if (navPosition === \"right\") return \"justify-end\";\n return \"justify-center\";\n}\n\nfunction getHeadbarItemStyle(\n active: boolean,\n useTokenRadius = true,\n): CSSProperties {\n return {\n height: \"var(--monkeys-component-navigation-headbar-item-height, 2.25rem)\",\n borderRadius: useTokenRadius\n ? \"var(--monkeys-component-navigation-headbar-item-radius, var(--radius, 0.5rem))\"\n : undefined,\n paddingInline:\n \"var(--monkeys-component-navigation-headbar-item-padding-inline, 0.75rem)\",\n columnGap: \"var(--monkeys-component-navigation-headbar-item-gap, 0.375rem)\",\n color: active\n ? \"var(--monkeys-component-navigation-headbar-item-active-foreground, hsl(var(--foreground)))\"\n : \"var(--monkeys-component-navigation-headbar-item-foreground, hsl(var(--muted-foreground)))\",\n background: active\n ? \"var(--monkeys-component-navigation-headbar-item-active-background, hsl(var(--muted)))\"\n : \"transparent\",\n borderColor: active\n ? \"var(--monkeys-component-navigation-headbar-item-active-border-color, transparent)\"\n : \"transparent\",\n fontSize:\n \"var(--monkeys-component-navigation-headbar-item-font-size, 0.875rem)\",\n fontWeight:\n \"var(--monkeys-component-navigation-headbar-item-font-weight, 500)\",\n };\n}\n\nfunction findNavigationRootId(\n items: LayoutNavItem[],\n activeItemId?: string,\n): string | undefined {\n for (const item of items) {\n if (item.id === activeItemId) return item.id;\n if (item.children?.some((child) => child.id === activeItemId))\n return item.id;\n }\n return activeItemId;\n}\n\nfunction getNavigationActionTitle(action: NavigationLayoutAction) {\n return (\n action.title ||\n (typeof action.label === \"string\" ? action.label : undefined)\n );\n}\n\nfunction NavigationLayoutActionButtons({\n actions,\n compact,\n}: {\n actions: NavigationLayoutAction[];\n compact: boolean;\n}) {\n if (!actions.length) return null;\n\n if (compact) {\n return (\n <div className=\"flex flex-col items-center gap-2\">\n {actions.map((action) => {\n const title = getNavigationActionTitle(action);\n return (\n <BaseTooltip\n key={action.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n content={action.label}\n placement=\"right\"\n portal\n >\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n iconOnly\n icon={action.icon}\n onClick={action.onClick}\n title={title}\n ariaLabel={title}\n className={cn(\n \"h-10 w-10 rounded-lg border-transparent text-[hsl(var(--muted-foreground))] shadow-none\",\n \"hover:-translate-y-0.5 hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))] hover:text-[hsl(var(--foreground))]\",\n \"active:translate-y-0 active:scale-[0.96]\",\n )}\n />\n </BaseTooltip>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n {actions.map((action) => (\n <BaseButton\n key={action.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n icon={action.icon}\n label={<span className=\"truncate\">{action.label}</span>}\n onClick={action.onClick}\n title={getNavigationActionTitle(action)}\n className={cn(\n \"h-9 w-full justify-start gap-2.5 rounded-lg border-transparent px-3 text-left text-[13px] text-[hsl(var(--muted-foreground))] shadow-none\",\n \"hover:-translate-y-0.5 hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))]/70 hover:text-[hsl(var(--foreground))]\",\n \"active:translate-y-0 active:scale-[0.985]\",\n )}\n />\n ))}\n </div>\n );\n}\n\nfunction SidebarNavigationList({\n activeItemId,\n items,\n onNavigate,\n revealRequest,\n}: {\n activeItemId?: string;\n items: LayoutNavItem[];\n onNavigate?: (itemId: string) => void;\n revealRequest?: { id: string; nonce: number } | null;\n}) {\n const navRef = useRef<HTMLDivElement | null>(null);\n const [expandedByRoot, setExpandedByRoot] = useState<Record<string, boolean>>(\n {},\n );\n\n const toggleRoot = (id: string) => {\n setExpandedByRoot((current) => ({\n ...current,\n [id]: !current[id],\n }));\n };\n\n useEffect(() => {\n if (!revealRequest) return;\n setExpandedByRoot((current) => ({\n ...current,\n [revealRequest.id]: true,\n }));\n\n const frameId = window.requestAnimationFrame(() => {\n const targetElement = navRef.current?.querySelector(\n `[data-navigation-sidebar-root-id=\"${CSS.escape(revealRequest.id)}\"]`,\n );\n if (targetElement instanceof HTMLElement) {\n targetElement.scrollIntoView({\n behavior: \"auto\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n });\n\n return () => window.cancelAnimationFrame(frameId);\n }, [revealRequest]);\n\n return (\n <div\n className=\"h-full flex-1 overflow-y-auto\"\n style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n >\n <style>{`.monkeys-navigation-sidebar-nav::-webkit-scrollbar { display: none; }`}</style>\n <div\n ref={navRef}\n className=\"monkeys-navigation-sidebar-nav flex w-full flex-col gap-2 text-xs text-[hsl(var(--foreground))]\"\n >\n {items.map((item) => {\n const isGroup = Boolean(item.children?.length);\n const isExpanded = Boolean(expandedByRoot[item.id]);\n const isActive = activeItemId === item.id;\n\n if (isGroup) {\n return (\n <div key={item.id} data-navigation-sidebar-root-id={item.id}>\n <NavButton\n icon={item.icon}\n onClick={() => toggleRoot(item.id)}\n postfix={\n <div className=\"flex flex-1 justify-end\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"shrink-0 text-[hsl(var(--foreground))] transition-transform duration-200\"\n style={{\n transform: isExpanded\n ? \"rotate(90deg)\"\n : \"rotate(0deg)\",\n }}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </div>\n }\n >\n {item.label}\n </NavButton>\n {isExpanded ? (\n <div className=\"mt-1 flex flex-col gap-1\">\n {item.children?.map((child) => (\n <NavButton\n key={child.id}\n active={activeItemId === child.id}\n onClick={() => onNavigate?.(child.id)}\n >\n {child.label}\n </NavButton>\n ))}\n </div>\n ) : null}\n </div>\n );\n }\n\n return (\n <div key={item.id} data-navigation-sidebar-root-id={item.id}>\n <NavButton\n active={isActive}\n icon={item.icon}\n onClick={() => onNavigate?.(item.id)}\n >\n {item.label}\n </NavButton>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction SidebarBrand({\n collapsed,\n logo,\n title,\n}: {\n collapsed?: boolean;\n logo?: AppHeaderLogo;\n title?: ReactNode;\n}) {\n if (!logo) return null;\n\n const brandTitle = title ?? logo.title;\n const logoMark = (\n <div\n className={cn(\n \"flex h-9 w-9 shrink-0 items-center justify-center overflow-hidden rounded-lg\",\n logo.url\n ? \"bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"h-full w-full object-contain\"\n />\n ) : (\n <span className=\"text-sm font-bold\">{logo.title.charAt(0)}</span>\n )}\n </div>\n );\n\n if (collapsed) {\n return (\n <BaseTooltip\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n content={brandTitle}\n placement=\"right\"\n portal\n >\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n ariaLabel={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n className=\"h-10 w-10 rounded-lg border-transparent bg-transparent p-0 shadow-none hover:bg-[hsl(var(--muted))]/60\"\n icon={logoMark}\n iconOnly\n onClick={logo.onClick}\n title={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n tone=\"muted\"\n />\n </BaseTooltip>\n );\n }\n\n return (\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n ariaLabel={logo.title}\n className=\"h-auto w-full justify-start gap-3 border-transparent bg-transparent p-0 text-left shadow-none hover:bg-transparent\"\n classNames={{ icon: \"h-9 w-9\" }}\n icon={logoMark}\n label={\n <span className=\"min-w-0 truncate text-sm font-semibold text-[hsl(var(--foreground))]\">\n {brandTitle}\n </span>\n }\n onClick={logo.onClick}\n title={typeof brandTitle === \"string\" ? brandTitle : logo.title}\n tone=\"muted\"\n />\n );\n}\n\nfunction Sidebar({\n accountMenu,\n activeItemId,\n actions = [],\n collapsed,\n collapsedAccountMenu,\n footer,\n header,\n items,\n logo,\n onCollapsedChange,\n onNavigate,\n onRevealRoot,\n revealRequest,\n title,\n}: {\n accountMenu?: ReactNode;\n activeItemId?: string;\n actions?: NavigationLayoutAction[];\n collapsed?: boolean;\n collapsedAccountMenu?: ReactNode;\n footer?: ReactNode;\n header?: ReactNode;\n items: LayoutNavItem[];\n logo?: AppHeaderLogo;\n onCollapsedChange?: (collapsed: boolean) => void;\n onNavigate?: (itemId: string) => void;\n onRevealRoot?: (rootId: string) => void;\n revealRequest?: { id: string; nonce: number } | null;\n title?: ReactNode;\n}) {\n if (collapsed) {\n const activeRootId = findNavigationRootId(items, activeItemId);\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] p-2 shadow-sm\">\n <div className=\"mb-3 flex shrink-0 justify-center\">\n {header ?? <SidebarBrand collapsed logo={logo} title={title} />}\n </div>\n <div\n className=\"flex min-h-0 flex-1 flex-col items-center gap-2 overflow-y-auto pb-3\"\n style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n >\n {items.map((item) => {\n const isActive = activeRootId === item.id;\n return (\n <BaseTooltip\n key={item.id}\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n content={item.label}\n placement=\"right\"\n portal\n >\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n active={isActive}\n iconOnly\n icon={item.icon}\n onClick={() => {\n onRevealRoot?.(item.id);\n onCollapsedChange?.(false);\n if (item.children?.length) return;\n onNavigate?.(item.id);\n }}\n title={\n typeof item.label === \"string\" ? item.label : undefined\n }\n ariaLabel={\n typeof item.label === \"string\" ? item.label : item.id\n }\n className={cn(\n \"h-10 w-10 rounded-lg border text-[hsl(var(--muted-foreground))] shadow-none\",\n \"hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.96]\",\n isActive\n ? \"border-[hsl(var(--input))] bg-[hsl(var(--muted))] text-[hsl(var(--foreground))] shadow-sm\"\n : \"border-transparent hover:border-[hsl(var(--input))]/80 hover:bg-[hsl(var(--muted))]/70 hover:text-[hsl(var(--foreground))]\",\n )}\n />\n </BaseTooltip>\n );\n })}\n </div>\n <div className=\"-mx-2 mt-2 border-t border-[hsl(var(--input))] bg-[hsl(var(--background))] px-2 pt-2.5 pb-0.5\">\n <NavigationLayoutActionButtons actions={actions} compact />\n {collapsedAccountMenu ? (\n <div className=\"mt-2 flex justify-center border-t border-[hsl(var(--input))] pt-2\">\n {collapsedAccountMenu}\n </div>\n ) : null}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col justify-between gap-0 overflow-y-hidden rounded-xl border border-[hsl(var(--input))] bg-[hsl(var(--background))] px-5 pt-5 pb-1.5\">\n <div className=\"mb-4 shrink-0\">\n {header ?? <SidebarBrand logo={logo} title={title} />}\n </div>\n <SidebarNavigationList\n activeItemId={activeItemId}\n items={items}\n onNavigate={onNavigate}\n revealRequest={revealRequest}\n />\n <div className=\"-mx-5 mt-2 border-t border-[hsl(var(--input))] bg-[hsl(var(--background))] px-4 pt-2.5 pb-1\">\n <NavigationLayoutActionButtons actions={actions} compact={false} />\n {footer}\n {accountMenu ? (\n <div className=\"mt-2 border-t border-[hsl(var(--input))] pt-2\">\n {accountMenu}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction HeadbarChevronIcon({ open }: { open: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform duration-200\",\n open && \"rotate-180\",\n )}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nfunction HeadbarNavMenuItem({\n activeItemId,\n isActive,\n item,\n label,\n menuButtonRadiusClass,\n menuContentRadiusClass,\n menuItemRadiusClass,\n onNavigate,\n useTokenRadius,\n}: {\n activeItemId?: string;\n isActive: boolean;\n item: LayoutNavItem;\n label: ReactNode;\n menuButtonRadiusClass: string;\n menuContentRadiusClass: string;\n menuItemRadiusClass: string;\n onNavigate?: (itemId: string) => void;\n useTokenRadius: boolean;\n}) {\n const [open, setOpen] = useState(false);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const wasOpenOnPointerDownRef = useRef(false);\n\n const clearCloseTimer = () => {\n if (!closeTimerRef.current) return;\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n };\n\n const openMenu = () => {\n clearCloseTimer();\n setOpen(true);\n };\n\n const scheduleCloseMenu = () => {\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, 120);\n };\n\n const navigateToFirstEnabledChild = () => {\n const firstEnabledChild = item.children?.find((child) => !child.disabled);\n if (!firstEnabledChild) return false;\n\n setOpen(false);\n onNavigate?.(firstEnabledChild.id);\n return true;\n };\n\n useEffect(() => clearCloseTimer, []);\n\n return (\n <DropdownMenu.Root modal={false} open={open} onOpenChange={setOpen}>\n <DropdownMenu.Trigger asChild>\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n active={isActive || open}\n icon={item.icon}\n endIcon={<HeadbarChevronIcon open={open} />}\n label={<span className=\"truncate whitespace-nowrap\">{label}</span>}\n disabled={item.disabled}\n onClick={() => {\n const wasOpenOnPointerDown = wasOpenOnPointerDownRef.current;\n wasOpenOnPointerDownRef.current = false;\n if (wasOpenOnPointerDown && navigateToFirstEnabledChild()) return;\n setOpen(true);\n }}\n onPointerDown={() => {\n wasOpenOnPointerDownRef.current = open;\n }}\n onPointerCancel={() => {\n wasOpenOnPointerDownRef.current = false;\n }}\n onKeyDown={(event) => {\n if (!open || (event.key !== \"Enter\" && event.key !== \" \")) return;\n if (navigateToFirstEnabledChild()) event.preventDefault();\n }}\n onMouseEnter={openMenu}\n onMouseLeave={scheduleCloseMenu}\n style={getHeadbarItemStyle(isActive || open, useTokenRadius)}\n classNames={{\n icon: \"text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current\",\n label: \"text-[inherit] [&_*]:!text-[inherit]\",\n }}\n className={cn(\n \"max-w-[12rem] shrink-0 border shadow-none\",\n menuButtonRadiusClass,\n isActive || open\n ? \"\"\n : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n )}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align=\"start\"\n sideOffset={5}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onMouseEnter={openMenu}\n onMouseLeave={scheduleCloseMenu}\n className={cn(\n \"z-50 min-w-56 border p-1.5 animate-in fade-in-0 zoom-in-95\",\n menuContentRadiusClass,\n )}\n style={{\n background:\n \"var(--monkeys-component-navigation-headbar-menu-background, hsl(var(--popover)))\",\n borderColor:\n \"var(--monkeys-component-navigation-headbar-menu-border-color, hsl(var(--border)))\",\n color:\n \"var(--monkeys-component-navigation-headbar-menu-foreground, hsl(var(--popover-foreground)))\",\n boxShadow:\n \"var(--monkeys-component-navigation-headbar-menu-shadow, 0 10px 15px -3px rgb(0 0 0 / 0.1))\",\n backdropFilter:\n \"blur(var(--monkeys-component-navigation-headbar-menu-backdrop-blur, 0px))\",\n }}\n >\n {item.children?.map((child) => (\n <DropdownMenu.Item\n key={child.id}\n disabled={child.disabled}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2.5 px-3 py-2 text-sm outline-none transition-colors hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))] focus:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] focus:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))] data-[highlighted]:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--accent)))] data-[highlighted]:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--accent-foreground)))]\",\n menuItemRadiusClass,\n )}\n style={getHeadbarItemStyle(\n child.id === activeItemId,\n useTokenRadius,\n )}\n onSelect={() => {\n if (child.disabled) return;\n setOpen(false);\n onNavigate?.(child.id);\n }}\n >\n {child.icon ? (\n <span className=\"inline-flex h-4 w-4 shrink-0 items-center justify-center text-[hsl(var(--muted-foreground))]\">\n {child.icon}\n </span>\n ) : null}\n <span className=\"min-w-0 truncate\">\n {child.headbarLabel ?? child.label}\n </span>\n {child.trailing}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\nexport interface NavigationHeadbarMenuProps {\n activeItemId?: string;\n activeRootId?: string;\n items: LayoutNavItem[];\n menuRadius?: HeadbarMenuRadius;\n onNavigate?: (itemId: string) => void;\n}\n\nexport function NavigationHeadbarMenu({\n activeItemId,\n activeRootId,\n items,\n menuRadius = \"default\",\n onNavigate,\n}: NavigationHeadbarMenuProps) {\n const menuButtonRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n const menuContentRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n const menuItemRadiusClass = getHeadbarMenuRadiusClass(menuRadius);\n const useTokenRadius = menuRadius === \"default\";\n\n return (\n <div className=\"flex w-max min-w-0 shrink-0 items-center gap-1\">\n {items.map((item) => {\n const isActive = activeRootId === item.id || activeItemId === item.id;\n const label = item.headbarLabel ?? item.label;\n\n const primaryAction = item.children?.length ? (\n <HeadbarNavMenuItem\n activeItemId={activeItemId}\n isActive={isActive}\n item={item}\n label={label}\n menuButtonRadiusClass={menuButtonRadiusClass}\n menuContentRadiusClass={menuContentRadiusClass}\n menuItemRadiusClass={menuItemRadiusClass}\n onNavigate={onNavigate}\n useTokenRadius={useTokenRadius}\n />\n ) : (\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n active={isActive}\n disabled={item.disabled}\n icon={item.icon}\n label={\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"truncate whitespace-nowrap\">{label}</span>\n {item.trailing}\n </span>\n }\n onClick={() => onNavigate?.(item.id)}\n style={getHeadbarItemStyle(isActive, useTokenRadius)}\n classNames={{\n icon: \"text-[inherit] [&_*]:!text-[inherit] [&_svg]:!stroke-current\",\n label: \"text-[inherit] [&_*]:!text-[inherit]\",\n }}\n className={cn(\n \"max-w-[12rem] shrink-0 border shadow-none\",\n menuButtonRadiusClass,\n isActive\n ? \"\"\n : \"hover:!bg-[var(--monkeys-component-navigation-headbar-item-hover-background,hsl(var(--muted)))] hover:!text-[var(--monkeys-component-navigation-headbar-item-hover-foreground,hsl(var(--foreground)))]\",\n )}\n />\n );\n\n if (!item.headbarSecondaryAction) {\n return <Fragment key={item.id}>{primaryAction}</Fragment>;\n }\n\n return (\n <div\n key={item.id}\n data-navigation-headbar-compound-item={item.id}\n className=\"inline-flex min-w-0 shrink-0 items-center gap-1\"\n >\n <span\n data-navigation-headbar-primary-action=\"\"\n className=\"inline-flex min-w-0 shrink-0\"\n >\n {primaryAction}\n </span>\n <span\n data-navigation-headbar-secondary-action={item.id}\n className=\"inline-flex min-w-0 shrink-0 items-center\"\n >\n {item.headbarSecondaryAction}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n\nexport interface NavigationHeadbarProps {\n activeItemId?: string;\n activeRootId?: string;\n actions?: ReactNode;\n accountMenu?: ReactNode;\n className?: string;\n extra?: ReactNode;\n layout?: HeadbarLayout;\n brand?: ReactNode;\n logo?: AppHeaderLogo;\n navigation?: ReactNode;\n navItems?: LayoutNavItem[];\n onNavigate?: (itemId: string) => void;\n}\n\nexport function NavigationHeadbar({\n activeItemId,\n activeRootId,\n actions,\n accountMenu,\n className,\n extra,\n layout,\n brand,\n logo,\n navigation,\n navItems = [],\n onNavigate,\n}: NavigationHeadbarProps) {\n const heightPx = clampHeadbarHeight(layout?.heightPx);\n const layoutMode = layout?.layoutMode ?? \"boxed\";\n const menuRadius = layout?.menuRadius ?? \"default\";\n const surface = layout?.surface ?? \"card\";\n const logoHeightPx = getHeadbarLogoSizePx(heightPx);\n const frameStyle = getHeadbarFrameStyle(layoutMode, heightPx, surface);\n const showBrandTitle = Boolean(layout?.brandTitle);\n\n return (\n <header\n className={cn(\n getHeadbarFrameClass(layoutMode, layout?.navPosition),\n className,\n )}\n data-navigation-headbar=\"\"\n data-navigation-headbar-surface={surface}\n style={frameStyle}\n >\n <div className=\"flex min-w-0 items-center justify-start\">\n {brand ??\n (logo ? (\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n icon={\n <div\n className={cn(\n \"flex items-center justify-center overflow-hidden rounded-lg\",\n logo.url\n ? \"w-auto max-w-[min(22rem,30vw)] bg-transparent\"\n : \"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]\",\n )}\n style={\n logo.url\n ? { height: logoHeightPx }\n : { width: logoHeightPx, height: logoHeightPx }\n }\n >\n {logo.url ? (\n <img\n src={logo.url}\n alt={logo.title}\n className=\"block h-full w-auto object-contain\"\n />\n ) : (\n <span className=\"text-base font-bold\">\n {logo.title.charAt(0)}\n </span>\n )}\n </div>\n }\n label={\n showBrandTitle ? (\n <span className=\"truncate whitespace-nowrap text-base font-medium text-[hsl(var(--foreground))]\">\n {layout?.brandTitle}\n </span>\n ) : null\n }\n ariaLabel={logo.title}\n title={logo.title}\n className=\"h-auto min-w-0 justify-start border-transparent bg-transparent p-0 shadow-none hover:bg-transparent\"\n classNames={\n logo.url ? { icon: \"!h-auto !w-auto shrink-0\" } : undefined\n }\n onClick={logo.onClick}\n />\n ) : null)}\n </div>\n\n <div\n className={cn(\n \"flex min-w-0 items-center\",\n getHeadbarNavClass(layout?.navPosition),\n )}\n >\n <div className=\"no-scrollbar flex max-w-full min-w-0 items-center overflow-x-auto overscroll-x-contain\">\n {navigation ?? (\n <NavigationHeadbarMenu\n activeItemId={activeItemId}\n activeRootId={activeRootId}\n items={navItems}\n menuRadius={menuRadius}\n onNavigate={onNavigate}\n />\n )}\n </div>\n </div>\n\n <div className=\"flex min-w-0 items-center justify-end gap-3\">\n {actions}\n {extra}\n {accountMenu}\n </div>\n </header>\n );\n}\n\nexport function NavigationLayout({\n activeItemId,\n activeRootId,\n allowModeSwitch = false,\n accountMenu,\n children,\n className,\n collapsedSidebarAccountMenu,\n collapsedSidebarWidth = NAVIGATION_LAYOUT_SIDEBAR_COLLAPSED_WIDTH,\n defaultMode = \"headbar\",\n defaultSidebarCollapsed = false,\n expandedSidebarWidth = NAVIGATION_LAYOUT_SIDEBAR_EXPANDED_WIDTH,\n expandSidebarLabel = \"Expand sidebar\",\n flush = false,\n headbarActions,\n headbarLayout,\n logo,\n mode,\n navItems,\n onModeChange,\n onNavigate,\n onSidebarCollapsedChange,\n renderHeadbarExtra,\n collapseSidebarLabel = \"Collapse sidebar\",\n sidebarCollapsed: controlledSidebarCollapsed,\n sidebarAccountMenu,\n sidebarFooter,\n sidebarHeader,\n switchToHeadbarLabel = \"Switch to headbar\",\n switchToSidebarLabel = \"Switch to sidebar\",\n}: NavigationLayoutProps) {\n const [uncontrolledMode, setUncontrolledMode] =\n useState<NavigationMode>(defaultMode);\n const [uncontrolledSidebarCollapsed, setUncontrolledSidebarCollapsed] =\n useState(defaultSidebarCollapsed);\n const [revealRequest, setRevealRequest] = useState<{\n id: string;\n nonce: number;\n } | null>(null);\n const isModeControlled = mode !== undefined;\n const isSidebarCollapsedControlled = controlledSidebarCollapsed !== undefined;\n const navigationMode = isModeControlled ? mode : uncontrolledMode;\n const sidebarCollapsed = isSidebarCollapsedControlled\n ? controlledSidebarCollapsed\n : uncontrolledSidebarCollapsed;\n const isHeadbarMode = navigationMode === \"headbar\";\n const sidebarWidth = sidebarCollapsed\n ? collapsedSidebarWidth\n : expandedSidebarWidth;\n\n useEffect(() => {\n if (!isModeControlled) {\n setUncontrolledMode(defaultMode);\n }\n }, [defaultMode, isModeControlled]);\n\n useEffect(() => {\n if (!isSidebarCollapsedControlled) {\n setUncontrolledSidebarCollapsed(defaultSidebarCollapsed);\n }\n }, [defaultSidebarCollapsed, isSidebarCollapsedControlled]);\n\n const setNavigationMode = (nextMode: NavigationMode) => {\n if (!isModeControlled) {\n setUncontrolledMode(nextMode);\n }\n onModeChange?.(nextMode);\n };\n\n const setCollapsed = (collapsed: boolean) => {\n if (!isSidebarCollapsedControlled) {\n setUncontrolledSidebarCollapsed(collapsed);\n }\n onSidebarCollapsedChange?.(collapsed);\n };\n\n const navigationActions: NavigationLayoutAction[] = [];\n if (allowModeSwitch) {\n navigationActions.push({\n id: \"toggle-headbar\",\n label: switchToHeadbarLabel,\n onClick: () => setNavigationMode(\"headbar\"),\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-[18px] w-[18px] rotate-180\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M3 9h18\" />\n </svg>\n ),\n });\n }\n navigationActions.push({\n id: \"toggle-sidebar\",\n label: sidebarCollapsed ? expandSidebarLabel : collapseSidebarLabel,\n onClick: () => setCollapsed(!sidebarCollapsed),\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-[18px] w-[18px]\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d={sidebarCollapsed ? \"m14 9 3 3-3 3\" : \"m16 15-3-3 3-3\"} />\n </svg>\n ),\n });\n\n const sidebar = isHeadbarMode ? null : (\n <div\n className={cn(\n \"relative h-full min-h-0 shrink-0 transition-[width] duration-260\",\n sidebarCollapsed ? \"z-20 overflow-visible\" : \"z-10 overflow-hidden\",\n )}\n style={{\n width: sidebarWidth,\n transitionTimingFunction: NAVIGATION_LAYOUT_TRANSITION_TIMING,\n }}\n >\n <Sidebar\n accountMenu={sidebarAccountMenu ?? accountMenu}\n activeItemId={activeItemId}\n actions={navigationActions}\n collapsed={sidebarCollapsed}\n collapsedAccountMenu={collapsedSidebarAccountMenu ?? accountMenu}\n footer={sidebarFooter}\n header={sidebarHeader}\n items={navItems}\n logo={logo}\n onCollapsedChange={setCollapsed}\n onNavigate={onNavigate}\n onRevealRoot={(rootId) =>\n setRevealRequest((prev) => ({\n id: rootId,\n nonce: (prev?.nonce ?? 0) + 1,\n }))\n }\n revealRequest={revealRequest}\n title={headbarLayout?.brandTitle}\n />\n </div>\n );\n\n const header = isHeadbarMode ? (\n <NavigationHeadbar\n activeItemId={activeItemId}\n activeRootId={\n activeRootId ?? findNavigationRootId(navItems, activeItemId)\n }\n actions={\n allowModeSwitch ? (\n <>\n {headbarActions}\n <BaseButton\n appearance={NAVIGATION_LAYOUT_DEFAULT_APPEARANCE}\n tone=\"muted\"\n icon={\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 shrink-0\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"m14 9 3 3-3 3\" />\n </svg>\n }\n label={\n <span className=\"truncate whitespace-nowrap\">\n {switchToSidebarLabel}\n </span>\n }\n onClick={() => setNavigationMode(\"sidebar\")}\n className={cn(\n \"h-auto min-w-0 shrink px-3 py-2 text-sm font-medium text-[hsl(var(--muted-foreground))] shadow-none hover:border-[hsl(var(--input))]/70 hover:bg-[hsl(var(--muted))]/60 hover:text-[hsl(var(--foreground))]\",\n getHeadbarMenuRadiusClass(headbarLayout?.menuRadius),\n )}\n />\n </>\n ) : (\n headbarActions\n )\n }\n accountMenu={accountMenu}\n extra={renderHeadbarExtra}\n layout={headbarLayout}\n logo={logo}\n navItems={navItems}\n onNavigate={onNavigate}\n />\n ) : null;\n\n return (\n <AppLayout\n header={header}\n sidebar={sidebar}\n flush={flush}\n className={className}\n >\n {children}\n </AppLayout>\n );\n}\n"]}
|