@yca-software/yca-react-core 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/alert/index.tsx","../src/components/ui/alert-dialog/index.tsx","../src/components/ui/avatar/index.tsx","../src/components/ui/badge/index.tsx","../src/components/ui/calendar/index.tsx","../src/components/ui/checkbox/index.tsx","../src/components/ui/confirm-dialog/index.tsx","../src/components/ui/popover/index.tsx","../src/components/ui/date-picker/index.tsx","../src/components/ui/dialog/index.tsx","../src/components/ui/date-range-picker/constants.ts","../src/components/ui/date-range-picker/DateRangePickerActionFooter.tsx","../src/components/ui/date-range-picker/DateRangePickerFieldsCalendar.tsx","../src/components/ui/date-range-picker/parseDateRange.ts","../src/components/ui/date-range-picker/DateRangePickerPresetList.tsx","../src/components/ui/date-range-picker/DateRangePickerTrigger.tsx","../src/components/ui/date-range-picker/useDateRangePresets.ts","../src/components/ui/date-range-picker/useMediaQuery.ts","../src/components/ui/date-range-picker/DateRangePicker.tsx","../src/components/ui/dropdown-menu/index.tsx","../src/components/ui/dropdown-scrollable-list/index.tsx","../src/components/ui/dropdown-select-search-input/index.tsx","../src/components/ui/label/index.tsx","../src/components/ui/form/index.tsx","../src/components/ui/inside-modal-scroll-lock/index.tsx","../src/components/ui/sheet/index.tsx","../src/components/ui/form-drawer/index.tsx","../src/components/ui/link/index.tsx","../src/components/ui/multi-select/index.tsx","../src/components/ui/scroll-area/index.tsx","../src/components/ui/select-search/index.ts","../src/components/ui/select/index.tsx","../src/components/ui/separator/index.tsx","../src/components/ui/switch/index.tsx","../src/components/ui/table/index.tsx","../src/components/ui/tabs/index.tsx","../src/components/ui/textarea/index.tsx","../src/components/ui/tooltip/index.tsx","../src/components/ui/typography/index.tsx","../src/components/ui/upload-dropzone/index.tsx"],"names":["React","jsx","React2","cva","React3","jsxs","React4","CalendarIcon","format","React5","nextRange","React7","React8","React9","SheetPrimitive","XIcon","DEFAULT_TRANSLATIONS","React10","React11","React12","React13","React14","React15","React16","React17","React18","useId","useRef","useState","useEffect","nextUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAKA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,mRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,oFAAA;AAAA,QACF,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqE;AACnE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACL,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC9E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,0EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACzCA,IAAM,WAAA,GAAmC,oBAAA,CAAA;AAEzC,IAAM,kBAAA,GAA0C,oBAAA,CAAA;AAEhD,IAAM,iBAAA,GAAyC,oBAAA,CAAA;AAE/C,IAAM,kBAAA,GAA2BA,kBAG/B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,OAAA;AAAA,EAArB;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,kLAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IACJ;AAAA;AACF,CACD;AACD,kBAAA,CAAmB,cAAmC,oBAAA,CAAA,OAAA,CAAQ,WAAA;AAU9D,IAAM,kBAAA,GAA2BD,MAAA,CAAA,UAAA,CAG/B,CAAC,EAAE,SAAA,EAAW,cAAA,EAAgB,gBAAA,EAAkB,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC5D,IAAA,CAAC,iBAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAAC,GAAAA,CAAC,kBAAA,EAAA,EAAmB,OAAA,EAAS,cAAA,EAAgB,WAAW,gBAAA,EAAkB,CAAA;AAAA,kBAC1EA,GAAAA;AAAA,IAAsB,oBAAA,CAAA,OAAA;AAAA,IAArB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,+dAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AACN,CAAA,EACF,CACD;AACD,kBAAA,CAAmB,cAAmC,oBAAA,CAAA,OAAA,CAAQ,WAAA;AAE9D,IAAM,oBAAoB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBAC/CA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEhG,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,oBAAoB,CAAC,EAAE,WAAW,GAAG,KAAA,uBACzCA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN;AAEF,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAEhC,IAAM,gBAAA,GAAyBD,kBAG7B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,KAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA;AAAA,IAC/C,GAAG;AAAA;AACN,CACD;AACD,gBAAA,CAAiB,cAAmC,oBAAA,CAAA,KAAA,CAAM,WAAA;AAE1D,IAAM,sBAAA,GAA+BD,kBAGnC,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,WAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACvD,GAAG;AAAA;AACN,CACD;AACD,sBAAA,CAAuB,cAAmC,oBAAA,CAAA,WAAA,CAAY,WAAA;AAEtE,IAAM,iBAAA,GAA0BD,kBAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,MAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,qBAAA;AAAA,IACV,SAAA,EAAW,EAAA,CAAG,cAAA,EAAe,EAAG,SAAS,CAAA;AAAA,IACxC,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAmC,oBAAA,CAAA,MAAA,CAAO,WAAA;AAE5D,IAAM,iBAAA,GAA0BD,kBAG9B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BC,GAAAA;AAAA,EAAsB,oBAAA,CAAA,MAAA;AAAA,EAArB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,qBAAA;AAAA,IACV,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,SAAA,EAAW,CAAA,EAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,IAC9E,GAAG;AAAA;AACN,CACD;AACD,iBAAA,CAAkB,cAAmC,oBAAA,CAAA,MAAA,CAAO,WAAA;AC/G5D,IAAM,MAAA,GAAeC,kBAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACvF,GAAG;AAAA;AACN,CACD;AACD,MAAA,CAAO,cAA8B,eAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBC,kBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,KAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,IACrD,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,cAA8B,eAAA,CAAA,KAAA,CAAM,WAAA;AAEhD,IAAM,cAAA,GAAuBC,kBAG3B,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BD,GAAAA;AAAA,EAAiB,eAAA,CAAA,QAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,sEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,cAAA,CAAe,cAA8B,eAAA,CAAA,QAAA,CAAS,WAAA;ACrCtD,IAAM,aAAA,GAAgBE,GAAAA;AAAA,EACpB,sHAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,2EAAA;AAAA,QACT,SAAA,EACE,iFAAA;AAAA,QACF,WAAA,EAAa,sEAAA;AAAA,QACb,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsE;AACpE,EAAA,uBACEF,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,SAAQ,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAE,SAAS,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAE7F;ACrBA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,YAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,eAAA;AAAA,MACA,cAAc,YAAA,IAAgB,CAAA;AAAA,MAC9B,SAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACV,MAAA,EACE,sFAAA;AAAA,QACF,KAAA,EAAO,4BAAA;AAAA,QACP,aAAA,EAAe,wDAAA;AAAA,QACf,aAAA,EAAe,qDAAA;AAAA,QACf,GAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAiB,EAAA;AAAA,UACf,eAAe,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,UACtD;AAAA,SACF;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,eAAe,EAAE,OAAA,EAAS,SAAA,EAAW,IAAA,EAAM,WAAW,CAAA;AAAA,UACtD;AAAA,SACF;AAAA,QACA,UAAA,EAAY,wBAAA;AAAA,QACZ,QAAA,EAAU,EAAA;AAAA,QACV,OAAA,EAAS,kFAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,GAAA,EAAK,8FAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACV,4HAAA;AAAA,UACA,8CAAA;AAAA,UACA,yEAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EACE,+FAAA;AAAA,QACF,KAAA,EACE,4JAAA;AAAA,QACF,OAAA,EACE,wFAAA;AAAA,QACF,YAAA,EACE,0HAAA;AAAA,QACF,SAAA,EACE,6MAAA;AAAA,QACF,WAAA,EACE,2MAAA;AAAA,QACF,QAAA,EAAU,wEAAA;AAAA,QACV,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,CAAC,EAAE,WAAA,OACV,WAAA,KAAgB,MAAA,mBACdA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAU,QAAA,EAAS,aAAA,EAAW,MAAC,CAAA,mBAE5CA,IAAC,YAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,IAAA,EAAC;AAAA,OAEnD;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACtEA,IAAM,QAAA,GAAiBG,kBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BH,GAAAA;AAAA,EAAmB,iBAAA,CAAA,IAAA;AAAA,EAAlB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,yHAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,gEAAA;AAAA,MACA,kHAAA;AAAA,MACA,oIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAmB,iBAAA,CAAA,SAAA,EAAlB,EAA4B,SAAA,EAAU,+CAAA,EACrC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,UAAA,EAAW,WAAA,EAAa,GAAG,CAAA,EAC9C;AAAA;AACF,CACD;AACD,QAAA,CAAS,cAAgC,iBAAA,CAAA,IAAA,CAAK,WAAA;ACWvC,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,YAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA,GAAsB;AACxB,CAAA,EAAuB;AACrB,EAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AACjD,EAAA,MAAM,gBAAgB,OAAA,KAAY,aAAA;AAClC,EAAA,MAAM,gBAAA,GAAmB,gBACrB,sGAAA,GACA,MAAA;AAEJ,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,SAAA,EAAW;AACf,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA;AAEA,EAAA,uBACEA,GAAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAY,cACvB,QAAA,kBAAAI,IAAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,wBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACzC,eAAA,EAAiB,CAAC,KAAA,KAAU;AAC1B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,MAC5B,CAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,SAAA,EAAW;AACxC,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,mCAAmC,CAAA,EAAG;AACzD,QAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,mCAAmC,CAAA,EAAG;AACzD,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAAA,MACC,GAAI,mBAAA,IAAuB;AAAA,QAC1B,cAAA,EAAgB,MAAM,YAAA,CAAa,KAAK;AAAA,OAC1C;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,OAAA,EAC3B,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BAC1DI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,sBAAA,EAAA,EAAuB,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,YACxD,mCAAmBA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAiC,QAAA,EAAA,eAAA,EAAgB;AAAA,WAAA,EACpF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAI,IAAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAU,8EAAA,EAC3B,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,cACjC,QAAA,EAAU,SAAA;AAAA,cACV,SAAA,EAAU,sBAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,0BACAI,IAAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,UAAA;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cACT,QAAA,EAAU,SAAA;AAAA,cACV,cAAY,gBAAA,IAAoB,YAAA;AAAA,cAChC,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,gBAAgB,CAAA;AAAA,cAErD,QAAA,EAAA;AAAA,gBAAA,SAAA,oBAAaJ,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,sBAAA,EAAuB,eAAW,IAAA,EAAC,CAAA;AAAA,gBACnE;AAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AC/GA,SAAS,OAAA,CAAQ,EAAE,GAAG,KAAA,EAAM,EAAuD;AACjF,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe,EAAE,GAAG,KAAA,EAAM,EAA0D;AAC3F,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,wCAAA;AAAA,QACA,8DAAA;AAAA,QACA,4DAAA;AAAA,QACA,8DAAA;AAAA,QACA,wCAAA;AAAA,QACA,wCAAA;AAAA,QACA,wCAAA;AAAA,QACA,wCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;ACfO,SAAS,UAAA,CAAW;AAAA,EACzB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,aAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,MAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,EAAc;AAChB,CAAA,EAAoB;AAClB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUK,gBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAE3C,EAAA,MAAM,UAAA,GAAmBA,MAAA,CAAA,OAAA,CAAQ,MAAO,MAAA,GAAS,EAAE,QAAO,GAAI,MAAA,EAAY,CAAC,MAAM,CAAC,CAAA;AAElF,EAAA,MAAM,gBAAA,GAAyBA,eAAQ,MAAM;AAC3C,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAY;AAChC,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,CAAA;AACvB,MAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,MAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,IACtB,CAAA;AACA,IAAA,MAAM,WAA2C,EAAC;AAClD,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,CAAC,aAAA,EAAe,aAAa,CAAC,CAAA;AAEjC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAA2B;AAC/C,IAAA,MAAM,GAAA,GAAM,IAAA,GAAO,aAAA,CAAc,IAAI,CAAA,GAAI,MAAA;AACzC,IAAA,QAAA,CAAS,OAAO,MAAS,CAAA;AACzB,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,uBACED,IAAAA,CAAC,OAAA,EAAA,EAAQ,OAAO,KAAA,EAAO,IAAA,EAAY,cAAc,OAAA,EAC/C,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,QAC1B,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,UAAA,IAAI,CAAC,QAAA,KAAa,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACrD,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,UACnB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,YAAA;AAAA,UACA,yDAAA;AAAA,UACA,QAAA,IAAY,gCAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+GAAA,EACd,QAAA,kBAAAA,GAAAA,CAACM,UAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,aAAA,EAAW,IAAA,EAAC,CAAA,EAC/C,CAAA;AAAA,0BACAN,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,QAAA,EAAQ,IAAA;AAAA,cACR,OAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,cAAA,EAAgB,UAAU,CAAA,GAAI,EAAA;AAAA,cAC3D,WAAA;AAAA,cACA,OAAA,EAAS,MAAM,CAAC,QAAA,IAAY,QAAQ,IAAI,CAAA;AAAA,cACxC,SAAA,EAAW,EAAA;AAAA,gBACT,0JAAA;AAAA,gBACA,CAAC,KAAA,IAAS;AAAA,eACZ;AAAA,cACA,YAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,oBAAA,EAAqB,KAAA,EAAM,SACnD,QAAA,kBAAAA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,YAAA;AAAA,QACV,QAAA,EAAU,CAAC,IAAA,KAAS,gBAAA,CAAiB,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QACxD;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC1GA,SAAS,MAAA,CAAO,EAAE,GAAG,KAAA,EAAM,EAAsD;AAC/E,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC7D;AAEA,SAAS,aAAA,CAAc,EAAE,GAAG,KAAA,EAAM,EAAyD;AACzF,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,OAAA,EAAhB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAAwD;AACvF,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACtE;AAEA,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAuD;AACrF,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,kLAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,EAGG;AACD,EAAA,uBACEI,IAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAU,eAAA,EACtB,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,gBAAA,EAAkB,CAAA;AAAA,oBAC5CI,IAAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,gBAAA;AAAA,QACV,oBAAA,EAAsB,CAAC,KAAA,KAAU;AAC/B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,UAC9B;AAAA,QACF,CAAA;AAAA,QACA,iBAAA,EAAmB,CAAC,KAAA,KAAU;AAC5B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,UAC3B;AAAA,QACF,CAAA;AAAA,QACA,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,UACxB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,+VAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,mCACCA,IAAAA;AAAA,YAAiB,eAAA,CAAA,KAAA;AAAA,YAAhB;AAAA,cACC,WAAA,EAAU,cAAA;AAAA,cACV,SAAA,EAAU,kXAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAJ,IAAC,KAAA,EAAA,EAAM,CAAA;AAAA,gCACPA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AACjC;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,MAC7E,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,wDAAA,EAA0D,SAAS,CAAA;AAAA,MAChF,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAuD;AAChG,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,uDAAA,EAAyD,SAAS,CAAA;AAAA,MAC/E,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6D;AAC3D,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,WAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,kDAAA,EAAoD,SAAS,CAAA;AAAA,MAC1E,GAAG;AAAA;AAAA,GACN;AAEJ;;;ACxIO,IAAM,wBAAA,GAA2B,GAAA;AACjC,IAAM,oBAAA,GAAuB,CAAA,YAAA,EAAe,wBAAA,GAA2B,CAAC,CAAA,GAAA,CAAA;AAGxE,IAAM,sBAAA,GAAyB,GAAA;AAC/B,IAAM,kBAAA,GAAqB,eAAe,sBAAsB,CAAA,GAAA,CAAA;AAEhE,IAAM,kBAAA,GAAgD;AAAA,EAC3D,EAAE,IAAI,OAAA,EAAQ;AAAA,EACd,EAAE,IAAI,WAAA,EAAY;AAAA,EAClB,EAAE,IAAI,OAAA,EAAQ;AAAA,EACd,EAAE,IAAI,QAAA,EAAS;AAAA,EACf,EAAE,IAAI,QAAA,EAAS;AAAA,EACf,EAAE,IAAI,UAAA,EAAW;AAAA,EACjB,EAAE,IAAI,UAAA,EAAW;AAAA,EACjB,EAAE,IAAI,WAAA,EAAY;AAAA,EAClB,EAAE,IAAI,WAAA;AACR,CAAA;AAEO,IAAM,qBAAA,GAAyD;AAAA,EACpE,KAAA,EAAO,OAAA;AAAA,EACP,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU,WAAA;AAAA,EACV,QAAA,EAAU,WAAA;AAAA,EACV,SAAA,EAAW,YAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,oBAAA,GAA8D;AAAA,EACzE,WAAA,EAAa,OAAA;AAAA,EACb,YAAA,EAAc,QAAA;AAAA,EACd,UAAA,EAAY,OAAA;AAAA,EACZ,QAAA,EAAU,KAAA;AAAA,EACV,WAAA,EAAa,YAAA;AAAA,EACb,SAAA,EAAW,YAAA;AAAA,EACX,YAAA,EAAc,qBAAA;AAAA,EACd,cAAA,EAAgB;AAClB,CAAA;AC7BO,SAAS,2BAAA,CAA4B;AAAA,EAC1C,OAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AAErB,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,4FAAA;AAAA,QACA,cAAA,IACE,gFAAA;AAAA,QACF;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAJ,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,cAAA,IAAkB,4CAA4C,CAAA;AAAA,YAC5E,OAAA,EAAS,QAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,cAAA,IAAkB,4CAA4C,CAAA;AAAA,YAC5E,OAAA,EAAS,OAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;ACxBO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,cAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAuC;AACrC,EAAA,uBACEI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,iGAAA;AAAA,UACA,cAAA,KAAmB,IAAI,YAAA,GAAe;AAAA,SACxC;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,IAAC,OAAA,EAAA,EAAM,OAAA,EAAS,YAAA,EAAc,SAAA,EAAU,6CACrC,QAAA,EAAA,UAAA,EACH,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,YAAA;AAAA,gBACJ,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,cAAA;AAAA,gBACP,UAAU,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAClD,MAAA,EAAQ,aAAA;AAAA,gBACR,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,kBAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,oBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,oBAAA,aAAA,EAAc;AAAA,kBAChB;AAAA,gBACF,CAAA;AAAA,gBACA,WAAA,EAAa,oBAAA;AAAA,gBACb,SAAA,EAAU;AAAA;AAAA;AACZ,WAAA,EACF,CAAA;AAAA,0BACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,IAAC,OAAA,EAAA,EAAM,OAAA,EAAS,UAAA,EAAY,SAAA,EAAU,6CACnC,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,UAAA;AAAA,gBACJ,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,YAAA;AAAA,gBACP,UAAU,CAAC,CAAA,KAAM,gBAAA,CAAiB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAChD,MAAA,EAAQ,WAAA;AAAA,gBACR,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,kBAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,oBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,oBAAA,WAAA,EAAY;AAAA,kBACd;AAAA,gBACF,CAAA;AAAA,gBACA,WAAA,EAAa,oBAAA;AAAA,gBACb,SAAA,EAAU;AAAA;AAAA;AACZ,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,gCAAgC,GAC9D,QAAA,kBAAAA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,cAAA,EAAgB,cAAA;AAAA,QAChB,KAAA,EAAO,cAAA;AAAA,QACP,aAAA;AAAA,QACA,QAAA,EAAU,KAAA;AAAA,QACV,QAAA;AAAA,QACA,QAAA,EAAU,gBAAA;AAAA,QACV,MAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,cAAA,KAAmB,CAAA,IAAK,KAAK;AAAA;AAAA,KAC7C,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC5GO,SAAS,WAAA,CAAY,GAA0B,CAAA,EAAuB;AAC3E,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,IAAI,GAAG,OAAA,EAAQ;AAC3C,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,EAAG,EAAE,GAAG,OAAA,EAAQ;AACzC,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,CAAE,IAAI,GAAG,OAAA,EAAQ;AAC1C,EAAA,MAAM,EAAA,GAAK,aAAA,CAAc,CAAA,CAAE,EAAE,GAAG,OAAA,EAAQ;AACxC,EAAA,OAAO,EAAA,KAAO,MAAM,EAAA,KAAO,EAAA;AAC7B;AAEO,SAAS,UAAU,IAAA,EAA2B;AACnD,EAAA,MAAM,CAAA,GAAI,KAAK,IAAA,EAAK;AACpB,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,EAAA,KAAA,MAAW,GAAA,IAAO,CAAC,YAAA,EAAc,gBAAA,EAAkB,cAAc,CAAA,EAAG;AAClE,IAAA,IAAI;AACF,MAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAA,EAAG,GAAA,EAAK,GAAG,CAAA;AAC3B,MAAA,IAAI,CAAC,MAAA,CAAO,KAAA,CAAM,EAAE,OAAA,EAAS,GAAG,OAAO,CAAA;AAAA,IACzC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,kBAAkB,IAAA,EAAgC;AAChE,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,MAAA,EAAW,IAAI,MAAA,EAAU;AACtD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA,CAAE,IAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,EAAM,CAAA;AAC7D,EAAA,IAAI;AACF,IAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,CAAC,CAAE,CAAA;AAChC,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,KAAA,CAAM,CAAC,CAAE,CAAA;AAC9B,MAAA,IAAI,IAAA,IAAQ,EAAA,EAAI,OAAO,EAAE,MAAM,EAAA,EAAG;AAClC,MAAA,IAAI,IAAA,EAAM,OAAO,EAAE,IAAA,EAAM,IAAI,KAAA,CAAA,EAAU;AAAA,IACzC,WAAW,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,EAAG;AACzC,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,IAAA,EAAM,OAAO,EAAE,IAAA,EAAM,IAAI,KAAA,CAAA,EAAU;AAAA,IACzC;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,gBAAA,CACd,KAAA,EACA,WAAA,EACA,UAAA,EACQ;AACR,EAAA,MAAM,OAAO,KAAA,EAAO,IAAA;AACpB,EAAA,MAAM,KAAK,KAAA,EAAO,EAAA;AAElB,EAAA,IAAI,QAAQ,EAAA,EAAI;AACd,IAAA,OAAO,CAAA,EAAGO,MAAAA,CAAO,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAC,CAAA,QAAA,EAAWA,MAAAA,CAAO,EAAA,EAAI,cAAA,EAAgB,UAAU,CAAC,CAAA,CAAA;AAAA,EACrG;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,OAAOA,MAAAA,CAAO,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA;AAAA,EAChD;AAEA,EAAA,OAAO,WAAA;AACT;ACjDO,SAAS,yBAAA,CAA0B;AAAA,EACxC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAmC;AACjC,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEjC,EAAA,IAAI,WAAW,YAAA,EAAc;AAC3B,IAAA,uBACEP,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qHAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,KAAA,EAAO,MAAA,CAAO,UAAU,CAAA;AACnD,MAAA,uBACEA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,sEAAA;AAAA,YACA,MAAA,IAAU;AAAA,WACZ;AAAA,UACA,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA;AAAA,UAEtC,QAAA,EAAA,MAAA,CAAO;AAAA,SAAA;AAAA,QAVH,MAAA,CAAO;AAAA,OAWd;AAAA,IAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8DACb,QAAA,kBAAAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0FAAA,EACZ,QAAA,EAAA;AAAA,IAAA,cAAA,mBACCJ,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8FAAA,EACV,0BACH,CAAA,GACE,IAAA;AAAA,IACH,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,KAAA,EAAO,MAAA,CAAO,UAAU,CAAA;AACnD,MAAA,uBACEA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,YACT,mFAAA;AAAA,YACA,MAAA,IAAU;AAAA,WACZ;AAAA,UACA,OAAA,EAAS,MAAM,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA;AAAA,UAEtC,QAAA,EAAA,MAAA,CAAO;AAAA,SAAA;AAAA,QAVH,MAAA,CAAO;AAAA,OAWd;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ;AC/DO,SAAS,sBAAA,CAAuB;AAAA,EACrC,SAAA;AAAA,EACA,SAAA;AAAA,EACA,oBAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAgC;AAC9B,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,QAAA,EAAU,CAAA;AAAA,MACV,OAAA,EAAS,MAAA;AAAA,MACT,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAA,EAAO;AAAA,QACT;AAAA,MACF,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,WAAA;AAAA,QACA,oIAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iHAAA,EACd,QAAA,kBAAAA,GAAAA,CAACM,UAAAA,EAAA,EAAa,SAAA,EAAU,QAAA,EAAS,aAAA,EAAY,MAAA,EAAO,CAAA,EACtD,CAAA;AAAA,wBACAN,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAO,SAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC7C,OAAA,EAAS,YAAA;AAAA,YACT,MAAA,EAAQ,WAAA;AAAA,YACR,OAAA,EAAS,MAAA;AAAA,YACT,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,cAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,gBAAC,CAAA,CAAE,OAA4B,IAAA,EAAK;AAAA,cACtC;AAAA,YACF,CAAA;AAAA,YACA,WAAA,EAAa,oBAAA;AAAA,YACb,cAAY,OAAA,IAAW,MAAA;AAAA,YACvB,SAAA,EAAW,EAAA;AAAA,cACT,mJAAA;AAAA,cACA,OAAA,IAAW;AAAA,aACb;AAAA,YACA,KAAA,EAAO,CAAC,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,YAC9B,YAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,GACF;AAEJ;;;ACpEO,SAAS,eAAe,QAAA,EAAsC;AACnE,EAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,EAAA,KAAA,CAAM,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC9B,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,EAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,EAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,KAAK,CAAA;AAEzB,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,OAAA;AACH,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,WAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,CAAC,CAAA;AAC/B,MAAA,EAAA,CAAG,OAAA,CAAQ,EAAA,CAAG,OAAA,EAAQ,GAAI,CAAC,CAAA;AAC3B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,OAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,CAAC,CAAA;AAC/B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,QAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAE,CAAA;AAChC,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,QAAA;AACH,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAE,CAAA;AAChC,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,MAAA,MAAM,YAAA,GAAe,GAAA,KAAQ,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,GAAA;AAC1C,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,YAAY,CAAA;AAC1C,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,MAAA,MAAM,YAAA,GAAe,GAAA,KAAQ,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,GAAA;AAC1C,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,EAAQ,GAAI,YAAA;AACpC,MAAA,IAAA,CAAK,OAAA,CAAQ,aAAa,CAAC,CAAA;AAC3B,MAAA,EAAA,CAAG,OAAA,CAAQ,aAAa,CAAC,CAAA;AACzB,MAAA,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC3B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB;AAAA,IACA,KAAK,WAAA;AACH,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AACd,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB,KAAK,WAAA;AACH,MAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,QAAA,EAAS,GAAI,CAAC,CAAA;AACjC,MAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AACd,MAAA,EAAA,CAAG,QAAQ,CAAC,CAAA;AACZ,MAAA,EAAA,CAAG,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC3B,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA,IACpB;AACE,MAAA,OAAO,EAAE,MAAM,EAAA,EAAG;AAAA;AAExB;AClDO,SAAS,aAAA,CAAc,KAAA,EAAe,QAAA,GAAW,KAAA,EAAgB;AACtE,EAAA,MAAM,SAAA,GAAkBQ,MAAA,CAAA,WAAA;AAAA,IACtB,CAAC,QAAA,KAAyB;AACxB,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AACnC,MAAA,GAAA,CAAI,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AACvC,MAAA,OAAO,MAAM,GAAA,CAAI,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,IACzD,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AACA,EAAA,OAAaA,MAAA,CAAA,oBAAA;AAAA,IACX,SAAA;AAAA,IACA,MAAM,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA;AAAA,IAC/B,MAAM;AAAA,GACR;AACF;AAEO,SAAS,2BAAA,GAAuC;AACrD,EAAA,OAAO,aAAA,CAAc,sBAAsB,KAAK,CAAA;AAClD;AAEO,SAAS,yBAAA,GAAqC;AACnD,EAAA,OAAO,aAAA,CAAc,oBAAoB,KAAK,CAAA;AAChD;ACAO,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,OAAA,EAAS,aAAA;AAAA,EACT,YAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,MAAM,CAAA,GAAI,EAAE,GAAG,oBAAA,EAAsB,GAAG,YAAA,EAAa;AACrD,EAAA,MAAM,oBAAA,GAAuB,eAAe,CAAA,CAAE,WAAA;AAC9C,EAAA,MAAM,UAAA,GAAmB,eAAQ,MAAM;AACrC,IAAA,IAAI,aAAA,EAAe,QAAQ,OAAO,aAAA;AAClC,IAAA,IAAI,CAAC,WAAA,EAAa,OAAO,EAAC;AAC1B,IAAA,OAAO,kBAAA,CAAmB,GAAA,CAAI,CAAC,EAAE,IAAG,MAAO;AAAA,MACzC,EAAA;AAAA,MACA,OAAO,YAAA,EAAc,YAAA,GAAe,EAAE,CAAA,IAAK,sBAAsB,EAAE,CAAA;AAAA,MACnE,QAAA,EAAU,MAAM,cAAA,CAAe,EAAE;AAAA,KACnC,CAAE,CAAA;AAAA,EACJ,GAAG,CAAC,aAAA,EAAe,WAAA,EAAa,YAAA,EAAc,YAAY,CAAC,CAAA;AAE3D,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAC3C,EAAA,MAAM,aAAA,GAAgB,cAAc,OAAO,CAAA;AAC3C,EAAA,MAAM,iBAAiB,2BAAA,EAA4B;AACnD,EAAA,MAAM,eAAe,yBAAA,EAA0B;AAC/C,EAAA,MAAM,cAAA,GAAiB,cAAA,GAAiB,CAAA,GAAI,YAAA,GAAe,CAAA,GAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,gBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,gBAAgC,KAAK,CAAA;AACrE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAU,MAAA,CAAA,QAAA,CAAS,MAAM,KAAA,EAAO,IAAA,oBAAQ,IAAI,IAAA,EAAM,CAAA;AAC1F,EAAA,MAAM,UAAA,GAAmB,cAA8B,KAAK,CAAA;AAC5D,EAAA,MAAM,UAAA,GAAmB,cAAO,KAAK,CAAA;AACrC,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,OAAA;AACvB,EAAA,MAAM,UAAgB,MAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,MAAM,YAAA,GAAe,oBAAoB,OAAO,CAAA,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,kBAAkB,OAAO,CAAA,CAAA;AAE5C,EAAM,iBAAU,MAAM;AACpB,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,IAAA,IAAI,IAAA,IAAQ,CAAC,OAAA,EAAS;AACpB,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA,QAAA,CAAS,KAAK,CAAA;AACd,MAAA,iBAAA,CAAkB,KAAA,EAAO,IAAA,oBAAQ,IAAI,IAAA,EAAM,CAAA;AAAA,IAC7C,CAAA,MAAA,IAAW,QAAQ,OAAA,EAAS;AAC1B,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAC,CAAA;AAEhB,EAAA,MAAM,gBAAA,GAAyB,MAAA,CAAA,WAAA;AAAA,IAC7B,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,IAAQ,CAAC,YAAA,EAAc;AAClC,QAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAC3B,QAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,MAC7B;AACA,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,YAAA,EAAc,QAAQ;AAAA,GAC/B;AAEA,EAAA,MAAM,UAAA,GAAmB,MAAA,CAAA,OAAA,CAAQ,MAAO,MAAA,GAAS,EAAE,QAAO,GAAI,MAAA,EAAY,CAAC,MAAM,CAAC,CAAA;AAClF,EAAA,MAAM,KAAA,GAAc,MAAA,CAAA,OAAA;AAAA,IAClB,MAAM,gBAAA,CAAiB,KAAA,EAAO,oBAAA,EAAsB,UAAU,CAAA;AAAA,IAC9D,CAAC,oBAAA,EAAsB,KAAA,EAAO,UAAU;AAAA,GAC1C;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAU,gBAAS,KAAK,CAAA;AACtD,EAAA,MAAM,eAAA,GAAwB,cAAO,KAAK,CAAA;AAC1C,EAAM,iBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,eAAA,CAAgB,OAAA,EAAS,YAAA,CAAa,KAAK,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,eAAA,CAAgB,OAAA,GAAU,KAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,kBAAkB,SAAS,CAAA;AACxC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,SAAA,GACJ,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,EAAA,GACd,CAAA,EAAGD,MAAAA,CAAO,IAAA,CAAK,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAC,CAAA,QAAA,EAAWA,MAAAA,CAAO,IAAA,CAAK,EAAA,EAAI,cAAA,EAAgB,UAAU,CAAC,CAAA,CAAA,GACtG,IAAA,CAAK,IAAA,GACHA,MAAAA,CAAO,IAAA,CAAK,IAAA,EAAM,cAAA,EAAgB,UAAU,CAAA,GAC5C,oBAAA;AACR,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,YAAA,CAAa,SAAS,CAAA;AAAA,MACxB,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,YAAA,CAAa,SAAS,CAAA;AAAA,MACxB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAyB,eAAQ,MAAM;AAC3C,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAY;AAChC,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,CAAA;AACvB,MAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,MAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,IACtB,CAAA;AACA,IAAA,MAAM,WAA2B,EAAC;AAClC,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,YAAA,CAAa,IAAI,CAAA,GAAI,YAAA,CAAa,aAAc,CAAC,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,gBAAgB,QAAA,CAAS,IAAA,CAAK,CAAC,IAAA,KAAe,cAAA,CAAe,IAAI,CAAC,CAAA;AACtE,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,CAAC,aAAA,EAAe,aAAA,EAAe,cAAc,CAAC,CAAA;AAEjD,EAAA,MAAM,YAAA,GAAe,CAAC,QAAA,KAA8B;AAClD,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,QAAA,CAAS,KAAK,CAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,KAAK,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,QAAA,CAAS,KAAK,CAAA;AACd,MAAA,OAAA,GAAU,KAAK,CAAA;AAAA,IACjB;AACA,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAC3B,MAAA,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,IAC7B;AACA,IAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,EACf,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,EAA8B,WAAA,KAAsB;AACxE,IAAA,MAAM,GAAA,GAAM,cAAc,WAAW,CAAA;AACrC,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,QAAA,CAAS,CAAC,IAAA,KAAS;AACjB,MAAA,IAAI,CAAC,IAAA,EAAM,IAAA,IAAS,IAAA,CAAK,IAAA,IAAQ,KAAK,EAAA,EAAK;AACzC,QAAA,MAAME,UAAAA,GAAY,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,MAAA,EAAU;AAC7C,QAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAASA,UAAS,CAAA;AACrC,QAAA,OAAOA,UAAAA;AAAA,MACT;AACA,MAAA,IAAI,GAAA,GAAM,KAAK,IAAA,EAAM;AACnB,QAAA,MAAMA,UAAAA,GAAY,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,MAAA,EAAU;AAC7C,QAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAASA,UAAS,CAAA;AACrC,QAAA,OAAOA,UAAAA;AAAA,MACT;AACA,MAAA,MAAM,YAAY,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,IAAI,GAAA,EAAI;AAC7C,MAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,SAAS,CAAA;AACrC,MAAA,OAAO,SAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAU,gBAAS,EAAE,CAAA;AAC7D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAU,gBAAS,EAAE,CAAA;AACzD,EAAM,iBAAU,MAAM;AACpB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,iBAAA,CAAkB,OAAO,IAAA,GAAOF,MAAAA,CAAO,MAAM,IAAA,EAAM,YAAY,IAAI,EAAE,CAAA;AACrE,MAAA,eAAA,CAAgB,OAAO,EAAA,GAAKA,MAAAA,CAAO,MAAM,EAAA,EAAI,YAAY,IAAI,EAAE,CAAA;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,OAAO,IAAA,EAAM,KAAA,EAAO,EAAE,CAAC,CAAA;AAEjC,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAM,CAAA,GAAI,UAAU,cAAc,CAAA;AAClC,IAAA,IAAI,CAAA,EAAG;AACL,MAAA,QAAA,CAAS,CAAC,IAAA,MAAU,EAAE,IAAA,EAAM,GAAG,EAAA,EAAI,IAAA,EAAM,EAAA,IAAM,IAAA,CAAK,EAAA,IAAM,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,QAAU,CAAE,CAAA;AAAA,IACtF,CAAA,MAAO;AACL,MAAA,iBAAA,CAAkB,OAAO,IAAA,GAAOA,MAAAA,CAAO,MAAM,IAAA,EAAM,YAAY,IAAI,EAAE,CAAA;AAAA,IACvE;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,CAAA,GAAI,UAAU,YAAY,CAAA;AAChC,IAAA,IAAI,CAAA,EAAG;AACL,MAAA,QAAA,CAAS,CAAC,IAAA,MAAU,EAAE,IAAA,EAAM,MAAM,IAAA,IAAQ,IAAA,CAAK,IAAA,IAAQ,CAAA,GAAI,IAAA,CAAK,IAAA,GAAO,CAAA,EAAG,EAAA,EAAI,GAAE,CAAE,CAAA;AAAA,IACpF,CAAA,MAAO;AACL,MAAA,eAAA,CAAgB,OAAO,EAAA,GAAKA,MAAAA,CAAO,MAAM,EAAA,EAAI,YAAY,IAAI,EAAE,CAAA;AAAA,IACjE;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iCACJP,GAAAA;AAAA,IAAC,6BAAA;AAAA,IAAA;AAAA,MACC,cAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,QAAA,EAAU,YAAA;AAAA,MACV,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAY,CAAA,CAAE,UAAA;AAAA,MACd,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,cAAA;AAAA,MACA,YAAA;AAAA,MACA,oBAAA;AAAA,MACA,kBAAA,EAAoB,iBAAA;AAAA,MACpB,gBAAA,EAAkB,eAAA;AAAA,MAClB,aAAA,EAAe,gBAAA;AAAA,MACf,WAAA,EAAa;AAAA;AAAA,GACf;AAGF,EAAA,MAAM,yBACJA,GAAAA;AAAA,IAAC,2BAAA;AAAA,IAAA;AAAA,MACC,SAAS,YAAA,IAAgB,cAAA;AAAA,MACzB,cAAA;AAAA,MACA,aAAa,CAAA,CAAE,YAAA;AAAA,MACf,YAAY,CAAA,CAAE,WAAA;AAAA,MACd,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS;AAAA;AAAA,GACX;AAGF,EAAA,MAAM,0BACJA,GAAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,SAAA;AAAA,MACA,oBAAA;AAAA,MACA,OAAA,EAAS,CAAC,KAAA,EAAO,IAAA;AAAA,MACjB,WAAW,CAAA,CAAE,SAAA;AAAA,MACb,MAAA,EAAQ,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,MAC1B,aAAA,EAAe,YAAA;AAAA,MACf,cAAc,MAAM;AAClB,QAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,MAC5B,CAAA;AAAA,MACA,WAAA,EAAa;AAAA;AAAA,GACf;AAGF,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,uBACEI,KAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACDJ,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,YAAA,EAAc,kBAChC,QAAA,kBAAAI,IAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,eAAA,EAAe,IAAA;AAAA,UACf,SAAA,EAAW,EAAA;AAAA,YACT,mGAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,gBAAA,EAAiB,OAAA;AAAA,UAEjB,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,oEAAA,EACtB,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,CAAA,CAAE,SAAA,EAAU,CAAA,EAClE,CAAA;AAAA,4BACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8CAAA,EACb,QAAA,EAAA;AAAA,8BAAAJ,GAAAA;AAAA,gBAAC,yBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,UAAA;AAAA,kBACT,KAAA;AAAA,kBACA,MAAA,EAAO,YAAA;AAAA,kBACP,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACZ,QAAA,EAAA,cAAA,EACH,CAAA,EACF,CAAA;AAAA,cACC;AAAA,aAAA,EACH;AAAA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEI,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,gBAAA,EACjC,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,oBACjCA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,kEAAA;AAAA,UACA,mBAAmB,CAAA,IAAK;AAAA,SAC1B;AAAA,QACA,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QAEZ,QAAA,kBAAAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,yBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,UAAA;AAAA,cACT,KAAA;AAAA,cACA,MAAA,EAAO,SAAA;AAAA,cACP,gBAAgB,CAAA,CAAE,cAAA;AAAA,cAClB,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAA0C,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,YACvE;AAAA,WAAA,EACH;AAAA,SAAA,EACF;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AC/TO,IAAM,2CAAA,GACX;AAEF,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAA4D;AAC3F,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,IAAA,EAAtB,EAA2B,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,GAAG;AACL,CAAA,EAA+D;AAC7D,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,OAAA,EAAtB,EAA8B,WAAA,EAAU,uBAAA,EAAyB,GAAG,KAAA,EAAO,CAAA;AACrF;AAWA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,SAAA,GAAY,IAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,0BACJA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,OAAA;AAAA,IAAtB;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,yfAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAGF,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,uBAAOA,GAAAA,CAAuB,qBAAA,CAAA,MAAA,EAAtB,EAA8B,QAAA,EAAA,OAAA,EAAQ,CAAA;AAChD;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEA,GAAAA;AAAA,IAAuB,qBAAA,CAAA,IAAA;AAAA,IAAtB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,ySAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACnDO,SAAS,sBAAA,CAAuB;AAAA,EACrC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,IAAA,GAAO;AACT,CAAA,EAAgC;AAC9B,EAAA,MAAM,SAAA,GAAkBU,cAAuB,IAAI,CAAA;AACnD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,gBAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,gBAAS,KAAK,CAAA;AAExD,EAAA,MAAM,MAAA,GAAeA,mBAAY,MAAM;AACrC,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,YAAA,EAAa,GAAI,EAAA;AAClD,IAAA,MAAM,QAAA,GAAW,eAAe,YAAA,GAAe,CAAA;AAC/C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,UAAA,CAAW,YAAY,CAAC,CAAA;AACxB,IAAA,aAAA,CAAc,SAAA,GAAY,YAAA,GAAe,YAAA,GAAe,CAAC,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAMA,uBAAgB,MAAM;AAC1B,IAAA,MAAA,EAAO;AACP,IAAA,MAAM,EAAA,GAAK,sBAAsB,MAAM;AACrC,MAAA,qBAAA,CAAsB,MAAM,CAAA;AAAA,IAC9B,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,qBAAqB,EAAE,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAS,CAAC,CAAA;AAEtB,EAAMA,iBAAU,MAAM;AACpB,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,OAAO,mBAAmB,WAAA,EAAa;AACzC,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,IAAI,cAAA,CAAe,MAAM;AAClC,MAAA,MAAA,CAAO,sBAAsB,MAAM,CAAA;AAAA,IACrC,CAAC,CAAA;AACD,IAAA,EAAA,CAAG,QAAQ,EAAE,CAAA;AACb,IAAA,OAAO,MAAM,GAAG,UAAA,EAAW;AAAA,EAC7B,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEN,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,gCAAA,EAAkC,IAAA,IAAQ,QAAA,EAAU,SAAS,CAAA,EAC9E,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,IAAA,GACI,EAAA,CAAG,yDAAA,EAA2D,mBAAmB,CAAA,GACjF;AAAA,SACN;AAAA,QACA,QAAA,EAAU,MAAA;AAAA,QAET;AAAA;AAAA,KACH;AAAA,IACC,0BACCI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,uGAAA;AAAA,QACV,aAAA,EAAW,IAAA;AAAA,QAEX,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EAAqG,CAAA;AAAA,0BACpHA,GAAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qFAAA;AAAA,cACV,WAAA,EAAa;AAAA;AAAA;AACf;AAAA;AAAA,KACF,GACE,IAAA;AAAA,IACH,6BACCI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,wGAAA;AAAA,QACV,aAAA,EAAW,IAAA;AAAA,QAEX,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oGAAA,EAAqG,CAAA;AAAA,0BACpHA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qFAAA;AAAA,cACV,WAAA,EAAa;AAAA;AAAA;AACf;AAAA;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AChGO,SAAS,yBAAA,CAA0B;AAAA,EACxC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,cAAA;AAAA,EACd,SAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAmC;AACjC,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,yBAAA,EAA2B,SAAS,GACrD,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAU,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,MAChD,WAAA;AAAA,MACA,YAAA,EAAY,WAAA;AAAA,MACZ,SAAA;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA;AAAgB;AAAA,GAC9C,EACF,CAAA;AAEJ;ACxBA,IAAM,aAAA,GAAgBE,GAAAA;AAAA,EACpB;AACF,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0F;AACxF,EAAA,uBACEF,GAAAA,CAAgB,cAAA,CAAA,IAAA,EAAf,EAAoB,WAAA,EAAU,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,aAAA,EAAc,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAEjG;ACDO,IAAM,IAAA,GAAO;AASpB,IAAM,gBAAA,GAAyBW,qBAA4C,IAAI,CAAA;AAExE,IAAM,YAAY,CAGvB;AAAA,EACA,GAAG;AACL,CAAA,KAA4C;AAC1C,EAAA,uBACEX,GAAAA,CAAC,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,OAAO,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,IAC9C,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAY,GAAG,OAAO,CAAA,EACzB,CAAA;AAEJ;AAEO,IAAM,eAAe,MAAM;AAChC,EAAA,MAAM,YAAA,GAAqBW,kBAAW,gBAAgB,CAAA;AACtD,EAAA,MAAM,WAAA,GAAoBA,kBAAW,eAAe,CAAA;AAEpD,EAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,MAAA,EAAW;AACvD,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,cAAA,EAAe;AACzC,EAAA,MAAM,YAAY,YAAA,CAAa,EAAE,IAAA,EAAM,YAAA,CAAa,MAAM,CAAA;AAC1D,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA;AAE7D,EAAA,MAAM,EAAE,IAAG,GAAI,WAAA;AAEf,EAAA,OAAO;AAAA,IACL,EAAA;AAAA,IACA,MAAM,YAAA,CAAa,IAAA;AAAA,IACnB,UAAA,EAAY,GAAG,EAAE,CAAA,UAAA,CAAA;AAAA,IACjB,iBAAA,EAAmB,GAAG,EAAE,CAAA,sBAAA,CAAA;AAAA,IACxB,aAAA,EAAe,GAAG,EAAE,CAAA,kBAAA,CAAA;AAAA,IACpB,GAAG;AAAA,GACL;AACF;AAMA,IAAM,eAAA,GAAwBA,MAAA,CAAA,aAAA,CAAoC,EAA0B,CAAA;AAErF,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC7E,EAAA,MAAM,KAAWA,MAAA,CAAA,KAAA,EAAM;AAEvB,EAAA,uBACEX,IAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,EAAE,IAAG,EACpC,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,WAAA,EAAU,aAAY,SAAA,EAAW,EAAA,CAAG,cAAc,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA,EAChF,CAAA;AAEJ;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqD;AACnD,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,YAAA,EAAY,CAAC,CAAC,KAAA;AAAA,MACd,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC7D,OAAA,EAAS,UAAA;AAAA,MACR,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAsC;AAC3E,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,iBAAA,EAAmB,aAAA,KAAkB,YAAA,EAAa;AAE7E,EAAA,uBACEA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,EAAA,EAAI,UAAA;AAAA,MACJ,kBAAA,EAAkB,CAAC,KAAA,GAAQ,CAAA,EAAG,iBAAiB,CAAA,CAAA,GAAK,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,MACzF,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,MACf,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAClF,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,EAAA,EAAI,iBAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC9E,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI,YAAA,EAAa;AAC9C,EAAA,MAAM,OAAO,KAAA,GAAQ,MAAA,CAAO,OAAO,OAAA,IAAW,EAAE,IAAI,KAAA,CAAM,QAAA;AAE1D,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,EAAA,EAAI,aAAA;AAAA,MACJ,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AC5IA,IAAM,4BAAA,GAAqCY,qBAAc,KAAK,CAAA;AAEvD,SAAS,6BAAA,CAA8B;AAAA,EAC5C,QAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAGG;AACD,EAAA,uBACEZ,GAAAA,CAAC,4BAAA,CAA6B,UAA7B,EAAsC,KAAA,EAAO,QAC3C,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,wBAAA,GAAoC;AAClD,EAAA,OAAaY,kBAAW,4BAA4B,CAAA;AACtD;ACVA,SAAS,KAAA,CAAM,EAAE,GAAG,KAAA,EAAM,EAAqD;AAC7E,EAAA,uBAAOZ,GAAAA,CAAgBa,eAAA,CAAA,IAAA,EAAf,EAAqB,GAAG,KAAA,EAAO,CAAA;AACzC;AAEA,SAAS,YAAA,CAAa,EAAE,GAAG,KAAA,EAAM,EAAwD;AACvF,EAAA,uBAAOb,GAAAA,CAAgBa,eAAA,CAAA,OAAA,EAAf,EAAwB,GAAG,KAAA,EAAO,CAAA;AAC5C;AAEA,SAAS,UAAA,CAAW,EAAE,GAAG,KAAA,EAAM,EAAsD;AACnF,EAAA,uBAAOb,GAAAA,CAAgBa,eAAA,CAAA,KAAA,EAAf,EAAsB,GAAG,KAAA,EAAO,CAAA;AAC1C;AAEA,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAuD;AACrF,EAAA,uBAAOb,GAAAA,CAAgBa,eAAA,CAAA,MAAA,EAAf,EAAuB,GAAG,KAAA,EAAO,CAAA;AAC3C;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEb,GAAAA;AAAA,IAAgBa,eAAA,CAAA,OAAA;AAAA,IAAf;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,oLAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,oBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACET,KAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAJ,IAAC,YAAA,EAAA,EAAa,CAAA;AAAA,oBACdI,IAAAA;AAAA,MAAgBS,eAAA,CAAA,OAAA;AAAA,MAAf;AAAA,QACC,oBAAA,EAAsB,CAAC,KAAA,KAAU;AAC/B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,oBAAA,GAAuB,KAAK,CAAA;AAAA,UAC9B;AAAA,QACF,CAAA;AAAA,QACA,iBAAA,EAAmB,CAAC,KAAA,KAAU;AAC5B,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,UAC3B;AAAA,QACF,CAAA;AAAA,QACA,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,UAAA,+BAAA,CAAgC,KAAK,CAAA;AACrC,UAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,YAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,UACxB;AAAA,QACF,CAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,8SAAA;AAAA,UACA,SAAS,OAAA,IACP,oIAAA;AAAA,UACF,SAAS,MAAA,IACP,iIAAA;AAAA,UACF,SAAS,KAAA,IACP,0GAAA;AAAA,UACF,SAAS,QAAA,IACP,mHAAA;AAAA,UACF;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDT,IAAAA,CAAgBS,eAAA,CAAA,KAAA,EAAf,EAAqB,WAAU,2PAAA,EAC9B,QAAA,EAAA;AAAA,4BAAAb,GAAAA,CAACc,KAAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,4BAC3Bd,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,OAAA,EAAK;AAAA,WAAA,EACjC;AAAA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,IAAM,cAAc,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,qBACzCA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAEtF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,cAAc,CAAC,EAAE,WAAW,GAAG,KAAA,uBACnCA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,EAAA;AAAA,MACT,4FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN;AAEF,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAsD;AAC9F,EAAA,uBACEA,GAAAA;AAAA,IAAgBa,eAAA,CAAA,KAAA;AAAA,IAAf;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uCAAA,EAAyC,SAAS,CAAA;AAAA,MAC/D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEb,GAAAA;AAAA,IAAgBa,eAAA,CAAA,WAAA;AAAA,IAAf;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AC9GO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACEb,GAAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAY,cACjB,QAAA,kBAAAI,IAAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6FAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,0BAAA,EACrB,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UACnD,+BAAeA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,WAAW,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EACrE,CAAA;AAAA,wBACAA,GAAAA,CAAC,6BAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA;AAAA,cAET,8DAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC;AAAA;AAAA,SACH,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;ACxDA,IAAM,UAAA,GACJ;AAGF,IAAM,kBAAkB,CAAC,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,QAAQ,EAAE,CAAA;AAEjE,SAAS,aAAa,EAAA,EAAoB;AACxC,EAAA,MAAM,OAAA,GAAU,GAAG,IAAA,EAAK;AACxB,EAAA,IAAI,CAAC,SAAS,OAAO,GAAA;AACrB,EAAA,MAAM,SAAA,GAAY,sBAAA,CAAuB,IAAA,CAAK,OAAO,CAAA;AACrD,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AACnC,IAAA,IAAI,MAAA,IAAU,CAAC,eAAA,CAAgB,QAAA,CAAS,GAAG,MAAA,CAAO,WAAA,EAAa,CAAA,CAAA,CAAG,CAAA,EAAG;AACnE,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAUA,SAAS,KAAK,EAAE,SAAA,EAAW,UAAU,EAAA,EAAI,GAAG,OAAM,EAAc;AAC9D,EAAA,MAAM,IAAA,GAAO,aAAa,EAAE,CAAA;AAC5B,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACEA,GAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,MAAA,EAAO,QAAA;AAAA,QACP,GAAA,EAAI,qBAAA;AAAA,QACJ,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QAClC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACA,EAAA,uBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAY,SAAA,EAAW,GAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACzE;ACJA,IAAMe,qBAAAA,GAA0D;AAAA,EAC9D,YAAA,EAAc,gBAAA;AAAA,EACd,iBAAA,EAAmB,WAAA;AAAA,EACnB,aAAA,EAAe,YAAA;AAAA,EACf,qBAAA,EAAuB;AACzB,CAAA;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,KAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,GAAmB,KAAA;AAAA,EACnB;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAA,GAAI,EAAE,GAAGA,qBAAAA,EAAsB,GAAG,YAAA,EAAa;AACrD,EAAA,MAAM,wBAAwB,wBAAA,EAAyB;AACvD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUC,gBAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,WAAA,GAAoBA,eAAQ,MAAM,IAAI,IAAI,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAqBA,eAAQ,MAAM;AACvC,IAAA,MAAM,GAAA,uBAAU,GAAA,EAAoB;AACpC,IAAA,KAAA,MAAW,OAAO,OAAA,EAAS,GAAA,CAAI,IAAI,GAAA,CAAI,KAAA,EAAO,IAAI,KAAK,CAAA;AACvD,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAA,MAAM,eAAA,GAAwBA,eAAQ,MAAM;AAC1C,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,EAAK,CAAE,WAAA,EAAY;AACpC,IAAA,IAAI,CAAC,GAAG,OAAO,OAAA;AACf,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,CAAI,MAAM,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,EACpE,CAAA,EAAG,CAAC,OAAA,EAAS,MAAM,CAAC,CAAA;AAEpB,EAAA,MAAM,MAAA,GAAS,CAAC,WAAA,EAAqB,OAAA,KAAqB;AACxD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,aAAA,CAAc,CAAC,GAAG,KAAA,EAAO,WAAW,CAAC,CAAA;AACrC,MAAA;AAAA,IACF;AACA,IAAA,aAAA,CAAc,MAAM,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,KAAS,WAAW,CAAC,CAAA;AAAA,EAC5D,CAAA;AAEA,EAAA,uBACEZ,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,WAAA,EAAa,SAAS,CAAA,EACtC,QAAA,EAAA;AAAA,IAAA,gBAAA,IAAoB,KAAA,CAAM,MAAA,GAAS,CAAA,mBAClCJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,WAAA,KAAgB;AAC1B,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,GAAA,CAAI,WAAW,CAAA,IAAK,WAAA;AAC/C,MAAA,uBACEI,IAAAA,CAAC,KAAA,EAAA,EAAwB,OAAA,EAAQ,WAAA,EAAY,WAAU,wBAAA,EACpD,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,CAAC,2BACAJ,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,iDAAA;AAAA,YACV,YAAA,EAAY,CAAA,EAAG,CAAA,CAAE,qBAAqB,IAAI,KAAK,CAAA,CAAA;AAAA,YAC/C,OAAA,EAAS,MAAM,MAAA,CAAO,WAAA,EAAa,KAAK,CAAA;AAAA,YAExC,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,SACzB,GACE;AAAA,OAAA,EAAA,EAXM,WAYZ,CAAA;AAAA,IAEJ,CAAC,GACH,CAAA,GACE,IAAA;AAAA,oBACJI,IAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,KAAA,EACnB,QAAA,EAAA;AAAA,sBAAAJ,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAI,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,SAAA;AAAA,UACR,SAAA,EAAU,wBAAA;AAAA,UACV,YAAA,EAAY,aAAa,CAAA,CAAE,YAAA;AAAA,UAC3B,QAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gCAAA,EACd,QAAA,EAAA;AAAA,8BAAAJ,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,cAChC,CAAA,CAAE;AAAA,aAAA,EACL,CAAA;AAAA,YACC,CAAC,gBAAA,IAAoB,KAAA,CAAM,MAAA,GAAS,CAAA,mBACnCA,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,WAAA,EAAa,QAAA,EAAA,KAAA,CAAM,MAAA,EAAO,CAAA,GACvC;AAAA;AAAA;AAAA,OACN,EACF,CAAA;AAAA,sBACAI,IAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,OAAA;AAAA,UACN,WAAW,CAAC,qBAAA;AAAA,UACZ,SAAA,EAAU,+FAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,MAAA;AAAA,gBACP,UAAU,CAAC,KAAA,KAAU,SAAA,CAAU,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,gBACjD,aAAa,CAAA,CAAE,iBAAA;AAAA,gBACf,cAAY,CAAA,CAAE;AAAA;AAAA,aAChB,EACF,CAAA;AAAA,4BACAA,GAAAA;AAAA,cAAC,sBAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,KAAA;AAAA,gBACN,mBAAA,EAAoB,0BAAA;AAAA,gBACpB,SAAA,EAAW,CAAA,EAAG,eAAA,CAAgB,MAAM,IAAI,MAAM,CAAA,CAAA;AAAA,gBAE7C,QAAA,EAAA,eAAA,CAAgB,MAAA,KAAW,CAAA,mBAC1BA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,CAAA,CAAE,aAAA,EAAc,CAAA,GAE1E,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW;AAC9B,kBAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC5C,kBAAA,uBACEI,IAAAA;AAAA,oBAAC,gBAAA;AAAA,oBAAA;AAAA,sBAEC,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,wBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,wBAAA,MAAA,CAAO,MAAA,CAAO,KAAA,EAAO,CAAC,OAAO,CAAA;AAAA,sBAC/B,CAAA;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAJ,GAAAA,CAAC,YAAS,OAAA,EAAkB,CAAA;AAAA,wBAC3B,MAAA,CAAO;AAAA;AAAA,qBAAA;AAAA,oBAPH,MAAA,CAAO;AAAA,mBAQd;AAAA,gBAEJ,CAAC;AAAA;AAAA;AAEL;AAAA;AAAA;AACF,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC/JA,IAAM,UAAA,GAAmBiB,MAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCb,IAAAA;AAAA,EAAqB,mBAAA,CAAA,IAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAJ,GAAAA,CAAqB,mBAAA,CAAA,QAAA,EAApB,EAA6B,SAAA,EAAU,mCACrC,QAAA,EACH,CAAA;AAAA,sBACAA,IAAC,SAAA,EAAA,EAAU,CAAA;AAAA,sBACXA,GAAAA,CAAqB,mBAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAC9B,CACD;AACD,UAAA,CAAW,cAAkC,mBAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,SAAA,GAAkBiB,MAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,UAAA,EAAY,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpDjB,GAAAA;AAAA,EAAqB,mBAAA,CAAA,mBAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+CAAA;AAAA,MACA,gBAAgB,UAAA,IAAc,oDAAA;AAAA,MAC9B,gBAAgB,YAAA,IAAgB,sDAAA;AAAA,MAChC;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAqB,mBAAA,CAAA,eAAA,EAApB,EAAoC,WAAU,wCAAA,EAAyC;AAAA;AAC1F,CACD;AACD,SAAA,CAAU,cAAkC,mBAAA,CAAA,mBAAA,CAAoB,WAAA;;;ACxCzD,IAAM,6BAAA,GAAgC;AAMtC,SAAS,mBAAA,CACd,SACA,KAAA,EACK;AACL,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AACnC,EAAA,IAAI,CAAC,GAAG,OAAO,OAAA;AACf,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,CAAO,MAAM,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA;AAC1E;AAEO,SAAS,kBAAA,CAAmB,aAAqB,UAAA,EAA+B;AACrF,EAAA,IAAI,UAAA,KAAe,MAAM,OAAO,IAAA;AAChC,EAAA,IAAI,UAAA,KAAe,OAAO,OAAO,KAAA;AACjC,EAAA,OAAO,WAAA,IAAe,6BAAA;AACxB;ACmBA,IAAMe,qBAAAA,GAAqD;AAAA,EACzD,iBAAA,EAAmB,cAAA;AAAA,EACnB,aAAA,EAAe;AACjB,CAAA;AAEA,SAAS,MAAA,CAAO;AAAA,EACd,KAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc,EAAA;AAAA,EACd,QAAA,GAAW,KAAA;AAAA,EACX,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA,EAAc;AAChB,CAAA,EAAgB;AACd,EAAA,MAAM,CAAA,GAAI,EAAE,GAAGA,qBAAAA,EAAsB,GAAG,YAAA,EAAa;AACrD,EAAA,MAAM,wBAAwB,wBAAA,EAAyB;AACvD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUG,gBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUA,gBAAS,EAAE,CAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,OAAA,CAAQ,MAAA,EAAQ,UAAU,CAAA;AAChE,EAAA,MAAM,eAAA,GAAwBA,MAAA,CAAA,OAAA;AAAA,IAC5B,MAAO,UAAA,GAAa,mBAAA,CAAoB,OAAA,EAAS,MAAM,CAAA,GAAI,OAAA;AAAA,IAC3D,CAAC,OAAA,EAAS,MAAA,EAAQ,UAAU;AAAA,GAC9B;AACA,EAAA,MAAM,iBAAiB,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,UAAU,KAAK,CAAA;AAChE,EAAA,MAAM,YAAA,GAAe,gBAAgB,KAAA,IAAS,WAAA;AAE9C,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAsB;AAC9C,IAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,IAAA,IAAI,CAAC,QAAA,EAAU,SAAA,CAAU,EAAE,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,uBACEd,IAAAA,CAAC,YAAA,EAAA,EAAa,OAAO,KAAA,EAAO,IAAA,EAAY,cAAc,gBAAA,EACpD,QAAA,EAAA;AAAA,oBAAAJ,GAAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAAI,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAe,IAAA;AAAA,QACf,YAAA,EAAY,SAAA;AAAA,QACZ,eAAA,EAAc,SAAA;AAAA,QACd,QAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,YAAA;AAAA,UACA,+EAAA;AAAA,UACA,qEAAA;AAAA,UACA,CAAC,KAAA,IAAS,uBAAA;AAAA,UACV,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA8B,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,0BAC3DA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,6CAAA,EAA8C;AAAA;AAAA;AAAA,KAC3E,EACF,CAAA;AAAA,oBACAI,IAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,WAAW,CAAC,qBAAA;AAAA,QACZ,SAAA,EAAU,uFAAA;AAAA,QACV,gBAAA,EAAkB,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,QAEzC,QAAA,EAAA;AAAA,UAAA,UAAA,mBACCJ,GAAAA;AAAA,YAAC,yBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,SAAA;AAAA,cACV,aAAa,CAAA,CAAE,iBAAA;AAAA,cACf,SAAA,EAAW;AAAA;AAAA,WACb,GACE,IAAA;AAAA,0BACJA,GAAAA;AAAA,YAAC,sBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,KAAA;AAAA,cACN,mBAAA,EAAqB,EAAA;AAAA,gBACnB,0CAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,SAAA,EAAW,GAAG,eAAA,CAAgB,MAAM,IAAI,IAAA,GAAO,CAAA,GAAI,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,cAE7D,QAAA,EAAA,eAAA,CAAgB,MAAA,KAAW,CAAA,mBAC1BA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,CAAA,CAAE,eAAc,CAAA,GAE1E,eAAA,CAAgB,GAAA,CAAI,CAAC,wBACnBA,GAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBAEC,SAAS,MAAM;AACb,oBAAA,aAAA,CAAc,IAAI,KAAK,CAAA;AACvB,oBAAA,OAAA,CAAQ,KAAK,CAAA;AACb,oBAAA,SAAA,CAAU,EAAE,CAAA;AAAA,kBACd,CAAA;AAAA,kBAEC,QAAA,EAAA,GAAA,CAAI;AAAA,iBAAA;AAAA,gBAPA,GAAA,CAAI;AAAA,eASZ;AAAA;AAAA;AAEL;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAC/E,EAAA,uBACEI,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,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,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAJ,GAAAA,CAAC,WAAM,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,wBACnBA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA;AAAA,GACzB;AAEJ;AC7JA,IAAM,SAAA,GAAkBmB,MAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,YAAA,EAAc,UAAA,GAAa,IAAA,EAAM,GAAG,KAAA,EAAM,EAAG,wBACzEnB,GAAAA;AAAA,EAAoB,kBAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,oBAAA;AAAA,MACA,WAAA,KAAgB,eAAe,gBAAA,GAAmB,gBAAA;AAAA,MAClD;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,cAAiC,kBAAA,CAAA,IAAA,CAAK,WAAA;ACfhD,IAAM,MAAA,GAAeoB,kBAGnB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BpB,GAAAA;AAAA,EAAiB,eAAA,CAAA,IAAA;AAAA,EAAhB;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,QAAA;AAAA,IACV,SAAA,EAAW,EAAA;AAAA,MACT,+JAAA;AAAA,MACA,YAAA;AAAA,MACA,iDAAA;AAAA,MACA,iEAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAiB,eAAA,CAAA,KAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,cAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,wGAAA;AAAA,UACA;AAAA;AACF;AAAA;AACF;AACF,CACD;AACD,MAAA,CAAO,cAA8B,eAAA,CAAA,IAAA,CAAK,WAAA;AC3B1C,IAAM,KAAA,GAAcqB,MAAA,CAAA,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,EAAG,GAAA,qBACxBrB,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCACb,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,iCAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA,EACzF;AAEJ;AACA,KAAA,CAAM,WAAA,GAAc,OAAA;AAEpB,IAAM,WAAA,GAAoBqB,kBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrB,GAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,IACjE,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,SAAA,GAAkBqB,kBAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BrB,IAAC,OAAA,EAAA,EAAM,GAAA,EAAU,WAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA,EAAI,GAAG,OAAO,CACrF;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,WAAA,GAAoBqB,kBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrB,GAAAA;AAAA,EAAC,OAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,0EAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAM,QAAA,GAAiBqB,MAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBACxBrB,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,iGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAM,SAAA,GAAkBqB,kBAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrB,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,kGAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,SAAA,GAAkBqB,kBAGtB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BrB,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,gDAAA,EAAkD,SAAS,CAAA;AAAA,IACxE,GAAG;AAAA;AACN,CACD;AACD,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,YAAA,GAAqBqB,kBAGzB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BrB,IAAC,SAAA,EAAA,EAAQ,GAAA,EAAU,WAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA,EAAI,GAAG,OAAO,CAC/F;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;AC1FpB,SAAS,IAAA,CAAK,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoD;AAC7F,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoD;AACjG,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,OAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,yJAAA;AAAA,QACA,qGAAA;AAAA,QACA,kDAAA;AAAA,QACA,qGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,OAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,iIAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACvDA,IAAM,QAAA,GAAiBsB,MAAA,CAAA,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,wBACxBtB,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,WAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,0FAAA;AAAA,QACA,iEAAA;AAAA,QACA,8EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA;AAGV;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AClBhB,IAAM,eAAA,GAAmC,gBAAA,CAAA;AAwBzC,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,aAAA,GAAgB,GAAA;AAAA,EAChB,UAAA,GAAa;AACf,CAAA,EAAiB;AACf,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUuB,gBAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,cAAA,GAAuBA,cAAsB,IAAI,CAAA;AACvD,EAAA,MAAM,eAAA,GAAwBA,cAAsB,IAAI,CAAA;AAExD,EAAA,MAAM,gBAAA,GAAyBA,mBAAY,MAAM;AAC/C,IAAA,IAAI,cAAA,CAAe,YAAY,IAAA,EAAM;AACnC,MAAA,MAAA,CAAO,YAAA,CAAa,eAAe,OAAO,CAAA;AAC1C,MAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAA,GAA0BA,mBAAY,MAAM;AAChD,IAAA,IAAI,eAAA,CAAgB,YAAY,IAAA,EAAM;AACpC,MAAA,MAAA,CAAO,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAC3C,MAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,gBAAA,GAAyBA,MAAA,CAAA,WAAA;AAAA,IAC7B,CAAC,IAAA,KAAkB;AAGjB,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,gBAAA,EAAiB;AACjB,QAAA,iBAAA,EAAkB;AAClB,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAAA,IACA,CAAC,mBAAmB,gBAAgB;AAAA,GACtC;AAEA,EAAA,MAAM,kBAAA,GAA2BA,mBAAY,MAAM;AACjD,IAAA,iBAAA,EAAkB;AAClB,IAAA,gBAAA,EAAiB;AAEjB,IAAA,cAAA,CAAe,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAC/C,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,GAAG,aAAa,CAAA;AAAA,EAClB,CAAA,EAAG,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,aAAa,CAAC,CAAA;AAEvD,EAAA,MAAM,kBAAA,GAA2BA,mBAAY,MAAM;AACjD,IAAA,gBAAA,EAAiB;AACjB,IAAA,iBAAA,EAAkB;AAElB,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA;AAAA,IACF;AAEA,IAAA,eAAA,CAAgB,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAChD,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,GAAG,UAAU,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,UAAU,CAAC,CAAA;AAEpD,EAAMA,MAAA,CAAA,SAAA;AAAA,IACJ,MAAM,MAAM;AACV,MAAA,gBAAA,EAAiB;AACjB,MAAA,iBAAA,EAAkB;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,mBAAmB,gBAAgB;AAAA,GACtC;AAEA,EAAA,uBACEnB,IAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,IAAA,EAAY,cAAc,gBAAA,EAC/C,QAAA,EAAA;AAAA,oBAAAJ,GAAAA;AAAA,MAAkB,gBAAA,CAAA,OAAA;AAAA,MAAjB;AAAA,QACC,OAAA,EAAO,IAAA;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,cAAA,EAAgB,kBAAA;AAAA,QAEf;AAAA;AAAA,KACH;AAAA,oBACAA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAA,GAAAA;AAAA,MAAkB,gBAAA,CAAA,OAAA;AAAA,MAAjB;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA,EAAY,CAAA;AAAA,QACZ,cAAA,EAAgB,kBAAA;AAAA,QAChB,cAAA,EAAgB,kBAAA;AAAA,QAChB,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,+CAAA;AAAA,UACA,iCAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC5HA,IAAM,eAAA,GAAkBE,IAAI,8CAAA,EAAgD;AAAA,EAC1E,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,MACL,EAAA,EAAI,oBAAA;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO;AAAA;AAEX,CAAC;AAED,IAAM,iBAAA,GAAoBA,IAAI,uCAAA,EAAyC;AAAA,EACrE,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,EAAA,EAAI,SAAA;AAAA,MACJ,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAUD,IAAM,OAAA,GAAgBsB,MAAA,CAAA,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,IAAI,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC3C,IAAA,MAAM,SAAA,GACJ,EAAA,KAAO,KAAA,KAAU,IAAA,GAAO,IAAA,GAAO,UAAU,IAAA,GAAO,IAAA,GAAO,KAAA,KAAU,IAAA,GAAO,IAAA,GAAO,IAAA,CAAA;AACjF,IAAA,uBACExB,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAG,eAAA,CAAgB,EAAE,OAAO,KAAA,IAAS,EAAA,EAAI,CAAA,EAAG,SAAS,CAAA;AAAA,QAC/D,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAOtB,IAAM,SAAA,GAAkBwB,MAAA,CAAA,UAAA;AAAA,EACtB,CAAC,EAAE,SAAA,EAAW,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AACtC,IAAA,uBAAOxB,GAAAA,CAAC,GAAA,EAAA,EAAE,GAAA,EAAU,WAAW,EAAA,CAAG,iBAAA,CAAkB,EAAE,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAAA,EACxF;AACF;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAGxB,IAAM,EAAA,GAAWwB,MAAA,CAAA,UAAA;AAAA,EACf,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxBxB,GAAAA,CAAC,OAAA,EAAA,EAAQ,KAAU,KAAA,EAAM,IAAA,EAAK,IAAG,IAAA,EAAK,SAAA,EAAuB,GAAG,KAAA,EAAO;AAE3E;AACA,EAAA,CAAG,WAAA,GAAc,IAAA;ACxDjB,IAAMe,qBAAAA,GAA6D;AAAA,EACjE,QAAA,EAAU,OAAA;AAAA,EACV,YAAA,EAAc,yDAAA;AAAA,EACd,eAAA,EAAiB,cAAA;AAAA,EACjB,cAAA,EAAgB,aAAA;AAAA,EAChB,UAAA,EAAY,QAAA;AAAA,EACZ,uBAAA,EAAyB;AAC3B,CAAA;AA4BA,SAAS,eAAe,KAAA,EAA4B;AAClD,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,UAAUU,KAAAA,EAAM;AACtB,EAAA,MAAM,wBAAwBA,KAAAA,EAAM;AACpC,EAAA,MAAM,cAAA,GAAiB,UAAU,KAAA,CAAM,QAAA;AACvC,EAAA,MAAM,IAAI,EAAE,GAAGV,qBAAAA,EAAsB,GAAG,MAAM,YAAA,EAAa;AAC3D,EAAA,MAAM,QAAA,GAAWW,OAAgC,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAEhE,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI,CAAC,MAAM,KAAA,IAAS,CAAC,MAAM,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC1D,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA;AAAA,MACF;AACA,MAAA,MAAMC,QAAAA,GAAU,GAAA,CAAI,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AAC/C,MAAA,aAAA,CAAcA,QAAO,CAAA;AACrB,MAAA,OAAO,MAAM,GAAA,CAAI,eAAA,CAAgBA,QAAO,CAAA;AAAA,IAC1C;AACA,IAAA,IAAI,CAAC,MAAM,KAAA,EAAO;AAChB,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AAC/C,IAAA,aAAA,CAAc,OAAO,CAAA;AACrB,IAAA,OAAO,MAAM,GAAA,CAAI,eAAA,CAAgB,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,CAAM,KAAK,CAAC,CAAA;AAExB,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAsB;AACxC,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,IAAI,MAAM,YAAA,IAAgB,IAAA,IAAQ,IAAA,CAAK,IAAA,GAAO,MAAM,YAAA,EAAc;AAChE,MAAA,KAAA,CAAM,cAAA,IAAiB;AACvB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI,MAAM,QAAA,EAAU;AACpB,MAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AACnB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AACrC,IAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AACnB,IAAA,KAAA,CAAM,8BAA8B,KAAK,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,cAAA,GACJ,CAAC,MAAA,KAAW,UAAA,KAAe,CAAC,KAAA,CAAM,mBAAA,GAAsB,MAAM,gBAAA,GAAmB,MAAA,CAAA,CAAA;AAEnF,EAAA,MAAM,aAAA,GAAgB,EAAA;AAAA,IACpB,gFAAA;AAAA,IACA,cAAA,IAAkB,gCAAA;AAAA,IAClB,CAAC,cAAA,IAAkB,0DAAA;AAAA,IACnB,aAAa,gCAAA,GAAmC;AAAA,GAClD;AAEA,EAAA,MAAM,WAAA,GAAc,MAAA,GAAS,CAAA,CAAE,cAAA,GAAiB,CAAA,CAAE,eAAA;AAElD,EAAA,uBACEzB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAa,MAAA,GAAS,KAAA,CAAM,SAAA,GAAY,MAAS,CAAA,EAClE,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,iBAAiB,MAAA,GAAY,OAAA;AAAA,QACtC,SAAA,EAAW,aAAA;AAAA,QACX,UAAA,EAAY,CAAC,KAAA,KAAU;AACrB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,cAAA,EAAgB;AACpB,UAAA,aAAA,CAAc,IAAI,CAAA;AAAA,QACpB,CAAA;AAAA,QACA,WAAA,EAAa,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QACtC,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA,IAAI,cAAA,EAAgB;AACpB,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,YAAA,CAAa,KAAA,GAAQ,CAAC,CAAA,IAAK,IAAA;AAC9C,UAAA,UAAA,CAAW,IAAI,CAAA;AAAA,QACjB,CAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAJ,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,OAAA;AAAA,cACJ,GAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAQ,MAAA,GAAS,KAAA,CAAM,MAAA,GAAS,SAAA;AAAA,cAChC,UAAU,cAAA,IAAkB,MAAA;AAAA,cAC5B,SAAA,EAAU,SAAA;AAAA,cACV,QAAA,EAAU,CAAC,KAAA,KAAU,UAAA,CAAW,MAAM,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,IAAK,IAAI;AAAA;AAAA,WACjE;AAAA,UACC,MAAA,mBACCI,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oIAAA,EACZ,QAAA,EAAA;AAAA,YAAA,UAAA,mBACCJ,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,UAAA;AAAA,gBACL,QAAA,EAAQ,IAAA;AAAA,gBACR,SAAA,EAAU;AAAA;AAAA,gCAGZA,GAAAA,CAAC,YAAS,SAAA,EAAU,wCAAA,EAAyC,eAAW,IAAA,EAAC,CAAA;AAAA,YAE1E,KAAA,CAAM,KAAA,mBACLA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,mDAAA,EACV,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,IAAA,EACf,CAAA,GACE;AAAA,WAAA,EACN,CAAA,GACE,iCACFA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,cAAA;AAAA,cACL,KAAK,CAAA,CAAE,QAAA;AAAA,cACP,SAAA,EAAU;AAAA;AAAA,WACZ,mBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,+BAAA,EAAgC,aAAA,EAAW,MAAC,CAAA,EACnE,CAAA;AAAA,0BAGFI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oEAAA,EACb,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAiC,YAAE,YAAA,EAAa,CAAA;AAAA,4BAC7DI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,IAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,UAAU,cAAA,IAAkB,MAAA;AAAA,kBAC5B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,oBAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,kBAC1B,CAAA;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAJ,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,cAAA,EAAe,eAAW,IAAA,EAAC,CAAA;AAAA,oBACjD;AAAA;AAAA;AAAA,eACH;AAAA,cACC,KAAA,CAAM,wBACLA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,SAAA;AAAA,kBACR,UAAU,cAAA,IAAkB,MAAA;AAAA,kBAC5B,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,oBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,oBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,oBAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AAAA,kBACrB,CAAA;AAAA,kBAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,eACL,GACE;AAAA,aAAA,EACN;AAAA,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,IAEC,CAAC,MAAA,IACF,KAAA,CAAM,gBAAA,IACN,KAAA,CAAM,2BAAA,IACN,CAAA,CAAE,uBAAA,mBACAI,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4FAAA,EACb,QAAA,EAAA;AAAA,sBAAAJ,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAgC,EAAA,EAAI,qBAAA,EACjD,YAAE,uBAAA,EACL,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,iBAAA,EAAiB,qBAAA;AAAA,UACjB,SAAS,KAAA,CAAM,mBAAA;AAAA,UACf,iBAAiB,CAAC,OAAA,KAAY,KAAA,CAAM,2BAAA,GAA8B,YAAY,IAAI;AAAA;AAAA;AACpF,KAAA,EACF,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ","file":"chunk-PLSNCPEC.js","sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-xl border border-border/45 px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start shadow-[var(--shadow-surface)] [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default:\n 'bg-card text-card-foreground *:data-[slot=alert-description]:text-muted-foreground',\n destructive:\n 'bg-destructive/90 dark:bg-destructive text-destructive-foreground border-destructive/50 dark:border-destructive/70 [&>svg]:text-destructive-foreground *:data-[slot=alert-description]:text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription };\n","import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { buttonVariants } from '../button';\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-110 bg-foreground/20 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\ninterface AlertDialogContentProps\n extends React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> {\n /** When set, clicking the overlay calls this (e.g. to close when opened from a drawer). */\n onOverlayClick?: () => void;\n /** Optional extra classes for the overlay (e.g. to raise z-index). */\n overlayClassName?: string;\n}\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, onOverlayClick, overlayClassName, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay onClick={onOverlayClick} className={overlayClassName} />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n surfaceOverlay,\n 'bg-background fixed left-[50%] top-[50%] z-110 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold', className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n data-slot=\"alert-dialog-action\"\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n data-slot=\"alert-dialog-cancel\"\n className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-muted',\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarFallback, AvatarImage };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold whitespace-nowrap transition-colors',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-white hover:bg-destructive/80',\n outline: 'border-border/50 text-foreground bg-background/80',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {\n return (\n <span data-slot=\"badge\" className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { type DateRange, DayPicker, type DayPickerProps } from 'react-day-picker';\n\nimport { cn } from '../../../lib/utils';\nimport { buttonVariants } from '../button';\n\nexport type { DateRange };\n\nexport type CalendarProps = DayPickerProps;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n weekStartsOn,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n data-slot=\"calendar\"\n showOutsideDays={showOutsideDays}\n weekStartsOn={weekStartsOn ?? 1}\n navLayout=\"around\"\n className={cn('p-3', className)}\n classNames={{\n months:\n 'flex flex-col items-stretch justify-center gap-4 sm:flex-row sm:items-start sm:gap-6',\n month: 'relative min-w-0 space-y-3',\n month_caption: 'flex items-center justify-center w-full h-9 pt-1 px-10',\n caption_label: 'text-sm font-medium text-center pointer-events-none',\n nav: 'contents',\n button_previous: cn(\n buttonVariants({ variant: 'outline', size: 'icon-sm' }),\n 'absolute left-0 top-1 z-10 h-8 w-8 bg-transparent p-0 opacity-70 hover:opacity-100',\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', size: 'icon-sm' }),\n 'absolute right-0 top-1 z-10 h-8 w-8 bg-transparent p-0 opacity-70 hover:opacity-100',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: '',\n weekday: 'text-muted-foreground w-10 rounded-md font-normal text-[0.75rem] text-center p-1',\n weeks: 'mt-1',\n week: '',\n day: 'relative h-10 w-10 text-center text-sm p-0 align-top focus-within:relative focus-within:z-20',\n day_button: cn(\n 'day-button inline-flex size-10 items-center justify-center rounded-md text-sm font-normal transition-colors cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'aria-disabled:text-muted-foreground/60 aria-disabled:opacity-50 aria-disabled:cursor-not-allowed',\n ),\n selected:\n 'bg-primary/10 text-primary [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground',\n today:\n 'text-primary [&_.day-button]:border [&_.day-button]:border-primary [&_.day-button]:rounded-md [&.selected]:bg-primary [&.selected]:text-primary-foreground',\n outside:\n 'text-muted-foreground/60 [&.selected]:bg-accent/40 [&.selected]:text-accent-foreground',\n range_middle:\n 'bg-primary/15 text-foreground [&_.day-button]:bg-primary/15 [&_.day-button]:text-foreground [&_.day-button]:rounded-none',\n range_end:\n 'rounded-r-md text-primary-foreground [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground [&_.day-button]:rounded-r-md [&_.day-button]:rounded-l-none [&.range_start_.day-button]:!rounded-md',\n range_start:\n 'rounded-l-md text-primary-foreground [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground [&_.day-button]:rounded-l-md [&_.day-button]:rounded-r-none [&.range_end_.day-button]:!rounded-md',\n disabled: 'text-muted-foreground/60 opacity-50 [&_.day-button]:cursor-not-allowed',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) =>\n orientation === 'left' ? (\n <ChevronLeft className=\"size-4\" aria-hidden />\n ) : (\n <ChevronRight className=\"size-4\" aria-hidden />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\n\nimport { controlFocus, controlInvalid } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n 'peer size-4 shrink-0 rounded-[5px] border border-border/55 bg-muted/30 shadow-[var(--shadow-surface)] transition-colors',\n controlFocus,\n controlInvalid,\n 'cursor-pointer disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground',\n 'data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-foreground',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"size-2.5\" strokeWidth={3} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { Loader2 } from 'lucide-react';\nimport { useRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../alert-dialog';\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description: string;\n /** Optional note shown below the description (e.g. policy or retention info) */\n descriptionNote?: string;\n cancelLabel?: string;\n confirmLabel: string;\n variant?: 'default' | 'destructive';\n onConfirm: () => void;\n isPending?: boolean;\n /** Accessibility: describe the action for screen readers */\n confirmAriaLabel?: string;\n className?: string;\n /** When true, clicking outside the dialog (e.g. overlay) closes it. Useful when dialog is opened from a drawer. */\n closeOnOutsideClick?: boolean;\n}\n\n/**\n * A reusable confirmation dialog for destructive or important actions.\n * By default uses AlertDialog so Escape does not accidentally dismiss.\n * Enter focuses and activates the confirm action (not cancel).\n * Set closeOnOutsideClick to allow closing when opened from a drawer or when overlay click is desired.\n * Mobile-friendly: stacks buttons vertically on small screens.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n descriptionNote,\n cancelLabel = 'Cancel',\n confirmLabel,\n variant = 'default',\n onConfirm,\n isPending = false,\n confirmAriaLabel,\n className,\n closeOnOutsideClick = false,\n}: ConfirmDialogProps) {\n const confirmRef = useRef<HTMLButtonElement>(null);\n const isDestructive = variant === 'destructive';\n const confirmClassName = isDestructive\n ? 'bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20'\n : undefined;\n\n const handleConfirm = () => {\n if (isPending) return;\n onConfirm();\n };\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent\n data-slot=\"confirm-dialog-content\"\n className={cn('gap-4 sm:gap-6', className)}\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n confirmRef.current?.focus();\n }}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' || isPending) return;\n const target = event.target as HTMLElement;\n if (target.closest('[data-slot=\"alert-dialog-cancel\"]')) return;\n if (target.closest('[data-slot=\"alert-dialog-action\"]')) return;\n event.preventDefault();\n handleConfirm();\n }}\n {...(closeOnOutsideClick && {\n onOverlayClick: () => onOpenChange(false),\n })}\n >\n <AlertDialogHeader className=\"gap-2\">\n <AlertDialogTitle className=\"text-base sm:text-lg\">{title}</AlertDialogTitle>\n <div className=\"space-y-2\">\n <AlertDialogDescription className=\"text-sm\">{description}</AlertDialogDescription>\n {descriptionNote && <p className=\"text-sm text-muted-foreground\">{descriptionNote}</p>}\n </div>\n </AlertDialogHeader>\n <AlertDialogFooter className=\"flex flex-col-reverse gap-2 pt-2 sm:flex-row sm:justify-end sm:gap-2 sm:pt-0\">\n <AlertDialogCancel\n onClick={() => onOpenChange(false)}\n disabled={isPending}\n className=\"m-0 w-full sm:w-auto\"\n >\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n ref={confirmRef}\n onClick={handleConfirm}\n disabled={isPending}\n aria-label={confirmAriaLabel ?? confirmLabel}\n className={cn('m-0 w-full sm:w-auto', confirmClassName)}\n >\n {isPending && <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden />}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","import * as PopoverPrimitive from '@radix-ui/react-popover';\nimport type * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'start',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n surfaceOverlay,\n 'z-110 w-auto min-w-48 p-3 outline-none',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nexport { Popover, PopoverContent, PopoverTrigger };\n","import type { Locale } from 'date-fns';\nimport { format } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DISPLAY_FORMAT, normalizeDate } from '../../../lib/dates';\nimport { controlBase, controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Calendar } from '../calendar';\nimport { Input } from '../input';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\n\nexport interface DatePickerProps {\n value: Date | undefined;\n onChange: (date: Date | undefined) => void;\n /** Minimum selectable date (inclusive). */\n minDate?: Date;\n /** Maximum selectable date (inclusive). */\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n /** Locale for calendar and formatting (e.g. from date-fns/locale). */\n locale?: Locale;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder = 'Pick a date',\n disabled = false,\n locale,\n className,\n 'aria-label': ariaLabel,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const normalizedMin = normalizeDate(minDate);\n const normalizedMax = normalizeDate(maxDate);\n\n const formatOpts = React.useMemo(() => (locale ? { locale } : undefined), [locale]);\n\n const disabledMatchers = React.useMemo(() => {\n const toStartOfDay = (d: Date) => {\n const copy = new Date(d);\n copy.setHours(0, 0, 0, 0);\n return copy.getTime();\n };\n const matchers: Array<(date: Date) => boolean> = [];\n if (normalizedMin) {\n matchers.push((date: Date) => toStartOfDay(date) < toStartOfDay(normalizedMin!));\n }\n if (normalizedMax) {\n matchers.push((date: Date) => toStartOfDay(date) > toStartOfDay(normalizedMax!));\n }\n return matchers;\n }, [normalizedMin, normalizedMax]);\n\n const handleSelect = (date: Date | undefined) => {\n const day = date ? normalizeDate(date) : undefined;\n onChange(day ?? undefined);\n setOpen(false);\n };\n\n return (\n <Popover modal={false} open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n setOpen((o) => !o);\n }\n }}\n className={cn(\n controlBase,\n controlFocus,\n 'flex w-full cursor-pointer items-center overflow-hidden',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n >\n <span className=\"flex h-9 w-9 shrink-0 items-center justify-center border-r border-border/40 bg-muted/25 text-muted-foreground\">\n <CalendarIcon className=\"size-4\" aria-hidden />\n </span>\n <Input\n type=\"text\"\n readOnly\n value={value ? format(value, DISPLAY_FORMAT, formatOpts) : ''}\n placeholder={placeholder}\n onClick={() => !disabled && setOpen(true)}\n className={cn(\n 'h-9 min-w-0 flex-1 cursor-pointer rounded-l-none border-0 bg-transparent py-2 pl-3 pr-3 text-base shadow-none focus-visible:ring-0 md:text-sm capitalize',\n !value && 'text-muted-foreground',\n )}\n aria-label={ariaLabel}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 z-[120]\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleSelect}\n disabled={(date) => disabledMatchers.some((m) => m(date))}\n locale={locale}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport type * as React from 'react';\n\nimport { preventDismissOnPortaledOverlay } from '../../../lib/radix-overlays';\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-110 bg-foreground/20 backdrop-blur-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n overlayClassName,\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n overlayClassName?: string;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n onPointerDownOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onPointerDownOutside?.(event);\n }\n }}\n onInteractOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onInteractOutside?.(event);\n }\n }}\n onFocusOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onFocusOutside?.(event);\n }\n }}\n className={cn(\n surfaceOverlay,\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-110 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 outline-none sm:max-w-lg',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex w-full flex-col items-center gap-2 text-center', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('w-full text-lg leading-none font-semibold text-center', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('w-full text-muted-foreground text-sm text-center', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { DateRangePickerTranslations, DefaultPresetId } from './types';\n\n/** Viewports below this width use a full-screen picker (Tailwind `sm` is 640px). */\nexport const DATE_RANGE_MOBILE_MAX_PX = 640;\nexport const DATE_RANGE_MOBILE_MQ = `(max-width: ${DATE_RANGE_MOBILE_MAX_PX - 1}px)`;\n\n/** Desktop popover shows two months side-by-side from this width up. */\nexport const DATE_RANGE_WIDE_MIN_PX = 768;\nexport const DATE_RANGE_WIDE_MQ = `(min-width: ${DATE_RANGE_WIDE_MIN_PX}px)`;\n\nexport const DEFAULT_PRESET_IDS: { id: DefaultPresetId }[] = [\n { id: 'today' },\n { id: 'yesterday' },\n { id: 'last7' },\n { id: 'last14' },\n { id: 'last30' },\n { id: 'thisWeek' },\n { id: 'lastWeek' },\n { id: 'thisMonth' },\n { id: 'lastMonth' },\n];\n\nexport const DEFAULT_PRESET_LABELS: Record<DefaultPresetId, string> = {\n today: 'Today',\n yesterday: 'Yesterday',\n last7: 'Last 7 days',\n last14: 'Last 14 days',\n last30: 'Last 30 days',\n thisWeek: 'This week',\n lastWeek: 'Last week',\n thisMonth: 'This month',\n lastMonth: 'Last month',\n};\n\nexport const DEFAULT_TRANSLATIONS: Required<DateRangePickerTranslations> = {\n applyButton: 'Apply',\n cancelButton: 'Cancel',\n startLabel: 'Start',\n endLabel: 'End',\n placeholder: 'YYYY/MM/DD',\n ariaLabel: 'Date range',\n presetLabels: DEFAULT_PRESET_LABELS,\n presetsHeading: 'Quick ranges',\n};\n","import { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\nexport type DateRangePickerActionFooterProps = {\n visible: boolean;\n isMobileLayout: boolean;\n cancelLabel: string;\n applyLabel: string;\n onCancel: () => void;\n onApply: () => void;\n className?: string;\n};\n\n/** Cancel / apply actions for apply-flow and mobile layouts. */\nexport function DateRangePickerActionFooter({\n visible,\n isMobileLayout,\n cancelLabel,\n applyLabel,\n onCancel,\n onApply,\n className,\n}: DateRangePickerActionFooterProps) {\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n 'flex w-full items-center justify-end gap-2 border-t border-border/50 bg-muted/15 px-4 py-3',\n isMobileLayout &&\n 'mt-auto shrink-0 bg-background pb-[max(1rem,env(safe-area-inset-bottom))] pt-4',\n className,\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(isMobileLayout && 'min-h-10 flex-1 sm:min-h-9 sm:flex-initial')}\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n className={cn(isMobileLayout && 'min-h-10 flex-1 sm:min-h-9 sm:flex-initial')}\n onClick={onApply}\n >\n {applyLabel}\n </Button>\n </div>\n );\n}\n","import type { Locale } from 'date-fns';\nimport type { DateRange } from 'react-day-picker';\nimport { surfaceCard } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Calendar } from '../calendar';\nimport { Input } from '../input';\n\nexport type DateRangePickerFieldsCalendarProps = {\n calendarMonths: number;\n draft: DateRange | undefined;\n displayedMonth: Date;\n onMonthChange: (month: Date) => void;\n onSelect: (next: DateRange | undefined, triggerDate: Date) => void;\n disabledMatchers: import('react-day-picker').Matcher[];\n locale?: Locale;\n startInputId: string;\n endInputId: string;\n startLabel: string;\n endLabel: string;\n startInputText: string;\n endInputText: string;\n effectivePlaceholder: string;\n onStartInputChange: (value: string) => void;\n onEndInputChange: (value: string) => void;\n onCommitStart: () => void;\n onCommitEnd: () => void;\n};\n\n/** Start/end date inputs and range calendar. */\nexport function DateRangePickerFieldsCalendar({\n calendarMonths,\n draft,\n displayedMonth,\n onMonthChange,\n onSelect,\n disabledMatchers,\n locale,\n startInputId,\n endInputId,\n startLabel,\n endLabel,\n startInputText,\n endInputText,\n effectivePlaceholder,\n onStartInputChange,\n onEndInputChange,\n onCommitStart,\n onCommitEnd,\n}: DateRangePickerFieldsCalendarProps) {\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div\n className={cn(\n 'grid w-full grid-cols-1 gap-3 rounded-xl border border-border/45 bg-muted/20 p-3 sm:grid-cols-2',\n calendarMonths === 2 ? 'max-w-none' : 'max-w-md',\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <label htmlFor={startInputId} className=\"text-xs font-medium text-muted-foreground\">\n {startLabel}\n </label>\n <Input\n id={startInputId}\n type=\"text\"\n value={startInputText}\n onChange={(e) => onStartInputChange(e.target.value)}\n onBlur={onCommitStart}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onCommitStart();\n }\n }}\n placeholder={effectivePlaceholder}\n className=\"h-9 font-mono text-sm tabular-nums\"\n />\n </div>\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <label htmlFor={endInputId} className=\"text-xs font-medium text-muted-foreground\">\n {endLabel}\n </label>\n <Input\n id={endInputId}\n type=\"text\"\n value={endInputText}\n onChange={(e) => onEndInputChange(e.target.value)}\n onBlur={onCommitEnd}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onCommitEnd();\n }\n }}\n placeholder={effectivePlaceholder}\n className=\"h-9 font-mono text-sm tabular-nums\"\n />\n </div>\n </div>\n <div className={cn(surfaceCard, 'flex w-full justify-center p-1')}>\n <Calendar\n mode=\"range\"\n numberOfMonths={calendarMonths}\n month={displayedMonth}\n onMonthChange={onMonthChange}\n selected={draft}\n onSelect={onSelect}\n disabled={disabledMatchers}\n locale={locale}\n className={cn(calendarMonths === 2 && 'p-2')}\n />\n </div>\n </div>\n );\n}\n","import { format, parse } from 'date-fns';\nimport type { DateRange } from 'react-day-picker';\n\nimport { DISPLAY_FORMAT, INPUT_FORMAT, INPUT_FORMAT_ALT, normalizeDate } from '../../../lib/dates';\n\nexport function rangesMatch(a: DateRange | undefined, b: DateRange): boolean {\n const af = normalizeDate(a?.from)?.getTime();\n const at = normalizeDate(a?.to)?.getTime();\n const bf = normalizeDate(b.from)?.getTime();\n const bt = normalizeDate(b.to)?.getTime();\n return af === bf && at === bt;\n}\n\nexport function parseDate(part: string): Date | null {\n const p = part.trim();\n if (!p) return null;\n const ref = new Date();\n for (const fmt of [INPUT_FORMAT, INPUT_FORMAT_ALT, DISPLAY_FORMAT]) {\n try {\n const d = parse(p, fmt, ref);\n if (!Number.isNaN(d.getTime())) return d;\n } catch {\n // try next format\n }\n }\n return null;\n}\n\nexport function parseInputToRange(text: string): DateRange | null {\n const trimmed = text.trim();\n if (!trimmed) return { from: undefined, to: undefined };\n const parts = trimmed.split(/\\s*[–-]\\s*/).map((p) => p.trim());\n try {\n if (parts.length >= 2) {\n const from = parseDate(parts[0]!);\n const to = parseDate(parts[1]!);\n if (from && to) return { from, to };\n if (from) return { from, to: undefined };\n } else if (parts.length === 1 && parts[0]) {\n const from = parseDate(parts[0]);\n if (from) return { from, to: undefined };\n }\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function formatRangeLabel(\n value: DateRange | undefined,\n placeholder: string,\n formatOpts: { locale?: import('date-fns').Locale } | undefined,\n): string {\n const from = value?.from;\n const to = value?.to;\n\n if (from && to) {\n return `${format(from, DISPLAY_FORMAT, formatOpts)} \\u2013 ${format(to, DISPLAY_FORMAT, formatOpts)}`;\n }\n\n if (from) {\n return format(from, DISPLAY_FORMAT, formatOpts);\n }\n\n return placeholder;\n}\n\nexport { DISPLAY_FORMAT, INPUT_FORMAT, normalizeDate };\n","import type { DateRange } from 'react-day-picker';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { rangesMatch } from './parseDateRange';\nimport type { PresetListItem } from './types';\n\nexport type DateRangePickerPresetListProps = {\n presets: PresetListItem[];\n draft: DateRange | undefined;\n layout: 'mobile-row' | 'sidebar';\n presetsHeading?: string;\n onPreset: (getRange: () => DateRange) => void;\n};\n\n/** Preset chips (mobile) or sidebar list (desktop). */\nexport function DateRangePickerPresetList({\n presets,\n draft,\n layout,\n presetsHeading,\n onPreset,\n}: DateRangePickerPresetListProps) {\n if (presets.length === 0) return null;\n\n if (layout === 'mobile-row') {\n return (\n <div className=\"shrink-0 border-b border-border/50 bg-muted/20 px-2 py-2\">\n <div className=\"flex gap-1 overflow-x-auto overscroll-x-contain px-1 py-1 [scrollbar-width:thin] [-webkit-overflow-scrolling:touch]\">\n {presets.map((preset) => {\n const active = rangesMatch(draft, preset.getRange());\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-9 shrink-0 whitespace-nowrap rounded-lg px-2.5 text-sm font-normal',\n active && 'bg-accent font-medium text-accent-foreground',\n )}\n onClick={() => onPreset(preset.getRange)}\n >\n {preset.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-[11.5rem] shrink-0 border-r border-border/50 bg-muted/20\">\n <div className=\"flex max-h-[min(420px,70vh)] flex-col gap-0.5 overflow-y-auto p-2 [scrollbar-width:thin]\">\n {presetsHeading ? (\n <p className=\"px-2 pb-1 pt-0.5 text-[0.65rem] font-semibold uppercase tracking-wider text-muted-foreground\">\n {presetsHeading}\n </p>\n ) : null}\n {presets.map((preset) => {\n const active = rangesMatch(draft, preset.getRange());\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-9 w-full shrink-0 justify-start rounded-lg px-2.5 text-left text-sm font-normal',\n active && 'bg-accent font-medium text-accent-foreground',\n )}\n onClick={() => onPreset(preset.getRange)}\n >\n {preset.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { Calendar as CalendarIcon } from 'lucide-react';\nimport { controlBase } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Input } from '../input';\n\nexport type DateRangePickerTriggerProps = {\n className?: string;\n inputText: string;\n effectivePlaceholder: string;\n isEmpty: boolean;\n ariaLabel: string;\n onOpen: () => void;\n onInputChange: (value: string) => void;\n onInputFocus: () => void;\n onInputBlur: () => void;\n};\n\n/** Calendar icon + free-text range field that opens the picker. */\nexport function DateRangePickerTrigger({\n className,\n inputText,\n effectivePlaceholder,\n isEmpty,\n ariaLabel,\n onOpen,\n onInputChange,\n onInputFocus,\n onInputBlur,\n}: DateRangePickerTriggerProps) {\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onOpen}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onOpen();\n }\n }}\n className={cn(\n controlBase,\n 'flex w-full min-w-[17rem] max-w-full cursor-pointer items-center overflow-hidden focus-within:ring-[3px] focus-within:ring-ring/40',\n className,\n )}\n >\n <span className=\"flex h-10 w-10 shrink-0 items-center justify-center border-r border-border/40 bg-muted/25 text-muted-foreground\">\n <CalendarIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n <Input\n type=\"text\"\n value={inputText}\n onChange={(e) => onInputChange(e.target.value)}\n onFocus={onInputFocus}\n onBlur={onInputBlur}\n onClick={onOpen}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n (e.target as HTMLInputElement).blur();\n }\n }}\n placeholder={effectivePlaceholder}\n data-empty={isEmpty || undefined}\n className={cn(\n 'h-10 min-w-0 flex-1 cursor-pointer rounded-none border-0 bg-transparent py-2 pl-3 pr-3 text-sm shadow-none focus-visible:ring-0 whitespace-nowrap',\n isEmpty && 'text-muted-foreground',\n )}\n title={!isEmpty ? inputText : undefined}\n aria-label={ariaLabel}\n />\n </div>\n );\n}\n","import type { DateRange } from 'react-day-picker';\n\nimport type { DefaultPresetId } from './types';\n\nexport function getPresetRange(presetId: DefaultPresetId): DateRange {\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n const from = new Date(today);\n from.setHours(0, 0, 0, 0);\n const to = new Date(today);\n\n switch (presetId) {\n case 'today':\n return { from, to };\n case 'yesterday':\n from.setDate(from.getDate() - 1);\n to.setDate(to.getDate() - 1);\n return { from, to };\n case 'last7':\n from.setDate(from.getDate() - 6);\n return { from, to };\n case 'last14':\n from.setDate(from.getDate() - 13);\n return { from, to };\n case 'last30':\n from.setDate(from.getDate() - 29);\n return { from, to };\n case 'thisWeek': {\n const day = from.getDay();\n const mondayOffset = day === 0 ? -6 : 1 - day;\n from.setDate(from.getDate() + mondayOffset);\n return { from, to };\n }\n case 'lastWeek': {\n const day = from.getDay();\n const mondayOffset = day === 0 ? -6 : 1 - day;\n const thisMonday = from.getDate() + mondayOffset;\n from.setDate(thisMonday - 7);\n to.setDate(thisMonday - 1);\n to.setHours(23, 59, 59, 999);\n return { from, to };\n }\n case 'thisMonth':\n from.setDate(1);\n return { from, to };\n case 'lastMonth':\n from.setMonth(from.getMonth() - 1);\n from.setDate(1);\n to.setDate(0);\n to.setHours(23, 59, 59, 999);\n return { from, to };\n default:\n return { from, to };\n }\n}\n","import * as React from 'react';\n\nimport { DATE_RANGE_MOBILE_MQ, DATE_RANGE_WIDE_MQ } from './constants';\n\nexport function useMediaQuery(query: string, fallback = false): boolean {\n const subscribe = React.useCallback(\n (onChange: () => void) => {\n const mql = window.matchMedia(query);\n mql.addEventListener('change', onChange);\n return () => mql.removeEventListener('change', onChange);\n },\n [query],\n );\n return React.useSyncExternalStore(\n subscribe,\n () => window.matchMedia(query).matches,\n () => fallback,\n );\n}\n\nexport function useIsDatePickerMobileLayout(): boolean {\n return useMediaQuery(DATE_RANGE_MOBILE_MQ, false);\n}\n\nexport function useIsWideDatePickerLayout(): boolean {\n return useMediaQuery(DATE_RANGE_WIDE_MQ, false);\n}\n","import { format } from 'date-fns';\nimport * as React from 'react';\nimport type { DateRange } from 'react-day-picker';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '../dialog';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { DEFAULT_PRESET_IDS, DEFAULT_PRESET_LABELS, DEFAULT_TRANSLATIONS } from './constants';\nimport { DateRangePickerActionFooter } from './DateRangePickerActionFooter';\nimport { DateRangePickerFieldsCalendar } from './DateRangePickerFieldsCalendar';\nimport { DateRangePickerPresetList } from './DateRangePickerPresetList';\nimport { DateRangePickerTrigger } from './DateRangePickerTrigger';\nimport {\n DISPLAY_FORMAT,\n formatRangeLabel,\n INPUT_FORMAT,\n normalizeDate,\n parseDate,\n parseInputToRange,\n} from './parseDateRange';\nimport type { DateRangePickerProps } from './types';\nimport { getPresetRange } from './useDateRangePresets';\nimport { useIsDatePickerMobileLayout, useIsWideDatePickerLayout } from './useMediaQuery';\n\n/** Range picker with presets, mobile dialog, and optional apply flow. Storybook: **UI/DateRangePicker**. */\nexport function DateRangePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder,\n showPresets = true,\n presets: customPresets,\n translations,\n locale,\n onApply,\n isDateDisabled,\n className,\n}: DateRangePickerProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const effectivePlaceholder = placeholder ?? t.placeholder;\n const presetList = React.useMemo(() => {\n if (customPresets?.length) return customPresets;\n if (!showPresets) return [];\n return DEFAULT_PRESET_IDS.map(({ id }) => ({\n id,\n label: translations?.presetLabels?.[id] ?? DEFAULT_PRESET_LABELS[id],\n getRange: () => getPresetRange(id),\n }));\n }, [customPresets, showPresets, translations?.presetLabels]);\n\n const normalizedMin = normalizeDate(minDate);\n const normalizedMax = normalizeDate(maxDate);\n const isMobileLayout = useIsDatePickerMobileLayout();\n const isWideLayout = useIsWideDatePickerLayout();\n const calendarMonths = isMobileLayout ? 1 : isWideLayout ? 2 : 1;\n const [open, setOpen] = React.useState(false);\n const [draft, setDraft] = React.useState<DateRange | undefined>(value);\n const [displayedMonth, setDisplayedMonth] = React.useState(() => value?.from ?? new Date());\n const appliedRef = React.useRef<DateRange | undefined>(value);\n const wasOpenRef = React.useRef(false);\n const useApplyFlow = !!onApply;\n const idScope = React.useId();\n const startInputId = `date-range-start-${idScope}`;\n const endInputId = `date-range-end-${idScope}`;\n\n React.useEffect(() => {\n const wasOpen = wasOpenRef.current;\n wasOpenRef.current = open;\n if (open && !wasOpen) {\n appliedRef.current = value;\n setDraft(value);\n setDisplayedMonth(value?.from ?? new Date());\n } else if (open && wasOpen) {\n setDraft(value);\n }\n }, [open, value]);\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!next && open && !useApplyFlow) {\n onChange(appliedRef.current);\n setDraft(appliedRef.current);\n }\n setOpen(next);\n },\n [open, useApplyFlow, onChange],\n );\n\n const formatOpts = React.useMemo(() => (locale ? { locale } : undefined), [locale]);\n const label = React.useMemo(\n () => formatRangeLabel(value, effectivePlaceholder, formatOpts),\n [effectivePlaceholder, value, formatOpts],\n );\n\n const [inputText, setInputText] = React.useState(label);\n const inputFocusedRef = React.useRef(false);\n React.useEffect(() => {\n if (!inputFocusedRef.current) setInputText(label);\n }, [label]);\n\n const handleInputBlur = () => {\n inputFocusedRef.current = false;\n const next = parseInputToRange(inputText);\n if (next) {\n const formatted =\n next.from && next.to\n ? `${format(next.from, DISPLAY_FORMAT, formatOpts)} \\u2013 ${format(next.to, DISPLAY_FORMAT, formatOpts)}`\n : next.from\n ? format(next.from, DISPLAY_FORMAT, formatOpts)\n : effectivePlaceholder;\n if (useApplyFlow) {\n setDraft(next);\n setInputText(formatted);\n } else {\n onChange(next);\n setInputText(formatted);\n }\n } else {\n setInputText(label);\n }\n };\n\n const disabledMatchers = React.useMemo(() => {\n const toStartOfDay = (d: Date) => {\n const copy = new Date(d);\n copy.setHours(0, 0, 0, 0);\n return copy.getTime();\n };\n const matchers: Array<unknown> = [];\n if (normalizedMin) {\n matchers.push((date: Date) => toStartOfDay(date) < toStartOfDay(normalizedMin!));\n }\n if (normalizedMax) {\n matchers.push((date: Date) => toStartOfDay(date) > toStartOfDay(normalizedMax!));\n }\n if (isDateDisabled) matchers.push((date: Date) => isDateDisabled(date));\n return matchers as import('react-day-picker').Matcher[];\n }, [normalizedMin, normalizedMax, isDateDisabled]);\n\n const handlePreset = (getRange: () => DateRange) => {\n const range = getRange();\n setDraft(range);\n if (!useApplyFlow) onChange(range);\n };\n\n const handleApply = () => {\n if (useApplyFlow) {\n onChange(draft);\n onApply?.(draft);\n }\n setOpen(false);\n };\n\n const handleCancel = () => {\n if (useApplyFlow) {\n setDraft(appliedRef.current);\n } else {\n onChange(appliedRef.current);\n setDraft(appliedRef.current);\n }\n setOpen(false);\n };\n\n const handleSelect = (_next: DateRange | undefined, triggerDate: Date) => {\n const day = normalizeDate(triggerDate);\n if (!day) return;\n setDraft((prev) => {\n if (!prev?.from || (prev.from && prev.to)) {\n const nextRange = { from: day, to: undefined };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n }\n if (day < prev.from) {\n const nextRange = { from: day, to: undefined };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n }\n const nextRange = { from: prev.from, to: day };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n });\n };\n\n const [startInputText, setStartInputText] = React.useState('');\n const [endInputText, setEndInputText] = React.useState('');\n React.useEffect(() => {\n if (open) {\n setStartInputText(draft?.from ? format(draft.from, INPUT_FORMAT) : '');\n setEndInputText(draft?.to ? format(draft.to, INPUT_FORMAT) : '');\n }\n }, [open, draft?.from, draft?.to]);\n\n const commitStartInput = () => {\n const d = parseDate(startInputText);\n if (d) {\n setDraft((prev) => ({ from: d, to: prev?.to && prev.to >= d ? prev.to : undefined }));\n } else {\n setStartInputText(draft?.from ? format(draft.from, INPUT_FORMAT) : '');\n }\n };\n\n const commitEndInput = () => {\n const d = parseDate(endInputText);\n if (d) {\n setDraft((prev) => ({ from: prev?.from && prev.from <= d ? prev.from : d, to: d }));\n } else {\n setEndInputText(draft?.to ? format(draft.to, INPUT_FORMAT) : '');\n }\n };\n\n const fieldsCalendar = (\n <DateRangePickerFieldsCalendar\n calendarMonths={calendarMonths}\n draft={draft}\n displayedMonth={displayedMonth}\n onMonthChange={setDisplayedMonth}\n onSelect={handleSelect}\n disabledMatchers={disabledMatchers}\n locale={locale}\n startInputId={startInputId}\n endInputId={endInputId}\n startLabel={t.startLabel}\n endLabel={t.endLabel}\n startInputText={startInputText}\n endInputText={endInputText}\n effectivePlaceholder={effectivePlaceholder}\n onStartInputChange={setStartInputText}\n onEndInputChange={setEndInputText}\n onCommitStart={commitStartInput}\n onCommitEnd={commitEndInput}\n />\n );\n\n const footer = (\n <DateRangePickerActionFooter\n visible={useApplyFlow || isMobileLayout}\n isMobileLayout={isMobileLayout}\n cancelLabel={t.cancelButton}\n applyLabel={t.applyButton}\n onCancel={handleCancel}\n onApply={handleApply}\n />\n );\n\n const trigger = (\n <DateRangePickerTrigger\n className={className}\n inputText={inputText}\n effectivePlaceholder={effectivePlaceholder}\n isEmpty={!value?.from}\n ariaLabel={t.ariaLabel}\n onOpen={() => setOpen(true)}\n onInputChange={setInputText}\n onInputFocus={() => {\n inputFocusedRef.current = true;\n }}\n onInputBlur={handleInputBlur}\n />\n );\n\n if (isMobileLayout) {\n return (\n <>\n {trigger}\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogContent\n showCloseButton\n className={cn(\n 'h-dvh max-h-dvh w-full max-w-full gap-0 rounded-none border-0 p-0 shadow-[var(--shadow-elevated)]',\n 'top-0 left-0 flex translate-x-0 translate-y-0 flex-col',\n )}\n overlayClassName=\"z-110\"\n >\n <DialogHeader className=\"shrink-0 items-start border-b border-border/50 px-4 py-4 text-left\">\n <DialogTitle className=\"pr-10 text-left text-base\">{t.ariaLabel}</DialogTitle>\n </DialogHeader>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <DateRangePickerPresetList\n presets={presetList}\n draft={draft}\n layout=\"mobile-row\"\n onPreset={handlePreset}\n />\n <div className=\"flex min-h-0 flex-1 flex-col overflow-y-auto px-4 py-4\">\n <div className=\"mx-auto flex w-full max-w-md flex-col items-center\">\n {fieldsCalendar}\n </div>\n </div>\n {footer}\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn(\n surfaceOverlay,\n 'w-auto max-w-[min(calc(100vw-1.5rem),52rem)] overflow-hidden p-0',\n calendarMonths === 2 && 'min-w-[36rem]',\n )}\n align=\"start\"\n sideOffset={8}\n >\n <div className=\"flex flex-col sm:flex-row\">\n <DateRangePickerPresetList\n presets={presetList}\n draft={draft}\n layout=\"sidebar\"\n presetsHeading={t.presetsHeading}\n onPreset={handlePreset}\n />\n <div className=\"flex min-w-0 flex-1 flex-col bg-background\">\n <div className=\"flex w-full flex-col items-stretch p-4\">{fieldsCalendar}</div>\n {footer}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\n/** About 5-6 options visible, then scroll; still shrinks when the viewport is short. */\nexport const dropdownMenuSelectOptionsMaxHeightClassName =\n 'max-h-[min(var(--radix-dropdown-menu-content-available-height),13rem)]';\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\ntype DropdownMenuContentProps = React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n /**\n * When false, render inline instead of portaling to document.body so wheel scroll works\n * inside modal Sheet/Dialog scroll locks (e.g. Select in FormDrawer).\n * @default true\n */\n portalled?: boolean;\n};\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n portalled = true,\n ...props\n}: DropdownMenuContentProps) {\n const content = (\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n surfaceOverlay,\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto p-1',\n className,\n )}\n {...props}\n />\n );\n\n if (!portalled) {\n return content;\n }\n\n return <DropdownMenuPrimitive.Portal>{content}</DropdownMenuPrimitive.Portal>;\n}\n\nfunction DropdownMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item>) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger };\n","import { ChevronDown, ChevronUp } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport type DropdownScrollableListProps = {\n children: React.ReactNode;\n /** When this changes, overflow and fade visibility are recomputed */\n scrollKey?: string | number;\n className?: string;\n /**\n * When true (default), the list fills a flex parent with max-height (e.g. Select).\n * When false, only `scrollAreaClassName` sizes the scroll region (e.g. MultiSelect).\n */\n grow?: boolean;\n /** Extra classes on the scrollable element; when `grow` is false, this must include max-height and overflow */\n scrollAreaClassName?: string;\n};\n\nexport function DropdownScrollableList({\n children,\n scrollKey,\n className,\n scrollAreaClassName,\n grow = true,\n}: DropdownScrollableListProps) {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const [showTop, setShowTop] = React.useState(false);\n const [showBottom, setShowBottom] = React.useState(false);\n\n const update = React.useCallback(() => {\n const el = scrollRef.current;\n if (!el) {\n setShowTop(false);\n setShowBottom(false);\n return;\n }\n const { scrollTop, scrollHeight, clientHeight } = el;\n const overflow = scrollHeight - clientHeight > 2;\n if (!overflow) {\n setShowTop(false);\n setShowBottom(false);\n return;\n }\n setShowTop(scrollTop > 2);\n setShowBottom(scrollTop + clientHeight < scrollHeight - 2);\n }, []);\n\n React.useLayoutEffect(() => {\n update();\n const id = requestAnimationFrame(() => {\n requestAnimationFrame(update);\n });\n return () => cancelAnimationFrame(id);\n }, [update, scrollKey]);\n\n React.useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n const ro = new ResizeObserver(() => {\n window.requestAnimationFrame(update);\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [update]);\n\n return (\n <div className={cn('relative flex min-h-0 flex-col', grow && 'flex-1', className)}>\n <div\n ref={scrollRef}\n className={cn(\n grow\n ? cn('min-h-0 flex-1 overflow-y-auto overscroll-y-contain p-1', scrollAreaClassName)\n : scrollAreaClassName,\n )}\n onScroll={update}\n >\n {children}\n </div>\n {showTop ? (\n <div\n className=\"pointer-events-none absolute inset-x-0 top-0 z-[1] flex h-6 flex-col items-center justify-start pt-px\"\n aria-hidden\n >\n <div className=\"absolute inset-0 bg-gradient-to-b from-popover via-popover/35 to-transparent backdrop-blur-[0.5px]\" />\n <ChevronUp\n className=\"relative z-[2] h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-90 drop-shadow-sm\"\n strokeWidth={2.5}\n />\n </div>\n ) : null}\n {showBottom ? (\n <div\n className=\"pointer-events-none absolute inset-x-0 bottom-0 z-[1] flex h-6 flex-col items-center justify-end pb-px\"\n aria-hidden\n >\n <div className=\"absolute inset-0 bg-gradient-to-t from-popover via-popover/35 to-transparent backdrop-blur-[0.5px]\" />\n <ChevronDown\n className=\"relative z-[2] h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-90 drop-shadow-sm\"\n strokeWidth={2.5}\n />\n </div>\n ) : null}\n </div>\n );\n}\n","import { cn } from '../../../lib/utils';\nimport { Input } from '../input';\n\nexport type DropdownSelectSearchInputProps = {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n autoFocus?: boolean;\n};\n\nexport function DropdownSelectSearchInput({\n value,\n onChange,\n placeholder = 'Search…',\n className,\n autoFocus = false,\n}: DropdownSelectSearchInputProps) {\n return (\n <div className={cn('shrink-0 px-1 pb-2 pt-1', className)}>\n <Input\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n aria-label={placeholder}\n autoFocus={autoFocus}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </div>\n );\n}\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none tracking-tight text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>) {\n return (\n <LabelPrimitive.Root data-slot=\"label\" className={cn(labelVariants(), className)} {...props} />\n );\n}\n\nexport { Label };\n","import type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\n\nimport { cn } from '../../../lib/utils';\nimport { Label } from '../label';\n\nexport const Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null);\n\nexport const FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nexport const useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n\n if (fieldContext === null || fieldContext === undefined) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nexport function FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div data-slot=\"form-item\" className={cn('grid gap-3', className)} {...props} />\n </FormItemContext.Provider>\n );\n}\n\nexport function FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn('data-[error=true]:text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nexport function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nexport function FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport function FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('text-destructive text-sm', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n","import * as React from 'react';\n\nconst InsideModalScrollLockContext = React.createContext(false);\n\nexport function InsideModalScrollLockProvider({\n children,\n active = true,\n}: {\n children: React.ReactNode;\n active?: boolean;\n}) {\n return (\n <InsideModalScrollLockContext.Provider value={active}>\n {children}\n </InsideModalScrollLockContext.Provider>\n );\n}\n\nexport function useInsideModalScrollLock(): boolean {\n return React.useContext(InsideModalScrollLockContext);\n}\n","import * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport type * as React from 'react';\n\nimport {\n isRadixPortaledOverlay,\n preventDismissOnPortaledOverlay,\n} from '../../../lib/radix-overlays';\nimport { cn } from '../../../lib/utils';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-[100] bg-foreground/20 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n onPointerDownOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onPointerDownOutside?.(event);\n }\n }}\n onInteractOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onInteractOutside?.(event);\n }\n }}\n onFocusOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onFocusOutside?.(event);\n }\n }}\n className={cn(\n 'bg-background border-border/50 data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-[100] flex flex-col gap-4 border p-6 shadow-[var(--shadow-elevated)] transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 overflow-y-auto overflow-x-hidden max-h-full',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-11/12 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-11/12 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-6 right-6 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-left pb-4', className)} {...props} />\n);\nSheetHeader.displayName = 'SheetHeader';\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse gap-2 pt-4 border-t sm:flex-row sm:justify-end sm:space-x-2 sm:gap-0',\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = 'SheetFooter';\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n isRadixPortaledOverlay,\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n","import type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { InsideModalScrollLockProvider } from '../inside-modal-scroll-lock';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '../sheet';\n\nexport interface FormDrawerProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description?: string;\n children: React.ReactNode;\n /** Max width class - default sm:max-w-lg for form drawers */\n className?: string;\n /** Sheet content class for overflow/scrolling */\n contentClassName?: string;\n}\n\n/**\n * A drawer shell for forms. Provides consistent Sheet + Header layout.\n * The form content (including SheetFooter) is provided by children.\n * Mobile-friendly: full width on small screens, max-width on larger.\n */\nexport function FormDrawer({\n open,\n onOpenChange,\n title,\n description,\n children,\n className,\n contentClassName,\n}: FormDrawerProps) {\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n data-slot=\"form-drawer-content\"\n className={cn(\n 'flex flex-col gap-4 w-[calc(100%-2rem)] max-w-[calc(100%-2rem)] sm:max-w-lg overflow-hidden',\n contentClassName,\n )}\n >\n <SheetHeader className=\"flex-shrink-0 gap-2 pb-2\">\n <SheetTitle className=\"text-base sm:text-lg\">{title}</SheetTitle>\n {description && <SheetDescription className=\"text-sm\">{description}</SheetDescription>}\n </SheetHeader>\n <InsideModalScrollLockProvider>\n <div\n className={cn(\n // Inset so focus rings / box-shadow on full-width inputs are not clipped by overflow-y-auto\n 'flex flex-col flex-1 min-h-0 gap-4 overflow-y-auto px-2 py-1',\n className,\n )}\n >\n {children}\n </div>\n </InsideModalScrollLockProvider>\n </SheetContent>\n </Sheet>\n );\n}\n","import type * as React from 'react';\nimport { cn } from '../../../lib/utils';\n\nconst linkStyles =\n 'cursor-pointer font-medium text-blue-600 underline-offset-4 hover:text-blue-700 hover:underline dark:text-blue-400 dark:hover:text-blue-300';\n\n/** Allowed URL schemes for href. Blocks javascript:, data:, vbscript:, etc. to prevent XSS. */\nconst ALLOWED_SCHEMES = ['http:', 'https:', 'mailto:', 'tel:', ''];\n\nfunction sanitizeHref(to: string): string {\n const trimmed = to.trim();\n if (!trimmed) return '#';\n const hasScheme = /^[a-z][a-z0-9+.-]*:/i.test(trimmed);\n if (hasScheme) {\n const scheme = trimmed.split(':')[0];\n if (scheme && !ALLOWED_SCHEMES.includes(`${scheme.toLowerCase()}:`)) {\n return '#';\n }\n }\n return trimmed;\n}\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** URL or path (rendered as href on a plain <a>) */\n to: string;\n /** Open in new tab with security attributes */\n external?: boolean;\n}\n\n/** @deprecated Unused in SPAs — prefer react-router `Link`. Kept for Storybook demos only. */\nfunction Link({ className, external, to, ...props }: LinkProps) {\n const href = sanitizeHref(to);\n if (external) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(linkStyles, className)}\n {...props}\n />\n );\n }\n return <a href={href} className={cn(linkStyles, className)} {...props} />;\n}\n\nexport { Link, linkStyles };\n","import { CheckSquare, X } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\nimport { Badge } from '../badge';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../dropdown-menu';\nimport { DropdownScrollableList } from '../dropdown-scrollable-list';\nimport { Input } from '../input';\nimport { useInsideModalScrollLock } from '../inside-modal-scroll-lock';\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n}\n\nexport interface MultiSelectTranslations {\n triggerLabel?: string;\n searchPlaceholder?: string;\n noOptionsText?: string;\n removeOptionAriaLabel?: string;\n}\n\ninterface MultiSelectProps {\n value: string[];\n onValueChange: (value: string[]) => void;\n options: MultiSelectOption[];\n disabled?: boolean;\n className?: string;\n 'aria-label'?: string;\n /** When true, selected values render as removable tags above the trigger. */\n showSelectedTags?: boolean;\n translations?: MultiSelectTranslations;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<MultiSelectTranslations> = {\n triggerLabel: 'Select options',\n searchPlaceholder: 'Search...',\n noOptionsText: 'No options',\n removeOptionAriaLabel: 'Remove',\n};\n\nfunction MultiSelect({\n value,\n onValueChange,\n options,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n showSelectedTags = false,\n translations,\n}: MultiSelectProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const insideModalScrollLock = useInsideModalScrollLock();\n const [search, setSearch] = React.useState('');\n const selectedSet = React.useMemo(() => new Set(value), [value]);\n const labelByValue = React.useMemo(() => {\n const map = new Map<string, string>();\n for (const opt of options) map.set(opt.value, opt.label);\n return map;\n }, [options]);\n const filteredOptions = React.useMemo(() => {\n const q = search.trim().toLowerCase();\n if (!q) return options;\n return options.filter((opt) => opt.label.toLowerCase().includes(q));\n }, [options, search]);\n\n const toggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onValueChange([...value, optionValue]);\n return;\n }\n onValueChange(value.filter((item) => item !== optionValue));\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n {showSelectedTags && value.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {value.map((optionValue) => {\n const label = labelByValue.get(optionValue) ?? optionValue;\n return (\n <Badge key={optionValue} variant=\"secondary\" className=\"gap-1 pr-1 font-normal\">\n {label}\n {!disabled ? (\n <button\n type=\"button\"\n className=\"rounded-full p-0.5 hover:bg-muted-foreground/20\"\n aria-label={`${t.removeOptionAriaLabel} ${label}`}\n onClick={() => toggle(optionValue, false)}\n >\n <X className=\"h-3 w-3\" />\n </button>\n ) : null}\n </Badge>\n );\n })}\n </div>\n ) : null}\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-between\"\n aria-label={ariaLabel ?? t.triggerLabel}\n disabled={disabled}\n >\n <span className=\"inline-flex items-center gap-2\">\n <CheckSquare className=\"h-4 w-4\" />\n {t.triggerLabel}\n </span>\n {!showSelectedTags && value.length > 0 ? (\n <Badge variant=\"secondary\">{value.length}</Badge>\n ) : null}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n portalled={!insideModalScrollLock}\n className=\"z-120 flex w-(--radix-dropdown-menu-trigger-width) min-w-[16rem] flex-col overflow-hidden p-0\"\n >\n <div className=\"shrink-0 px-1 pb-2 pt-1\">\n <Input\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n placeholder={t.searchPlaceholder}\n aria-label={t.searchPlaceholder}\n />\n </div>\n <DropdownScrollableList\n grow={false}\n scrollAreaClassName=\"max-h-52 overflow-y-auto\"\n scrollKey={`${filteredOptions.length}:${search}`}\n >\n {filteredOptions.length === 0 ? (\n <p className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t.noOptionsText}</p>\n ) : (\n filteredOptions.map((option) => {\n const checked = selectedSet.has(option.value);\n return (\n <DropdownMenuItem\n key={option.value}\n onSelect={(event) => {\n event.preventDefault();\n toggle(option.value, !checked);\n }}\n >\n <Checkbox checked={checked} />\n {option.label}\n </DropdownMenuItem>\n );\n })\n )}\n </DropdownScrollableList>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nexport { MultiSelect };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","/** Show search in single-select dropdowns when option count reaches this threshold. */\nexport const SEARCHABLE_SELECT_MIN_OPTIONS = 8;\n\nexport interface SelectSearchableOption {\n label: string;\n}\n\nexport function filterSelectOptions<T extends SelectSearchableOption>(\n options: T[],\n query: string,\n): T[] {\n const q = query.trim().toLowerCase();\n if (!q) return options;\n return options.filter((option) => option.label.toLowerCase().includes(q));\n}\n\nexport function isSelectSearchable(optionCount: number, searchable?: boolean): boolean {\n if (searchable === true) return true;\n if (searchable === false) return false;\n return optionCount >= SEARCHABLE_SELECT_MIN_OPTIONS;\n}\n","import * as React from 'react';\nimport { controlBase, controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n dropdownMenuSelectOptionsMaxHeightClassName,\n} from '../dropdown-menu';\nimport { DropdownScrollableList } from '../dropdown-scrollable-list';\nimport { DropdownSelectSearchInput } from '../dropdown-select-search-input';\nimport { useInsideModalScrollLock } from '../inside-modal-scroll-lock';\nimport { filterSelectOptions, isSelectSearchable } from '../select-search';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectTranslations {\n searchPlaceholder?: string;\n noOptionsText?: string;\n}\n\ninterface SelectProps {\n value: string;\n onValueChange: (value: string) => void;\n options: SelectOption[];\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n triggerClassName?: string;\n /** When omitted, search appears automatically for 8+ options. */\n searchable?: boolean;\n translations?: SelectTranslations;\n 'aria-label'?: string;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<SelectTranslations> = {\n searchPlaceholder: 'Search…',\n noOptionsText: 'No options',\n};\n\nfunction Select({\n value,\n onValueChange,\n options,\n placeholder = '',\n disabled = false,\n className,\n triggerClassName,\n searchable,\n translations,\n 'aria-label': ariaLabel,\n}: SelectProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const insideModalScrollLock = useInsideModalScrollLock();\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState('');\n const showSearch = isSelectSearchable(options.length, searchable);\n const filteredOptions = React.useMemo(\n () => (showSearch ? filterSelectOptions(options, search) : options),\n [options, search, showSearch],\n );\n const selectedOption = options.find((opt) => opt.value === value);\n const displayValue = selectedOption?.label ?? placeholder;\n\n const handleOpenChange = (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (!nextOpen) setSearch('');\n };\n\n return (\n <DropdownMenu modal={false} open={open} onOpenChange={handleOpenChange}>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={ariaLabel}\n aria-haspopup=\"listbox\"\n disabled={disabled}\n className={cn(\n controlBase,\n controlFocus,\n 'flex h-9 w-full cursor-pointer items-center justify-between px-3 py-2 text-sm',\n 'hover:bg-accent/40 disabled:pointer-events-none disabled:opacity-50',\n !value && 'text-muted-foreground',\n triggerClassName,\n className,\n )}\n >\n <span className=\"min-w-0 truncate text-left\">{displayValue}</span>\n <ChevronDownIcon className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n sideOffset={0}\n portalled={!insideModalScrollLock}\n className=\"z-[120] flex min-w-(--radix-dropdown-menu-trigger-width) flex-col overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n {showSearch ? (\n <DropdownSelectSearchInput\n value={search}\n onChange={setSearch}\n placeholder={t.searchPlaceholder}\n autoFocus={open}\n />\n ) : null}\n <DropdownScrollableList\n grow={false}\n scrollAreaClassName={cn(\n 'overflow-y-auto overscroll-y-contain p-1',\n dropdownMenuSelectOptionsMaxHeightClassName,\n )}\n scrollKey={`${filteredOptions.length}-${open ? 1 : 0}-${search}`}\n >\n {filteredOptions.length === 0 ? (\n <p className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t.noOptionsText}</p>\n ) : (\n filteredOptions.map((opt) => (\n <DropdownMenuItem\n key={opt.value}\n onClick={() => {\n onValueChange(opt.value);\n setOpen(false);\n setSearch('');\n }}\n >\n {opt.label}\n </DropdownMenuItem>\n ))\n )}\n </DropdownScrollableList>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction ChevronDownIcon({ className, ...props }: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n {...props}\n >\n <title>Chevron down</title>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nexport { Select };\n","import * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className,\n )}\n {...props}\n />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as SwitchPrimitive from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n data-slot=\"switch\"\n className={cn(\n 'peer inline-flex h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-[var(--shadow-surface)] transition-colors',\n controlFocus,\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'pointer-events-none block size-[18px] rounded-full bg-background shadow-sm ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5',\n )}\n />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n\nexport { Switch };\n","import * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn('[&_tr]:border-border/40 [&_tr]:border-b', className)}\n {...props}\n />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-border/40 border-t bg-muted/40 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-border/40 border-b transition-colors hover:bg-muted/40 data-[state=selected]:bg-muted/60',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nexport function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn('flex flex-col gap-2', className)}\n {...props}\n />\n );\n}\n\nexport function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n );\n}\n","import * as React from 'react';\n\nimport { controlBase, controlFocus, controlInvalid } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\n/** Multi-line text field. See Storybook **UI/Textarea**. */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, React.ComponentProps<'textarea'>>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n controlBase,\n controlFocus,\n controlInvalid,\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground',\n 'flex min-h-[96px] w-full min-w-0 px-3 py-2 text-base md:text-sm',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n ),\n);\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: 'top' | 'right' | 'bottom' | 'left';\n align?: 'start' | 'center' | 'end';\n /**\n * Delay (in ms) before the tooltip opens on hover.\n */\n delayDuration?: number;\n /**\n * Delay (in ms) before the tooltip closes after hover ends.\n */\n closeDelay?: number;\n}\n\n/**\n * Tooltip that opens only on hover (not on focus), so it does not open when\n * the trigger receives focus from keyboard or from opening a dialog/sheet.\n *\n * Includes a small hover delay to avoid \"tooltip spam\" when simply moving\n * the mouse across the screen.\n */\nexport function Tooltip({\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 400,\n closeDelay = 100,\n}: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n\n const openTimeoutRef = React.useRef<number | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n const clearOpenTimeout = React.useCallback(() => {\n if (openTimeoutRef.current !== null) {\n window.clearTimeout(openTimeoutRef.current);\n openTimeoutRef.current = null;\n }\n }, []);\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n window.clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n // Let Radix close the tooltip (e.g. on Escape, outside interactions),\n // but we control opening via our own hover timers.\n if (!next) {\n clearOpenTimeout();\n clearCloseTimeout();\n setOpen(false);\n }\n },\n [clearCloseTimeout, clearOpenTimeout],\n );\n\n const handlePointerEnter = React.useCallback(() => {\n clearCloseTimeout();\n clearOpenTimeout();\n\n openTimeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n }, [clearCloseTimeout, clearOpenTimeout, delayDuration]);\n\n const handlePointerLeave = React.useCallback(() => {\n clearOpenTimeout();\n clearCloseTimeout();\n\n if (closeDelay === 0) {\n setOpen(false);\n return;\n }\n\n closeTimeoutRef.current = window.setTimeout(() => {\n setOpen(false);\n }, closeDelay);\n }, [clearCloseTimeout, clearOpenTimeout, closeDelay]);\n\n React.useEffect(\n () => () => {\n clearOpenTimeout();\n clearCloseTimeout();\n },\n [clearCloseTimeout, clearOpenTimeout],\n );\n\n return (\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger\n asChild\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n >\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={6}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n className={cn(\n surfaceOverlay,\n 'z-110 max-w-xs px-3 py-2 text-sm outline-none',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n )}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst headingVariants = cva('font-semibold tracking-tight text-foreground', {\n variants: {\n level: {\n h1: 'text-3xl font-bold',\n h2: 'text-2xl',\n h3: 'text-xl',\n h4: 'text-lg',\n },\n },\n defaultVariants: {\n level: 'h1',\n },\n});\n\nconst paragraphVariants = cva('text-muted-foreground leading-relaxed', {\n variants: {\n size: {\n default: 'text-base',\n sm: 'text-sm',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\ninterface HeadingProps\n extends React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof headingVariants> {\n /** Semantic heading level when it differs from visual `level`. */\n as?: 'h1' | 'h2' | 'h3' | 'h4';\n}\n\n/** Page and section headings using theme foreground color. */\nconst Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n ({ className, level, as, ...props }, ref) => {\n const Component =\n as || (level === 'h1' ? 'h1' : level === 'h2' ? 'h2' : level === 'h3' ? 'h3' : 'h4');\n return (\n <Component\n ref={ref}\n className={cn(headingVariants({ level: level || as }), className)}\n {...props}\n />\n );\n },\n);\nHeading.displayName = 'Heading';\n\ninterface ParagraphProps\n extends React.HTMLAttributes<HTMLParagraphElement>,\n VariantProps<typeof paragraphVariants> {}\n\n/** Body copy with muted foreground by default. */\nconst Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n ({ className, size, ...props }, ref) => {\n return <p ref={ref} className={cn(paragraphVariants({ size }), className)} {...props} />;\n },\n);\nParagraph.displayName = 'Paragraph';\n\n/** Convenience wrapper for level-3 headings. */\nconst H3 = React.forwardRef<HTMLHeadingElement, Omit<HeadingProps, 'level' | 'as'>>(\n ({ className, ...props }, ref) => (\n <Heading ref={ref} level=\"h3\" as=\"h3\" className={className} {...props} />\n ),\n);\nH3.displayName = 'H3';\n\nexport { H3, Heading, headingVariants, Paragraph, paragraphVariants };\n","import { FileText, ImagePlus, UploadCloud } from 'lucide-react';\nimport { useEffect, useId, useRef, useState } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\n\nexport interface UploadDropzoneTranslations {\n imageAlt?: string;\n dropHintText?: string;\n chooseImageText?: string;\n /** Used when `variant=\"file\"` for the primary picker button label */\n chooseFileText?: string;\n removeText?: string;\n removeExistingImageText?: string;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<UploadDropzoneTranslations> = {\n imageAlt: 'Image',\n dropHintText: 'Drag and drop an image here, or click to choose a file.',\n chooseImageText: 'Choose image',\n chooseFileText: 'Choose file',\n removeText: 'Remove',\n removeExistingImageText: 'Remove existing image',\n};\n\ninterface UploadDropzoneBaseProps {\n value: File | null;\n onChange: (file: File | null) => void;\n translations?: UploadDropzoneTranslations;\n /** Reject files larger than this size (bytes). Invokes `onFileTooLarge` when set. */\n maxSizeBytes?: number;\n onFileTooLarge?: () => void;\n}\n\nexport interface UploadDropzoneImageProps extends UploadDropzoneBaseProps {\n variant?: 'image';\n existingImageUrl?: string;\n removeExistingImage?: boolean;\n onRemoveExistingImageChange?: (value: boolean) => void;\n}\n\nexport interface UploadDropzoneFileProps extends UploadDropzoneBaseProps {\n variant: 'file';\n /** Passed to the native file input, e.g. `.pdf,.docx` */\n accept?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport type UploadDropzoneProps = UploadDropzoneImageProps | UploadDropzoneFileProps;\n\nfunction UploadDropzone(props: UploadDropzoneProps) {\n const isFile = props.variant === 'file';\n const inputId = useId();\n const removeExistingLabelId = useId();\n const pickerDisabled = isFile && props.disabled;\n const t = { ...DEFAULT_TRANSLATIONS, ...props.translations };\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (isFile) {\n if (!props.value || !props.value.type.startsWith('video/')) {\n setPreviewUrl(null);\n return;\n }\n const nextUrl = URL.createObjectURL(props.value);\n setPreviewUrl(nextUrl);\n return () => URL.revokeObjectURL(nextUrl);\n }\n if (!props.value) {\n setPreviewUrl(null);\n return;\n }\n const nextUrl = URL.createObjectURL(props.value);\n setPreviewUrl(nextUrl);\n return () => URL.revokeObjectURL(nextUrl);\n }, [isFile, props.value]);\n\n const handleFile = (file: File | null) => {\n if (!file) return;\n if (props.maxSizeBytes != null && file.size > props.maxSizeBytes) {\n props.onFileTooLarge?.();\n return;\n }\n if (isFile) {\n if (props.disabled) return;\n props.onChange(file);\n return;\n }\n if (!file.type.startsWith('image/')) return;\n props.onChange(file);\n props.onRemoveExistingImageChange?.(false);\n };\n\n const displayedImage =\n !isFile && (previewUrl ?? (!props.removeExistingImage ? props.existingImageUrl : undefined));\n\n const dashedClasses = cn(\n 'block rounded-xl border-2 border-dashed border-border/55 p-4 transition-colors',\n pickerDisabled && 'pointer-events-none opacity-50',\n !pickerDisabled && 'cursor-pointer hover:border-primary/50 hover:bg-muted/15',\n isDragging ? 'border-primary/70 bg-primary/5' : undefined,\n );\n\n const chooseLabel = isFile ? t.chooseFileText : t.chooseImageText;\n\n return (\n <div className={cn('space-y-3', isFile ? props.className : undefined)}>\n <label\n htmlFor={pickerDisabled ? undefined : inputId}\n className={dashedClasses}\n onDragOver={(event) => {\n event.preventDefault();\n if (pickerDisabled) return;\n setIsDragging(true);\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={(event) => {\n event.preventDefault();\n setIsDragging(false);\n if (pickerDisabled) return;\n const file = event.dataTransfer.files?.[0] ?? null;\n handleFile(file);\n }}\n >\n <input\n id={inputId}\n ref={inputRef}\n type=\"file\"\n accept={isFile ? props.accept : 'image/*'}\n disabled={pickerDisabled || undefined}\n className=\"sr-only\"\n onChange={(event) => handleFile(event.target.files?.[0] ?? null)}\n />\n {isFile ? (\n <div className=\"mb-3 flex min-h-28 flex-col items-center justify-center gap-2 rounded-lg border border-border/45 bg-muted/20 px-3 py-4 text-center\">\n {previewUrl ? (\n <video\n src={previewUrl}\n controls\n className=\"max-h-44 w-full rounded-lg border border-border/45 bg-foreground\"\n />\n ) : (\n <FileText className=\"h-8 w-8 shrink-0 text-muted-foreground\" aria-hidden />\n )}\n {props.value ? (\n <p className=\"line-clamp-2 w-full break-all text-sm font-medium\">\n {props.value.name}\n </p>\n ) : null}\n </div>\n ) : displayedImage ? (\n <img\n src={displayedImage}\n alt={t.imageAlt}\n className=\"mb-3 h-44 w-full rounded-lg border border-border/45 object-cover\"\n />\n ) : (\n <div className=\"mb-3 flex h-32 items-center justify-center rounded-lg border border-border/45 bg-muted/20\">\n <ImagePlus className=\"h-8 w-8 text-muted-foreground\" aria-hidden />\n </div>\n )}\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n <p className=\"text-xs text-muted-foreground\">{t.dropHintText}</p>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n inputRef.current?.click();\n }}\n >\n <UploadCloud className=\"mr-2 h-4 w-4\" aria-hidden />\n {chooseLabel}\n </Button>\n {props.value ? (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n props.onChange(null);\n }}\n >\n {t.removeText}\n </Button>\n ) : null}\n </div>\n </div>\n </label>\n\n {!isFile &&\n props.existingImageUrl &&\n props.onRemoveExistingImageChange &&\n t.removeExistingImageText ? (\n <div className=\"flex items-center justify-between rounded-lg border border-border/45 bg-muted/15 px-3 py-2\">\n <span className=\"text-xs text-muted-foreground\" id={removeExistingLabelId}>\n {t.removeExistingImageText}\n </span>\n <Checkbox\n aria-labelledby={removeExistingLabelId}\n checked={props.removeExistingImage}\n onCheckedChange={(checked) => props.onRemoveExistingImageChange?.(checked === true)}\n />\n </div>\n ) : null}\n </div>\n );\n}\n\nexport { UploadDropzone };\n"]}
1
+ {"version":3,"sources":["../src/components/ui/alert/index.tsx","../src/components/ui/alert-dialog/index.tsx","../src/components/ui/avatar/index.tsx","../src/components/ui/badge/index.tsx","../src/components/ui/calendar/index.tsx","../src/components/ui/checkbox/index.tsx","../src/components/ui/confirm-dialog/index.tsx","../src/components/ui/popover/index.tsx","../src/components/ui/date-picker/index.tsx","../src/components/ui/dialog/index.tsx","../src/components/ui/date-range-picker/constants.ts","../src/components/ui/date-range-picker/DateRangePickerActionFooter.tsx","../src/components/ui/date-range-picker/DateRangePickerFieldsCalendar.tsx","../src/components/ui/date-range-picker/parseDateRange.ts","../src/components/ui/date-range-picker/DateRangePickerPresetList.tsx","../src/components/ui/date-range-picker/DateRangePickerTrigger.tsx","../src/components/ui/date-range-picker/useDateRangePresets.ts","../src/components/ui/date-range-picker/useMediaQuery.ts","../src/components/ui/date-range-picker/DateRangePicker.tsx","../src/components/ui/dropdown-menu/index.tsx","../src/components/ui/dropdown-scrollable-list/index.tsx","../src/components/ui/dropdown-select-search-input/index.tsx","../src/components/ui/label/index.tsx","../src/components/ui/form/index.tsx","../src/components/ui/inside-modal-scroll-lock/index.tsx","../src/components/ui/sheet/index.tsx","../src/components/ui/form-drawer/index.tsx","../src/components/ui/link/index.tsx","../src/components/ui/multi-select/index.tsx","../src/components/ui/scroll-area/index.tsx","../src/components/ui/select-search/index.ts","../src/components/ui/select/index.tsx","../src/components/ui/separator/index.tsx","../src/components/ui/switch/index.tsx","../src/components/ui/table/index.tsx","../src/components/ui/tabs/index.tsx","../src/components/ui/textarea/index.tsx","../src/components/ui/tooltip/index.tsx","../src/components/ui/typography/index.tsx","../src/components/ui/upload-dropzone/index.tsx"],"names":["React","jsx","React2","cva","React3","jsxs","React4","CalendarIcon","format","React5","nextRange","React7","React8","React9","SheetPrimitive","XIcon","DEFAULT_TRANSLATIONS","React10","React11","React12","React13","React14","React15","React16","React17","React18","useId","useRef","useState","useEffect","nextUrl"],"mappings":"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","file":"chunk-YIUHUCIF.js","sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-xl border border-border/45 px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start shadow-[var(--shadow-surface)] [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default:\n 'bg-card text-card-foreground *:data-[slot=alert-description]:text-muted-foreground',\n destructive:\n 'bg-destructive/90 dark:bg-destructive text-destructive-foreground border-destructive/50 dark:border-destructive/70 [&>svg]:text-destructive-foreground *:data-[slot=alert-description]:text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription };\n","import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { buttonVariants } from '../button';\n\nconst AlertDialog = AlertDialogPrimitive.Root;\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-110 bg-foreground/20 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;\n\ninterface AlertDialogContentProps\n extends React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content> {\n /** When set, clicking the overlay calls this (e.g. to close when opened from a drawer). */\n onOverlayClick?: () => void;\n /** Optional extra classes for the overlay (e.g. to raise z-index). */\n overlayClassName?: string;\n}\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, onOverlayClick, overlayClassName, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay onClick={onOverlayClick} className={overlayClassName} />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n surfaceOverlay,\n 'bg-background fixed left-[50%] top-[50%] z-110 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-center sm:text-left', className)} {...props} />\n);\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n);\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold', className)}\n {...props}\n />\n));\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nAlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n ref={ref}\n data-slot=\"alert-dialog-action\"\n className={cn(buttonVariants(), className)}\n {...props}\n />\n));\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n ref={ref}\n data-slot=\"alert-dialog-cancel\"\n className={cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className)}\n {...props}\n />\n));\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn('aspect-square h-full w-full', className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n 'flex h-full w-full items-center justify-center rounded-full bg-muted',\n className,\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarFallback, AvatarImage };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold whitespace-nowrap transition-colors',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-white hover:bg-destructive/80',\n outline: 'border-border/50 text-foreground bg-background/80',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n ...props\n}: React.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {\n return (\n <span data-slot=\"badge\" className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { type DateRange, DayPicker, type DayPickerProps } from 'react-day-picker';\n\nimport { cn } from '../../../lib/utils';\nimport { buttonVariants } from '../button';\n\nexport type { DateRange };\n\nexport type CalendarProps = DayPickerProps;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n weekStartsOn,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n data-slot=\"calendar\"\n showOutsideDays={showOutsideDays}\n weekStartsOn={weekStartsOn ?? 1}\n navLayout=\"around\"\n className={cn('p-3', className)}\n classNames={{\n months:\n 'flex flex-col items-stretch justify-center gap-4 sm:flex-row sm:items-start sm:gap-6',\n month: 'relative min-w-0 space-y-3',\n month_caption: 'flex items-center justify-center w-full h-9 pt-1 px-10',\n caption_label: 'text-sm font-medium text-center pointer-events-none',\n nav: 'contents',\n button_previous: cn(\n buttonVariants({ variant: 'outline', size: 'icon-sm' }),\n 'absolute left-0 top-1 z-10 h-8 w-8 bg-transparent p-0 opacity-70 hover:opacity-100',\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline', size: 'icon-sm' }),\n 'absolute right-0 top-1 z-10 h-8 w-8 bg-transparent p-0 opacity-70 hover:opacity-100',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: '',\n weekday: 'text-muted-foreground w-10 rounded-md font-normal text-[0.75rem] text-center p-1',\n weeks: 'mt-1',\n week: '',\n day: 'relative h-10 w-10 text-center text-sm p-0 align-top focus-within:relative focus-within:z-20',\n day_button: cn(\n 'day-button inline-flex size-10 items-center justify-center rounded-md text-sm font-normal transition-colors cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'aria-disabled:text-muted-foreground/60 aria-disabled:opacity-50 aria-disabled:cursor-not-allowed',\n ),\n selected:\n 'bg-primary/10 text-primary [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground',\n today:\n 'text-primary [&_.day-button]:border [&_.day-button]:border-primary [&_.day-button]:rounded-md [&.selected]:bg-primary [&.selected]:text-primary-foreground',\n outside:\n 'text-muted-foreground/60 [&.selected]:bg-accent/40 [&.selected]:text-accent-foreground',\n range_middle:\n 'bg-primary/15 text-foreground [&_.day-button]:bg-primary/15 [&_.day-button]:text-foreground [&_.day-button]:rounded-none',\n range_end:\n 'rounded-r-md text-primary-foreground [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground [&_.day-button]:rounded-r-md [&_.day-button]:rounded-l-none [&.range_start_.day-button]:!rounded-md',\n range_start:\n 'rounded-l-md text-primary-foreground [&_.day-button]:bg-primary [&_.day-button]:text-primary-foreground [&_.day-button]:rounded-l-md [&_.day-button]:rounded-r-none [&.range_end_.day-button]:!rounded-md',\n disabled: 'text-muted-foreground/60 opacity-50 [&_.day-button]:cursor-not-allowed',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) =>\n orientation === 'left' ? (\n <ChevronLeft className=\"size-4\" aria-hidden />\n ) : (\n <ChevronRight className=\"size-4\" aria-hidden />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\n\nimport { controlFocus, controlInvalid } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n data-slot=\"checkbox\"\n className={cn(\n 'peer size-4 shrink-0 rounded-[5px] border border-border/55 bg-muted/30 shadow-[var(--shadow-surface)] transition-colors',\n controlFocus,\n controlInvalid,\n 'cursor-pointer disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground',\n 'data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-foreground',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"size-2.5\" strokeWidth={3} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import { Loader2 } from 'lucide-react';\nimport { useRef } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../alert-dialog';\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description: string;\n /** Optional note shown below the description (e.g. policy or retention info) */\n descriptionNote?: string;\n cancelLabel?: string;\n confirmLabel: string;\n variant?: 'default' | 'destructive';\n onConfirm: () => void;\n isPending?: boolean;\n /** Accessibility: describe the action for screen readers */\n confirmAriaLabel?: string;\n className?: string;\n /** When true, clicking outside the dialog (e.g. overlay) closes it. Useful when dialog is opened from a drawer. */\n closeOnOutsideClick?: boolean;\n}\n\n/**\n * A reusable confirmation dialog for destructive or important actions.\n * By default uses AlertDialog so Escape does not accidentally dismiss.\n * Enter focuses and activates the confirm action (not cancel).\n * Set closeOnOutsideClick to allow closing when opened from a drawer or when overlay click is desired.\n * Mobile-friendly: stacks buttons vertically on small screens.\n */\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n descriptionNote,\n cancelLabel = 'Cancel',\n confirmLabel,\n variant = 'default',\n onConfirm,\n isPending = false,\n confirmAriaLabel,\n className,\n closeOnOutsideClick = false,\n}: ConfirmDialogProps) {\n const confirmRef = useRef<HTMLButtonElement>(null);\n const isDestructive = variant === 'destructive';\n const confirmClassName = isDestructive\n ? 'bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20'\n : undefined;\n\n const handleConfirm = () => {\n if (isPending) return;\n onConfirm();\n };\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent\n data-slot=\"confirm-dialog-content\"\n className={cn('gap-4 sm:gap-6', className)}\n onOpenAutoFocus={(event) => {\n event.preventDefault();\n confirmRef.current?.focus();\n }}\n onKeyDown={(event) => {\n if (event.key !== 'Enter' || isPending) return;\n const target = event.target as HTMLElement;\n if (target.closest('[data-slot=\"alert-dialog-cancel\"]')) return;\n if (target.closest('[data-slot=\"alert-dialog-action\"]')) return;\n event.preventDefault();\n handleConfirm();\n }}\n {...(closeOnOutsideClick && {\n onOverlayClick: () => onOpenChange(false),\n })}\n >\n <AlertDialogHeader className=\"gap-2\">\n <AlertDialogTitle className=\"text-base sm:text-lg\">{title}</AlertDialogTitle>\n <div className=\"space-y-2\">\n <AlertDialogDescription className=\"text-sm\">{description}</AlertDialogDescription>\n {descriptionNote && <p className=\"text-sm text-muted-foreground\">{descriptionNote}</p>}\n </div>\n </AlertDialogHeader>\n <AlertDialogFooter className=\"flex flex-col-reverse gap-2 pt-2 sm:flex-row sm:justify-end sm:gap-2 sm:pt-0\">\n <AlertDialogCancel\n onClick={() => onOpenChange(false)}\n disabled={isPending}\n className=\"m-0 w-full sm:w-auto\"\n >\n {cancelLabel}\n </AlertDialogCancel>\n <AlertDialogAction\n ref={confirmRef}\n onClick={handleConfirm}\n disabled={isPending}\n aria-label={confirmAriaLabel ?? confirmLabel}\n className={cn('m-0 w-full sm:w-auto', confirmClassName)}\n >\n {isPending && <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden />}\n {confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n","import * as PopoverPrimitive from '@radix-ui/react-popover';\nimport type * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'start',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n surfaceOverlay,\n 'z-110 w-auto min-w-48 p-3 outline-none',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2',\n 'data-[side=top]:slide-in-from-bottom-2',\n 'data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nexport { Popover, PopoverContent, PopoverTrigger };\n","import type { Locale } from 'date-fns';\nimport { format } from 'date-fns';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DISPLAY_FORMAT, normalizeDate } from '../../../lib/dates';\nimport { controlBase, controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Calendar } from '../calendar';\nimport { Input } from '../input';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\n\nexport interface DatePickerProps {\n value: Date | undefined;\n onChange: (date: Date | undefined) => void;\n /** Minimum selectable date (inclusive). */\n minDate?: Date;\n /** Maximum selectable date (inclusive). */\n maxDate?: Date;\n placeholder?: string;\n disabled?: boolean;\n /** Locale for calendar and formatting (e.g. from date-fns/locale). */\n locale?: Locale;\n className?: string;\n 'aria-label'?: string;\n}\n\nexport function DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder = 'Pick a date',\n disabled = false,\n locale,\n className,\n 'aria-label': ariaLabel,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const normalizedMin = normalizeDate(minDate);\n const normalizedMax = normalizeDate(maxDate);\n\n const formatOpts = React.useMemo(() => (locale ? { locale } : undefined), [locale]);\n\n const disabledMatchers = React.useMemo(() => {\n const toStartOfDay = (d: Date) => {\n const copy = new Date(d);\n copy.setHours(0, 0, 0, 0);\n return copy.getTime();\n };\n const matchers: Array<(date: Date) => boolean> = [];\n if (normalizedMin) {\n matchers.push((date: Date) => toStartOfDay(date) < toStartOfDay(normalizedMin!));\n }\n if (normalizedMax) {\n matchers.push((date: Date) => toStartOfDay(date) > toStartOfDay(normalizedMax!));\n }\n return matchers;\n }, [normalizedMin, normalizedMax]);\n\n const handleSelect = (date: Date | undefined) => {\n const day = date ? normalizeDate(date) : undefined;\n onChange(day ?? undefined);\n setOpen(false);\n };\n\n return (\n <Popover modal={false} open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (!disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n setOpen((o) => !o);\n }\n }}\n className={cn(\n controlBase,\n controlFocus,\n 'flex w-full cursor-pointer items-center overflow-hidden',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n >\n <span className=\"flex h-9 w-9 shrink-0 items-center justify-center border-r border-border/40 bg-muted/25 text-muted-foreground\">\n <CalendarIcon className=\"size-4\" aria-hidden />\n </span>\n <Input\n type=\"text\"\n readOnly\n value={value ? format(value, DISPLAY_FORMAT, formatOpts) : ''}\n placeholder={placeholder}\n onClick={() => !disabled && setOpen(true)}\n className={cn(\n 'h-9 min-w-0 flex-1 cursor-pointer rounded-l-none border-0 bg-transparent py-2 pl-3 pr-3 text-base shadow-none focus-visible:ring-0 md:text-sm capitalize',\n !value && 'text-muted-foreground',\n )}\n aria-label={ariaLabel}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 z-[120]\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleSelect}\n disabled={(date) => disabledMatchers.some((m) => m(date))}\n locale={locale}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport type * as React from 'react';\n\nimport { preventDismissOnPortaledOverlay } from '../../../lib/radix-overlays';\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-110 bg-foreground/20 backdrop-blur-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n overlayClassName,\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n overlayClassName?: string;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n onPointerDownOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onPointerDownOutside?.(event);\n }\n }}\n onInteractOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onInteractOutside?.(event);\n }\n }}\n onFocusOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onFocusOutside?.(event);\n }\n }}\n className={cn(\n surfaceOverlay,\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-110 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 outline-none sm:max-w-lg',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex w-full flex-col items-center gap-2 text-center', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('w-full text-lg leading-none font-semibold text-center', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('w-full text-muted-foreground text-sm text-center', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","import type { DateRangePickerTranslations, DefaultPresetId } from './types';\n\n/** Viewports below this width use a full-screen picker (Tailwind `sm` is 640px). */\nexport const DATE_RANGE_MOBILE_MAX_PX = 640;\nexport const DATE_RANGE_MOBILE_MQ = `(max-width: ${DATE_RANGE_MOBILE_MAX_PX - 1}px)`;\n\n/** Desktop popover shows two months side-by-side from this width up. */\nexport const DATE_RANGE_WIDE_MIN_PX = 768;\nexport const DATE_RANGE_WIDE_MQ = `(min-width: ${DATE_RANGE_WIDE_MIN_PX}px)`;\n\nexport const DEFAULT_PRESET_IDS: { id: DefaultPresetId }[] = [\n { id: 'today' },\n { id: 'yesterday' },\n { id: 'last7' },\n { id: 'last14' },\n { id: 'last30' },\n { id: 'thisWeek' },\n { id: 'lastWeek' },\n { id: 'thisMonth' },\n { id: 'lastMonth' },\n];\n\nexport const DEFAULT_PRESET_LABELS: Record<DefaultPresetId, string> = {\n today: 'Today',\n yesterday: 'Yesterday',\n last7: 'Last 7 days',\n last14: 'Last 14 days',\n last30: 'Last 30 days',\n thisWeek: 'This week',\n lastWeek: 'Last week',\n thisMonth: 'This month',\n lastMonth: 'Last month',\n};\n\nexport const DEFAULT_TRANSLATIONS: Required<DateRangePickerTranslations> = {\n applyButton: 'Apply',\n cancelButton: 'Cancel',\n startLabel: 'Start',\n endLabel: 'End',\n placeholder: 'YYYY/MM/DD',\n ariaLabel: 'Date range',\n presetLabels: DEFAULT_PRESET_LABELS,\n presetsHeading: 'Quick ranges',\n};\n","import { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\nexport type DateRangePickerActionFooterProps = {\n visible: boolean;\n isMobileLayout: boolean;\n cancelLabel: string;\n applyLabel: string;\n onCancel: () => void;\n onApply: () => void;\n className?: string;\n};\n\n/** Cancel / apply actions for apply-flow and mobile layouts. */\nexport function DateRangePickerActionFooter({\n visible,\n isMobileLayout,\n cancelLabel,\n applyLabel,\n onCancel,\n onApply,\n className,\n}: DateRangePickerActionFooterProps) {\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n 'flex w-full items-center justify-end gap-2 border-t border-border/50 bg-muted/15 px-4 py-3',\n isMobileLayout &&\n 'mt-auto shrink-0 bg-background pb-[max(1rem,env(safe-area-inset-bottom))] pt-4',\n className,\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(isMobileLayout && 'min-h-10 flex-1 sm:min-h-9 sm:flex-initial')}\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n className={cn(isMobileLayout && 'min-h-10 flex-1 sm:min-h-9 sm:flex-initial')}\n onClick={onApply}\n >\n {applyLabel}\n </Button>\n </div>\n );\n}\n","import type { Locale } from 'date-fns';\nimport type { DateRange } from 'react-day-picker';\nimport { surfaceCard } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Calendar } from '../calendar';\nimport { Input } from '../input';\n\nexport type DateRangePickerFieldsCalendarProps = {\n calendarMonths: number;\n draft: DateRange | undefined;\n displayedMonth: Date;\n onMonthChange: (month: Date) => void;\n onSelect: (next: DateRange | undefined, triggerDate: Date) => void;\n disabledMatchers: import('react-day-picker').Matcher[];\n locale?: Locale;\n startInputId: string;\n endInputId: string;\n startLabel: string;\n endLabel: string;\n startInputText: string;\n endInputText: string;\n effectivePlaceholder: string;\n onStartInputChange: (value: string) => void;\n onEndInputChange: (value: string) => void;\n onCommitStart: () => void;\n onCommitEnd: () => void;\n};\n\n/** Start/end date inputs and range calendar. */\nexport function DateRangePickerFieldsCalendar({\n calendarMonths,\n draft,\n displayedMonth,\n onMonthChange,\n onSelect,\n disabledMatchers,\n locale,\n startInputId,\n endInputId,\n startLabel,\n endLabel,\n startInputText,\n endInputText,\n effectivePlaceholder,\n onStartInputChange,\n onEndInputChange,\n onCommitStart,\n onCommitEnd,\n}: DateRangePickerFieldsCalendarProps) {\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div\n className={cn(\n 'grid w-full grid-cols-1 gap-3 rounded-xl border border-border/45 bg-muted/20 p-3 sm:grid-cols-2',\n calendarMonths === 2 ? 'max-w-none' : 'max-w-md',\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <label htmlFor={startInputId} className=\"text-xs font-medium text-muted-foreground\">\n {startLabel}\n </label>\n <Input\n id={startInputId}\n type=\"text\"\n value={startInputText}\n onChange={(e) => onStartInputChange(e.target.value)}\n onBlur={onCommitStart}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onCommitStart();\n }\n }}\n placeholder={effectivePlaceholder}\n className=\"h-9 font-mono text-sm tabular-nums\"\n />\n </div>\n <div className=\"flex min-w-0 flex-col gap-1.5\">\n <label htmlFor={endInputId} className=\"text-xs font-medium text-muted-foreground\">\n {endLabel}\n </label>\n <Input\n id={endInputId}\n type=\"text\"\n value={endInputText}\n onChange={(e) => onEndInputChange(e.target.value)}\n onBlur={onCommitEnd}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onCommitEnd();\n }\n }}\n placeholder={effectivePlaceholder}\n className=\"h-9 font-mono text-sm tabular-nums\"\n />\n </div>\n </div>\n <div className={cn(surfaceCard, 'flex w-full justify-center p-1')}>\n <Calendar\n mode=\"range\"\n numberOfMonths={calendarMonths}\n month={displayedMonth}\n onMonthChange={onMonthChange}\n selected={draft}\n onSelect={onSelect}\n disabled={disabledMatchers}\n locale={locale}\n className={cn(calendarMonths === 2 && 'p-2')}\n />\n </div>\n </div>\n );\n}\n","import { format, parse } from 'date-fns';\nimport type { DateRange } from 'react-day-picker';\n\nimport { DISPLAY_FORMAT, INPUT_FORMAT, INPUT_FORMAT_ALT, normalizeDate } from '../../../lib/dates';\n\nexport function rangesMatch(a: DateRange | undefined, b: DateRange): boolean {\n const af = normalizeDate(a?.from)?.getTime();\n const at = normalizeDate(a?.to)?.getTime();\n const bf = normalizeDate(b.from)?.getTime();\n const bt = normalizeDate(b.to)?.getTime();\n return af === bf && at === bt;\n}\n\nexport function parseDate(part: string): Date | null {\n const p = part.trim();\n if (!p) return null;\n const ref = new Date();\n for (const fmt of [INPUT_FORMAT, INPUT_FORMAT_ALT, DISPLAY_FORMAT]) {\n try {\n const d = parse(p, fmt, ref);\n if (!Number.isNaN(d.getTime())) return d;\n } catch {\n // try next format\n }\n }\n return null;\n}\n\nexport function parseInputToRange(text: string): DateRange | null {\n const trimmed = text.trim();\n if (!trimmed) return { from: undefined, to: undefined };\n const parts = trimmed.split(/\\s*[–-]\\s*/).map((p) => p.trim());\n try {\n if (parts.length >= 2) {\n const from = parseDate(parts[0]!);\n const to = parseDate(parts[1]!);\n if (from && to) return { from, to };\n if (from) return { from, to: undefined };\n } else if (parts.length === 1 && parts[0]) {\n const from = parseDate(parts[0]);\n if (from) return { from, to: undefined };\n }\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function formatRangeLabel(\n value: DateRange | undefined,\n placeholder: string,\n formatOpts: { locale?: import('date-fns').Locale } | undefined,\n): string {\n const from = value?.from;\n const to = value?.to;\n\n if (from && to) {\n return `${format(from, DISPLAY_FORMAT, formatOpts)} \\u2013 ${format(to, DISPLAY_FORMAT, formatOpts)}`;\n }\n\n if (from) {\n return format(from, DISPLAY_FORMAT, formatOpts);\n }\n\n return placeholder;\n}\n\nexport { DISPLAY_FORMAT, INPUT_FORMAT, normalizeDate };\n","import type { DateRange } from 'react-day-picker';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { rangesMatch } from './parseDateRange';\nimport type { PresetListItem } from './types';\n\nexport type DateRangePickerPresetListProps = {\n presets: PresetListItem[];\n draft: DateRange | undefined;\n layout: 'mobile-row' | 'sidebar';\n presetsHeading?: string;\n onPreset: (getRange: () => DateRange) => void;\n};\n\n/** Preset chips (mobile) or sidebar list (desktop). */\nexport function DateRangePickerPresetList({\n presets,\n draft,\n layout,\n presetsHeading,\n onPreset,\n}: DateRangePickerPresetListProps) {\n if (presets.length === 0) return null;\n\n if (layout === 'mobile-row') {\n return (\n <div className=\"shrink-0 border-b border-border/50 bg-muted/20 px-2 py-2\">\n <div className=\"flex gap-1 overflow-x-auto overscroll-x-contain px-1 py-1 [scrollbar-width:thin] [-webkit-overflow-scrolling:touch]\">\n {presets.map((preset) => {\n const active = rangesMatch(draft, preset.getRange());\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-9 shrink-0 whitespace-nowrap rounded-lg px-2.5 text-sm font-normal',\n active && 'bg-accent font-medium text-accent-foreground',\n )}\n onClick={() => onPreset(preset.getRange)}\n >\n {preset.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"w-[11.5rem] shrink-0 border-r border-border/50 bg-muted/20\">\n <div className=\"flex max-h-[min(420px,70vh)] flex-col gap-0.5 overflow-y-auto p-2 [scrollbar-width:thin]\">\n {presetsHeading ? (\n <p className=\"px-2 pb-1 pt-0.5 text-[0.65rem] font-semibold uppercase tracking-wider text-muted-foreground\">\n {presetsHeading}\n </p>\n ) : null}\n {presets.map((preset) => {\n const active = rangesMatch(draft, preset.getRange());\n return (\n <Button\n key={preset.id}\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n 'h-9 w-full shrink-0 justify-start rounded-lg px-2.5 text-left text-sm font-normal',\n active && 'bg-accent font-medium text-accent-foreground',\n )}\n onClick={() => onPreset(preset.getRange)}\n >\n {preset.label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { Calendar as CalendarIcon } from 'lucide-react';\nimport { controlBase } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Input } from '../input';\n\nexport type DateRangePickerTriggerProps = {\n className?: string;\n inputText: string;\n effectivePlaceholder: string;\n isEmpty: boolean;\n ariaLabel: string;\n onOpen: () => void;\n onInputChange: (value: string) => void;\n onInputFocus: () => void;\n onInputBlur: () => void;\n};\n\n/** Calendar icon + free-text range field that opens the picker. */\nexport function DateRangePickerTrigger({\n className,\n inputText,\n effectivePlaceholder,\n isEmpty,\n ariaLabel,\n onOpen,\n onInputChange,\n onInputFocus,\n onInputBlur,\n}: DateRangePickerTriggerProps) {\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onOpen}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onOpen();\n }\n }}\n className={cn(\n controlBase,\n 'flex w-full min-w-[17rem] max-w-full cursor-pointer items-center overflow-hidden focus-within:ring-[3px] focus-within:ring-ring/40',\n className,\n )}\n >\n <span className=\"flex h-10 w-10 shrink-0 items-center justify-center border-r border-border/40 bg-muted/25 text-muted-foreground\">\n <CalendarIcon className=\"size-4\" aria-hidden=\"true\" />\n </span>\n <Input\n type=\"text\"\n value={inputText}\n onChange={(e) => onInputChange(e.target.value)}\n onFocus={onInputFocus}\n onBlur={onInputBlur}\n onClick={onOpen}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n (e.target as HTMLInputElement).blur();\n }\n }}\n placeholder={effectivePlaceholder}\n data-empty={isEmpty || undefined}\n className={cn(\n 'h-10 min-w-0 flex-1 cursor-pointer rounded-none border-0 bg-transparent py-2 pl-3 pr-3 text-sm shadow-none focus-visible:ring-0 whitespace-nowrap',\n isEmpty && 'text-muted-foreground',\n )}\n title={!isEmpty ? inputText : undefined}\n aria-label={ariaLabel}\n />\n </div>\n );\n}\n","import type { DateRange } from 'react-day-picker';\n\nimport type { DefaultPresetId } from './types';\n\nexport function getPresetRange(presetId: DefaultPresetId): DateRange {\n const today = new Date();\n today.setHours(23, 59, 59, 999);\n const from = new Date(today);\n from.setHours(0, 0, 0, 0);\n const to = new Date(today);\n\n switch (presetId) {\n case 'today':\n return { from, to };\n case 'yesterday':\n from.setDate(from.getDate() - 1);\n to.setDate(to.getDate() - 1);\n return { from, to };\n case 'last7':\n from.setDate(from.getDate() - 6);\n return { from, to };\n case 'last14':\n from.setDate(from.getDate() - 13);\n return { from, to };\n case 'last30':\n from.setDate(from.getDate() - 29);\n return { from, to };\n case 'thisWeek': {\n const day = from.getDay();\n const mondayOffset = day === 0 ? -6 : 1 - day;\n from.setDate(from.getDate() + mondayOffset);\n return { from, to };\n }\n case 'lastWeek': {\n const day = from.getDay();\n const mondayOffset = day === 0 ? -6 : 1 - day;\n const thisMonday = from.getDate() + mondayOffset;\n from.setDate(thisMonday - 7);\n to.setDate(thisMonday - 1);\n to.setHours(23, 59, 59, 999);\n return { from, to };\n }\n case 'thisMonth':\n from.setDate(1);\n return { from, to };\n case 'lastMonth':\n from.setMonth(from.getMonth() - 1);\n from.setDate(1);\n to.setDate(0);\n to.setHours(23, 59, 59, 999);\n return { from, to };\n default:\n return { from, to };\n }\n}\n","import * as React from 'react';\n\nimport { DATE_RANGE_MOBILE_MQ, DATE_RANGE_WIDE_MQ } from './constants';\n\nexport function useMediaQuery(query: string, fallback = false): boolean {\n const subscribe = React.useCallback(\n (onChange: () => void) => {\n const mql = window.matchMedia(query);\n mql.addEventListener('change', onChange);\n return () => mql.removeEventListener('change', onChange);\n },\n [query],\n );\n return React.useSyncExternalStore(\n subscribe,\n () => window.matchMedia(query).matches,\n () => fallback,\n );\n}\n\nexport function useIsDatePickerMobileLayout(): boolean {\n return useMediaQuery(DATE_RANGE_MOBILE_MQ, false);\n}\n\nexport function useIsWideDatePickerLayout(): boolean {\n return useMediaQuery(DATE_RANGE_WIDE_MQ, false);\n}\n","import { format } from 'date-fns';\nimport * as React from 'react';\nimport type { DateRange } from 'react-day-picker';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '../dialog';\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover';\nimport { DEFAULT_PRESET_IDS, DEFAULT_PRESET_LABELS, DEFAULT_TRANSLATIONS } from './constants';\nimport { DateRangePickerActionFooter } from './DateRangePickerActionFooter';\nimport { DateRangePickerFieldsCalendar } from './DateRangePickerFieldsCalendar';\nimport { DateRangePickerPresetList } from './DateRangePickerPresetList';\nimport { DateRangePickerTrigger } from './DateRangePickerTrigger';\nimport {\n DISPLAY_FORMAT,\n formatRangeLabel,\n INPUT_FORMAT,\n normalizeDate,\n parseDate,\n parseInputToRange,\n} from './parseDateRange';\nimport type { DateRangePickerProps } from './types';\nimport { getPresetRange } from './useDateRangePresets';\nimport { useIsDatePickerMobileLayout, useIsWideDatePickerLayout } from './useMediaQuery';\n\n/** Range picker with presets, mobile dialog, and optional apply flow. Storybook: **UI/DateRangePicker**. */\nexport function DateRangePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder,\n showPresets = true,\n presets: customPresets,\n translations,\n locale,\n onApply,\n isDateDisabled,\n className,\n}: DateRangePickerProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const effectivePlaceholder = placeholder ?? t.placeholder;\n const presetList = React.useMemo(() => {\n if (customPresets?.length) return customPresets;\n if (!showPresets) return [];\n return DEFAULT_PRESET_IDS.map(({ id }) => ({\n id,\n label: translations?.presetLabels?.[id] ?? DEFAULT_PRESET_LABELS[id],\n getRange: () => getPresetRange(id),\n }));\n }, [customPresets, showPresets, translations?.presetLabels]);\n\n const normalizedMin = normalizeDate(minDate);\n const normalizedMax = normalizeDate(maxDate);\n const isMobileLayout = useIsDatePickerMobileLayout();\n const isWideLayout = useIsWideDatePickerLayout();\n const calendarMonths = isMobileLayout ? 1 : isWideLayout ? 2 : 1;\n const [open, setOpen] = React.useState(false);\n const [draft, setDraft] = React.useState<DateRange | undefined>(value);\n const [displayedMonth, setDisplayedMonth] = React.useState(() => value?.from ?? new Date());\n const appliedRef = React.useRef<DateRange | undefined>(value);\n const wasOpenRef = React.useRef(false);\n const useApplyFlow = !!onApply;\n const idScope = React.useId();\n const startInputId = `date-range-start-${idScope}`;\n const endInputId = `date-range-end-${idScope}`;\n\n React.useEffect(() => {\n const wasOpen = wasOpenRef.current;\n wasOpenRef.current = open;\n if (open && !wasOpen) {\n appliedRef.current = value;\n setDraft(value);\n setDisplayedMonth(value?.from ?? new Date());\n } else if (open && wasOpen) {\n setDraft(value);\n }\n }, [open, value]);\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!next && open && !useApplyFlow) {\n onChange(appliedRef.current);\n setDraft(appliedRef.current);\n }\n setOpen(next);\n },\n [open, useApplyFlow, onChange],\n );\n\n const formatOpts = React.useMemo(() => (locale ? { locale } : undefined), [locale]);\n const label = React.useMemo(\n () => formatRangeLabel(value, effectivePlaceholder, formatOpts),\n [effectivePlaceholder, value, formatOpts],\n );\n\n const [inputText, setInputText] = React.useState(label);\n const inputFocusedRef = React.useRef(false);\n React.useEffect(() => {\n if (!inputFocusedRef.current) setInputText(label);\n }, [label]);\n\n const handleInputBlur = () => {\n inputFocusedRef.current = false;\n const next = parseInputToRange(inputText);\n if (next) {\n const formatted =\n next.from && next.to\n ? `${format(next.from, DISPLAY_FORMAT, formatOpts)} \\u2013 ${format(next.to, DISPLAY_FORMAT, formatOpts)}`\n : next.from\n ? format(next.from, DISPLAY_FORMAT, formatOpts)\n : effectivePlaceholder;\n if (useApplyFlow) {\n setDraft(next);\n setInputText(formatted);\n } else {\n onChange(next);\n setInputText(formatted);\n }\n } else {\n setInputText(label);\n }\n };\n\n const disabledMatchers = React.useMemo(() => {\n const toStartOfDay = (d: Date) => {\n const copy = new Date(d);\n copy.setHours(0, 0, 0, 0);\n return copy.getTime();\n };\n const matchers: Array<unknown> = [];\n if (normalizedMin) {\n matchers.push((date: Date) => toStartOfDay(date) < toStartOfDay(normalizedMin!));\n }\n if (normalizedMax) {\n matchers.push((date: Date) => toStartOfDay(date) > toStartOfDay(normalizedMax!));\n }\n if (isDateDisabled) matchers.push((date: Date) => isDateDisabled(date));\n return matchers as import('react-day-picker').Matcher[];\n }, [normalizedMin, normalizedMax, isDateDisabled]);\n\n const handlePreset = (getRange: () => DateRange) => {\n const range = getRange();\n setDraft(range);\n if (!useApplyFlow) onChange(range);\n };\n\n const handleApply = () => {\n if (useApplyFlow) {\n onChange(draft);\n onApply?.(draft);\n }\n setOpen(false);\n };\n\n const handleCancel = () => {\n if (useApplyFlow) {\n setDraft(appliedRef.current);\n } else {\n onChange(appliedRef.current);\n setDraft(appliedRef.current);\n }\n setOpen(false);\n };\n\n const handleSelect = (_next: DateRange | undefined, triggerDate: Date) => {\n const day = normalizeDate(triggerDate);\n if (!day) return;\n setDraft((prev) => {\n if (!prev?.from || (prev.from && prev.to)) {\n const nextRange = { from: day, to: undefined };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n }\n if (day < prev.from) {\n const nextRange = { from: day, to: undefined };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n }\n const nextRange = { from: prev.from, to: day };\n if (!useApplyFlow) onChange(nextRange);\n return nextRange;\n });\n };\n\n const [startInputText, setStartInputText] = React.useState('');\n const [endInputText, setEndInputText] = React.useState('');\n React.useEffect(() => {\n if (open) {\n setStartInputText(draft?.from ? format(draft.from, INPUT_FORMAT) : '');\n setEndInputText(draft?.to ? format(draft.to, INPUT_FORMAT) : '');\n }\n }, [open, draft?.from, draft?.to]);\n\n const commitStartInput = () => {\n const d = parseDate(startInputText);\n if (d) {\n setDraft((prev) => ({ from: d, to: prev?.to && prev.to >= d ? prev.to : undefined }));\n } else {\n setStartInputText(draft?.from ? format(draft.from, INPUT_FORMAT) : '');\n }\n };\n\n const commitEndInput = () => {\n const d = parseDate(endInputText);\n if (d) {\n setDraft((prev) => ({ from: prev?.from && prev.from <= d ? prev.from : d, to: d }));\n } else {\n setEndInputText(draft?.to ? format(draft.to, INPUT_FORMAT) : '');\n }\n };\n\n const fieldsCalendar = (\n <DateRangePickerFieldsCalendar\n calendarMonths={calendarMonths}\n draft={draft}\n displayedMonth={displayedMonth}\n onMonthChange={setDisplayedMonth}\n onSelect={handleSelect}\n disabledMatchers={disabledMatchers}\n locale={locale}\n startInputId={startInputId}\n endInputId={endInputId}\n startLabel={t.startLabel}\n endLabel={t.endLabel}\n startInputText={startInputText}\n endInputText={endInputText}\n effectivePlaceholder={effectivePlaceholder}\n onStartInputChange={setStartInputText}\n onEndInputChange={setEndInputText}\n onCommitStart={commitStartInput}\n onCommitEnd={commitEndInput}\n />\n );\n\n const footer = (\n <DateRangePickerActionFooter\n visible={useApplyFlow || isMobileLayout}\n isMobileLayout={isMobileLayout}\n cancelLabel={t.cancelButton}\n applyLabel={t.applyButton}\n onCancel={handleCancel}\n onApply={handleApply}\n />\n );\n\n const trigger = (\n <DateRangePickerTrigger\n className={className}\n inputText={inputText}\n effectivePlaceholder={effectivePlaceholder}\n isEmpty={!value?.from}\n ariaLabel={t.ariaLabel}\n onOpen={() => setOpen(true)}\n onInputChange={setInputText}\n onInputFocus={() => {\n inputFocusedRef.current = true;\n }}\n onInputBlur={handleInputBlur}\n />\n );\n\n if (isMobileLayout) {\n return (\n <>\n {trigger}\n <Dialog open={open} onOpenChange={handleOpenChange}>\n <DialogContent\n showCloseButton\n className={cn(\n 'h-dvh max-h-dvh w-full max-w-full gap-0 rounded-none border-0 p-0 shadow-[var(--shadow-elevated)]',\n 'top-0 left-0 flex translate-x-0 translate-y-0 flex-col',\n )}\n overlayClassName=\"z-110\"\n >\n <DialogHeader className=\"shrink-0 items-start border-b border-border/50 px-4 py-4 text-left\">\n <DialogTitle className=\"pr-10 text-left text-base\">{t.ariaLabel}</DialogTitle>\n </DialogHeader>\n <div className=\"flex min-h-0 flex-1 flex-col overflow-hidden\">\n <DateRangePickerPresetList\n presets={presetList}\n draft={draft}\n layout=\"mobile-row\"\n onPreset={handlePreset}\n />\n <div className=\"flex min-h-0 flex-1 flex-col overflow-y-auto px-4 py-4\">\n <div className=\"mx-auto flex w-full max-w-md flex-col items-center\">\n {fieldsCalendar}\n </div>\n </div>\n {footer}\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn(\n surfaceOverlay,\n 'w-auto max-w-[min(calc(100vw-1.5rem),52rem)] overflow-hidden p-0',\n calendarMonths === 2 && 'min-w-[36rem]',\n )}\n align=\"start\"\n sideOffset={8}\n >\n <div className=\"flex flex-col sm:flex-row\">\n <DateRangePickerPresetList\n presets={presetList}\n draft={draft}\n layout=\"sidebar\"\n presetsHeading={t.presetsHeading}\n onPreset={handlePreset}\n />\n <div className=\"flex min-w-0 flex-1 flex-col bg-background\">\n <div className=\"flex w-full flex-col items-stretch p-4\">{fieldsCalendar}</div>\n {footer}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\n/** About 6-7 options visible, then scroll; still shrinks when the viewport is short. */\nexport const dropdownMenuSelectOptionsMaxHeightClassName =\n 'max-h-[min(var(--radix-dropdown-menu-content-available-height),17rem)]';\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\ntype DropdownMenuContentProps = React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n /**\n * When false, render inline instead of portaling to document.body so wheel scroll works\n * inside modal Sheet/Dialog scroll locks (e.g. Select in FormDrawer).\n * @default true\n */\n portalled?: boolean;\n};\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n portalled = true,\n ...props\n}: DropdownMenuContentProps) {\n const content = (\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n surfaceOverlay,\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto p-1',\n className,\n )}\n {...props}\n />\n );\n\n if (!portalled) {\n return content;\n }\n\n return <DropdownMenuPrimitive.Portal>{content}</DropdownMenuPrimitive.Portal>;\n}\n\nfunction DropdownMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item>) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger };\n","import { ChevronDown, ChevronUp } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport type DropdownScrollableListProps = {\n children: React.ReactNode;\n /** When this changes, overflow and fade visibility are recomputed */\n scrollKey?: string | number;\n className?: string;\n /**\n * When true (default), the list fills a flex parent with max-height (e.g. Select).\n * When false, only `scrollAreaClassName` sizes the scroll region (e.g. MultiSelect).\n */\n grow?: boolean;\n /** Extra classes on the scrollable element; when `grow` is false, this must include max-height and overflow */\n scrollAreaClassName?: string;\n};\n\nexport function DropdownScrollableList({\n children,\n scrollKey,\n className,\n scrollAreaClassName,\n grow = true,\n}: DropdownScrollableListProps) {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const [showTop, setShowTop] = React.useState(false);\n const [showBottom, setShowBottom] = React.useState(false);\n\n const update = React.useCallback(() => {\n const el = scrollRef.current;\n if (!el) {\n setShowTop(false);\n setShowBottom(false);\n return;\n }\n const { scrollTop, scrollHeight, clientHeight } = el;\n const overflow = scrollHeight - clientHeight > 2;\n if (!overflow) {\n setShowTop(false);\n setShowBottom(false);\n return;\n }\n setShowTop(scrollTop > 2);\n setShowBottom(scrollTop + clientHeight < scrollHeight - 2);\n }, []);\n\n React.useLayoutEffect(() => {\n update();\n const id = requestAnimationFrame(() => {\n requestAnimationFrame(update);\n });\n return () => cancelAnimationFrame(id);\n }, [update, scrollKey]);\n\n React.useEffect(() => {\n const el = scrollRef.current;\n if (!el) return;\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n const ro = new ResizeObserver(() => {\n window.requestAnimationFrame(update);\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [update]);\n\n return (\n <div className={cn('relative flex min-h-0 flex-col', grow && 'flex-1', className)}>\n <div\n ref={scrollRef}\n className={cn(\n grow\n ? cn('min-h-0 flex-1 overflow-y-auto overscroll-y-contain p-1', scrollAreaClassName)\n : scrollAreaClassName,\n )}\n onScroll={update}\n >\n {children}\n </div>\n {showTop ? (\n <div\n className=\"pointer-events-none absolute inset-x-0 top-0 z-[1] flex h-6 flex-col items-center justify-start pt-px\"\n aria-hidden\n >\n <div className=\"absolute inset-0 bg-gradient-to-b from-popover via-popover/35 to-transparent backdrop-blur-[0.5px]\" />\n <ChevronUp\n className=\"relative z-[2] h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-90 drop-shadow-sm\"\n strokeWidth={2.5}\n />\n </div>\n ) : null}\n {showBottom ? (\n <div\n className=\"pointer-events-none absolute inset-x-0 bottom-0 z-[1] flex h-6 flex-col items-center justify-end pb-px\"\n aria-hidden\n >\n <div className=\"absolute inset-0 bg-gradient-to-t from-popover via-popover/35 to-transparent backdrop-blur-[0.5px]\" />\n <ChevronDown\n className=\"relative z-[2] h-3.5 w-3.5 shrink-0 text-muted-foreground opacity-90 drop-shadow-sm\"\n strokeWidth={2.5}\n />\n </div>\n ) : null}\n </div>\n );\n}\n","import { cn } from '../../../lib/utils';\nimport { Input } from '../input';\n\nexport type DropdownSelectSearchInputProps = {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n autoFocus?: boolean;\n};\n\nexport function DropdownSelectSearchInput({\n value,\n onChange,\n placeholder = 'Search…',\n className,\n autoFocus = false,\n}: DropdownSelectSearchInputProps) {\n return (\n <div className={cn('shrink-0 px-1 pb-2 pt-1', className)}>\n <Input\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n aria-label={placeholder}\n autoFocus={autoFocus}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </div>\n );\n}\n","import * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none tracking-tight text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>) {\n return (\n <LabelPrimitive.Root data-slot=\"label\" className={cn(labelVariants(), className)} {...props} />\n );\n}\n\nexport { Label };\n","import type * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\n\nimport { cn } from '../../../lib/utils';\nimport { Label } from '../label';\n\nexport const Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue | null>(null);\n\nexport const FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nexport const useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n\n if (fieldContext === null || fieldContext === undefined) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\nexport function FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div data-slot=\"form-item\" className={cn('grid gap-3', className)} {...props} />\n </FormItemContext.Provider>\n );\n}\n\nexport function FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn('data-[error=true]:text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nexport function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nexport function FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nexport function FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('text-destructive text-sm', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n","import * as React from 'react';\n\nconst InsideModalScrollLockContext = React.createContext(false);\n\nexport function InsideModalScrollLockProvider({\n children,\n active = true,\n}: {\n children: React.ReactNode;\n active?: boolean;\n}) {\n return (\n <InsideModalScrollLockContext.Provider value={active}>\n {children}\n </InsideModalScrollLockContext.Provider>\n );\n}\n\nexport function useInsideModalScrollLock(): boolean {\n return React.useContext(InsideModalScrollLockContext);\n}\n","import * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport type * as React from 'react';\n\nimport {\n isRadixPortaledOverlay,\n preventDismissOnPortaledOverlay,\n} from '../../../lib/radix-overlays';\nimport { cn } from '../../../lib/utils';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger {...props} />;\n}\n\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close {...props} />;\n}\n\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n className={cn(\n 'fixed inset-0 z-[100] bg-foreground/20 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n onPointerDownOutside,\n onInteractOutside,\n onFocusOutside,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n onPointerDownOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onPointerDownOutside?.(event);\n }\n }}\n onInteractOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onInteractOutside?.(event);\n }\n }}\n onFocusOutside={(event) => {\n preventDismissOnPortaledOverlay(event);\n if (!event.defaultPrevented) {\n onFocusOutside?.(event);\n }\n }}\n className={cn(\n 'bg-background border-border/50 data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-[100] flex flex-col gap-4 border p-6 shadow-[var(--shadow-elevated)] transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 overflow-y-auto overflow-x-hidden max-h-full',\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-11/12 border-l sm:max-w-sm',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-11/12 border-r sm:max-w-sm',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',\n className,\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-6 right-6 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-2 text-left pb-4', className)} {...props} />\n);\nSheetHeader.displayName = 'SheetHeader';\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse gap-2 pt-4 border-t sm:flex-row sm:justify-end sm:space-x-2 sm:gap-0',\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = 'SheetFooter';\n\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n className={cn('text-lg font-semibold text-foreground', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\nexport {\n isRadixPortaledOverlay,\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n};\n","import type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { InsideModalScrollLockProvider } from '../inside-modal-scroll-lock';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '../sheet';\n\nexport interface FormDrawerProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description?: string;\n children: React.ReactNode;\n /** Max width class - default sm:max-w-lg for form drawers */\n className?: string;\n /** Sheet content class for overflow/scrolling */\n contentClassName?: string;\n}\n\n/**\n * A drawer shell for forms. Provides consistent Sheet + Header layout.\n * The form content (including SheetFooter) is provided by children.\n * Mobile-friendly: full width on small screens, max-width on larger.\n */\nexport function FormDrawer({\n open,\n onOpenChange,\n title,\n description,\n children,\n className,\n contentClassName,\n}: FormDrawerProps) {\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n data-slot=\"form-drawer-content\"\n className={cn(\n 'flex flex-col gap-4 w-[calc(100%-2rem)] max-w-[calc(100%-2rem)] sm:max-w-lg overflow-hidden',\n contentClassName,\n )}\n >\n <SheetHeader className=\"flex-shrink-0 gap-2 pb-2\">\n <SheetTitle className=\"text-base sm:text-lg\">{title}</SheetTitle>\n {description && <SheetDescription className=\"text-sm\">{description}</SheetDescription>}\n </SheetHeader>\n <InsideModalScrollLockProvider>\n <div\n className={cn(\n // Inset so focus rings / box-shadow on full-width inputs are not clipped by overflow-y-auto\n 'flex flex-col flex-1 min-h-0 gap-4 overflow-y-auto px-2 py-1',\n className,\n )}\n >\n {children}\n </div>\n </InsideModalScrollLockProvider>\n </SheetContent>\n </Sheet>\n );\n}\n","import type * as React from 'react';\nimport { cn } from '../../../lib/utils';\n\nconst linkStyles =\n 'cursor-pointer font-medium text-blue-600 underline-offset-4 hover:text-blue-700 hover:underline dark:text-blue-400 dark:hover:text-blue-300';\n\n/** Allowed URL schemes for href. Blocks javascript:, data:, vbscript:, etc. to prevent XSS. */\nconst ALLOWED_SCHEMES = ['http:', 'https:', 'mailto:', 'tel:', ''];\n\nfunction sanitizeHref(to: string): string {\n const trimmed = to.trim();\n if (!trimmed) return '#';\n const hasScheme = /^[a-z][a-z0-9+.-]*:/i.test(trimmed);\n if (hasScheme) {\n const scheme = trimmed.split(':')[0];\n if (scheme && !ALLOWED_SCHEMES.includes(`${scheme.toLowerCase()}:`)) {\n return '#';\n }\n }\n return trimmed;\n}\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** URL or path (rendered as href on a plain <a>) */\n to: string;\n /** Open in new tab with security attributes */\n external?: boolean;\n}\n\n/** @deprecated Unused in SPAs — prefer react-router `Link`. Kept for Storybook demos only. */\nfunction Link({ className, external, to, ...props }: LinkProps) {\n const href = sanitizeHref(to);\n if (external) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(linkStyles, className)}\n {...props}\n />\n );\n }\n return <a href={href} className={cn(linkStyles, className)} {...props} />;\n}\n\nexport { Link, linkStyles };\n","import { CheckSquare, X } from 'lucide-react';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\nimport { Badge } from '../badge';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '../dropdown-menu';\nimport { DropdownScrollableList } from '../dropdown-scrollable-list';\nimport { Input } from '../input';\nimport { useInsideModalScrollLock } from '../inside-modal-scroll-lock';\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n}\n\nexport interface MultiSelectTranslations {\n triggerLabel?: string;\n searchPlaceholder?: string;\n noOptionsText?: string;\n removeOptionAriaLabel?: string;\n}\n\ninterface MultiSelectProps {\n value: string[];\n onValueChange: (value: string[]) => void;\n options: MultiSelectOption[];\n disabled?: boolean;\n className?: string;\n 'aria-label'?: string;\n /** When true, selected values render as removable tags above the trigger. */\n showSelectedTags?: boolean;\n translations?: MultiSelectTranslations;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<MultiSelectTranslations> = {\n triggerLabel: 'Select options',\n searchPlaceholder: 'Search...',\n noOptionsText: 'No options',\n removeOptionAriaLabel: 'Remove',\n};\n\nfunction MultiSelect({\n value,\n onValueChange,\n options,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n showSelectedTags = false,\n translations,\n}: MultiSelectProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const insideModalScrollLock = useInsideModalScrollLock();\n const [search, setSearch] = React.useState('');\n const selectedSet = React.useMemo(() => new Set(value), [value]);\n const labelByValue = React.useMemo(() => {\n const map = new Map<string, string>();\n for (const opt of options) map.set(opt.value, opt.label);\n return map;\n }, [options]);\n const filteredOptions = React.useMemo(() => {\n const q = search.trim().toLowerCase();\n if (!q) return options;\n return options.filter((opt) => opt.label.toLowerCase().includes(q));\n }, [options, search]);\n\n const toggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onValueChange([...value, optionValue]);\n return;\n }\n onValueChange(value.filter((item) => item !== optionValue));\n };\n\n return (\n <div className={cn('space-y-2', className)}>\n {showSelectedTags && value.length > 0 ? (\n <div className=\"flex flex-wrap gap-1.5\">\n {value.map((optionValue) => {\n const label = labelByValue.get(optionValue) ?? optionValue;\n return (\n <Badge key={optionValue} variant=\"secondary\" className=\"gap-1 pr-1 font-normal\">\n {label}\n {!disabled ? (\n <button\n type=\"button\"\n className=\"rounded-full p-0.5 hover:bg-muted-foreground/20\"\n aria-label={`${t.removeOptionAriaLabel} ${label}`}\n onClick={() => toggle(optionValue, false)}\n >\n <X className=\"h-3 w-3\" />\n </button>\n ) : null}\n </Badge>\n );\n })}\n </div>\n ) : null}\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"w-full justify-between\"\n aria-label={ariaLabel ?? t.triggerLabel}\n disabled={disabled}\n >\n <span className=\"inline-flex items-center gap-2\">\n <CheckSquare className=\"h-4 w-4\" />\n {t.triggerLabel}\n </span>\n {!showSelectedTags && value.length > 0 ? (\n <Badge variant=\"secondary\">{value.length}</Badge>\n ) : null}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n portalled={!insideModalScrollLock}\n className=\"z-120 flex w-(--radix-dropdown-menu-trigger-width) min-w-[16rem] flex-col overflow-hidden p-0\"\n >\n <div className=\"shrink-0 px-1 pb-2 pt-1\">\n <Input\n value={search}\n onChange={(event) => setSearch(event.target.value)}\n placeholder={t.searchPlaceholder}\n aria-label={t.searchPlaceholder}\n />\n </div>\n <DropdownScrollableList\n grow={false}\n scrollAreaClassName=\"max-h-52 overflow-y-auto\"\n scrollKey={`${filteredOptions.length}:${search}`}\n >\n {filteredOptions.length === 0 ? (\n <p className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t.noOptionsText}</p>\n ) : (\n filteredOptions.map((option) => {\n const checked = selectedSet.has(option.value);\n return (\n <DropdownMenuItem\n key={option.value}\n onSelect={(event) => {\n event.preventDefault();\n toggle(option.value, !checked);\n }}\n >\n <Checkbox checked={checked} />\n {option.label}\n </DropdownMenuItem>\n );\n })\n )}\n </DropdownScrollableList>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nexport { MultiSelect };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","/** Show search in single-select dropdowns when option count reaches this threshold. */\nexport const SEARCHABLE_SELECT_MIN_OPTIONS = 8;\n\nexport interface SelectSearchableOption {\n label: string;\n}\n\nexport function filterSelectOptions<T extends SelectSearchableOption>(\n options: T[],\n query: string,\n): T[] {\n const q = query.trim().toLowerCase();\n if (!q) return options;\n return options.filter((option) => option.label.toLowerCase().includes(q));\n}\n\nexport function isSelectSearchable(optionCount: number, searchable?: boolean): boolean {\n if (searchable === true) return true;\n if (searchable === false) return false;\n return optionCount >= SEARCHABLE_SELECT_MIN_OPTIONS;\n}\n","import * as React from 'react';\nimport { controlBase, controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n dropdownMenuSelectOptionsMaxHeightClassName,\n} from '../dropdown-menu';\nimport { DropdownScrollableList } from '../dropdown-scrollable-list';\nimport { DropdownSelectSearchInput } from '../dropdown-select-search-input';\nimport { useInsideModalScrollLock } from '../inside-modal-scroll-lock';\nimport { filterSelectOptions, isSelectSearchable } from '../select-search';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectTranslations {\n searchPlaceholder?: string;\n noOptionsText?: string;\n}\n\ninterface SelectProps {\n value: string;\n onValueChange: (value: string) => void;\n options: SelectOption[];\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n triggerClassName?: string;\n /** When omitted, search appears automatically for 8+ options. */\n searchable?: boolean;\n translations?: SelectTranslations;\n 'aria-label'?: string;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<SelectTranslations> = {\n searchPlaceholder: 'Search…',\n noOptionsText: 'No options',\n};\n\nfunction Select({\n value,\n onValueChange,\n options,\n placeholder = '',\n disabled = false,\n className,\n triggerClassName,\n searchable,\n translations,\n 'aria-label': ariaLabel,\n}: SelectProps) {\n const t = { ...DEFAULT_TRANSLATIONS, ...translations };\n const insideModalScrollLock = useInsideModalScrollLock();\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState('');\n const showSearch = isSelectSearchable(options.length, searchable);\n const filteredOptions = React.useMemo(\n () => (showSearch ? filterSelectOptions(options, search) : options),\n [options, search, showSearch],\n );\n const selectedOption = options.find((opt) => opt.value === value);\n const displayValue = selectedOption?.label ?? placeholder;\n\n const handleOpenChange = (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (!nextOpen) setSearch('');\n };\n\n return (\n <DropdownMenu modal={false} open={open} onOpenChange={handleOpenChange}>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-label={ariaLabel}\n aria-haspopup=\"listbox\"\n disabled={disabled}\n className={cn(\n controlBase,\n controlFocus,\n 'flex h-9 w-full cursor-pointer items-center justify-between px-3 py-2 text-sm',\n 'hover:bg-accent/40 disabled:pointer-events-none disabled:opacity-50',\n !value && 'text-muted-foreground',\n triggerClassName,\n className,\n )}\n >\n <span className=\"min-w-0 truncate text-left\">{displayValue}</span>\n <ChevronDownIcon className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n sideOffset={0}\n portalled={!insideModalScrollLock}\n className=\"z-[120] flex min-w-(--radix-dropdown-menu-trigger-width) flex-col overflow-hidden p-0\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n {showSearch ? (\n <DropdownSelectSearchInput\n value={search}\n onChange={setSearch}\n placeholder={t.searchPlaceholder}\n autoFocus={open}\n />\n ) : null}\n <DropdownScrollableList\n grow={false}\n scrollAreaClassName={cn(\n 'overflow-y-auto overscroll-y-contain p-1 pb-6',\n dropdownMenuSelectOptionsMaxHeightClassName,\n )}\n scrollKey={`${filteredOptions.length}-${open ? 1 : 0}-${search}`}\n >\n {filteredOptions.length === 0 ? (\n <p className=\"px-2 py-1.5 text-sm text-muted-foreground\">{t.noOptionsText}</p>\n ) : (\n filteredOptions.map((opt) => (\n <DropdownMenuItem\n key={opt.value}\n onClick={() => {\n onValueChange(opt.value);\n setOpen(false);\n setSearch('');\n }}\n >\n {opt.label}\n </DropdownMenuItem>\n ))\n )}\n </DropdownScrollableList>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction ChevronDownIcon({ className, ...props }: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n {...props}\n >\n <title>Chevron down</title>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nexport { Select };\n","import * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className,\n )}\n {...props}\n />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import * as SwitchPrimitive from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { controlFocus } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n data-slot=\"switch\"\n className={cn(\n 'peer inline-flex h-[22px] w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-[var(--shadow-surface)] transition-colors',\n controlFocus,\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'pointer-events-none block size-[18px] rounded-full bg-background shadow-sm ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5',\n )}\n />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n\nexport { Switch };\n","import * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn('[&_tr]:border-border/40 [&_tr]:border-b', className)}\n {...props}\n />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n 'border-border/40 border-t bg-muted/40 font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-border/40 border-b transition-colors hover:bg-muted/40 data-[state=selected]:bg-muted/60',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}\n {...props}\n />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };\n","import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport type * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nexport function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn('flex flex-col gap-2', className)}\n {...props}\n />\n );\n}\n\nexport function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n );\n}\n","import * as React from 'react';\n\nimport { controlBase, controlFocus, controlInvalid } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\n/** Multi-line text field. See Storybook **UI/Textarea**. */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, React.ComponentProps<'textarea'>>(\n ({ className, ...props }, ref) => (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n controlBase,\n controlFocus,\n controlInvalid,\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground',\n 'flex min-h-[96px] w-full min-w-0 px-3 py-2 text-base md:text-sm',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n ),\n);\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { surfaceOverlay } from '../../../lib/surfaces';\nimport { cn } from '../../../lib/utils';\n\nexport const TooltipProvider = TooltipPrimitive.Provider;\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: 'top' | 'right' | 'bottom' | 'left';\n align?: 'start' | 'center' | 'end';\n /**\n * Delay (in ms) before the tooltip opens on hover.\n */\n delayDuration?: number;\n /**\n * Delay (in ms) before the tooltip closes after hover ends.\n */\n closeDelay?: number;\n}\n\n/**\n * Tooltip that opens only on hover (not on focus), so it does not open when\n * the trigger receives focus from keyboard or from opening a dialog/sheet.\n *\n * Includes a small hover delay to avoid \"tooltip spam\" when simply moving\n * the mouse across the screen.\n */\nexport function Tooltip({\n content,\n children,\n side = 'top',\n align = 'center',\n delayDuration = 400,\n closeDelay = 100,\n}: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n\n const openTimeoutRef = React.useRef<number | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n const clearOpenTimeout = React.useCallback(() => {\n if (openTimeoutRef.current !== null) {\n window.clearTimeout(openTimeoutRef.current);\n openTimeoutRef.current = null;\n }\n }, []);\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n window.clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n // Let Radix close the tooltip (e.g. on Escape, outside interactions),\n // but we control opening via our own hover timers.\n if (!next) {\n clearOpenTimeout();\n clearCloseTimeout();\n setOpen(false);\n }\n },\n [clearCloseTimeout, clearOpenTimeout],\n );\n\n const handlePointerEnter = React.useCallback(() => {\n clearCloseTimeout();\n clearOpenTimeout();\n\n openTimeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n }, [clearCloseTimeout, clearOpenTimeout, delayDuration]);\n\n const handlePointerLeave = React.useCallback(() => {\n clearOpenTimeout();\n clearCloseTimeout();\n\n if (closeDelay === 0) {\n setOpen(false);\n return;\n }\n\n closeTimeoutRef.current = window.setTimeout(() => {\n setOpen(false);\n }, closeDelay);\n }, [clearCloseTimeout, clearOpenTimeout, closeDelay]);\n\n React.useEffect(\n () => () => {\n clearOpenTimeout();\n clearCloseTimeout();\n },\n [clearCloseTimeout, clearOpenTimeout],\n );\n\n return (\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger\n asChild\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n >\n {children}\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={6}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n className={cn(\n surfaceOverlay,\n 'z-110 max-w-xs px-3 py-2 text-sm outline-none',\n 'animate-in fade-in-0 zoom-in-95',\n 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n )}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../../lib/utils';\n\nconst headingVariants = cva('font-semibold tracking-tight text-foreground', {\n variants: {\n level: {\n h1: 'text-3xl font-bold',\n h2: 'text-2xl',\n h3: 'text-xl',\n h4: 'text-lg',\n },\n },\n defaultVariants: {\n level: 'h1',\n },\n});\n\nconst paragraphVariants = cva('text-muted-foreground leading-relaxed', {\n variants: {\n size: {\n default: 'text-base',\n sm: 'text-sm',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\ninterface HeadingProps\n extends React.HTMLAttributes<HTMLHeadingElement>,\n VariantProps<typeof headingVariants> {\n /** Semantic heading level when it differs from visual `level`. */\n as?: 'h1' | 'h2' | 'h3' | 'h4';\n}\n\n/** Page and section headings using theme foreground color. */\nconst Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n ({ className, level, as, ...props }, ref) => {\n const Component =\n as || (level === 'h1' ? 'h1' : level === 'h2' ? 'h2' : level === 'h3' ? 'h3' : 'h4');\n return (\n <Component\n ref={ref}\n className={cn(headingVariants({ level: level || as }), className)}\n {...props}\n />\n );\n },\n);\nHeading.displayName = 'Heading';\n\ninterface ParagraphProps\n extends React.HTMLAttributes<HTMLParagraphElement>,\n VariantProps<typeof paragraphVariants> {}\n\n/** Body copy with muted foreground by default. */\nconst Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n ({ className, size, ...props }, ref) => {\n return <p ref={ref} className={cn(paragraphVariants({ size }), className)} {...props} />;\n },\n);\nParagraph.displayName = 'Paragraph';\n\n/** Convenience wrapper for level-3 headings. */\nconst H3 = React.forwardRef<HTMLHeadingElement, Omit<HeadingProps, 'level' | 'as'>>(\n ({ className, ...props }, ref) => (\n <Heading ref={ref} level=\"h3\" as=\"h3\" className={className} {...props} />\n ),\n);\nH3.displayName = 'H3';\n\nexport { H3, Heading, headingVariants, Paragraph, paragraphVariants };\n","import { FileText, ImagePlus, UploadCloud } from 'lucide-react';\nimport { useEffect, useId, useRef, useState } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\n\nexport interface UploadDropzoneTranslations {\n imageAlt?: string;\n dropHintText?: string;\n chooseImageText?: string;\n /** Used when `variant=\"file\"` for the primary picker button label */\n chooseFileText?: string;\n removeText?: string;\n removeExistingImageText?: string;\n}\n\nconst DEFAULT_TRANSLATIONS: Required<UploadDropzoneTranslations> = {\n imageAlt: 'Image',\n dropHintText: 'Drag and drop an image here, or click to choose a file.',\n chooseImageText: 'Choose image',\n chooseFileText: 'Choose file',\n removeText: 'Remove',\n removeExistingImageText: 'Remove existing image',\n};\n\ninterface UploadDropzoneBaseProps {\n value: File | null;\n onChange: (file: File | null) => void;\n translations?: UploadDropzoneTranslations;\n /** Reject files larger than this size (bytes). Invokes `onFileTooLarge` when set. */\n maxSizeBytes?: number;\n onFileTooLarge?: () => void;\n}\n\nexport interface UploadDropzoneImageProps extends UploadDropzoneBaseProps {\n variant?: 'image';\n existingImageUrl?: string;\n removeExistingImage?: boolean;\n onRemoveExistingImageChange?: (value: boolean) => void;\n}\n\nexport interface UploadDropzoneFileProps extends UploadDropzoneBaseProps {\n variant: 'file';\n /** Passed to the native file input, e.g. `.pdf,.docx` */\n accept?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport type UploadDropzoneProps = UploadDropzoneImageProps | UploadDropzoneFileProps;\n\nfunction UploadDropzone(props: UploadDropzoneProps) {\n const isFile = props.variant === 'file';\n const inputId = useId();\n const removeExistingLabelId = useId();\n const pickerDisabled = isFile && props.disabled;\n const t = { ...DEFAULT_TRANSLATIONS, ...props.translations };\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n const [previewUrl, setPreviewUrl] = useState<string | null>(null);\n\n useEffect(() => {\n if (isFile) {\n if (!props.value || !props.value.type.startsWith('video/')) {\n setPreviewUrl(null);\n return;\n }\n const nextUrl = URL.createObjectURL(props.value);\n setPreviewUrl(nextUrl);\n return () => URL.revokeObjectURL(nextUrl);\n }\n if (!props.value) {\n setPreviewUrl(null);\n return;\n }\n const nextUrl = URL.createObjectURL(props.value);\n setPreviewUrl(nextUrl);\n return () => URL.revokeObjectURL(nextUrl);\n }, [isFile, props.value]);\n\n const handleFile = (file: File | null) => {\n if (!file) return;\n if (props.maxSizeBytes != null && file.size > props.maxSizeBytes) {\n props.onFileTooLarge?.();\n return;\n }\n if (isFile) {\n if (props.disabled) return;\n props.onChange(file);\n return;\n }\n if (!file.type.startsWith('image/')) return;\n props.onChange(file);\n props.onRemoveExistingImageChange?.(false);\n };\n\n const displayedImage =\n !isFile && (previewUrl ?? (!props.removeExistingImage ? props.existingImageUrl : undefined));\n\n const dashedClasses = cn(\n 'block rounded-xl border-2 border-dashed border-border/55 p-4 transition-colors',\n pickerDisabled && 'pointer-events-none opacity-50',\n !pickerDisabled && 'cursor-pointer hover:border-primary/50 hover:bg-muted/15',\n isDragging ? 'border-primary/70 bg-primary/5' : undefined,\n );\n\n const chooseLabel = isFile ? t.chooseFileText : t.chooseImageText;\n\n return (\n <div className={cn('space-y-3', isFile ? props.className : undefined)}>\n <label\n htmlFor={pickerDisabled ? undefined : inputId}\n className={dashedClasses}\n onDragOver={(event) => {\n event.preventDefault();\n if (pickerDisabled) return;\n setIsDragging(true);\n }}\n onDragLeave={() => setIsDragging(false)}\n onDrop={(event) => {\n event.preventDefault();\n setIsDragging(false);\n if (pickerDisabled) return;\n const file = event.dataTransfer.files?.[0] ?? null;\n handleFile(file);\n }}\n >\n <input\n id={inputId}\n ref={inputRef}\n type=\"file\"\n accept={isFile ? props.accept : 'image/*'}\n disabled={pickerDisabled || undefined}\n className=\"sr-only\"\n onChange={(event) => handleFile(event.target.files?.[0] ?? null)}\n />\n {isFile ? (\n <div className=\"mb-3 flex min-h-28 flex-col items-center justify-center gap-2 rounded-lg border border-border/45 bg-muted/20 px-3 py-4 text-center\">\n {previewUrl ? (\n <video\n src={previewUrl}\n controls\n className=\"max-h-44 w-full rounded-lg border border-border/45 bg-foreground\"\n />\n ) : (\n <FileText className=\"h-8 w-8 shrink-0 text-muted-foreground\" aria-hidden />\n )}\n {props.value ? (\n <p className=\"line-clamp-2 w-full break-all text-sm font-medium\">\n {props.value.name}\n </p>\n ) : null}\n </div>\n ) : displayedImage ? (\n <img\n src={displayedImage}\n alt={t.imageAlt}\n className=\"mb-3 h-44 w-full rounded-lg border border-border/45 object-cover\"\n />\n ) : (\n <div className=\"mb-3 flex h-32 items-center justify-center rounded-lg border border-border/45 bg-muted/20\">\n <ImagePlus className=\"h-8 w-8 text-muted-foreground\" aria-hidden />\n </div>\n )}\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n <p className=\"text-xs text-muted-foreground\">{t.dropHintText}</p>\n <div className=\"flex flex-wrap gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n inputRef.current?.click();\n }}\n >\n <UploadCloud className=\"mr-2 h-4 w-4\" aria-hidden />\n {chooseLabel}\n </Button>\n {props.value ? (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={pickerDisabled || undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n props.onChange(null);\n }}\n >\n {t.removeText}\n </Button>\n ) : null}\n </div>\n </div>\n </label>\n\n {!isFile &&\n props.existingImageUrl &&\n props.onRemoveExistingImageChange &&\n t.removeExistingImageText ? (\n <div className=\"flex items-center justify-between rounded-lg border border-border/45 bg-muted/15 px-3 py-2\">\n <span className=\"text-xs text-muted-foreground\" id={removeExistingLabelId}>\n {t.removeExistingImageText}\n </span>\n <Checkbox\n aria-labelledby={removeExistingLabelId}\n checked={props.removeExistingImage}\n onCheckedChange={(checked) => props.onRemoveExistingImageChange?.(checked === true)}\n />\n </div>\n ) : null}\n </div>\n );\n}\n\nexport { UploadDropzone };\n"]}