shadcn-zod-formkit 1.34.0 → 1.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +5 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +5 -4
- package/dist/index.mjs.map +1 -1
- package/dist/shadcn-zod-formkit-1.34.1.tgz +0 -0
- package/package.json +1 -1
- package/dist/shadcn-zod-formkit-1.34.0.tgz +0 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/clsx/dist/clsx.mjs","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/custom/custom-alert.tsx","../src/components/custom/form/input-errors.ts","../src/components/custom/form/inputs/base/base-input.ts","../src/components/custom/form/inputs/base/definitions.ts","../src/components/custom/form/inputs/base/input-types.ts","../src/components/ui/accordion.tsx","../src/components/ui/badge.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/popover.tsx","../src/components/ui/color-input.tsx","../src/components/ui/dialog.tsx","../src/components/ui/label.tsx","../src/components/ui/separator.tsx","../src/components/ui/field.tsx","../src/components/ui/form.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/input-group.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/tooltip.tsx","../src/components/custom/form/inputs/types/grouped-switches-input.tsx","../src/components/custom/form/inputs/types/accordion-grouped-switches.tsx","../src/components/ui/button-group.tsx","../src/components/custom/form/inputs/types/button-group-input.tsx","../src/components/custom/form/inputs/types/check-list-input.tsx","../src/components/custom/form/inputs/types/checkbox-input.tsx","../src/components/custom/form/inputs/types/color-input.tsx","../src/components/ui/command.tsx","../src/components/custom/form/inputs/types/combo-box-input.tsx","../src/components/custom/form/inputs/types/currency-input.tsx","../src/components/custom/form/inputs/types/date-input.tsx","../src/components/custom/form/inputs/types/date-time-input.tsx","../src/components/custom/form/inputs/types/file-input.tsx","../src/components/custom/form/inputs/types/file-multi-input.tsx","../src/components/custom/form/inputs/types/text-input-group.tsx","../src/components/custom/form/inputs/types/key-value-input.tsx","../src/components/custom/form/inputs/types/multi-select-input.tsx","../src/components/custom/form/inputs/types/number-input.tsx","../src/components/custom/form/inputs/types/otp-input.tsx","../src/components/custom/form/inputs/types/radio-group-input.tsx","../src/components/custom/form/inputs/types/repeater-input.tsx","../src/components/ui/tabs.tsx","../src/components/custom/form/inputs/types/repeater-tabs-input.tsx","../src/components/custom/form/inputs/types/select-input.tsx","../src/components/custom/form/inputs/types/simple-check-list-input.tsx","../src/components/ui/slider.tsx","../src/components/custom/form/inputs/types/slide-input.tsx","../src/components/custom/form/inputs/types/sortable-list-input.tsx","../src/components/custom/form/inputs/types/string-value-input.tsx","../src/components/custom/form/inputs/types/switch-input.tsx","../src/components/custom/form/inputs/types/tags-input.tsx","../src/components/custom/form/inputs/types/text-area-input.tsx","../src/components/custom/form/inputs/types/text-input.tsx","../src/components/custom/form/inputs/types/time-input.tsx","../src/components/custom/form/inputs/input-factory.tsx","../src/components/custom/form/inputs/base/form-errors.tsx","../src/components/custom/form/inputs/FormFieldsGrid.tsx","../src/components/custom/form/inputs/DynamicForm.tsx","../src/components/ui/stepper.tsx","../src/components/custom/form/inputs/WizardForm.tsx","../src/components/custom/form/inputs/DynamicFormExample.tsx","../src/components/custom/input-list.tsx","../src/components/custom/others/GenericFilter.tsx"],"names":["jsx","TextInputType","InputTypes","jsxs","cva","Slot","className","props","ChevronDownIcon","React","React2","React4","CheckIcon","Sonner","useState","input","useEffect","useColor","ColorPicker","CommandPrimitive","React6","value","useMemo","CircleCheck","CircleX","Loader2","React7","Fragment","useRef","Info","EyeOff","Eye","Label","ChevronsUpDown","Check","OTPInput","Trash2","Plus","useFieldArray","React8","FieldTimeInput","flattenFields","z","fieldCopy","renderUp","renderDown"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,EAAE,CAAA,EAAE;AAAC,EAAA,IAAI,CAAA,EAAE,GAAE,CAAA,GAAE,EAAA;AAAG,EAAA,IAAG,YAAU,OAAO,CAAA,IAAG,QAAA,IAAU,OAAO,GAAE,CAAA,IAAG,CAAA;AAAA,OAAA,IAAU,YAAU,OAAO,CAAA,MAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAC,IAAA,IAAI,IAAE,CAAA,CAAE,MAAA;AAAO,IAAA,KAAI,IAAE,CAAA,EAAE,CAAA,GAAE,CAAA,EAAE,CAAA,EAAA,IAAM,CAAC,CAAA,KAAI,CAAA,GAAE,CAAA,CAAE,EAAE,CAAC,CAAC,OAAK,CAAA,KAAI,CAAA,IAAG,MAAK,CAAA,IAAG,CAAA,CAAA;AAAA,EAAE,CAAA,MAAM,KAAI,CAAA,IAAK,CAAA,EAAE,CAAA,CAAE,CAAC,CAAA,KAAI,CAAA,KAAI,CAAA,IAAG,GAAA,CAAA,EAAK,CAAA,IAAG,CAAA,CAAA;AAAG,EAAA,OAAO,CAAA;AAAC;AAAQ,SAAS,IAAA,GAAM;AAAC,EAAA,KAAA,IAAQ,CAAA,EAAE,CAAA,EAAE,CAAA,GAAE,CAAA,EAAE,CAAA,GAAE,IAAG,CAAA,GAAE,SAAA,CAAU,MAAA,EAAO,CAAA,GAAE,CAAA,EAAE,CAAA,EAAA,GAAK,CAAA,GAAE,SAAA,CAAU,CAAC,CAAA,MAAK,CAAA,GAAE,CAAA,CAAE,CAAC,CAAA,CAAA,KAAK,CAAA,KAAI,CAAA,IAAG,GAAA,CAAA,EAAK,CAAA,IAAG,CAAA,CAAA;AAAG,EAAA,OAAO,CAAA;AAAC;ACGxW,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACAA,IAAM,aAAA,GAAgB,GAAA;AAAA,EACpB,mOAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,8BAAA;AAAA,QACT,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,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgC;AAC9B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AChDO,IAAM,cAAc,CAAC;AAAA,EAC1B,KAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA,GAAU;AACZ,CAAA,KAAa;AACX,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,IAAA,EAAM,+DAAA;AAAA,IACN,OAAA,EAAS,uEAAA;AAAA,IACT,KAAA,EAAO,2DAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,sBAAMA,GAAAA,CAAC,wBAAqB,IAAA,EAAM,EAAA,EAAI,WAAU,kCAAA,EAAmC,CAAA;AAAA,IACnF,yBAASA,GAAAA,CAAC,wBAAqB,IAAA,EAAM,EAAA,EAAI,WAAU,sCAAA,EAAuC,CAAA;AAAA,IAC1F,uBAAOA,GAAAA,CAAC,wBAAqB,IAAA,EAAM,EAAA,EAAI,WAAU,gCAAA,EAAiC,CAAA;AAAA,IAClF,OAAA,kBAASA,GAAAA,CAAC,eAAA,EAAA,EAAgB,WAAU,4CAAA,EAA6C;AAAA,GACnF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA,eAAe,OAAO,CAAA;AAAA,QACtB;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,YAAA,CAAa,OAAO,CAAA,EAAE,CAAA;AAAA,wBAG/D,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BACrDA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,oDACzB,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;ACvDO,IAAM,kBAAA,GAAqB;AAAA,EAChC,QAAA,EAAU,2BAAA;AAAA,EACV,KAAA,EAAO,0CAAA;AAAA,EACP,aAAA,EAAe,qBAAA;AAAA,EACf,YAAA,EAAc,2BAAA;AAAA,EACd,SAAA,EAAW,CAAC,MAAA,KAAmB,CAAA,oBAAA,EAAuB,MAAM,CAAA,WAAA,CAAA;AAAA,EAC5D,SAAA,EAAW,CAAC,MAAA,KAAmB,CAAA,yBAAA,EAAyB,MAAM,CAAA,WAAA,CAAA;AAAA,EAC9D,gBAAA,EAAkB,iCAAA;AAAA,EAClB,YAAA,EAAc;AAChB;;;ACFO,IAAe,YAAf,MAAyB;AAAA,EAC9B,WAAA,CACqB,KAAA,EACA,IAAA,EACA,YAAA,EACnB;AAHmB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAAA,EAClB;AAGL;AAGO,IAAM,sBAAsB,CAAC,OAAA,EAAa,OAAc,MAAA,EAAQ,WAAA,GAAqB,eAAe,YAAA,MAAuC;AAAA,EAChJ,EAAA,EAAI,QAAQ,IAAI,CAAA;AAAA,EAChB,IAAA,EAAM,QAAQ,IAAI,CAAA;AAAA,EAClB,WAAA,EAAc,QAAQ,WAAW,CAAA;AAAA,EACjC;AACF,CAAA;AAEO,IAAM,qBAAA,GAAwB,CAAC,IAAA,EAAY,WAAA,GAAqB,QAAQ,YAAA,KAAwC;AACrH,EAAA,MAAM,WAA0B,EAAC;AACjC,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,GAAA,EAAK,WAAA,EAAa,QAAW,YAAY,CAAA;AAC7E,IAAA,IAAG,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AAAA,EACnC;AACA,EAAA,OAAO,QAAA;AACT;AACO,IAAM,qBAAA,GAAwB,CAAC,OAAA,EAAa,IAAA,GAAc,MAAA,MAA2B;AAAA,EAC1F,EAAA,EAAI,QAAQ,IAAI,CAAA;AAAA,EAChB,KAAA,EAAO,OAAA,CAAQ,IAAI,CAAA,IAAK,QAAQ,OAAO,CAAA;AAAA,EACvC,OAAA,EAAS,OAAA,CAAQ,SAAS,CAAA,IAAK,EAAC;AAAA,EAChC,iBAAiB;AACnB,CAAA;AAGO,IAAM,uBAAA,GAA0B,CAAC,IAAA,EAAY,WAAA,GAAqB,MAAA,KAA6B;AACpG,EAAA,MAAM,WAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,GAAA,EAAK,WAAW,CAAA;AACtD,IAAA,IAAG,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA;AAAA,EACnC;AACA,EAAA,OAAO,QAAA;AACT;AAEO,IAAM,aAAA,GAAgB,CAC3B,KAAA,EACA,KAAA,EACA,KAAA,KACS;AACT,EAAA,IAAI,KAAA,GAAa,KAAA;AAGjB,EAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,YAAY,KAAA,EAAO;AAC3D,IAAA,KAAA,GAAS,MAAM,MAAA,CAA4B,KAAA;AAAA,EAC7C;AAGA,EAAA,KAAA,EAAO,SAAS,KAAK,CAAA;AAGrB,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,EAAM,SAAA,EAAU;AAGnC,EAAA,KAAA,CAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAG5B,EAAA,KAAA,CAAM,mBAAmB,IAAI,CAAA;AAC/B;AAEO,IAAM,YAAA,GAAe,CAAC,KAAA,EAAmB,IAAA,EAAqB,YAAA,KAAgC;AACjG,EAAA,MAAM,KAAA,GAAQ,YAAA,IAAgB,IAAA,CAAK,SAAA,CAAU,MAAM,IAAI,CAAA;AACvD,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAGhD,EAAA,IAAI,MAAM,OAAA,EAAS;AACjB,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAA;AAC5C,IAAA,OAAO,MAAA,CAAO,OAAA;AAAA,EAChB;AAEA,EAAA,OAAO,CAAC,UAAA,CAAW,KAAA,IAAS,KAAA,KAAU,UAAa,KAAA,KAAU,EAAA;AAC/D;;;AC/EK,IAAM,aAAA,GAAgB,CAC3B,MAAA,EACA,gBAAA,KACoB;AACpB,EAAA,MAAM,SAA0B,EAAC;AAEjC,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,IACrC,CAAA,MAAA,IAAY,MAAc,MAAA,EAAQ;AAChC,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,aAAA,CAAe,KAAA,CAAc,MAAM,CAAC,CAAA;AAAA,IACrD,CAAA,MAAO;AACL,MAAA,IAAI,kBAAkB,KAAA,CAAM,gBAAA,GAAmB,CAAC,IAAA,KAAa,iBAAiB,IAAI,CAAA;AAClF,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAwIO,IAAK,aAAA,qBAAAC,cAAAA,KAAL;AACL,EAAAA,eAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,eAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,eAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,eAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AALD,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;;;ACjKL,IAAK,UAAA,qBAAAC,WAAAA,KAAL;AACL,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,YAAA,CAAA,GAAa,YAAA;AACb,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,YAAA,mBAAA,CAAA,GAAoB,iBAAA;AACpB,EAAAA,YAAA,YAAA,CAAA,GAAa,WAAA;AAEb,EAAAA,YAAA,qBAAA,CAAA,GAAsB,oBAAA;AACtB,EAAAA,YAAA,+BAAA,CAAA,GAAgC,8BAAA;AAChC,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,YAAA,aAAA,CAAA,GAAc,aAAA;AACd,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,YAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,YAAA,mBAAA,CAAA,GAAoB,mBAAA;AACpB,EAAAA,YAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,YAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,YAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,YAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,YAAA,cAAA,CAAA,GAAe,cAAA;AACf,EAAAA,YAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,YAAA,eAAA,CAAA,GAAgB,eAAA;AAChB,EAAAA,YAAA,eAAA,CAAA,GAAgB,eAAA;AAChB,EAAAA,YAAA,aAAA,CAAA,GAAc,aAAA;AAjCJ,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;AAoCL,IAAM,cAAA,GAAiB;AAAA,EAC5B,aAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,8BAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA;AAAA,EAEA,QAAA;AACF;AC7DA,SAAS,SAAA,CAAU;AAAA,EACjB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBAAOF,GAAAA,CAAoB,kBAAA,CAAA,IAAA,EAAnB,EAAwB,WAAA,EAAU,WAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AACnE;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACEA,GAAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEA,GAAAA,CAAoB,kBAAA,CAAA,MAAA,EAAnB,EAA0B,SAAA,EAAU,QACnC,QAAA,kBAAAG,IAAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4SAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDH,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,6GAAA,EAA8G;AAAA;AAAA;AAAA,GAC3I,EACF,CAAA;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEA,GAAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAU,2GAAA;AAAA,MACT,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AAAA,GACxD;AAEJ;ACzDA,IAAM,aAAA,GAAgBI,GAAAA;AAAA,EACpB,gZAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,gFAAA;AAAA,QACF,SAAA,EACE,sFAAA;AAAA,QACF,WAAA,EACE,2KAAA;AAAA,QACF,OAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EAC8D;AAC5D,EAAA,MAAM,IAAA,GAAO,UAAU,IAAA,GAAO,MAAA;AAE9B,EAAA,uBACEJ,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,MAClD,GAAG;AAAA;AAAA,GACN;AAEJ;ACrCA,IAAM,cAAA,GAAiBI,GAAAA;AAAA,EACrB,6bAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,mJAAA;AAAA,QACF,OAAA,EACE,uIAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EACE,sEAAA;AAAA,QACF,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,+BAAA;AAAA,QACT,EAAA,EAAI,+CAAA;AAAA,QACJ,EAAA,EAAI,sCAAA;AAAA,QACJ,IAAA,EAAM,QAAA;AAAA,QACN,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,SAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EAGK;AACH,EAAA,MAAM,IAAA,GAAO,UAAUC,IAAAA,GAAO,QAAA;AAE9B,EAAA,uBACEL,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG;AAAA;AAAA,GACN;AAEJ;AC5CA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,OAAA;AAAA,EAChB,aAAA,GAAgB,OAAA;AAAA,EAChB,UAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAE/C,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,wJAAA;AAAA,QACA,MAAA,CAAO,GAAA,CAAA,yCAAA,CAAA;AAAA,QACP,MAAA,CAAO,GAAA,CAAA,6CAAA,CAAA;AAAA,QACP;AAAA,OACF;AAAA,MACA,aAAA;AAAA,MACA,UAAA,EAAY;AAAA,QACV,mBAAA,EAAqB,CAAC,IAAA,KACpB,IAAA,CAAK,eAAe,SAAA,EAAW,EAAE,KAAA,EAAO,OAAA,EAAS,CAAA;AAAA,QACnD,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,EAAA,CAAG,OAAA,EAAS,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACxC,MAAA,EAAQ,EAAA;AAAA,UACN,0CAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,KAAA,EAAO,EAAA,CAAG,4BAAA,EAA8B,iBAAA,CAAkB,KAAK,CAAA;AAAA,QAC/D,GAAA,EAAK,EAAA;AAAA,UACH,yEAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,eAAA,EAAiB,EAAA;AAAA,UACf,cAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,UACzC,6DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,cAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,UACzC,6DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,0EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,qFAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,qHAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,UACR,uCAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,yBAAA;AAAA,UACA,aAAA,KAAkB,UACd,SAAA,GACA,yGAAA;AAAA,UACJ,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,KAAA,EAAO,wBAAA;AAAA,QACP,QAAA,EAAU,EAAA,CAAG,MAAA,EAAQ,iBAAA,CAAkB,QAAQ,CAAA;AAAA,QAC/C,OAAA,EAAS,EAAA;AAAA,UACP,+EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,IAAA,EAAM,EAAA,CAAG,kBAAA,EAAoB,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACnD,kBAAA,EAAoB,EAAA;AAAA,UAClB,6BAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,iDAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,GAAA,EAAK,EAAA;AAAA,UACH,mIAAA;AAAA,UACA,KAAA,CAAM,iBACF,0DAAA,GACA,yDAAA;AAAA,UACJ,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,wBAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,YAAA,EAAc,EAAA,CAAG,cAAA,EAAgB,iBAAA,CAAkB,YAAY,CAAA;AAAA,QAC/D,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,iBAAA,CAAkB,SAAS,CAAA;AAAA,QACnE,KAAA,EAAO,EAAA;AAAA,UACL,+EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,OAAA,EAAS,EAAA;AAAA,UACP,2DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,UACR,kCAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,MAAA,EAAQ,EAAA,CAAG,WAAA,EAAa,iBAAA,CAAkB,MAAM,CAAA;AAAA,QAChD,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,EAAE,SAAA,EAAAM,YAAW,OAAA,EAAS,GAAGC,QAAM,KAAM;AAC1C,UAAA,uBACEP,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,UAAA;AAAA,cACV,GAAA,EAAK,OAAA;AAAA,cACL,SAAA,EAAW,GAAGM,UAAS,CAAA;AAAA,cACtB,GAAGC;AAAA;AAAA,WACN;AAAA,QAEJ,CAAA;AAAA,QACA,OAAA,EAAS,CAAC,EAAE,SAAA,EAAAD,YAAW,WAAA,EAAa,GAAGC,QAAM,KAAM;AACjD,UAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC1B,YAAA,uBACEP,IAAC,eAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,QAAA,EAAUM,UAAS,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,UAEpE;AAEA,UAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,YAAA,uBACEP,GAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAUM,UAAS,CAAA;AAAA,gBAChC,GAAGC;AAAA;AAAA,aACN;AAAA,UAEJ;AAEA,UAAA,uBACEP,GAAAA,CAACQ,eAAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,QAAA,EAAUF,UAAS,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,QAEpE,CAAA;AAAA,QACA,SAAA,EAAW,iBAAA;AAAA,QACX,YAAY,CAAC,EAAE,QAAA,EAAU,GAAGA,QAAM,KAAM;AACtC,UAAA,uBACEP,GAAAA,CAAC,IAAA,EAAA,EAAI,GAAGO,MAAAA,EACN,QAAA,kBAAAP,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACZ,QAAA,EACH,CAAA,EACF,CAAA;AAAA,QAEJ,CAAA;AAAA,QACA,GAAG;AAAA,OACL;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2C;AACzC,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAE/C,EAAA,MAAM,GAAA,GAAYS,cAA0B,IAAI,CAAA;AAChD,EAAMA,iBAAU,MAAM;AACpB,IAAA,IAAI,SAAA,CAAU,OAAA,EAAS,GAAA,CAAI,OAAA,EAAS,KAAA,EAAM;AAAA,EAC5C,CAAA,EAAG,CAAC,SAAA,CAAU,OAAO,CAAC,CAAA;AAEtB,EAAA,uBACET,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,UAAA,EAAU,GAAA,CAAI,IAAA,CAAK,kBAAA,EAAmB;AAAA,MACtC,sBAAA,EACE,SAAA,CAAU,QAAA,IACV,CAAC,SAAA,CAAU,eACX,CAAC,SAAA,CAAU,SAAA,IACX,CAAC,SAAA,CAAU,YAAA;AAAA,MAEb,oBAAkB,SAAA,CAAU,WAAA;AAAA,MAC5B,kBAAgB,SAAA,CAAU,SAAA;AAAA,MAC1B,qBAAmB,SAAA,CAAU,YAAA;AAAA,MAC7B,SAAA,EAAW,EAAA;AAAA,QACT,k3BAAA;AAAA,QACA,iBAAA,CAAkB,GAAA;AAAA,QAClB;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACnNA,SAAS,IAAA,CAAK,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAClE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4JAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACvE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,YAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MACpD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC7E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACzE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,SAAS,CAAA;AAAA,MAC9B,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA;AAAA,MACjE,GAAG;AAAA;AAAA,GACN;AAEJ;ACzEA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEA,GAAAA;AAAA,IAAmB,iBAAA,CAAA,IAAA;AAAA,IAAlB;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6eAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAmB,iBAAA,CAAA,SAAA;AAAA,QAAlB;AAAA,UACC,WAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,+DAAA;AAAA,UAEV,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,UAAA,EAAW;AAAA;AAAA;AAClC;AAAA,GACF;AAEJ;ACtBA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,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,QAAA;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,geAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBAAOA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AC3BA,IAAM,YAAA,GAAqBU,MAAA,CAAA,UAAA;AAAA,EACzB,CAAC,EAAE,KAAA,GAAQ,SAAA,EAAW,UAAU,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAU,EAAG,GAAA,KAAQ;AACrE,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,KAAK,CAAA;AACxC,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,gBAAS,KAAK,CAAA;AAE5C,IAAMA,iBAAU,MAAM;AACpB,MAAA,IAAI,KAAA,KAAU,MAAM,GAAA,EAAK;AACvB,QAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAAA,MACnC;AAAA,IACF,CAAA,EAAG,CAAC,KAAA,EAAO,QAAA,EAAU,KAAK,CAAC,CAAA;AAE3B,IAAA,MAAM,iBAAA,GAAoB,CAAC,QAAA,KAAqB;AAC9C,MAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,MAAA,QAAA,GAAW,SAAS,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,KAAqB;AAC7C,MAAA,OAAA,CAAQ,OAAO,CAAA;AACf,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAA,IAAS;AAAA,MACX;AAAA,IACF,CAAA;AAEA,IAAA,uBACEP,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,gBAAA,EACjC,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,OAAA,EAAQ,SAAA;AAAA,UACR,QAAA;AAAA,UACA,WAAW,EAAA,CAAG,4CAAA,EAA8C,CAAC,KAAA,IAAS,yBAAyB,SAAS,CAAA;AAAA,UAExG,QAAA,kBAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,SAAI,SAAA,EAAU,sCAAA,EAAuC,OAAO,EAAE,eAAA,EAAiB,KAAA,CAAM,GAAA,EAAI,EAAG,CAAA;AAAA,4BAC7FA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,CAAM,GAAA,EAAI;AAAA,WAAA,EACnB;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,YAAA,EAAa,KAAA,EAAM,SAC3C,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAc,UAAU,iBAAA,EAAmB,SAAA,EAAW,CAAC,KAAA,EAAO,KAAK,GAAG,CAAA,EACrF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AC1D3B,SAAS,MAAA,CAAO;AAAA,EACd,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC7D;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,OAAA,EAAhB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EAAuB,WAAA,EAAU,eAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AACtE;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,GAAG;AACL,CAAA,EAAuD;AACrD,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,wJAAA;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,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEG,IAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAU,eAAA,EACtB,QAAA,EAAA;AAAA,oBAAAH,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,oBACfG,IAAAA;AAAA,MAAiB,eAAA,CAAA,OAAA;AAAA,MAAhB;AAAA,QACC,WAAA,EAAU,gBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,6WAAA;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,mWAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAH,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,8CAAA,EAAgD,SAAS,CAAA;AAAA,MACtE,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;AAAA,QACT,wDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,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,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACvD,GAAG;AAAA;AAAA,GACN;AAEJ;AC1HA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqD;AACnD,EAAA,uBACEA,GAAAA;AAAA,IAAgB,cAAA,CAAA,IAAA;AAAA,IAAf;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qNAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACdA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACEA,GAAAA;AAAA,IAAoB,kBAAA,CAAA,IAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,UAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,gKAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AChBA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAqC;AAC3E,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qBAAA;AAAA,QACA,8EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,OAAA,GAAU,QAAA;AAAA,EACV,GAAG;AACL,CAAA,EAAsE;AACpE,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,kBAAA;AAAA,QACA,iCAAA;AAAA,QACA,8BAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wIAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,aAAA,GAAgBI,GAAAA;AAAA,EACpB,oEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,WAAA,EAAa;AAAA,QACX,QAAA,EAAU,CAAC,2CAA2C,CAAA;AAAA,QACtD,UAAA,EAAY;AAAA,UACV,uBAAA;AAAA,UACA,uCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,UAAA,EAAY;AAAA,UACV,8HAAA;AAAA,UACA,uDAAA;AAAA,UACA;AAAA;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAEA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAqE;AACnE,EAAA,uBACEJ,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,OAAA;AAAA,MACV,kBAAA,EAAkB,WAAA;AAAA,MAClB,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;AAAA,MACtD,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;AAAA,QACT,+DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuC;AACrC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,8GAAA;AAAA,QACA,mKAAA;AAAA,QACA,2HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC5E,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uHAAA;AAAA,QACA,8DAAA;AAAA,QACA,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEG,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,cAAA,EAAc,CAAC,CAAC,QAAA;AAAA,MAChB,SAAA,EAAW,EAAA;AAAA,QACT,2EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,0BAAA,EAA2B,CAAA;AAAA,QAC/C,4BACCA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uEAAA;AAAA,YACV,WAAA,EAAU,yBAAA;AAAA,YAET;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,QAAA;AAAA,IACT;AAEA,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,GAAG,IAAI,GAAA,CAAI,MAAA,CAAO,IAAI,CAAC,KAAA,KAAU,CAAC,KAAA,EAAO,OAAA,EAAS,KAAK,CAAC,CAAC,EAAE,MAAA;AAAO,KACpE;AAEA,IAAA,IAAI,YAAA,EAAc,UAAU,CAAA,EAAG;AAC7B,MAAA,OAAO,YAAA,CAAa,CAAC,CAAA,EAAG,OAAA;AAAA,IAC1B;AAEA,IAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,sCACX,QAAA,EAAA,YAAA,CAAa,GAAA;AAAA,MACZ,CAAC,KAAA,EAAO,KAAA,KACN,KAAA,EAAO,OAAA,oBAAWA,GAAAA,CAAC,IAAA,EAAA,EAAgB,QAAA,EAAA,KAAA,CAAM,OAAA,EAAA,EAAd,KAAsB;AAAA,KACrD,EACF,CAAA;AAAA,EAEJ,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,sCAAA,EAAwC,SAAS,CAAA;AAAA,MAC9D,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;ACtNA,IAAM,IAAA,GAAO;AASb,IAAM,gBAAA,GAAyB,MAAA,CAAA,aAAA;AAAA,EAC7B;AACF,CAAA;AAEA,IAAM,YAAY,CAGhB;AAAA,EACA,GAAG;AACL,CAAA,KAA4C;AAC1C,EAAA,uBACEA,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;AAEA,IAAM,eAAe,MAAM;AACzB,EAAA,MAAM,YAAA,GAAqB,kBAAW,gBAAgB,CAAA;AACtD,EAAA,MAAM,WAAA,GAAoB,kBAAW,eAAe,CAAA;AACpD,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,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AAEA,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,GAAwB,MAAA,CAAA,aAAA;AAAA,EAC5B;AACF,CAAA;AAEA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACtE,EAAA,MAAM,KAAW,MAAA,CAAA,KAAA,EAAM;AAEvB,EAAA,uBACEA,IAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,EAAE,EAAA,EAAG,EACpC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,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;AAEA,SAAS,WAAA,CAAY,EAAE,GAAG,KAAA,EAAM,EAAsC;AACpE,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,iBAAA,EAAmB,aAAA,KAAkB,YAAA,EAAa;AAE7E,EAAA,uBACEA,GAAAA;AAAA,IAACK,IAAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,EAAA,EAAI,UAAA;AAAA,MACJ,kBAAA,EACE,CAAC,KAAA,GACG,CAAA,EAAG,iBAAiB,CAAA,CAAA,GACpB,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAAA,MAE3C,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,MACf,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AAC3E,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,YAAA,EAAa;AAE3C,EAAA,uBACEL,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;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAA8B;AACvE,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;ACvJA,SAAS,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAkC;AAC3E,EAAA,uBACEA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4bAAA;AAAA,QACA,+EAAA;AAAA,QACA,wGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACdA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAqC;AAC3E,EAAA,uBACEA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qcAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACPA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AACxE,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,0JAAA;AAAA,QACA,oCAAA;AAAA;AAAA,QAGA,iDAAA;AAAA,QACA,+CAAA;AAAA,QACA,gIAAA;AAAA,QACA,0HAAA;AAAA;AAAA,QAGA,iMAAA;AAAA;AAAA,QAGA,gLAAA;AAAA,QAEA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,uBAAA,GAA0BI,GAAAA;AAAA,EAC9B,yPAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,cAAA,EACE,uEAAA;AAAA,QACF,YAAA,EACE,sEAAA;AAAA,QACF,aAAA,EACE,mGAAA;AAAA,QACF,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,KAAA,GAAQ,cAAA;AAAA,EACR,GAAG;AACL,CAAA,EAA+E;AAC7E,EAAA,uBACEJ,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,mBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,WAAW,EAAA,CAAG,uBAAA,CAAwB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAAA,MAC3D,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,QAAA,IAAK,CAAA,CAAE,MAAA,CAAuB,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC/C,UAAA;AAAA,QACF;AACA,QAAA,CAAA,CAAE,aAAA,CAAc,aAAA,EAAe,aAAA,CAAc,OAAO,GAAG,KAAA,EAAM;AAAA,MAC/D,CAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,IAAM,wBAAA,GAA2BI,GAAAA;AAAA,EAC/B,6CAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yGAAA;AAAA,QACJ,EAAA,EAAI,iDAAA;AAAA,QACJ,SAAA,EACE,6DAAA;AAAA,QACF,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,GAAG;AACL,CAAA,EACiD;AAC/C,EAAA,uBACEJ,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAW,IAAA;AAAA,MACX,OAAA;AAAA,MACA,WAAW,EAAA,CAAG,wBAAA,CAAyB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC1D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AAC7E,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkC;AAChC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,kGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAqC;AACnC,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACtJA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,kBAAA,EAAoB,EAAA;AAAA,QAClB,iDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA;AAAA,MAC3C,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,eAAA,GAAwBW,kBAAW,eAAe,CAAA;AACxD,EAAA,MAAM,EAAE,MAAM,YAAA,EAAc,QAAA,KAAa,eAAA,EAAiB,KAAA,CAAM,KAAK,CAAA,IAAK,EAAC;AAE3E,EAAA,uBACER,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,aAAA,EAAa,QAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,QACT,0fAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA;AAAA,QACA,YAAA,oBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAA2D,CAAA,EAC5E;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,iBAAA,CAAkB,EAAE,GAAG,KAAA,EAAM,EAAgC;AACpE,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,qBAAA,EAAsB,IAAA,EAAK,WAAA,EAAa,GAAG,KAAA,EACxD,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,CAAA,EACb,CAAA;AAEJ;ACpEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEA,GAAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACpC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEA,GAAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wXAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAqB,mBAAA,CAAA,SAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,uBAAA;AAAA,UACV,SAAA,EAAU,2CAAA;AAAA,UAEV,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,iFAAA,EAAkF;AAAA;AAAA;AAC1G;AAAA,GACF;AAEJ;AChCA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+D;AAC7D,EAAA,uBACEA,GAAAA;AAAA,IAAoB,kBAAA,CAAA,UAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBAAOA,GAAAA,CAAoB,kBAAA,CAAA,KAAA,EAAnB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEA,GAAAA;AAAA,IAAoB,kBAAA,CAAA,iBAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2oBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,UAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2EAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,UAAA,EAAW,CAAA,EACzC;AAAA;AAAA,GAEJ;AAEJ;AC9CA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEG,IAAAA;AAAA,IAAqB,mBAAA,CAAA,IAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAqB,mBAAA,CAAA,QAAA;AAAA,UAApB;AAAA,YACC,WAAA,EAAU,sBAAA;AAAA,YACV,SAAA,EAAU,oJAAA;AAAA,YAET;AAAA;AAAA,SACH;AAAA,wBACAA,IAAC,SAAA,EAAA,EAAU,CAAA;AAAA,wBACXA,GAAAA,CAAqB,mBAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAAA,GAC9B;AAEJ;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACEA,GAAAA;AAAA,IAAqB,mBAAA,CAAA,mBAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,oDAAA;AAAA,QACA,gBAAgB,UAAA,IACd,4CAAA;AAAA,QACF,gBAAgB,YAAA,IACd,8CAAA;AAAA,QACF;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAqB,mBAAA,CAAA,eAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,mBAAA;AAAA,UACV,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,GACF;AAEJ;AC/CA,SAAS,MAAA,CAAO;AAAA,EACd,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,WAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC7D;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBAAOA,GAAAA,CAAiB,eAAA,CAAA,KAAA,EAAhB,EAAsB,WAAA,EAAU,cAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,GAAG;AACL,CAAA,EAAuD;AACrD,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,IAAA,GAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEG;AACD,EAAA,uBACEG,IAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,8yBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDH,GAAAA,CAAiB,eAAA,CAAA,IAAA,EAAhB,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAACQ,eAAAA,EAAA,EAAgB,SAAA,EAAU,mBAAA,EAAoB,CAAA,EACjD;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,QAAA;AAAA,EACX,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,uBACER,GAAAA,CAAiB,eAAA,CAAA,MAAA,EAAhB,EACC,QAAA,kBAAAG,IAAAA;AAAA,IAAiB,eAAA,CAAA,OAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,+iBAAA;AAAA,QACA,aAAa,QAAA,IACX,iIAAA;AAAA,QACF;AAAA,OACF;AAAA,MACA,QAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,IAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,wBACtBA,GAAAA;AAAA,UAAiB,eAAA,CAAA,QAAA;AAAA,UAAhB;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,KAAA;AAAA,cACA,aAAa,QAAA,IACX;AAAA,aACJ;AAAA,YAEC;AAAA;AAAA,SACH;AAAA,wBACAA,IAAC,sBAAA,EAAA,EAAuB;AAAA;AAAA;AAAA,GAC1B,EACF,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,KAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,MACnE,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBACEG,IAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2aAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4DAAA,EACd,0BAAAA,GAAAA,CAAiB,eAAA,CAAA,aAAA,EAAhB,EACC,QAAA,kBAAAA,IAACY,SAAAA,EAAA,EAAU,SAAA,EAAU,QAAA,EAAS,GAChC,CAAA,EACF,CAAA;AAAA,wBACAZ,GAAAA,CAAiB,eAAA,CAAA,QAAA,EAAhB,EAA0B,QAAA,EAAS;AAAA;AAAA;AAAA,GACtC;AAEJ;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,SAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,+CAAA,EAAiD,SAAS,CAAA;AAAA,MACvE,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC5B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAgE;AAC9D,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,cAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACpC;AAEJ;AAEA,SAAS,sBAAA,CAAuB;AAAA,EAC9B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkE;AAChE,EAAA,uBACEA,GAAAA;AAAA,IAAiB,eAAA,CAAA,gBAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,2BAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAACQ,eAAAA,EAAA,EAAgB,WAAU,QAAA,EAAS;AAAA;AAAA,GACtC;AAEJ;ACtKA,IAAM,OAAA,GAAU,CAAC,EAAE,GAAG,OAAM,KAAoB;AAC9C,EAAA,MAAM,EAAE,KAAA,GAAQ,QAAA,EAAS,GAAI,QAAA,EAAS;AAEtC,EAAA,uBACER,GAAAA;AAAA,IAACa,SAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,SAAA,EAAU,eAAA;AAAA,MACV,KAAA,EACE;AAAA,QACE,aAAA,EAAe,gBAAA;AAAA,QACf,eAAA,EAAiB,2BAAA;AAAA,QACjB,iBAAA,EAAmB;AAAA,OACrB;AAAA,MAED,GAAG;AAAA;AAAA,GACN;AAEJ;ACfA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,uBACEb,GAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2WAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA;AAAA,QAAiB,eAAA,CAAA,KAAA;AAAA,QAAhB;AAAA,UACC,WAAA,EAAU,cAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT;AAAA;AACF;AAAA;AACF;AAAA,GACF;AAEJ;ACrBA,SAAS,eAAA,CAAgB;AAAA,EACvB,aAAA,GAAgB,CAAA;AAAA,EAChB,GAAG;AACL,CAAA,EAA2D;AACzD,EAAA,uBACEA,GAAAA;AAAA,IAAkB,gBAAA,CAAA,QAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,aAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEA,GAAAA,CAAC,eAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA,EACxD,CAAA;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,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,UAAA,GAAa,CAAA;AAAA,EACb,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEA,GAAAA,CAAkB,gBAAA,CAAA,MAAA,EAAjB,EACC,QAAA,kBAAAG,IAAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,maAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDH,GAAAA,CAAkB,gBAAA,CAAA,KAAA,EAAjB,EAAuB,WAAU,oGAAA,EAAqG;AAAA;AAAA;AAAA,GACzI,EACF,CAAA;AAEJ;AC3CO,IAAM,kBAAA,GAAN,cAAiC,SAAA,CAAU;AAAA,EAChD,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAa,GAAI,IAAA;AAChC,IAAA,uBACEA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAS,EAAC,EAAG,OAAc,YAAA,EAA4B,CAAA;AAAA,EAE5E;AACF;AASO,IAAM,kBAAkB,CAAC,EAAE,SAAS,QAAA,EAAU,KAAA,EAAO,cAAY,KAAa;AAEnF,EAAA,MAAM,gBAAA,GAAiC;AAAA,IACrC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,IACtD,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,oBAAA,EAAsB,SAAS,IAAA,EAAK;AAAA,IACnD,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,IACtD,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,uBAAA,EAAyB,SAAS,KAAA;AAAM,GACzD;AAEA,EAAA,MAAM,eAAA,GAAiC,OAAA,GAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,UAAY,KAAA,CAAM,UAAA,EAAY,IAAA,IAA0B,EAAC,GAAO,gBAAA;AACvI,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIc,SAAwB,eAAe,CAAA;AACvE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,QAAAA,CAAkB,eAAA,CAAgB,KAAA,CAAM,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAO,CAAC,CAAA;AAEjG,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAiB,oCAAoC,CAAA;AAEnF,EAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,KAAqB;AAC7C,IAAA,MAAM,OAAA,GAAU,SAAS,GAAA,CAAI,CAAC,SAAS,EAAE,GAAG,GAAA,EAAK,OAAA,EAAQ,CAAE,CAAA;AAC3D,IAAA,WAAA,CAAY,OAAO,CAAA;AACnB,IAAA,aAAA,CAAc,OAAO,CAAA;AACrB,IAAA,QAAA,GAAW,QAAQ,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAO,CAAC,CAAA;AAAA,EACjD,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,MAAA,EAAqB,OAAA,EAAkBC,MAAAA,KAAsB;AACtF,IAAA,MAAM,UAAU,QAAA,CAAS,GAAA;AAAA,MAAI,CAAC,GAAA,KAC5B,GAAA,CAAI,EAAA,KAAO,MAAA,CAAO,KAAK,EAAE,GAAG,GAAA,EAAK,OAAA,EAAQ,GAAI;AAAA,KAC/C;AACA,IAAA,WAAA,CAAY,OAAO,CAAA;AACnB,IAAA,aAAA,CAAc,QAAQ,KAAA,CAAM,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAO,CAAC,CAAA;AACjD,IAAA,QAAA,GAAW,QAAQ,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAO,CAAC,CAAA;AAC/C,IAAA,aAAA,CAAc,QAAQ,MAAA,CAAO,CAAC,QAAQ,GAAA,CAAI,OAAO,GAAEA,MAAK,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAA,uBACEf,GAAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,CAAA,8DAAA,EAAiE,UAAA,GAAa,oCAAA,GAAuC,YAAY,EAAE,CAAA,EAEpJ,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK,CAAA;AAAA,sBACjBG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,MAAA,EAAO,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,wBACtCA,IAAC,MAAA,EAAA,EAAO,EAAA,EAAG,QAAO,OAAA,EAAS,UAAA,EAAY,iBAAiB,gBAAA,EAAkB;AAAA,OAAA,EAC5E;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,QAAA,CAAS,GAAA,CAAI,CAAC,GAAA,EAAK,0BAClBG,IAAAA,CAAC,KAAA,EAAA,EAAiB,SAAA,EAAW,oEAAoE,EAAE,KAAA,GAAQ,CAAA,CAAA,GAAK,YAAA,GAAe,YAAY,CAAA,CAAA,EACzI,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAI,QAAA,EAAA,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,IAAA,EAAK,CAAA;AAAA,sBACvDA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,UAC5B,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAAA,UACjB,OAAA,EAAS,KAAK,OAAA,IAAW,KAAA;AAAA,UACzB,eAAA,EAAiB,CAAA,OAAA,KAAW,iBAAA,CAAkB,GAAA,EAAK,SAAS,KAAK;AAAA;AAAA;AACnE,KAAA,EAAA,EAPQ,GAAA,CAAI,EAQd,CACD;AAAA,GAAA,EACH,CAAA,EACF,CAAA;AAEJ;ACnEO,IAAM,2BAAA,GAAN,cAA0C,SAAA,CAAU;AAAA,EACzD,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,YAAA;AAAA,QACA,MAAA,EAAS,KAAA,EAAO,UAAA,EAAY,IAAA,IAA4B,EAAC;AAAA,QACzD,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,cAAA,KAAmB,MAAM;AAAA,QAAC,CAAA;AAAA;AAAA,KACzD;AAAA,EAEJ;AACF;AAYO,IAAM,wBAAA,GAA2B,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,EAAC,EAAG,QAAA,EAAU,YAAA,EAAa,KAAa;AACvG,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIc,QAAAA,CAA0B,EAAE,CAAA;AAClE,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,QAAAA,CAAwB,EAAE,CAAA;AAGxE,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,EAAY,YAAA,IAAgB,EAAC;AACpD,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,MAC3C,GAAG,KAAA;AAAA,MACH,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,QACnC,GAAG,GAAA;AAAA,QACH,OAAA,EAAS,SAAS,IAAA,CAAK,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,IAAI,EAAE,CAAA;AAAA,QACjD,cAAc,KAAA,CAAM;AAAA,OACtB,CAAE;AAAA,KACJ,CAAE,CAAA;AACF,IAAA,cAAA,CAAe,aAAa,CAAA;AAC5B,IAAA,kBAAA,CAAmB,QAAQ,CAAA;AAAA,EAC7B,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAGlB,EAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAiC;AAC5D,IAAA,OAAO,MAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAO,CAAA,CAAE,MAAA;AAAA,EACpD,CAAA;AAGA,EAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,EAAY,iBAAA,EAA2B,gBAA+BD,MAAAA,KAAsB;AACtH,IAAA,MAAM,YAAY,WAAA,CAAY,GAAA;AAAA,MAAI,CAAC,KAAA,KACjC,KAAA,CAAM,KAAA,KAAU,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,OAAA,EAAS,cAAA,EAAe,GAAI;AAAA,KAC9E;AAEA,IAAA,cAAA,CAAe,SAAS,CAAA;AAExB,IAAA,MAAM,UAAA,GAAa,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,CAAA;AAC9E,IAAA,kBAAA,CAAmB,UAAU,CAAA;AAC7B,IAAA,KAAA,CAAM,SAAS,UAAU,CAAA;AACzB,IAAA,QAAA,GAAW,UAAU,CAAA;AACrB,IAAA,aAAA,CAAc,UAAA,EAAYA,QAAO,KAAK,CAAA;AAAA,EACxC,CAAA;AAEA,EAAA,uBACEf,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,uBACTG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,WAAA,EAClB,QAAA,EAAA;AAAA,wBAAAH,IAAC,WAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA,CAAC,IAAA,EAAA,EAAK,WAAU,eAAA,EACd,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oBAAA,EAAsB,gBAAM,KAAA,EAAM,CAAA;AAAA,0BAChDA,GAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,UAAA,EACb,sBAAY,GAAA,CAAI,CAAC,KAAA,EAAO,IAAA,qBACvBG,IAAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cAEC,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,SAAA,EAAW,CAAA,KAAA,EAAQ,IAAA,GAAO,CAAA,GAAI,gBAAgB,YAAY,CAAA,CAAA;AAAA,cAE1D,QAAA,EAAA;AAAA,gCAAAH,IAAC,gBAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,KAAA,CAAM,KAAA;AAAA,kBAAO,GAAA;AAAA,kCACdA,KAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,oBAAE,KAAA;AAAA,oBAAI,MAAM,OAAA,CAAQ;AAAA,mBAAA,EAChD;AAAA,iBAAA,EACF,CAAA,EACF,CAAA;AAAA,gCACAH,GAAAA,CAAC,gBAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBACC,YAAA;AAAA,oBACA,KAAA;AAAA,oBACA,SAAS,KAAA,CAAM,OAAA;AAAA,oBACf,QAAA,EAAU,CAAC,OAAA,KACT,kBAAA,CAAmB,OAAO,KAAA,CAAM,KAAA,EAAO,SAAS,KAAK;AAAA;AAAA,iBAEzD,EACF;AAAA;AAAA,aAAA;AAAA,YArBK;AAAA,WAuBR,CAAA,EACH;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,QAEC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,wBAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EAMf;AAAA,KAAA;AAAA,IA9CG,KAAA,CAAM;AAAA,GAgDb;AAEJ;ACrIA,IAAM,mBAAA,GAAsBI,GAAAA;AAAA,EAC1B,kSAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,WAAA,EAAa;AAAA,QACX,UAAA,EACE,iHAAA;AAAA,QACF,QAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,WAAA,EAAa;AAAA;AACf;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2E;AACzE,EAAA,uBACEJ,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,cAAA;AAAA,MACV,kBAAA,EAAkB,WAAA;AAAA,MAClB,WAAW,EAAA,CAAG,mBAAA,CAAoB,EAAE,WAAA,EAAa,GAAG,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EAEG;AACD,EAAA,MAAM,IAAA,GAAO,UAAUK,IAAAA,GAAO,KAAA;AAE9B,EAAA,uBACEL,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,wJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC5B,SAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,GAAG;AACL,CAAA,EAA2C;AACzC,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,wBAAA;AAAA,MACV,WAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,wEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AC9DO,IAAM,gBAAA,GAAN,cAA+B,SAAA,CAAU;AAAA,EAC9C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AACxB,IAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAc,IAAA,EAAY,cAA6B,SAAA,EAAqB,CAAA;AAAA,EACvG;AACF;AASO,IAAM,gBAAA,GAAmB,CAAC,EAAE,KAAA,EAAO,MAAM,YAAA,EAAc,SAAA,GAAY,iBAAgB,KAAa;AACrG,EAAA,MAAM,OAAA,GAAA,CAA0B,KAAA,CAAM,UAAA,EAAY,IAAA,IAAQ,IAAI,MAAA,CAAO,CAAC,MAAA,KAAkC,MAAA,IAAU,MAAM,CAAA;AAExH,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAe;AACnC,IAAA,IAAA,CAAK,SAAS,KAAA,CAAM,IAAA,EAAM,OAAO,EAAE,cAAA,EAAgB,MAAM,CAAA;AACzD,IAAA,IAAI,MAAM,UAAA,EAAY,cAAA,EAAiB,KAAA,CAAM,UAAA,CAAW,eAAe,KAAK,CAAA;AAAA,EAC9E,CAAA;AAIA,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAE3C,EAAA,uBACMA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,uBAAA,EACtB,kBAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,GAAA,qBACpBA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA;AAAA,MAEA,OAAA,EAAS,aAAA,KAAkB,MAAA,CAAO,KAAA,GAAQ,SAAA,GAAY,SAAA;AAAA,MACtD,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AACzB,QAAA,aAAA,CAAc,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,MACnC,CAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MAET,QAAA,EAAA,MAAA,CAAO,SAAS,MAAA,CAAO;AAAA,KAAA;AAAA,IARnB,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,MAAA;AAAA,GAU5B,CAAA,EACD,CAAA;AAER;AC9CO,IAAM,cAAA,GAAN,cAA6B,SAAA,CAAU;AAAA,EAC5C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAa,GAAI,IAAA;AAChC,IAAA,MAAM,aAAa,KAAA,EAAO,UAAA;AAE1B,IAAA,IAAI,KAAA,GAAQ,UAAA,EAAY,IAAA,IAAQ,EAAC;AACjC,IAAA,IAAI,KAAA,IAAS,MAAA,EAAW,KAAA,GAAQ,EAAC;AACjC,IAAA,MAAM,KAAA,GAAQ,OAAA;AAEd,IAAA,MAAM,QAAkB,KAAA,CAAM,KAAA;AAC9B,IAAA,MAAM,KAAA,GAAS,YAAY,WAAA,IAAe,MAAA;AAC1C,IAAA,MAAM,WAAA,GAAe,YAAY,WAAA,IAAe,IAAA;AAChD,IAAA,MAAM,WAAA,GAAe,YAAY,iBAAA,IAAqB,aAAA;AACtD,IAAA,uBACEG,KAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,MAAA,EACpB,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,KAAe,EAAM,CAAA,EACzD,CAAA;AAAA,sBACAA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,aACtB,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,qBACVG,IAAAA,CAAC,KAAA,EAAA,EAA8D,WAAU,6BAAA,EACvE,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,CAAC,CAAA,KAAM,aAAA,CAAc,GAAG,KAAK,CAAA;AAAA,cACvC,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,cAC5B,EAAA,EAAI,MAAA,CAAO,IAAA,CAAK,WAAgC,CAAC,CAAA;AAAA,cACjD,OAAA,EAAS,KAAA,CAAM,QAAA,CAAS,IAAA,CAAK,WAAgC,CAAW,CAAA;AAAA,cACxE,iBAAiB,MAAM;AAAA,cAA8D;AAAA;AAAA,WACvF;AAAA,0BACAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,4BAAAH,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,WAAgC,CAAC,CAAA;AAAA,gBACtD,SAAA,EAAU,4FAAA;AAAA,gBAET,eAAK,KAA0B;AAAA;AAAA,aAClC;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EAAiC,QAAA,EAAA,IAAA,CAAK,WAAgC,CAAA,EAAE;AAAA,WAAA,EACvF;AAAA,SAAA,EAAA,EAhBQ,IAAA,CAAK,WAAgC,CAiB/C;AAAA,OAEF,EACA;AAAA,KAAA,EAAA,EA1BS,KA2BX,CAAA;AAAA,EAEJ;AACF;AC1CO,IAAM,aAAA,GAAN,cAA4B,SAAA,CAAU;AAAA,EAC3C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AAEtC,IAAA,uBACEA,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAY,OAAc,YAAA,EAA4B,CAAA;AAAA,EAEzE;AACF;AASA,IAAM,gBAAgB,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,cAAa,KAAa;AAC9D,EAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AACxB,EAAA,uBACEA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEG,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,uBACTG,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAKP,aAAa,EAAE,CAAA,CAAA;AAAA,UAEnB,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,eACC,QAAA,kBAAAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAI,KAAA,CAAM,IAAA;AAAA,gBACV,SAAS,KAAA,CAAM,KAAA;AAAA,gBACf,iBAAiB,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,EAAG,OAAO,KAAK,CAAA;AAAA,gBACrD,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,gBAC5B,SAAA,EAAU;AAAA;AAAA,aAEZ,EACF,CAAA;AAAA,4BAEAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,aAAU,OAAA,EAAS,KAAA,CAAM,MAAM,SAAA,EAAU,kCAAA,EACvC,QAAA,EAAA,KAAA,CAAM,KAAA,IAAS,sBAAA,EAClB,CAAA;AAAA,cAAA,CACE,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,qBAC3BA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,+BAAA,EACxB,QAAA,EAAA,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,EAC9B,CAAA;AAAA,8BAEFA,IAAC,WAAA,EAAA,EAAY;AAAA,aAAA,EACf;AAAA;AAAA;AAAA;AACF,KAAA;AAAA,IAlCG,KAAA,CAAM;AAAA,GAoCb;AAEN,CAAA;ACrDO,IAAM,UAAA,GAAN,cAAyB,SAAA,CAAU;AAAA,EACxC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAEtE;AACF;AAUA,IAAM,aAAA,GAAgB;AAAA,EACpB,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA,SAAA;AAAA;AAAA,EACA;AAAA;AACF,CAAA;AAGA,IAAM,aAAa,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAC3D,EAAA,MAAM,CAAC,QAAA,EAAU,YAAY,CAAA,GAAIc,SAAc,SAAS,CAAA;AAGxD,EAAA,uBACEd,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAM,qBACfG,KAAC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,wBAC/BA,GAAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,QAAA,mBACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,MAAM,KAAA,IAAS,SAAA;AAAA,YACtB,QAAA,EAAU,CAAC,KAAA,KAAgB;AACzB,cAAA,aAAA,CAAc,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,YACnC,CAAA;AAAA,YACA,QAAQ,KAAA,CAAM,MAAA;AAAA,YACd,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,YAC5B,aAAa,KAAA,CAAM;AAAA;AAAA,YAGrB,KAAA,EAcJ,CAAA;AAAA,wBACAA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,KAAA,CAAM,WAAA,EAAY,CAAA;AAAA,wBACpCA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAcA,IAAM,YAAYS,eAAAA,CAAM,UAAA;AAAA,EACtB,CAAC,EAAE,KAAA,GAAQ,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,SAAA,GAAW,CAAC,KAAK,CAAA,IAAK,GAAA,KAAQ;AAsBzF,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIQ,SAAS,KAAK,CAAA;AACxC,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIH,SAAS,KAAK,CAAA;AAEtC,IAAAL,eAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,KAAA,KAAU,MAAM,GAAA,EAAK;AACvB,QAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAAA,MACnC;AAAA,IACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,iBAAA,GAAoB,CAAC,QAAA,KAAqB;AAC9C,MAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,GAAA,EAAK,UAAU,CAAA;AACpC,MAAA,QAAA,GAAW,QAAQ,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAkB;AAC5C,MAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,MAAA,QAAA,GAAW,SAAS,GAAG,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,KAAqB;AAC7C,MAAA,OAAA,CAAQ,OAAO,CAAA;AACf,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,MAAA,IAAS;AAAA,MACX;AAAA,IACF,CAAA;AAEA,IAAA,uBACEN,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,SAAI,SAAA,EAAU,yBAAA,EACZ,wBAAc,GAAA,CAAI,CAAC,gCAClBA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAK,QAAA;AAAA,UACL,QAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,yIAAA;AAAA,YACA,KAAA,CAAM,GAAA,KAAQ,WAAA,GACV,6CAAA,GACA;AAAA,WACN;AAAA,UACA,KAAA,EAAO,EAAE,eAAA,EAAiB,WAAA,EAAY;AAAA,UACtC,OAAA,EAAS,MAAM,iBAAA,CAAkB,WAAW,CAAA;AAAA,UAC5C,YAAA,EAAY,gBAAgB,WAAW,CAAA;AAAA,SAAA;AAAA,QAXlC;AAAA,OAaR,CAAA,EACH,CAAA;AAAA,sBAEAG,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,gBAAA,EACjC,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,OAAA,EAAQ,SAAA;AAAA,YACR,QAAA;AAAA,YACA,WAAW,EAAA,CAAG,4CAAA,EAA8C,CAAC,KAAA,IAAS,yBAAyB,SAAS,CAAA;AAAA,YAExG,QAAA,kBAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EAA0C,KAAA,EAAO,EAAE,eAAA,EAAiB,KAAA,CAAM,GAAA,EAAK,KAAA,EAAO,EAAA,EAAI,MAAA,EAAO,IAAG,EAAG,CAAA;AAAA,8BACtHA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,CAAM,GAAA,EAAI;AAAA,aAAA,EACnB;AAAA;AAAA,SACF,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,cAAa,KAAA,EAAM,OAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAACkB,aAAA,EAAY,KAAA,EAAc,QAAA,EAAU,kBAAA,EAAoB,WAAsB,CAAA,EACjF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;ACnMA,SAAS,OAAA,CAAQ;AAAA,EACf,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkD;AAChD,EAAA,uBACElB,GAAAA;AAAA,IAACmB,SAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,KAAA,GAAQ,iBAAA;AAAA,EACR,WAAA,GAAc,gCAAA;AAAA,EACd,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACL,CAAA,EAKG;AACD,EAAA,uBACEhB,IAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,KAAA,EACV,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EACtB,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,eAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACpBA,GAAAA,CAAC,iBAAA,EAAA,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAClC,CAAA;AAAA,oBACAA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,QAC9C,eAAA;AAAA,QAEA,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,yZAChB,QAAA,EACH;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEG,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,SAAA,EAAU,2CAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,4BAAA,EAA6B,CAAA;AAAA,wBACnDA,GAAAA;AAAA,UAACmB,SAAA,CAAiB,KAAA;AAAA,UAAjB;AAAA,YACC,WAAA,EAAU,eAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,0JAAA;AAAA,cACA;AAAA,aACF;AAAA,YACC,GAAG;AAAA;AAAA;AACN;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEnB,GAAAA;AAAA,IAACmB,SAAA,CAAiB,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6DAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEnB,GAAAA;AAAA,IAACmB,SAAA,CAAiB,KAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAU,0BAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACEnB,GAAAA;AAAA,IAACmB,SAAA,CAAiB,KAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,wNAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACEnB,GAAAA;AAAA,IAACmB,SAAA,CAAiB,SAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,SAAS,CAAA;AAAA,MAC9C,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACEnB,GAAAA;AAAA,IAACmB,SAAA,CAAiB,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qYAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,eAAA,CAAgB;AAAA,EACvB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiC;AAC/B,EAAA,uBACEnB,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;ACnJO,IAAM,aAAA,GAAN,cAA4B,SAAA,CAAU;AAAA,EAC3C,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC9E;AACF;AAQA,IAAM,gBAAgB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAC9D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUoB,gBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,MAAA,CAAA,QAAA;AAAA,IAClC,MACE,MAAM,UAAA,EAAY,IAAA,EAAM,SACnB,KAAA,CAAM,UAAA,CAAW,OAClB;AAAC,GACT;AAEA,EAAA,MAAM,WAAA,GAAc,KAAA,EAAO,UAAA,EAAY,WAAA,IAAe,MAAM,WAAA,IAAe,IAAA;AAC3E,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAUA,gBAAiB,KAAA,CAAM,KAAA,EAAO,QAAA,EAAS,IAAK,EAAE,CAAA;AAG9E,EAAMA,iBAAU,MAAM;AACpB,IAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AACxB,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,KAAA,CAAM,WAAA,EAAa;AAEtC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,OAAO,MAAA,KAAW;AAChD,MAAA,MAAM,WAAA,GAAc,OAAO,SAAS,CAAA;AACpC,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,MAAM,SAAS,KAAA,CAAM,WAAA;AACrB,QAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,WAAW,CAAA;AAC3C,QAAA,UAAA,CAAW,UAA2B,CAAA;AACtC,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,EAAE,CAAA;AAC5B,QAAA,QAAA,CAAS,EAAE,CAAA;AAAA,MACb,CAAA,MAAO;AACL,QAAA,UAAA,CAAW,EAAE,CAAA;AAAA,MACf;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAM,aAAa,WAAA,IAAc;AAAA,EAC1C,GAAG,CAAC,IAAA,EAAM,MAAM,WAAA,EAAa,KAAA,CAAM,SAAS,CAAC,CAAA;AAG7C,EAAMA,iBAAU,MAAM;AACpB,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAC9C,IAAA,IAAI,CAAC,YAAA,IAAgB,KAAA,CAAM,KAAA,EAAO;AAChC,MAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,KAAK,CAAA;AACrC,MAAA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,KAAA,CAAM,KAAK,CAAC,CAAA;AAElC,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAA,CACf,WAAA,KAAgB,SACb,IAAA,CAAK,IAAA,GACL,IAAA,CAAK,KAAA,EAAO,QAAA,EAAS,IAAK,IAAA,CAAK,EAAA,EAAI,UAAS,KAAM,EAAA;AAExD,EAAA,MAAM,cAAA,GAAiB,QAAQ,IAAA,CAAK,CAAC,MAAM,QAAA,CAAS,CAAC,MAAM,KAAK,CAAA;AAEhE,EAAA,uBACEjB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,yBACLH,GAAAA,CAAC,WAAM,SAAA,EAAU,qBAAA,EAAuB,gBAAM,KAAA,EAAM,CAAA;AAAA,oBAEtDG,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,UAC5B,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,UAAA;AAAA,UACL,eAAA,EAAe,IAAA;AAAA,UACf,SAAA,EAAU,sDAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,cAAA,GAAiB,cAAA,CAAe,IAAA,GAAO,KAAA,CAAM,WAAA,IAAe,gBAAA;AAAA,4BAC7DH,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa;AAAA;AAAA;AAAA,OACzC,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,eACxB,QAAA,kBAAAG,IAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,MAAA,EAAQ,CAACkB,MAAAA,EAAO,MAAA,KAAW;AACzB,YAAA,MAAM,MAAA,GAAS,QAAQ,IAAA,CAAK,CAAC,MAAM,QAAA,CAAS,CAAC,MAAMA,MAAK,CAAA;AACxD,YAAA,OAAO,MAAA,EAAQ,MAAM,WAAA,EAAY,CAAE,SAAS,MAAA,CAAO,WAAA,EAAa,CAAA,GAC5D,CAAA,GACA,CAAA;AAAA,UACN,CAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAArB,GAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAa,CAAA,OAAA,EAAU,KAAA,CAAM,OAAO,WAAA,EAAa,CAAA,GAAA,CAAA,EAAO,SAAA,EAAU,KAAA,EAAM,CAAA;AAAA,4BACtFG,KAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,gBAAa,QAAA,EAAA,+BAAA,EAA6B,CAAA;AAAA,8BAC3CA,GAAAA,CAAC,YAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,yBACZG,IAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,kBACpB,QAAA,EAAU,CAAC,YAAA,KAAiB;AAC1B,oBAAA,MAAM,QAAA,GAAW,YAAA,KAAiB,KAAA,GAAQ,EAAA,GAAK,YAAA;AAC/C,oBAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,oBAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAClC,oBAAA,aAAA,CAAc,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,SAAS,CAAC,CAAA,KAAM,QAAQ,CAAA,EAAG,KAAK,CAAA;AAClE,oBAAA,KAAA,CAAM,UAAA,EAAY,cAAA;AAAA,sBAChB,QAAQ,IAAA,CAAK,CAAC,MAAM,QAAA,CAAS,CAAC,MAAM,QAAQ;AAAA,qBAC9C;AACA,oBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,kBACf,CAAA;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,IAAA;AAAA,oCACNH,GAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,EAAA;AAAA,0BACT,SAAA;AAAA,0BACA,KAAA,KAAU,QAAA,CAAS,IAAI,CAAA,GAAI,aAAA,GAAgB;AAAA;AAC7C;AAAA;AACF;AAAA,iBAAA;AAAA,gBAnBK,IAAA,CAAK;AAAA,eAqBb,CAAA,EACH;AAAA,aAAA,EACF;AAAA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AC/HO,IAAM,aAAA,GAAN,cAA4B,SAAA,CAAU;AAAA,EAC3C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC9E;AACF;AAYO,IAAM,gBAAgB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAA0B;AAClF,EAAA,MAAM,cAAc,KAAA,CAAM,gBAAA;AAC1B,EAAoB,KAAA,EAAO;AAC3B,EAAA,MAAM,eAAe,WAAA,EAAa,cAAA;AAElC,EAAA,MAAM,cAAA,mBAAiBA,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAO,EAAE,KAAA,EAAO,WAAU,EAAG,CAAA;AACjE,EAAA,MAAM,gBAAA,mBAAmBA,GAAAA,CAAC,OAAA,EAAA,EAAQ,OAAO,EAAE,KAAA,EAAO,WAAU,EAAG,CAAA;AAC/D,EAAA,MAAM,gBAAA,mBAAmBA,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,gBAAe,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAGxF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIc,SAAkB,MAAM;AACpD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AACvC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAChD,IAAA,OAAO,CAAC,UAAA,CAAW,KAAA,IAAS,KAAA,KAAU,UAAa,KAAA,KAAU,EAAA;AAAA,EAC/D,CAAC,CAAA;AAED,EAAA,MAAM,qBAAA,GAAkD;AAAA,IACtD,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,KAAA;AAAA,IACV,qBAAA,EAAuB,CAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACzB;AAEA,EAAA,MAAM,OAAO,KAAA,EAAO,IAAA;AACpB,EAAA,MAAM,cAAA,GAAiB,OAAO,cAAA,IAAkB,qBAAA;AAEhD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,QAAAA,CAAiB,KAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,EAAE,CAAA;AAGjF,EAAA,MAAM,SAAA,GAAYQ,QAAQ,MAAM;AAC9B,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,cAAc,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAGnB,EAAA,MAAM,UAAA,GAAa,CAAC,SAAA,KAAqC;AACvD,IAAA,MAAM,UAAU,UAAA,CAAW,SAAA,CAAU,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAC,CAAA;AAC7D,IAAA,OAAO,KAAA,CAAM,OAAO,CAAA,GAAI,IAAA,GAAO,OAAA;AAAA,EACjC,CAAA;AAGA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA0B;AAC7C,IAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,IAAA,MAAM,UAAU,UAAA,CAAW,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAC,CAAA;AACzD,IAAA,IAAI,KAAA,CAAM,OAAO,CAAA,EAAG,OAAO,EAAA;AAE3B,IAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,MAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,eAAA,EAAiB,SAAA,CAAU,MAAA,CAAO,OAAO,CAAA,CAAE,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAA;AAAA,IACxF;AAEA,IAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC1B,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAC7B,MAAA,OAAO,QAAQ,KAAA,GAAQ,QAAA;AAAA,IACzB;AAEA,IAAA,OAAO,SAAA,CAAU,OAAO,OAAO,CAAA;AAAA,EACjC,CAAA;AAGA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA6C;AAClE,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,WAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,IAAI,WAAA,CAAY,QAAA,CAAS,CAAA,CAAE,GAAG,CAAA,EAAG;AAGjC,IAAA,IAAI,CAAC,UAAA,CAAW,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG;AAC3B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,EAAE,GAAA,KAAQ,GAAA,IAAO,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,EAAG;AAC3C,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IACnB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEtB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AACjC,QAAA,MAAM,QAAA,GAAW,CAAC,UAAA,CAAW,KAAA,IAAS,MAAM,KAAA,KAAU,MAAA,IAAa,MAAM,KAAA,KAAU,EAAA;AACnF,QAAA,IAAI,QAAA,KAAa,OAAA,EAAS,UAAA,CAAW,QAAQ,CAAA;AAC7C,QAAA,uBACAG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAG,KAAC,UAAA,EAAA,EAEC,QAAA,EAAA;AAAA,4BAAAA,KAAC,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,kBAAe,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,cAChB,KAAA,CAAM,kBAAkB,QAAA,oBACvBA,IAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,KAAA,CAAM,iBAAiB,QAAA,EAAS;AAAA,aAAA,EAErD,CAAA;AAAA,4BAGAA,GAAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBACE,GAAG,KAAA;AAAA,gBACJ,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,gBAC5B,WAAA,EAAa,MAAM,WAAA,IAAe,MAAA;AAAA,gBAClC,SAAA,EAAU,SAAA;AAAA,gBACV,KAAA,EAAO,QAAA;AAAA,gBACP,SAAA,EAAW,aAAA;AAAA,gBACX,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,kBAAA,MAAM,MAAA,GAAS,EAAE,MAAA,CAAO,KAAA;AACxB,kBAAA,WAAA,CAAY,MAAM,CAAA;AAClB,kBAAA,MAAM,MAAA,GAAS,WAAW,MAAM,CAAA;AAChC,kBAAA,IAAI,MAAA,KAAW,IAAA,EAAM,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AAC1C,kBAAA,aAAA,CAAc,MAAA,EAAQ,OAAO,KAAK,CAAA;AAAA,gBACpC,CAAA;AAAA,gBACA,MAAA,EAAQ,CAAC,CAAA,KAAM;AACb,kBAAA,MAAM,SAAA,GAAY,WAAA,CAAY,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAC5C,kBAAA,WAAA,CAAY,SAAS,CAAA;AAAA,gBACvB,CAAA;AAAA,gBACA,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,kBAAA,MAAM,UAAU,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,aAAa,EAAE,CAAA;AACtD,kBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,gBACrB;AAAA;AAAA,aACF;AAAA,4BAGAG,IAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAM,YAAA,EACrB,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,cAAA,CAAe,QAAA,EAAS,CAAA;AAAA,cACxC,KAAA,CAAM,kBAAkB,SAAA,oBACvBA,IAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,KAAA,CAAM,iBAAiB,SAAA,EAAU,CAAA;AAAA,cAGnD,YAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EACE,yBACG,gBAAA,GACA,OAAA,GACE,iBACA,gBAAA,EACR;AAAA,aAAA,EAEJ;AAAA,WAAA,EACF,CAAA,EACF,CAAA;AAAA,0BACAA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MACD;AAAA;AAAA,GACH;AAEJ;ACxKO,IAAM,SAAA,GAAN,cAAwB,SAAA,CAAU;AAAA,EACvC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC/E;AACF;AAEA,IAAM,iBAAiB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAE/D,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIc,SAAkB,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AACzE,EAAA,MAAM,cAAc,KAAA,EAAO,WAAA;AAC3B,EAAA,MAAM,cAAc,KAAA,CAAM,gBAAA;AAC1B,EAAA,MAAM,YAAA,GAAe,WAAA,EAAa,cAAA,IAAkB,KAAA,CAAM,UAAU,IAAA,GAAO,KAAA;AAE3E,EAAA,MAAM,cAAA,mBAAiBd,GAAAA,CAACuB,WAAAA,EAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AACjE,EAAA,MAAM,gBAAA,mBAAmBvB,GAAAA,CAACwB,OAAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAC/D,EAAA,MAAM,gBAAA,mBAAmBxB,GAAAA,CAACyB,OAAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAExF,EAAA,MAAM,UAAA,GAAa,WAAA,EAAa,UAAA,IAAc,EAAC;AAC/C,EAAkB,WAAA,EAAa,SAAA,IAAa;AAC5C,EAAiB,WAAA,EAAa;AAC9B,EAAA,MAAM,YAAY,WAAA,EAAa,SAAA;AAE/B,EAAA,MAAM,4BAAYzB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAM,KAAM;AACrB,QAAA,UAAA,CAAW,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAEpC,QAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU0B,MAAA,CAAA,QAAA;AAAA,UAC5B,MAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI;AAAA,SACxC;AAGA,QAAMA,iBAAU,MAAM;AACpB,UAAA,IAAI,KAAA,CAAM,KAAA,IAAS,CAAC,IAAA,EAAM;AACxB,YAAA,OAAA,CAAQ,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAC7B,YAAA,UAAA,CAAW,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,UACtC;AAAA,QACF,CAAA,EAAG,CAAC,KAAA,CAAM,KAAK,CAAC,CAAA;AAEhB,QAAA,MAAM,YAAA,GAAe,CAAC,YAAA,KAAwB;AAE5C,UAAA,OAAA,CAAQ,YAAY,CAAA;AAEpB,UAAA,aAAA,CAAc,YAAA,EAAc,OAAO,KAAK,CAAA;AAAA,QAC1C,CAAA;AAEA,QAAA,uBACEvB,KAAC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BG,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAErB,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,qBAAA,EAInB,QAAA,EAAA;AAAA,cAAA,WAAA,oBACCA,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAH,GAAAA,CAAC,kBAAe,OAAA,EAAO,IAAA,EACrB,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,CAAA,EAClB,CAAA;AAAA,gCACAA,GAAAA,CAAC,cAAA,EAAA,EACC,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAG,uBAAY,CAAA,EAClB;AAAA,eAAA,EACF,CAAA;AAAA,8BAGFG,IAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,SAAA;AAAA,kBACR,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAW,EAAA;AAAA,oBACT,wCAAA;AAAA,oBACA,CAAC,IAAA,IAAQ;AAAA,mBACX;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yDAAA,EACb,QAAA,EAAA;AAAA,sCAAAH,IAAC,YAAA,EAAA,EAAa,CAAA;AAAA,sBACb,IAAA,GAAO,MAAA,CAAO,IAAA,EAAM,KAAK,CAAA,mBAAIA,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,CAAM,WAAA,IAAe,OAAA,EAAQ;AAAA,qBAAA,EACpE,CAAA;AAAA,oBAAA,CACE,WAAW,MAAA,GAAS,CAAA,IAAK,aAAa,YAAA,qBACtCG,KAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,sBAAA,SAAA,oBAAaH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,sBACxC,UAAA,CAAW,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC9BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAI,SAAA,EAAU,WAAA,EAAA,EAA3B,KAAuC,CAC5D,CAAA;AAAA,sBAEA,YAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EACE,yBACG,gBAAA,GACA,OAAA,GACA,iBACA,gBAAA,EACN;AAAA,qBAAA,EAEJ;AAAA;AAAA;AAAA;AAGJ,aAAA,EAGF,GACF,CAAA,EAEF,CAAA;AAAA,4BACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,YAAA,EAAa,KAAA,EAAM,SAC3C,QAAA,kBAAAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,YAAA,EAAc,IAAA;AAAA,gBACd,QAAA,EAAU,IAAA;AAAA,gBACV,QAAA,EAAU,YAAA;AAAA,gBACV,aAAA,EAAe,UAAA;AAAA,gBACf,YAAA,EAAY;AAAA;AAAA,aAAC,EACjB;AAAA,WAAA,EACF,CAAA;AAAA,0BACAA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,KAAA,CAAM,WAAA,EAAY,CAAA;AAAA,0BACpCA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IAnGK,KAAA,CAAM;AAAA,GAmGP;AACN,EAAA,uBAAOA,GAAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,SAAA,EAAU,CAAA;AACtB,CAAA;ACnIO,IAAM,aAAA,GAAN,cAA4B,SAAA,CAAU;AAAA,EAC3C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,kBAAA,EAAA,EAAmB,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EACnF;AACF;AAQO,IAAM,qBAAqB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAC1E,EAAA,MAAM,cAAc,KAAA,CAAM,gBAAA;AAC1B,EAAA,MAAM,YAAA,GAAe,WAAA,EAAa,cAAA,IAAkB,KAAA,CAAM,UAAU,IAAA,GAAO,KAAA;AAE3E,EAAA,MAAM,cAAA,mBAAiBA,GAAAA,CAACuB,WAAAA,EAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AACjE,EAAA,MAAM,gBAAA,mBAAmBvB,GAAAA,CAACwB,OAAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAC/D,EAAA,MAAM,gBAAA,mBAAmBxB,GAAAA,CAACyB,OAAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAExF,EAAA,MAAM,UAAA,GAAa,WAAA,EAAa,UAAA,IAAc,EAAC;AAC/C,EAAA,MAAM,SAAA,GAAY,WAAA,EAAa,SAAA,IAAa,EAAC;AAC7C,EAAA,MAAM,WAAW,WAAA,EAAa,QAAA;AAC9B,EAAA,MAAM,YAAY,WAAA,EAAa,SAAA;AAG/B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIX,SAAkB,MAAM;AACpD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AACvC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAChD,IAAA,OAAO,CAAC,UAAA,CAAW,KAAA,IAAS,KAAA,KAAU,UAAa,KAAA,KAAU,EAAA;AAAA,EAC/D,CAAC,CAAA;AAGD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,QAAAA,CAAiB,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,EAAE,CAAA;AAEvF,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,EAAA;AACjD,IAAA,IAAI,UAAA,KAAe,QAAA,EAAU,WAAA,CAAY,UAAU,CAAA;AAAA,EACrD,GAAG,CAAC,IAAA,CAAK,UAAU,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AAE/B,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAgB;AACpC,IAAA,WAAA,CAAY,GAAG,CAAA;AACf,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,GAAG,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,uBACEhB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AACjC,QAAA,MAAM,QAAA,GAAW,CAAC,UAAA,CAAW,KAAA,IAAS,MAAM,KAAA,KAAU,MAAA,IAAa,MAAM,KAAA,KAAU,EAAA;AACnF,QAAA,IAAI,QAAA,KAAa,OAAA,EAAS,UAAA,CAAW,QAAQ,CAAA;AAE7C,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAU,WAAA,EACrB,QAAA,kBAAAG,KAAC,UAAA,EAAA,EAGG,QAAA,EAAA;AAAA,YAAA,CAAA,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,QAAA,qBACxBA,KAAC,eAAA,EAAA,EACE,QAAA,EAAA;AAAA,cAAA,QAAA,oBAAYH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,cACtC,SAAA,CAAU,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC7BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAA,EAAb,KAAiB,CACtC;AAAA,aAAA,EACH,CAAA;AAAA,4BAIFA,GAAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,gBAAA;AAAA,gBACL,KAAA,EAAO,QAAA;AAAA,gBACP,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,gBAC5B,QAAA,EAAU,CAAC,CAAA,KAAK;AACd,kBAAA,aAAA,CAAc,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA;AAC1C,kBAAA,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,gBAC7B;AAAA;AAAA,aACF;AAAA,YAAA,CAGE,UAAA,CAAW,SAAS,CAAA,IAAK,SAAA,IAAa,iCACtCG,IAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAM,YAAA,EACpB,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAaH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,cACxC,UAAA,CAAW,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC9BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAA,EAAb,KAAiB,CACtC,CAAA;AAAA,cAEA,YAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EACE,yBACG,gBAAA,GACA,OAAA,GACA,iBACA,gBAAA,EACN;AAAA,aAAA,EAEJ;AAAA,WAAA,EAGJ,CAAA,EACF,CAAA;AAAA,UAEC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,0BAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IA7DK,KAAA,CAAM;AAAA,GA8Db;AAEJ;ACvHO,IAAM,SAAA,GAAN,cAAwB,SAAA,CAAU;AAAA,EACvC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAASA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC5E;AACF;AAQA,IAAM,YAAY,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAC1D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIc,QAAAA,CAAwB,KAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,IAAI,CAAA;AACxF,EAAA,MAAM,CAAC,aAAa,cAAc,CAAA,GAAIA,SAAkB,KAAA,CAAM,UAAA,EAAY,eAAe,KAAK,CAAA;AAE9F,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,UAAA,EAAY,MAAA,IAAU,KAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,EAAY,QAAA,IAAY,KAAA;AAI/C,EAAAE,UAAU,MAAM;AACd,IAAA,UAAA,CAAW,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,KAAK,IAAI,CAAA;AAAA,EAC/C,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAA2C;AACnE,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC/B,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,SAAA,GAAY,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAC1C,MAAA,UAAA,CAAW,SAAS,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA,IACjB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEhB,GAAAA,CAAA2B,QAAAA,EAAA,EAEA,QAAA,kBAAA3B,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAM,qBACfG,KAAC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,wBAC/BG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,eACC,QAAA,kBAAAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,MAAA;AAAA,cACA,QAAA;AAAA,cACA,aAAa,KAAA,CAAM,WAAA;AAAA,cACnB,MAAM,KAAA,CAAM,IAAA;AAAA,cACZ,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,cAC5B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,KAAA,CAAM,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAG,gBAAA,gBAAA,CAAiB,CAAC,CAAA;AACvD,gBAAA,aAAA,CAAc,EAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,EAAG,OAAO,KAAK,CAAA;AAAA,cACjD;AAAA;AAAA,WACF,EACF,CAAA;AAAA,UACE,2BAAYA,GAAAA,CAAC,UAAO,IAAA,EAAK,QAAA,EAAS,SAAS,MAAM;AAAE,YAAA,cAAA,CAAe,CAAC,WAAW,CAAA;AAAA,UAAG,CAAA,EAChF,wCAAcA,GAAAA,CAAC,UAAO,CAAA,mBAAKA,GAAAA,CAAC,GAAA,EAAA,EAAI,CAAA,EACnC,CAAA;AAAA,0BACAA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,KAAA,CAAM,WAAA,EAAY;AAAA,SAAA,EACtC,CAAA;AAAA,wBAEAA,IAAC,WAAA,EAAA,EAAY,CAAA;AAAA,QAEV,OAAA,IAAW,WAAA,oBACZA,GAAAA,CAAC,IAAA,EAAA,EAOD;AAAA,OAAA,EAEJ;AAAA,KAAA;AAAA,IAvCG,KAAA,CAAM;AAAA,GAyCb,EACA,CAAA;AAEJ,CAAA;AC9EO,IAAM,oBAAA,GAAN,cAAmC,SAAA,CAAU;AAAA,EAClD,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,oBAAA,EAAA,EAAqB,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EACrF;AACF;AAQO,IAAM,uBAAuB,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,cAAa,KAAa;AAC5E,EAAA,MAAM,QAAA,GAAW4B,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAId,QAAAA,CAAiB,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,EAAE,CAAA;AAC3E,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE9C,EAAA,MAAM,YAAA,GAAe,MAAM,gBAAA,EAAkB,cAAA;AAC7C,EAAA,MAAM,cAAA,mBAAiBd,GAAAA,CAACuB,WAAAA,EAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AACjE,EAAA,MAAM,gBAAA,mBAAmBvB,GAAAA,CAACwB,OAAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAC/D,EAAA,MAAM,gBAAA,mBAAmBxB,GAAAA,CAACyB,OAAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAExF,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAA+C;AACvE,IAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,MAAA,CAAO,KAAA,GAAQ,KAAA,CAAM,KAAK,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA,GAAI,EAAC;AAC7E,IAAA,QAAA,CAAS,aAAa,CAAA;AACtB,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,aAAa,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA2C;AAC7D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,MAAM,YAAA,GAAe,KAAA,CAAM,YAAA,CAAa,KAAA,GAAQ,KAAA,CAAM,KAAK,KAAA,CAAM,YAAA,CAAa,KAAK,CAAA,GAAI,EAAC;AACxF,IAAA,MAAM,YAAA,GAAe,CAAC,GAAG,KAAA,EAAO,GAAG,YAAY,CAAA;AAC/C,IAAA,QAAA,CAAS,YAAY,CAAA;AACrB,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,YAAY,CAAA;AACtC,IAAA,WAAA,CAAY,KAAK,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,4BAAYzB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AACjC,QAAA,MAAM,OAAA,GAAU,CAAC,UAAA,CAAW,KAAA,IAAS,MAAM,MAAA,GAAS,CAAA;AAEpD,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAE/BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA,EAAM;AAAA,cACvC,UAAA,EAAY,CAAC,CAAA,KAAM;AAAE,gBAAA,CAAA,CAAE,cAAA,EAAe;AAAG,gBAAA,WAAA,CAAY,IAAI,CAAA;AAAA,cAAG,CAAA;AAAA,cAC5D,WAAA,EAAa,MAAM,WAAA,CAAY,KAAK,CAAA;AAAA,cACpC,MAAA,EAAQ,UAAA;AAAA,cACR,SAAA,EAAW,EAAA;AAAA,gBACT,oIAAA;AAAA,gBACA,WAAW,4BAAA,GAA+B,4BAAA;AAAA,gBAC1C,YAAA,IAAgB;AAAA,eAClB;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAH,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,8BAAA,EAA+B,CAAA;AAAA,gCACjDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA,KAAA,CAAM,MAAA,KAAW,CAAA,GACd,4DAAA,GACA,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,yBAAA,CAAA,EACrB,CAAA;AAAA,gCACAA,GAAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,QAAA;AAAA,oBACL,IAAA,EAAK,MAAA;AAAA,oBACL,QAAA,EAAQ,IAAA;AAAA,oBACR,SAAA,EAAU,QAAA;AAAA,oBACV,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,oBAC5B,QAAA,EAAU;AAAA;AAAA;AAAkB;AAAA;AAAA,WAChC,EACF,CAAA;AAAA,UAGC,MAAM,MAAA,GAAS,CAAA,oBACdA,GAAAA,CAAC,QAAG,SAAA,EAAU,8DAAA,EACX,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA,qBACbG,IAAAA,CAAC,IAAA,EAAA,EAAa,WAAU,uEAAA,EACtB,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,YAAE,IAAA,EAAK,CAAA;AAAA,4BACnCA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAS,MAAM;AACb,kBAAA,MAAM,WAAW,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,GAAG,CAAA;AACjD,kBAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,kBAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,gBACpC,CAAA;AAAA,gBACA,SAAA,EAAU,yCAAA;AAAA,gBACX,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EAAA,EAZO,GAaT,CACD,CAAA,EACH,CAAA;AAAA,UAGD,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,UAEzD,YAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QACZ,QAAA,EAAA,YAAA,GACG,gBAAA,GACA,OAAA,GACE,cAAA,GACA,gBAAA,EACR,CAAA;AAAA,0BAGFA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IA5EK,KAAA,CAAM;AAAA,GA4EP;AAEN,EAAA,uBAAOA,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,QAAA,EAAA,SAAA,EAAU,CAAA;AAEtB;ACjHO,IAAM,cAAA,GAAN,cAA6B,SAAA,CAAU;AAAA,EAC5C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAO3B,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAc,MAAY,YAAA,EAA2B,CAAA;AAAA,EAC9E;AACF;AAQO,IAAM,iBAAiB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAEtE,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIc,SAAkB,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAEzE,EAAA,MAAM,4BACJd,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAM,KAAM;AACrB,QAAA,UAAA,CAAW,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAEpC,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,aAEnB,QAAA,EAAA,gBAAA,CAAiB;AAAA,YACf,KAAA;AAAA,YACA,YAAA;AAAA,YACA,KAAA;AAAA,YACA,IAAA;AAAA,YACA;AAAA,WACD,CAAA,EAEL,CAAA;AAAA,UAGC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,0BAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IA1BK,KAAA,CAAM;AAAA,GA2Bb;AAGF,EAAA,uBAAOA,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,QAAA,EAAA,SAAA,EAAU,CAAA;AACtB;AAeO,IAAM,mBAAmB,CAAC;AAAA,EAC/B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA;AACA,CAAA,KAAwB;AAExB,EAAA,MAAM,cAAc,KAAA,CAAM,gBAAA;AAC1B,EAAA,MAAM,cAAc,KAAA,EAAO,WAAA;AAC3B,EAAA,MAAM,YAAA,GAAe,WAAA,EAAa,cAAA,IAAkB,KAAA,CAAM,UAAU,IAAA,GAAO,KAAA;AAE3E,EAAA,MAAM,cAAA,mBAAiB3B,GAAAA,CAACuB,WAAAA,EAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AACjE,EAAA,MAAM,gBAAA,mBAAmBvB,GAAAA,CAACwB,OAAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAC/D,EAAA,MAAM,gBAAA,mBAAmBxB,GAAAA,CAACyB,OAAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAExF,EAAA,MAAM,UAAA,GAAa,WAAA,EAAa,UAAA,IAAc,EAAC;AAC/C,EAAA,MAAM,SAAA,GAAY,WAAA,EAAa,SAAA,IAAa,EAAC;AAC7C,EAAA,MAAM,WAAW,WAAA,EAAa,QAAA;AAC9B,EAAA,MAAM,YAAY,WAAA,EAAa,SAAA;AAM/B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIX,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,kBAAkB,KAAA,CAAM,YAAA,KAAA,UAAA;AAC9B,EAAA,MAAM,gBAAgB,KAAA,CAAM,YAAA,KAAA,QAAA;AAE5B,EAAA,MAAM,uBAAuB,UAAA,CAAW,MAAA,GAAS,CAAA,IAAK,SAAA,IAAa,gBAAgB,WAAA,IAAe,eAAA;AAKlG,EAAA,uBACEX,KAAC,UAAA,EAAA,EAEG,QAAA,EAAA;AAAA,IAAA,CAAA,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,QAAA,qBACxBA,KAAC,eAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,QAAA,oBAAYH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,MACtC,SAAA,CAAU,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC7BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAA,EAAb,KAAiB,CACtC;AAAA,KAAA,EACH,CAAA;AAAA,oBAIFA,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,QAC5B,QAAQ,KAAA,EAAO,MAAA;AAAA,QACf,MAAM,KAAA,EAAO,IAAA;AAAA,QACb,KAAK,KAAA,EAAO,GAAA;AAAA,QACZ,MAAM,eAAA,IAAmB,CAAC,YAAA,GACtB,UAAA,GACA,gBACE,QAAA,GACA,MAAA;AAAA,QACN,KAAA,EAAO,KAAA,EAAO,KAAA,IAAS,KAAA,IAAS,EAAA;AAAA,QAChC,QAAA,EAAU,CAAC,CAAA,KAAM;AACb,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,QAAA,CAAS,CAAC,CAAA;AAAA,UACZ;AACA,UAAA,IAAIqB,MAAAA,GAAa,EAAE,MAAA,CAAO,KAAA;AAC1B,UAAA,IAAI,aAAA,EAAe;AACjB,YAAAA,MAAAA,GAAQ,EAAE,MAAA,CAAO,KAAA,KAAU,KAAK,EAAA,GAAK,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAAA,UAC5D;AACA,UAAA,KAAA,EAAO,SAASA,MAAK,CAAA;AACrB,UAAA,YAAA,CAAa,OAAO,IAAI,CAAA;AACxB,UAAA,aAAA,CAAcA,MAAAA,EAAO,OAAO,KAAK,CAAA;AAAA,QACnC;AAAA;AAAA,KAGF;AAAA,IAGD,oBAAA,oBACClB,IAAAA,CAAC,eAAA,EAAA,EAAgB,OAAM,YAAA,EAEpB,QAAA,EAAA;AAAA,MAAA,WAAA,oBACCA,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,IAAC6B,IAAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,CAAA,EAClB,CAAA;AAAA,wBACA7B,GAAAA,CAAC,cAAA,EAAA,EACC,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAG,uBAAY,CAAA,EAClB;AAAA,OAAA,EACF,CAAA;AAAA,MAGD,SAAA,oBAAaA,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,MACxC,UAAA,CAAW,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC9BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAA,EAAb,KAAiB,CACtC,CAAA;AAAA,MAGA,mCACCA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,eAAA,CAAgB,CAAC,YAAY,CAAA;AAAA,UAC5C,SAAA,EAAU,KAAA;AAAA,UAET,QAAA,EAAA,YAAA,mBAAeA,GAAAA,CAAC8B,MAAAA,EAAA,EAAO,IAAA,EAAM,EAAA,EAAI,CAAA,mBAAK9B,GAAAA,CAAC+B,GAAAA,EAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA,OACxD;AAAA,MAID,YAAA,oBACC/B,GAAAA,CAAC,KAAA,EAAA,EACE,yBACG,gBAAA,GACA,OAAA,GACE,iBACA,gBAAA,EACR;AAAA,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;AC3LO,IAAM,iBAAA,GAAN,cAAgC,SAAA,CAAU;AAAA,EAC/C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAWO,IAAM,oBAAoB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AACzE,EAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AAGxB,EAAAgB,UAAU,MAAM;AACd,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,CAAA;AACxC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC3B,MAAA,IAAA,CAAK,QAAA,CAAS,SAAA,EAAW,EAAE,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,SAAS,CAAC,CAAA;AAEpB,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,KAAK,EAAC;AAC9C,IAAA,IAAA,CAAK,QAAA,CAAS,SAAA,EAAW,CAAC,GAAG,OAAA,EAAS,EAAE,GAAA,EAAK,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,CAAC,CAAA;AAAA,EAC/D,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAkB;AAC1C,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,KAAK,EAAC;AAC9C,IAAA,MAAM,UAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,EAAQ,CAAA,KAAc,MAAM,KAAK,CAAA;AACjE,IAAA,IAAA,CAAK,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,EAAe,SAAA,EAA4B,QAAA,KAAqB;AACpF,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,KAAK,EAAC;AAC9C,IAAA,MAAM,UAAU,OAAA,CAAQ,GAAA;AAAA,MAAI,CAAC,IAAA,EAAW,CAAA,KACtC,CAAA,KAAM,KAAA,GAAQ,EAAE,GAAG,IAAA,EAAM,CAAC,SAAS,GAAG,QAAA,EAAS,GAAI;AAAA,KACrD;AACA,IAAA,IAAA,CAAK,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACEhB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,IAAA,EAAM,SAAA;AAAA,MACN,QAAQ,MAAM;AACZ,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,KAAK,EAAC;AAExC,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,IAAC,WAAA,EAAA,EAAY,CAAA;AAAA,0BACbA,GAAAA,CAAC,WAAA,EAAA,EACC,0BAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,CAAM,WAAW,CAAA,oBAChBH,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAgC,QAAA,EAAA,+BAAA,EAE7C,CAAA;AAAA,YAGD,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAsC,0BAChDG,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,gDAAA;AAAA,gBAGZ,QAAA,EAAA;AAAA,kCAAAA,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,QAAA,EACrB,QAAA,EAAA;AAAA,oCAAAH,GAAAA,CAAC,eAAA,EAAA,EAAgB,OAAA,EAAO,IAAA,EACtB,QAAA,kBAAAA,GAAAA,CAACgC,OAAAA,EAAA,EAAM,OAAA,EAAQ,KAAA,EAAM,QAAA,EAAA,KAAA,EAAG,CAAA,EAC1B,CAAA;AAAA,oCACAhC,GAAAA;AAAA,sBAAC,gBAAA;AAAA,sBAAA;AAAA,wBACG,YAAA,EAAc,IAAA;AAAA,wBACd,OAAO,IAAA,CAAK,GAAA;AAAA,wBACZ,KAAA;AAAA,wBACA,OAAA,EAAS,IAAA,CAAK,GAAA,CAAI,IAAA,EAAK,IAAK,EAAA;AAAA,wBAC5B,YAAA;AAAA,wBACA,QAAA,EAAU,CAAC,CAAA,KAAM,YAAA,CAAa,OAAO,KAAA,EAAO,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,wBAC1D;AAAA;AAAA;AACF,mBAAA,EAUJ,CAAA;AAAA,kCAEAG,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,QAAA,EACrB,QAAA,EAAA;AAAA,oCAAAH,GAAAA,CAAC,eAAA,EAAA,EAAgB,OAAA,EAAO,IAAA,EACtB,QAAA,kBAAAA,GAAAA,CAACgC,OAAAA,EAAA,EAAM,OAAA,EAAQ,OAAA,EAAQ,QAAA,EAAA,OAAA,EAAK,CAAA,EAC9B,CAAA;AAAA,oCACEhC,GAAAA;AAAA,sBAAC,gBAAA;AAAA,sBAAA;AAAA,wBACC,YAAA,EAAc,IAAA;AAAA,wBACd,OAAO,IAAA,CAAK,KAAA;AAAA,wBACZ,KAAA;AAAA,wBACA,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,IAAA,EAAK,IAAK,EAAA;AAAA,wBAC9B,YAAA;AAAA,wBACA,QAAA,EAAU,CAAC,CAAA,KAAM,YAAA,CAAa,OAAO,OAAA,EAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,wBAC5D;AAAA;AAAA;AACF,mBAAA,EAQJ,CAAA;AAAA,kBAgBI,KAAA,CAAM,qCAAsBA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBAC7B,IAAA,EAAK,QAAA;AAAA,sBACL,OAAA,EAAQ,aAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,OAAA,EAAS,MAAM,gBAAA,CAAiB,KAAK,CAAA;AAAA,sBACrC,QAAA,EAAU,YAAA;AAAA,sBAEV,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA;AACpB;AAAA,eAAA;AAAA,cAxEK;AAAA,aA0ER,CAAA;AAAA,4BAEDA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBACb,QAAA,kBAAAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAS,aAAA;AAAA,gBACT,QAAA,EAAU,YAAA;AAAA,gBAEV,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,WAAU,MAAA,EAAO;AAAA;AAAA,aACnC,EACF;AAAA,WAAA,EACF,CAAA,EACF,CAAA;AAAA,UAEC,MAAM,WAAA,oBACLA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY;AAAA,SAAA,EAExC,CAAA;AAAA,MAEJ;AAAA;AAAA,GACF;AAEJ;AC1KO,IAAM,gBAAA,GAAN,cAA+B,SAAA,CAAU;AAAA,EAC9C,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EACjF;AACF;AAQA,IAAM,mBAAmB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AACjE,EAAA,MAAM,gBAAA,GAAkC;AAAA,IACtC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,WAAA,EAAY;AAAA,IAC3B,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,WAAA,EAAY;AAAA,IAC3B,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,WAAA,EAAY;AAAA,IAC3B,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,WAAA;AAAY,GAC7B;AAEA,EAAA,MAAM,KAAA,GAAS,KAAA,EAAO,UAAA,EAAY,IAAA,IAAQ,gBAAA;AAE1C,EAAA,MAAM,WAAA,GAAc,KAAA,EAAO,UAAA,EAAY,WAAA,IAAe,MAAM,WAAA,IAAe,IAAA;AAE3E,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAsB;AACtC,IAAA,IAAI,WAAA,KAAgB,MAAA,EAAQ,OAAO,IAAA,CAAK,WAAW,CAAA;AACnD,IAAA,OAAO,IAAA,CAAK,SAAS,IAAA,CAAK,EAAA;AAAA,EAC5B,CAAA;AAEA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIc,SAAS,KAAK,CAAA;AAEtC,EAAA,uBACEd,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAM,KAAM;AACrB,QAAA,MAAM,cAAA,GAA2B,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GACtD,KAAA,CAAM,QACN,EAAC;AAEL,QAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkB;AACtC,UAAA,MAAM,SAAA,GAAY,cAAA,CAAe,QAAA,CAAS,KAAK,IAC3C,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,KAAK,CAAA,GACxC,CAAC,GAAG,gBAAgB,KAAK,CAAA;AAC7B,UAAA,KAAA,CAAM,SAAS,SAAS,CAAA;AAAA,QAC1B,CAAA;AAEA,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,2DAAA,EAClB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,UAC9B,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,0BAE1DA,IAAC,WAAA,EAAA,EACC,QAAA,kBAAAG,KAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAG,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,UAAA;AAAA,gBACL,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,gBAC5B,SAAA,EAAW,EAAA;AAAA,kBACT,qDAAA;AAAA,kBACA,CAAC,eAAe,MAAA,IAAU;AAAA,iBAC5B;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,cAAA,CAAe,MAAA,GAAS,CAAA,mBACvBH,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sBAAA,EACZ,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,GAAA,KAAQ;AAC3B,oBAAA,MAAM,SAAS,KAAA,CAAM,IAAA;AAAA,sBACnB,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,CAAA,CAAE,UAAS,KAAM;AAAA,qBAC1C;AACA,oBAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAsC,OAAA,EAAQ,WAAA,EAC5C,QAAA,EAAA,MAAA,EAAQ,IAAA,IAAQ,GAAA,EAAA,EADP,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,GAAA,CAEhC,CAAA;AAAA,kBAEJ,CAAC,GACH,CAAA,mBAEAA,IAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,CAAM,eAAe,eAAA,EAAgB,CAAA;AAAA,kCAE9CA,GAAAA,CAACiC,cAAAA,EAAA,EAAe,WAAU,yBAAA,EAA0B;AAAA;AAAA;AAAA,aACtD,EACF,CAAA;AAAA,4BAEAjC,GAAAA,CAAC,cAAA,EAAA,EAAe,WAAU,4CAAA,EACxB,QAAA,kBAAAG,KAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAAY,WAAA,EAAY,CAAA;AAAA,8BACtCG,KAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,gCAAAH,GAAAA,CAAC,gBAAa,QAAA,EAAA,oBAAA,EAAkB,CAAA;AAAA,gCAChCA,GAAAA,CAAC,YAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,kBAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAI,CAAA,CAAE,QAAA,EAAS;AACtC,kBAAA,MAAM,QAAA,GAAW,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAC9C,kBAAA,uBACEG,IAAAA;AAAA,oBAAC,WAAA;AAAA,oBAAA;AAAA,sBAEC,UAAU,MAAM;AACd,wBAAA,aAAA,CAAc,KAAA,EAAM,OAAM,KAAK,CAAA;AAC/B,wBAAA,YAAA,CAAa,KAAK,CAAA;AAAA,sBAAC,CAAA;AAAA,sBAGrB,QAAA,EAAA;AAAA,wCAAAH,GAAAA;AAAA,0BAACkC,KAAAA;AAAA,0BAAA;AAAA,4BACC,SAAA,EAAW,EAAA;AAAA,8BACT,cAAA;AAAA,8BACA,WAAW,aAAA,GAAgB;AAAA;AAC7B;AAAA,yBACF;AAAA,wBACC,IAAA,CAAK;AAAA;AAAA,qBAAA;AAAA,oBAZD,GAAG,KAAK,CAAA,GAAA;AAAA,mBAaf;AAAA,gBAEJ,CAAC,CAAA,EACH;AAAA,eAAA,EACF;AAAA,aAAA,EACF,CAAA,EACF;AAAA,WAAA,EACF,CAAA,EACF,CAAA;AAAA,0BAEAlC,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IAzFK,KAAA,CAAM;AAAA,GA0Fb;AAEJ,CAAA;AC/IO,IAAM,WAAA,GAAN,cAA0B,SAAA,CAAU;AAAA,EACzC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAQA,GAAAA,CAAC,WAAA,EAAA,EAAa,IAAA,EAAY,OAAc,YAAA,EAA2B,CAAA;AAAA,EAC7E;AACF;AAQA,IAAM,cAAc,CAAC,EAAC,IAAA,EAAM,KAAA,EAAO,cAAY,KAAY;AACzD,EAAA,MAAM,SAAA,GAAwB,EAAE,GAAG,KAAA,EAAO,SAAA,EAAA,QAAA,eAA6B;AACvE,EAAA,uBAAQA,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,SAAA,EAAW,MAAa,YAAA,EAA2B,CAAA;AACpF,CAAA;ACfO,IAAMmC,SAAAA,GAAN,cAAuB,SAAA,CAAU;AAAA,EACtC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEnC,GAAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAY,OAAc,YAAA,EAA4B,CAAA;AAAA,EAGpE;AACF;AAQA,IAAM,WAAW,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAA2B;AAEvE,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,CAAM,GAAA,IAAO,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA;AAEzE,EAAA,uBAAOA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEN,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAM,qBACfG,KAAC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,wBAC/BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,QAAA,EAAA,EAAS,SAAA,EAAW,cAAA,CAAe,MAAA,EAAS,GAAG,KAAA,EAAO,QAAA,EAAU,CAAC,KAAA,KAAU,cAAc,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA,EAC3G,0BAAAA,GAAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,QAAA,qBACnBA,GAAAA,CAAC,YAAA,EAAA,EAA4B,OAAO,QAAA,EAAA,EAAjB,QAA2B,CAC/C,CAAA,EACH,GACF,CAAA,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,KAAA,CAAM,WAAA,EAAY,CAAA;AAAA,wBACpCA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA,KAAA;AAAA,IAjBG,KAAA,CAAM;AAAA,GAkBR;AACP,CAAA;ACtCO,IAAM,eAAA,GAAN,cAA8B,SAAA,CAAU;AAAA,EAC7C,MAAA,GAAsB;AACtB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACpC,IAAA,uBACEA,GAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAc,MAAY,YAAA,EAA2B,CAAA;AAAA,EAE1E;AACF;AAQA,IAAM,kBAAkB,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,cAAa,KAA0B;AAC7E,EAAA,MAAM,gBAAA,GAAkC;AAAA,IACtC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,IAClC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,IAClC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,IAClC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,IAClC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,IAClC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,IAClC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA,EAAO;AAAA,IACpC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,KAAA,EAAO,OAAO,KAAA;AAAO,GACtC;AAEA,EAAA,MAAM,OAAA,GAAW,KAAA,CAAM,UAAA,EAAY,IAAA,IAA0B,gBAAA;AAE7D,EAAA,MAAM,4BAAYA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAM,qBACfG,KAAC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,SAAA,EAAU,iBAClB,QAAA,EAAA,KAAA,CAAM,KAAA,IAAS,MAAM,IAAA,EACxB,CAAA;AAAA,UACC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY;AAAA,SAAA,EAC5D,CAAA;AAAA,wBAEAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACE,GAAG,KAAA;AAAA,YACJ,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,YACtB,eAAe,CAAC,CAAA,KAAK,aAAA,CAAc,CAAA,EAAG,OAAO,KAAK,CAAA;AAAA,YAClD,SAAA,EAAU,gBAAA;AAAA,YAET,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,EAAK,0BACjBG,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,EAAA;AAAA,kBACT,uDAAA;AAAA,kBACA,KAAA,GAAQ,IAAI,YAAA,GAAe;AAAA,iBAC7B;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAAH,GAAAA;AAAA,oBAAC,cAAA;AAAA,oBAAA;AAAA,sBACC,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,sBAC5B,KAAA,EAAO,GAAA,CAAI,KAAA,IAAU,MAAA,CAAO,IAAI,EAAE,CAAA;AAAA,sBAClC,EAAA,EAAI,CAAA,IAAA,EAAO,GAAA,CAAI,EAAE,CAAA;AAAA;AAAA,mBAAI;AAAA,kCACvBA,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,CAAA,IAAA,EAAO,GAAA,CAAI,EAAE,CAAA,CAAA,EAC1B,QAAA,EAAA,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,IAAA,EACpB;AAAA;AAAA,eAAA;AAAA,cAZK,GAAA,CAAI;AAAA,aAcZ;AAAA;AAAA,SACH,EACF,CAAA;AAAA,wBAEAA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA,KAAA;AAAA,IAxCG,KAAA,CAAM;AAAA,GAyCR;AAEL,EAAA,uBAAOA,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,QAAA,EAAA,SAAA,EAAU,CAAA;AAEtB,CAAA;ACjEO,IAAM,aAAA,GAAN,cAA4B,SAAA,CAAU;AAAA,EAC3C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAO3B,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAY,OAAc,YAAA,EAA4B,CAAA;AAAA,EAC9E;AACF;AAQO,IAAM,gBAAgB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AACrE,EAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AACpB,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAA,KAAW,aAAA,CAAc;AAAA,IAC/C,OAAA;AAAA,IACA,MAAM,KAAA,CAAM;AAAA,GACb,CAAA;AAED,EAAA,MAAM,SAAS,CAAC,KAAA,CAAM,QAAA,IAAY,MAAA,CAAO,SAAS,KAAA,CAAM,QAAA;AACxD,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,IAAU,KAAA,CAAM,QAAA,IAAY,CAAA,CAAA;AAErD,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIc,SAAkB,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAEzE,EAAAE,UAAU,MAAM;AACd,IAAA,UAAA,CAAW,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,EACtC,CAAA,EAAE,CAAC,KAAK,CAAC,CAAA;AAET,EAAA,uBACEhB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,sBACNG,KAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,wBAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,wBAE/BA,GAAAA,CAAC,WAAA,EAAA,EACC,0BAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACjBA,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAU,gDAAA;AAAA,cAIT,QAAA,EAAA;AAAA,gBAAA,KAAA,CAAM,cAAA,EAAgB,GAAA,CAAI,CAAC,UAAA,EAAY,UAAA,KAAe;AAErD,kBAAA,MAAM,QACJ,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,UAAA,GAAa,CAAC,UAAU,CAAA;AACtD,kBAAA,MAAM,OAAO,KAAA,CAAM,MAAA;AAEnB,kBAAA,uBACEH,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBAEC,SAAA,EAAW,wBAAwB,IAAI,CAAA,CAAA;AAAA,sBAEtC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,QAAA,qBACVA,GAAAA;AAAA,wBAAC,SAAA;AAAA,wBAAA;AAAA,0BAEC,OAAA;AAAA,0BACA,IAAA,EAAM,GAAG,KAAA,CAAM,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,SAAS,IAAI,CAAA,CAAA;AAAA,0BAC7C,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAClB,QAAA,EAAA;AAAA,4CAAAH,GAAAA,CAAC,SAAA,EAAA,EAAW,QAAA,EAAA,QAAA,CAAS,KAAA,EAAM,CAAA;AAAA,4CAC3BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,8BAAC,gBAAA;AAAA,8BAAA;AAAA,gCACC,YAAA,EAAc,IAAA;AAAA,gCACd,OAAO,KAAA,CAAM,KAAA;AAAA,gCACb,KAAA,EAAO,QAAA;AAAA,gCACP,OAAA;AAAA,gCAEA,KAAA;AAAA,gCACA;AAAA;AAAA,6BACF,EAMF,CAAA;AAAA,4CACAA,GAAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,UAAA,CAAW,OAAO,OAAA,EAAQ;AAAA,2BAAA,EAC1C;AAAA,yBAAA;AAAA,wBAvBG,GAAG,KAAA,CAAM,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,SAAS,IAAI,CAAA;AAAA,uBA0B/C;AAAA,qBAAA;AAAA,oBA/BI;AAAA,mBAgCP;AAAA,gBAEJ,CAAC,CAAA;AAAA,gBAGA,6BACCA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,OAAA,EAAQ,aAAA;AAAA,oBACR,IAAA,EAAK,MAAA;AAAA,oBACL,OAAA,EAAS,MAAM,MAAA,CAAO,KAAK,CAAA;AAAA,oBAC3B,SAAA,EAAU,UAAA;AAAA,oBAEV,QAAA,kBAAAA,GAAAA,CAACoC,MAAAA,EAAA,EAAO,MAAM,EAAA,EAAI;AAAA;AAAA;AACpB;AAAA,aAAA;AAAA,YA3DG,IAAA,CAAK;AAAA,WA8Db,CAAA;AAAA,UAGA,0BACCjC,IAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,WAAA;AAAA,cACR,OAAA,EAAS,MAAM,MAAA,CAAO,EAAE,CAAA;AAAA,cACxB,QAAA,EAAU,YAAA;AAAA,cACV,SAAA,EAAU,QAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAH,IAACqC,IAAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,WAAU,MAAA,EAAO,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA;AAErC,SAAA,EAEJ,CAAA,EACF,CAAA;AAAA,QAEC,MAAM,WAAA,oBAAerC,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,wBAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA;AAAA,GAEJ;AAEJ;AC9IA,SAAS,IAAA,CAAK;AAAA,EACZ,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoD;AAClD,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;AAEA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoD;AAClD,EAAA,uBACEA,GAAAA;AAAA,IAAe,aAAA,CAAA,IAAA;AAAA,IAAd;AAAA,MACC,WAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,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,iqBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,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,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA,GACN;AAEJ;ACtCO,IAAM,iBAAA,GAAN,cAAgC,SAAA,CAAU;AAAA,EAC/C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAY,OAAc,YAAA,EAA4B,CAAA;AAAA,EAClF;AACF;AAcA,IAAM,oBAAoB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAA0B;AAC/E,EAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AACpB,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAA,KAAWsC,aAAAA,CAAc;AAAA,IAC/C,OAAA;AAAA,IACA,MAAM,KAAA,CAAM;AAAA,GACb,CAAA;AAED,EAAA,MAAM,CAAC,WAAW,YAAY,CAAA,GAAIxB,SAAiB,MAAA,CAAO,CAAC,CAAA,EAAG,EAAA,IAAM,EAAE,CAAA;AAEtE,EAAA,MAAM,SAAS,CAAC,KAAA,CAAM,QAAA,IAAY,MAAA,CAAO,SAAS,KAAA,CAAM,QAAA;AACxD,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,IAAU,KAAA,CAAM,QAAA,IAAY,CAAA,CAAA;AAErD,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAM,UAAU,EAAE,EAAA,EAAI,OAAO,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAG;AAC1C,IAAA,MAAA,CAAO,OAAO,CAAA;AACd,IAAA,YAAA,CAAa,QAAQ,EAAE,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkB;AACtC,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAK,CAAA,CAAE,EAAA;AAChC,IAAA,MAAA,CAAO,KAAK,CAAA;AACZ,IAAA,IAAI,SAAA,KAAc,SAAA,IAAa,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAChD,MAAA,MAAM,UAAU,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,IAAK,OAAO,CAAC,CAAA;AAC7C,MAAA,IAAI,OAAA,EAAS,YAAA,CAAa,OAAA,CAAQ,EAAE,CAAA;AAAA,IACtC;AAAA,EACF,CAAA;AAEA,EAAA,uBACEd,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,sBACNG,KAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACxB,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,KAAA,oBAASH,GAAAA,CAAC,SAAA,EAAA,EAAU,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA,EAAI,CAAA;AAAA,wBAC/CA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EACb,QAAA,kBAAAG,IAAAA,CAAC,QAAK,KAAA,EAAO,SAAA,EAAW,aAAA,EAAe,YAAA,EAAc,WAAU,QAAA,EAE7D,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,2CAAA,EACjB,QAAA,EAAA;AAAA,YAAA,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACjBA,IAAAA,CAAC,KAAA,EAAA,EAAkB,WAAU,mBAAA,EAC3B,QAAA,EAAA;AAAA,8BAAAH,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI,SAAA,EAAU,yBAAA,EACpC,QAAA,EAAA,KAAA,CAAM,aAAA,GACH,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,KAAA,CAAM,aAAa,CAAA,CAAE,CAAA,IAC1D,CAAA,KAAA,EAAQ,KAAA,GAAQ,CAAC,CAAA,CAAA,GACjB,CAAA,KAAA,EAAQ,KAAA,GAAQ,CAAC,CAAA,CAAA,EACvB,CAAA;AAAA,cACC,6BACCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,MAAA;AAAA,kBACL,OAAA,EAAQ,OAAA;AAAA,kBACR,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,kBAEjC,QAAA,kBAAAA,GAAAA,CAACoC,MAAAA,EAAA,EAAO,MAAM,EAAA,EAAI;AAAA;AAAA;AACpB,aAAA,EAAA,EAfM,IAAA,CAAK,EAiBf,CACD,CAAA;AAAA,YACA,0BACCjC,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAS,SAAA;AAAA,gBACT,QAAA,EAAU,YAAA;AAAA,gBACV,SAAA,EAAU,MAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAH,IAACqC,IAAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,WAAU,MAAA,EAAO,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA;AACrC,WAAA,EAEJ,CAAA;AAAA,UAGC,OAAO,GAAA,CAAI,CAAC,MAAM,KAAA,qBACjBrC,IAAC,WAAA,EAAA,EAA0B,KAAA,EAAO,IAAA,CAAK,EAAA,EAAI,WAAU,MAAA,EAClD,QAAA,EAAA,KAAA,CAAM,gBAAgB,GAAA,CAAI,CAAC,YAAY,UAAA,KAAe;AACrD,YAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAClC,UAAA,GACA,CAAC,UAAU,CAAA;AACf,YAAA,MAAM,OAAO,KAAA,CAAM,MAAA;AAEnB,YAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAqB,SAAA,EAAW,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAA,EAC1D,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,QAAA,qBACVA,GAAAA;AAAA,cAAC,SAAA;AAAA,cAAA;AAAA,gBAEC,OAAA;AAAA,gBACA,IAAA,EAAM,GAAG,KAAA,CAAM,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,SAAS,IAAI,CAAA,CAAA;AAAA,gBAC7C,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAClB,QAAA,EAAA;AAAA,kCAAAH,GAAAA,CAAC,SAAA,EAAA,EAAW,QAAA,EAAA,QAAA,CAAS,KAAA,EAAM,CAAA;AAAA,kCAC3BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,aAAa,QAAA,CAAS,WAAA;AAAA,sBACtB,QAAA,EAAU,SAAS,QAAA,IAAY,YAAA;AAAA,sBAC9B,GAAG;AAAA;AAAA,mBACN,EACF,CAAA;AAAA,kCACAA,GAAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,UAAA,CAAW,OAAO,OAAA,EAAQ;AAAA,iBAAA,EAC1C;AAAA,eAAA;AAAA,cAdG,GAAG,KAAA,CAAM,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,SAAS,IAAI,CAAA;AAAA,aAiB/C,KApBO,UAqBV,CAAA;AAAA,UAEJ,CAAC,CAAA,EAAA,EA/Be,IAAA,CAAK,EAgCvB,CACD;AAAA,SAAA,EACH,GACF,CAAA,EACF,CAAA;AAAA,QAEC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,wBAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA;AAAA,GAEJ;AAEJ,CAAA;AC7IO,IAAM,WAAA,GAAN,cAA0B,SAAA,CAAU;AAAA,EACzC,MAAA,GAAS;AACP,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC5E;AACF;AAQA,IAAM,cAAc,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAC5D,EAAA,MAAM,gBAAA,GAAkC;AAAA,IACtC,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,MAAM,yBAAA,EAA0B;AAAA,IACnD,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,MAAM,yBAAA,EAA0B;AAAA,IACnD,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,MAAM,yBAAA,EAA0B;AAAA,IACnD,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,MAAM,yBAAA;AAA0B,GACrD;AAGA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIc,QAAAA;AAAA,IACvB,KAAA,EAAO,UAAA,EAAY,IAAA,EAAM,KAAA,CAAM,CAAC,IAAA,KAA8B,MAAA,IAAU,IAAI,CAAA,GACzE,KAAA,CAAM,UAAA,CAAW,IAAA,GACjB;AAAA,GACN;AACA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAIA,SAAiB,KAAA,CAAM,KAAA,EAAO,QAAA,EAAS,IAAK,EAAE,CAAA;AAExE,EAAA,MAAM,WAAA,GAAc,KAAA,EAAO,UAAA,EAAY,WAAA,IAAe,MAAM,WAAA,IAAe,IAAA;AAG3E,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAC9C,IAAA,IAAI,CAAC,YAAA,IAAgB,KAAA,CAAM,KAAA,EAAO;AAChC,MAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,KAAK,CAAA;AACrC,MAAA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,KAAA,CAAM,KAAK,CAAC,CAAA;AAGlC,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,WAAA,EAAa;AACxC,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,OAAO,MAAA,KAAW;AAChD,QAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,KAAA,CAAM,SAAU,CAAA;AAC/C,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAA,IAAI;AACF,YAAA,UAAA,CAAW,IAAI,CAAA;AACf,YAAA,MAAM,UAAA,GAAa,MAAM,KAAA,CAAM,WAAA,CAAa,eAAe,CAAA;AAC3D,YAAA,QAAA,CAAS,UAAU,CAAA;AAAA,UACrB,SAAS,GAAA,EAAK;AACZ,YAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,0BAAA,EAA6B,KAAA,CAAM,IAAI,KAAK,GAAG,CAAA;AAC7D,YAAA,QAAA,CAAS,EAAE,CAAA;AAAA,UACb,CAAA,SAAE;AACA,YAAA,UAAA,CAAW,KAAK,CAAA;AAAA,UAClB;AAAA,QACF,CAAA,MAAO;AAEL,UAAA,QAAA,CAAS,EAAE,CAAA;AACX,UAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,EAAE,CAAA;AAAA,QAC9B;AAAA,MACF,CAAC,CAAA;AAGD,MAAA,OAAO,MAAM,aAAa,WAAA,IAAc;AAAA,IAC1C;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,KAAA,CAAM,WAAW,KAAA,CAAM,WAAA,EAAa,KAAA,CAAM,IAAI,CAAC,CAAA;AAEzD,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAA8B;AAC9C,IAAA,MAAM,GAAA,GACJ,WAAA,KAAgB,MAAA,GACZ,IAAA,CAAK,IAAA,GACL,IAAA,CAAK,KAAA,EAAO,QAAA,IAAW,IAAK,IAAA,CAAK,EAAA,EAAI,QAAA,EAAS;AACpD,IAAA,OAAO,GAAA,EAAK,UAAS,IAAK,EAAA;AAAA,EAC5B,CAAA;AAEA,EAAA,uBACEhB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAM,KAAM;AACrB,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,KAAA,EAAO,QAAA,EAAS,IAAK,KAAA;AAEhD,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,2FAAA,EAClB,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,EAAA;AAAA,4BAAAH,IAAC,SAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAClB,CAAA;AAAA,YACC,MAAM,WAAA,oBACLA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,4BAEtCA,IAAC,WAAA,EAAA,EAAY;AAAA,WAAA,EACf,CAAA;AAAA,0BAEAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAG,IAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,KAAA,CAAM,QAAA,IAAY,YAAA,IAAgB,OAAA;AAAA,cAC5C,aAAA,EAAe,CAAC,GAAA,KAAQ;AACtB,gBAAA,aAAA,CAAc,GAAA,EAAK,OAAO,KAAK,CAAA;AAE/B,gBAAA,QAAA,CAAS,GAAG,CAAA;AAGZ,gBAAA,IAAI,KAAA,CAAM,YAAY,cAAA,EAAgB;AACpC,kBAAA,MAAM,eAAe,KAAA,CAAM,IAAA;AAAA,oBACzB,CAAC,IAAA,KAAS,QAAA,CAAS,IAAI,CAAA,KAAM;AAAA,mBAC/B;AACA,kBAAA,KAAA,CAAM,UAAA,CAAW,eAAe,YAAY,CAAA;AAAA,gBAC9C;AAAA,cACF,CAAA;AAAA,cACA,OAAO,YAAA,IAAgB,MAAA;AAAA,cAEvB,QAAA,EAAA;AAAA,gCAAAH,IAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,aAAA,EAAA,EAAc,SAAA,EAAU,wCACvB,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBACC,WAAA,EACE,OAAA,GACI,aAAA,GACA,KAAA,CAAM,WAAA,IAAe;AAAA;AAAA,mBAG/B,CAAA,EACF,CAAA;AAAA,gCAEAG,KAAC,aAAA,EAAA,EACE,QAAA,EAAA;AAAA,kBAAA,KAAA,CAAM,IAAI,CAAC,IAAA,qBACVH,GAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,QAAA,CAAS,IAAI,GAC7B,QAAA,EAAA,IAAA,CAAK,IAAA,EAAA,EADgC,GAAG,KAAA,CAAM,IAAI,IAAI,IAAA,CAAK,EAAE,IAEhE,CACD,CAAA;AAAA,kBACA,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,CAAC,OAAA,oBACtBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAoC,QAAA,EAAA,6BAAA,EAEnD;AAAA,iBAAA,EAEJ;AAAA;AAAA;AAAA,WACF,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IAhEK,KAAA,CAAM;AAAA,GAiEb;AAEJ,CAAA;AC7JO,IAAM,oBAAA,GAAN,cAAmC,SAAA,CAAU;AAAA,EAClD,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,uBACTA,GAAAA;AAAA,UAAC,oBAAA;AAAA,UAAA;AAAA,YACC,YAAA;AAAA,YACA,KAAA;AAAA,YACA,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,EAAC;AAAA,YACvB,UAAU,CAAC,CAAA,KAAK,aAAA,CAAc,CAAA,EAAG,OAAO,KAAK;AAAA;AAAA;AAC/C;AAAA,KAEJ;AAAA,EAEJ;AACF;AASO,IAAM,uBAAuB,CAAC,EAAE,OAAO,KAAA,EAAO,QAAA,EAAU,cAAa,KAAa;AACvF,EAAA,MAAM,gBAAA,GAAkC;AAAA,IACtC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,IACtD,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,oBAAA,EAAsB,SAAS,IAAA,EAAK;AAAA,IACnD,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,IACtD,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,sBAAA,EAAwB,SAAS,KAAA;AAAM,GACxD;AAGA,EAAA,MAAM,cAAA,GACH,KAAA,CAAM,UAAA,EAAY,IAAA,IAA0B,gBAAA;AAG/C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIc,QAAAA;AAAA,IAC5B,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ;AAAA,GAC7B;AAEA,EAAA,MAAM,aAAa,OAAA,CAAQ,KAAA,CAAM,CAAC,GAAA,KAAQ,IAAI,OAAO,CAAA;AAErD,EAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,KAAqB;AAC7C,IAAA,MAAM,OAAA,GAAU,QAAQ,GAAA,CAAI,CAAC,SAAS,EAAE,GAAG,GAAA,EAAK,OAAA,EAAQ,CAAE,CAAA;AAC1D,IAAA,UAAA,CAAW,OAAO,CAAA;AAClB,IAAA,aAAA,CAAc,SAAS,KAAK,CAAA;AAC5B,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,MAAA,EAAqB,OAAA,KAAqB;AACnE,IAAA,MAAM,UAAU,OAAA,CAAQ,GAAA;AAAA,MAAI,CAAC,GAAA,KAC3B,GAAA,CAAI,EAAA,KAAO,MAAA,CAAO,KAAK,EAAE,GAAG,GAAA,EAAK,OAAA,EAAQ,GAAI;AAAA,KAC/C;AACA,IAAA,aAAA,CAAc,SAAS,KAAK,CAAA;AAC5B,IAAA,UAAA,CAAW,OAAO,CAAA;AAClB,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,SAAA,mBAAYX,IAAAA,CAAC,QAAA,EAAA,EACjB,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA;AAAA,sBAAAH,IAAC,SAAA,EAAA,EAAU,SAAA,EAAU,iBAAiB,QAAA,EAAA,KAAA,CAAM,KAAA,IAAS,MAAM,IAAA,EAAK,CAAA;AAAA,sBAChEG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,MAAA,EAAO,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,wBACtCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,MAAA;AAAA,YACH,OAAA,EAAS,UAAA;AAAA,YACT,eAAA,EAAiB;AAAA;AAAA;AAAkB,OAAA,EACvC;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,EAAK,0BACjBG,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,EAAA;AAAA,UACT,4DAAA;AAAA,UACA,KAAA,GAAQ,IAAI,YAAA,GAAe;AAAA,SAC7B;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,cAC5B,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAAA,cACjB,OAAA,EAAS,IAAI,OAAA,IAAW,KAAA;AAAA,cACxB,eAAA,EAAiB,CAAC,OAAA,KAAY,iBAAA,CAAkB,KAAK,OAAkB;AAAA;AAAA,WAAG;AAAA,0BAC5EA,GAAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA,EAAI,QAAA,EAAA,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,IAAA,EAAK;AAAA;AAAA,OAAA;AAAA,MAXlD,GAAA,CAAI;AAAA,KAaZ,GACH,CAAA,EACF,CAAA;AAAA,oBAEAA,IAAC,WAAA,EAAA,EAAY;AAAA,GAAA,EACf,CAAA;AAEA,EAAA,uBAAOA,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,QAAA,EAAA,SAAA,EAAU,CAAA;AAEtB;ACxGA,SAAS,MAAA,CAAO;AAAA,EACd,SAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA,GAAM,GAAA;AAAA,EACN,GAAG;AACL,CAAA,EAAsD;AACpD,EAAA,MAAM,OAAA,GAAgBY,MAAA,CAAA,OAAA;AAAA,IACpB,MACE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GACf,KAAA,GACA,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,GACxB,YAAA,GACA,CAAC,KAAK,GAAG,CAAA;AAAA,IACjB,CAAC,KAAA,EAAO,YAAA,EAAc,GAAA,EAAK,GAAG;AAAA,GAChC;AAEA,EAAA,uBACEpC,IAAAA;AAAA,IAAiB,eAAA,CAAA,IAAA;AAAA,IAAhB;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,qOAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT;AAAA,aACF;AAAA,YAEA,QAAA,kBAAAA,GAAAA;AAAA,cAAiB,eAAA,CAAA,KAAA;AAAA,cAAhB;AAAA,gBACC,WAAA,EAAU,cAAA;AAAA,gBACV,SAAA,EAAW,EAAA;AAAA,kBACT;AAAA;AACF;AAAA;AACF;AAAA,SACF;AAAA,QACC,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAA,CAAQ,QAAO,EAAG,CAAC,CAAA,EAAG,KAAA,qBAC1CA,GAAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YAEV,SAAA,EAAU;AAAA,WAAA;AAAA,UADL;AAAA,SAGR;AAAA;AAAA;AAAA,GACH;AAEJ;ACzCO,IAAM,WAAA,GAAN,cAA0B,SAAA,CAAU;AAAA,EACzC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC5E;AACF;AAQO,IAAM,cAAc,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,cAAa,KAAa;AAEnE,EAAA,MAAM,eAAe,IAAA,CAAK,SAAA,CAAU,MAAM,IAAI,CAAA,IAAK,MAAM,KAAA,IAAS,CAAA;AAClE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIc,SAAiB,YAAY,CAAA;AAEvD,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAgB;AACpC,IAAA,QAAA,CAAS,GAAG,CAAA;AACZ,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,GAAG,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,uBACEd,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,EAAW,qBAC3BG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,KAAA,CAAM,SAAA,EACzB,QAAA,EAAA;AAAA,wBAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,wBAE/BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,CAAC,YAAY,CAAA;AAAA,YAC3B,KAAA,EAAO,CAAC,KAAK,CAAA;AAAA,YACb,GAAA,EAAK,MAAM,GAAA,IAAO,GAAA;AAAA,YAClB,GAAA,EAAK,MAAM,GAAA,IAAO,CAAA;AAAA,YAClB,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAU,SAAA;AAAA,YACV,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,YAC5B,eAAe,CAAC,GAAA,KAAQ,YAAA,CAAa,GAAA,CAAI,CAAC,CAAC;AAAA;AAAA,SAC7C,EACF,CAAA;AAAA,wBAEAG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EAA6B,QAAA,EAAA;AAAA,UAAA,gBAAA;AAAA,UAC3B;AAAA,SAAA,EACjB,CAAA;AAAA,QAEC,MAAM,WAAA,oBAAeH,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,wBAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA,KAAA;AAAA,IA1BG,KAAA,CAAM;AAAA,GA4Bb;AAEJ;ACpCO,IAAM,iBAAA,GAAN,cAAmC,SAAA,CAAU;AAAA,EAClD,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,EAAY,QAAA,IAAY,MAAA;AAC/C,IAAA,uBACEA,GAAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAaA,SAAS,iBAAA,CAAqB;AAAA,EAC5B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIc,QAAAA,CAAgB,MAAM,KAAA,CAAM,UAAA,EAAY,IAAA,IAAQ,EAAE,CAAA;AAC5E,EAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,UAAA,EAAY,QAAA,IAAY,IAAA;AAEtD,EAAgB,UAAA;AAAA,IACd,UAAU,aAAa,CAAA;AAAA,IACvB,SAAA,CAAU,cAAA,EAAgB,EAAE,gBAAA,EAAkB,6BAA6B;AAAA;AAG7E,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAe;AACpC,IAAA,IAAI,CAAC,eAAA,EAAiB;AACtB,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA;AACzB,IAAA,IAAI,CAAC,IAAA,IAAQ,MAAA,CAAO,EAAA,KAAO,KAAK,EAAA,EAAI;AAEpC,IAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,CAAC,MAAW,CAAA,CAAE,EAAA,KAAO,OAAO,EAAE,CAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,CAAC,MAAW,CAAA,CAAE,EAAA,KAAO,KAAK,EAAE,CAAA;AAC7D,IAAA,MAAM,OAAA,GAAU,SAAA,CAAU,KAAA,EAAO,QAAA,EAAU,QAAQ,CAAA;AAEnD,IAAA,QAAA,CAAS,OAAO,CAAA;AAChB,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,OAAO,CAAA;AACjC,IAAA,KAAA,CAAM,UAAA,EAAY,iBAAiB,OAAO,CAAA;AAAA,EAC5C,CAAA;AAEA,EAAA,uBACEd,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,sBACNG,IAAAA,CAAC,QAAA,EAAA,EAAS,WAAW,EAAA,CAAG,WAAA,EAAa,KAAA,CAAM,SAAS,CAAA,EACjD,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,KAAA,oBAASH,GAAAA,CAAC,SAAA,EAAA,EAAU,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA,EAAI,CAAA;AAAA,wBAC/CA,GAAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,eAAA,mBACCA,GAAAA,CAAC,UAAA,EAAA,EAAW,kBAAA,EAAoB,aAAA,EAAe,SAAA,EAAW,aAAA,EACxD,QAAA,kBAAAA,GAAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAAA,YAC5B,QAAA,EAAU,2BAAA;AAAA,YAEV,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChBA,GAAAA,CAAC,eAAA,EAAA,EAA8B,EAAA,EAAI,KAAK,EAAA,EACrC,QAAA,EAAA,OAAO,QAAA,KAAa,UAAA,GACjB,QAAA,CAAS,IAAA,EAAM,KAAK,CAAA,mBACpBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,eAAK,IAAA,EAAK,CAAA,EAAA,EAH3C,IAAA,CAAK,EAI3B,CACD,CAAA,EACH;AAAA;AAAA,WAEJ,CAAA,mBAEAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBACZ,QAAA,EAAA,KAAA,CAAM,GAAA;AAAA,UAAI,CAAC,IAAA,EAAM,KAAA,KAChB,OAAO,QAAA,KAAa,UAAA,GAChB,SAAS,IAAA,EAAM,KAAK,CAAA,mBACpBA,IAAC,KAAA,EAAA,EAAkB,SAAA,EAAU,oCAAoC,QAAA,EAAA,IAAA,CAAK,IAAA,EAAA,EAA5D,KAAK,EAA4D;AAAA,WAEnF,CAAA,EAEJ,CAAA;AAAA,QACC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,wBAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA,KAAA;AAAA,IApCG,KAAA,CAAM;AAAA,GAsCb;AAEJ;AAMA,SAAS,eAAA,CAAgB;AAAA,EACvB,EAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAA,CAAY,EAAE,EAAA,EAAI,UAAU,CAAA;AAEhC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,SAAS,CAAA;AAAA,IAC3C;AAAA,GACF;AAEA,EAAA,uBACEG,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,KAAA;AAAA,MACC,GAAG,UAAA;AAAA,MACH,GAAG,SAAA;AAAA,MACJ,SAAA,EAAW,EAAA;AAAA,QACT,uGAAA;AAAA,QACA,UAAA,IAAc;AAAA,OAChB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,oBAAA,EAAqB,CAAA;AAAA,wBAC7CA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAU,QAAA,EAAS;AAAA;AAAA;AAAA,GACpC;AAEJ;AC7JO,IAAM,oBAAA,GAAN,cAAmC,SAAA,CAAU;AAAA,EAClD,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAWO,IAAM,uBAAuB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AAC5E,EAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AACxB,EAAA,MAAM,UAAA,GAAa,MAAM,UAAA,IAAc,KAAA;AACvC,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIc,SAAkB,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAGzE,EAAAE,UAAU,MAAM;AACd,IAAA,UAAA,CAAW,YAAA,CAAa,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,EACtC,CAAA,EAAE,CAAC,KAAK,CAAC,CAAA;AAET,EAAAA,UAAU,MAAM;AACd,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,CAAA;AACxC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC3B,MAAA,IAAA,CAAK,QAAA,CAAS,SAAA,EAAW,EAAE,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,SAAS,CAAC,CAAA;AAEpB,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,KAAK,EAAC;AAC9C,IAAA,IAAA,CAAK,SAAS,SAAA,EAAW,CAAC,GAAG,OAAA,EAAS,EAAE,CAAC,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAkB;AAC1C,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,KAAK,EAAC;AAC9C,IAAA,MAAM,UAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,EAAW,CAAA,KAAc,MAAM,KAAK,CAAA;AACpE,IAAA,IAAA,CAAK,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,EAAe,QAAA,KAAqB;AACxD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,SAAS,KAAK,EAAC;AAC9C,IAAA,MAAM,UAAU,OAAA,CAAQ,GAAA;AAAA,MAAI,CAAC,IAAA,EAAc,CAAA,KACzC,CAAA,KAAM,QAAQ,QAAA,GAAW;AAAA,KAC3B;AACA,IAAA,IAAA,CAAK,QAAA,CAAS,WAAW,OAAO,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACEhB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,KAAK,EAAC;AAExC,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,IAAC,WAAA,EAAA,EAAY,CAAA;AAAA,0BACbA,GAAAA,CAAC,WAAA,EAAA,EACC,0BAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,CAAM,WAAW,CAAA,oBAChBH,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAgC,QAAA,EAAA,+BAAA,EAE7C,CAAA;AAAA,YAGD,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,EAAe,0BACzBG,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAU,8BAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAH,GAAAA;AAAA,oBAAC,gBAAA;AAAA,oBAAA;AAAA,sBACC,YAAA,EAAc,IAAA;AAAA,sBACd,KAAA;AAAA,sBACA,KAAA;AAAA,sBACA,OAAA;AAAA,sBACA,UAAU,CAAC,CAAA,KAAM,aAAa,KAAA,EAAO,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,sBAEnD;AAAA;AAAA,mBACF;AAAA,kBAOC,KAAA,CAAM,qCAAsBA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBAC5B,IAAA,EAAK,QAAA;AAAA,sBACL,OAAA,EAAQ,aAAA;AAAA,sBACR,IAAA,EAAK,MAAA;AAAA,sBACL,OAAA,EAAS,MAAM,gBAAA,CAAiB,KAAK,CAAA;AAAA,sBACrC,QAAA,EAAU,YAAA;AAAA,sBAEV,QAAA,kBAAAA,GAAAA,CAACoC,MAAAA,EAAA,EAAO,MAAM,EAAA,EAAI;AAAA;AAAA;AACpB;AAAA,eAAA;AAAA,cA1BK;AAAA,aA4BR,CAAA;AAAA,4BAEDpC,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,wCAAeA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACd,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAS,aAAA;AAAA,gBACT,QAAA,EAAU,YAAA;AAAA,gBAEV,0BAAAA,GAAAA,CAACqC,IAAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,WAAU,MAAA,EAAO;AAAA;AAAA,aACnC,EACF;AAAA,WAAA,EACF,CAAA,EACF,CAAA;AAAA,UAEC,MAAM,WAAA,oBACLrC,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY;AAAA,SAAA,EAExC,CAAA;AAAA,MAEJ;AAAA;AAAA,GACF;AAEJ;AC7IO,IAAM,WAAA,GAAN,cAA0B,SAAA,CAAU;AAAA,EACzC,MAAA,GAAsB;AACtB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACpC,IAAA,uBACEA,GAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAEvE;AACF;AAQA,IAAM,cAAc,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,cAAa,KAA0B;AACzE,EAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AACxB,EAAA,uBAAQA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEP,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAM,qBACfA,IAAC,IAAA,EAAA,EAAK,SAAA,EAAW,CAAA,EAAG,SAAA,GAAY,YAAY,8BAA8B,CAAA,CAAA,EAExE,0BAAAG,IAAAA,CAAC,QAAA,EAAA,EAAS,WAAU,uDAAA,EAClB,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,KAAA,CAAM,WAAA,IAAe,MAAM,WAAA,EAAY,CAAA;AAAA,0BACzDA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,wBACAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAAO,SAAS,KAAA,CAAM,KAAA;AAAA,YACrB,eAAA,EAAiB,CAAC,KAAA,KAAS;AAAE,cAAA,aAAA,CAAc,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,YAAC,CAAA;AAAA,YAC/D,QAAA,EAAU,MAAM,QAAA,IAAY;AAAA;AAAA,SAAc,EAC9C;AAAA,OAAA,EACF,CAAA,EACF;AAAA,KAAA;AAAA,IAlBG,KAAA,CAAM;AAAA,GAmBR;AACP,CAAA;ACrCO,IAAM,QAAA,GAAN,cAAuB,SAAA,CAAU;AAAA,EACtC,MAAA,GAAsB;AACtB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACpC,IAAA,uBACEA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAc,MAAY,YAAA,EAA2B,CAAA;AAAA,EAEpE;AACF;AAQA,IAAM,YAAY,CAAC,EAAE,KAAA,EAAO,IAAA,EAAM,cAAa,KAA0B;AAGvE,EAAA,MAAM,4BAAYA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAC,EAAE,OAAM,qBACfG,KAAC,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,eAAA,EAClB,QAAA,EAAA,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,MACxB,CAAA,EACF,CAAA;AAAA,wBAEAA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,EAAC;AAAA,YACvB,eAAe,CAAC,KAAA,KAAU,aAAA,CAAc,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,YAC3D,WAAA,EAAY;AAAA;AAAA,SACd,EACF,CAAA;AAAA,wBAEAA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA,KAAA;AAAA,IArBG,KAAA,CAAM;AAAA,GAsBR;AAEL,EAAA,uBAAOA,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,QAAA,EAAA,SAAA,EAAU,CAAA;AAEtB,CAAA;AAOA,IAAM,cAAA,GAAiB,iBAAA;AAMvB,IAAM,gBAAA,GAAmB,gCAAA;AAazB,IAAM,YAAYlB,eAAAA,CAAM,UAAA;AAAA,EACtB,CACE;AAAA,IACE,KAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,GAAe,QAAA;AAAA,IACf,SAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAAA,CAAM,SAAS,EAAE,CAAA;AACrD,IAAA,MAAM,gBAAgB,QAAA,IAAY,CAAA;AAClC,IAAA,MAAM,gBAAgB,QAAA,IAAY,QAAA;AAElC,IAAA,MAAM,MAAA,GAAS,CAAC,GAAA,KAAgB;AAC9B,MAAA,IAAK,CAAC,MAAM,QAAA,CAAS,GAAG,KAAK,KAAA,CAAM,MAAA,GAAS,aAAA,IAAkB,KAAA,CAAM,eAAA,EAAiB;AACnF,QAAA,aAAA,CAAc,CAAC,GAAG,KAAA,EAAO,GAAG,CAAC,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgB;AACjC,MAAA,IAAI,MAAM,QAAA,CAAS,GAAG,CAAA,IAAK,KAAA,CAAM,SAAS,aAAA,EAAe;AACvD,QAAA,aAAA,CAAc,MAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,GAAG,CAAC,CAAA;AAAA,MAC9C;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA6C;AAClE,MAAA,IAAI,EAAE,GAAA,KAAQ,OAAA,IAAW,UAAA,CAAW,IAAA,OAAW,EAAA,EAAI;AACjD,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,MAAA,CAAO,UAAA,CAAW,MAAM,CAAA;AACxB,QAAA,aAAA,CAAc,EAAE,CAAA;AAAA,MAClB;AACA,MAAA,IAAI,EAAE,GAAA,KAAQ,WAAA,IAAe,eAAe,EAAA,IAAM,KAAA,CAAM,SAAS,CAAA,EAAG;AAClE,QAAA,SAAA,CAAU,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,MACnC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA8C;AACjE,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA,CAAE,KAAA,CAAM,cAAc,CAAA,CAC9D,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,OAAA,CAAQ,kBAAkB,EAAE,CAAA,CAAE,IAAA,EAAM,CAAA,CAC/C,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,IAAK,CAAC,KAAA,CAAM,QAAA,CAAS,CAAC,CAAC,CAAA,CACnC,KAAA,CAAM,CAAA,EAAG,aAAA,GAAgB,MAAM,MAAM,CAAA;AACxC,MAAA,IAAI,IAAA,CAAK,QAAQ,aAAA,CAAc,CAAC,GAAG,KAAA,EAAO,GAAG,IAAI,CAAC,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,sBACjBT,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gCAAA,EACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAA,GAAA,qBACTG,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,oFAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,0BACDH,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,MAAM,SAAA,CAAU,GAAG,CAAA;AAAA,cAC5B,SAAA,EAAU,qCAAA;AAAA,cACX,QAAA,EAAA;AAAA;AAAA;AAED;AAAA,OAAA;AAAA,MAVK;AAAA,KAYR,CAAA,EACH,CAAA;AAGF,IAAA,uBACEG,IAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,KAAA,EAAO,KAAU,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA,EACxD,QAAA,EAAA;AAAA,MAAA,YAAA,KAAiB,SAAS,UAAA,EAAW;AAAA,sBACtCH,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,UAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UAC7C,SAAA,EAAW,aAAA;AAAA,UACX,OAAA,EAAS,WAAA;AAAA,UACT,WAAA;AAAA,UACA,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MACC,YAAA,KAAiB,YAAY,UAAA;AAAW,KAAA,EAC3C,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AClKjB,IAAM,aAAA,GAAN,cAA4B,SAAA,CAAU;AAAA,EAC3C,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAY,OAAc,YAAA,EAA4B,CAAA;AAAA,EAGzE;AACF;AAQA,SAAS,aAAA,CAAc,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,EAAuB;AACxE,EAAA,uBAAOA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEN,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,uBACTG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,WAAA,EAClB,QAAA,EAAA;AAAA,wBAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,wBAC/BA,GAAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAAS,SAAA,EAAU,wBAAA;AAAA,YACpB,aAAa,KAAA,CAAM,WAAA;AAAA,YAClB,GAAG,KAAA;AAAA,YACJ,QAAA,EAAU,CAAC,KAAA,KAA4C;AACrD,cAAA,aAAA,CAAc,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,YACnC,CAAA;AAAA,YACA,QAAA,EAAU,MAAM,QAAA,IAAY;AAAA;AAAA,SAAc,EAC5C,CAAA;AAAA,QACC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,wBAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EACf;AAAA,KAAA;AAAA,IAjBG,KAAA,CAAM;AAAA,GAkBR;AACP;ACrCO,IAAM,SAAA,GAAN,cAAwB,SAAA,CAAU;AAAA,EACvC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBACEA,GAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAY,OAAc,YAAA,EAA4B,CAAA;AAAA,EAGrE;AACF;AAQA,IAAM,YAAY,CAAC,EAAC,KAAA,EAAO,IAAA,EAAM,cAAa,KAA2B;AACvE,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,SAAA,KAAA,QAAA;AACrC,EAAA,MAAM,IAAA,GAAO,MAAA,GAAS,QAAA,GAAW,KAAA,CAAM,YAAA,IAAgB,MAAA;AACvD,EAAA,uBAAOA,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEN,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAM,qBACfG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,KAAA,CAAM,SAAA,EACvB,QAAA,EAAA;AAAA,QAAA,CAAC,MAAA,oBAAWH,GAAAA,CAAC,SAAA,EAAA,EAAU,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA,EAAI,CAAA;AAAA,wBAC7CA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,aACrB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAAM,SAAA,EAAU,eAAA;AAAA,YAAgB,aAAa,KAAA,CAAM,WAAA;AAAA,YAAc,GAAG,KAAA;AAAA,YAAO,IAAA;AAAA,YAC1E,UAAU,CAAC,CAAA,KAAK,aAAA,CAAc,CAAA,EAAG,OAAO,KAAK,CAAA;AAAA,YAC7C,QAAA,EAAU,MAAM,QAAA,IAAY;AAAA;AAAA,SAAc,EAC9C,CAAA;AAAA,QACC,KAAA,CAAM,WAAA,oBAAeG,IAAAA,CAAC,eAAA,EAAA,EAAgB,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,KAAA,CAAM,WAAA;AAAA,UAAY;AAAA,SAAA,EAAC,CAAA;AAAA,wBAC5DH,IAAC,WAAA,EAAA,EAAY;AAAA,OAAA,EAEf;AAAA,KAAA;AAAA,IAdG,KAAA,CAAM;AAAA,GAeR;AACP,CAAA;AC3BO,IAAM,SAAA,GAAN,cAAwB,SAAA,CAAU;AAAA,EACvC,MAAA,GAAsB;AACpB,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,YAAA,EAAa,GAAI,IAAA;AACtC,IAAA,uBAAOA,GAAAA,CAACwC,eAAAA,EAAA,EAAe,KAAA,EAAc,MAAY,YAAA,EAA4B,CAAA;AAAA,EAC/E;AACF;AAQO,IAAMA,kBAAiB,CAAC,EAAE,IAAA,EAAM,KAAA,EAAO,cAAa,KAAa;AACtE,EAAA,MAAM,cAAc,KAAA,CAAM,gBAAA;AAC1B,EAAA,MAAM,eAAe,WAAA,EAAa,cAAA;AAElC,EAAA,MAAM,cAAA,mBAAiBxC,GAAAA,CAACuB,WAAAA,EAAA,EAAY,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AACjE,EAAA,MAAM,gBAAA,mBAAmBvB,GAAAA,CAACwB,OAAAA,EAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAC/D,EAAA,MAAM,gBAAA,mBAAmBxB,GAAAA,CAACyB,OAAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAAG,CAAA;AAExF,EAAA,MAAM,UAAA,GAAa,WAAA,EAAa,UAAA,IAAc,EAAC;AAC/C,EAAA,MAAM,SAAA,GAAY,WAAA,EAAa,SAAA,IAAa,EAAC;AAC7C,EAAA,MAAM,WAAW,WAAA,EAAa,QAAA;AAC9B,EAAA,MAAM,YAAY,WAAA,EAAa,SAAA;AAG/B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIX,SAAkB,MAAM;AACpD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AACvC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAChD,IAAA,OAAO,CAAC,UAAA,CAAW,KAAA,IAAS,KAAA,KAAU,UAAa,KAAA,KAAU,EAAA;AAAA,EAC/D,CAAC,CAAA;AAGD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,QAAAA,CAAiB,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,EAAE,CAAA;AAE/E,EAAAE,UAAU,MAAM;AACd,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,IAAK,EAAA;AACjD,IAAA,IAAI,UAAA,KAAe,IAAA,EAAM,OAAA,CAAQ,UAAU,CAAA;AAAA,EAC7C,GAAG,CAAC,IAAA,CAAK,UAAU,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AAE/B,EAAA,uBACEhB,GAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MAEC,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AACjC,QAAA,MAAM,QAAA,GAAW,CAAC,UAAA,CAAW,KAAA,IAAS,MAAM,KAAA,KAAU,MAAA,IAAa,MAAM,KAAA,KAAU,EAAA;AACnF,QAAA,IAAI,QAAA,KAAa,OAAA,EAAS,UAAA,CAAW,QAAQ,CAAA;AAE7C,QAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAgB;AACpC,UAAA,OAAA,CAAQ,GAAG,CAAA;AACX,UAAA,aAAA,CAAc,GAAA,EAAK,OAAO,KAAK,CAAA;AAC/B,UAAA,KAAA,CAAM,SAAS,GAAG,CAAA;AAAA,QACpB,CAAA;AAEA,QAAA,uBACEG,IAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAM,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAAH,IAAC,SAAA,EAAA,EAAU,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,CAAM,OAAM,CAAA,EAAI,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAU,WAAA,EACrB,QAAA,kBAAAG,KAAC,UAAA,EAAA,EAGG,QAAA,EAAA;AAAA,YAAA,CAAA,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,QAAA,qBACxBA,KAAC,eAAA,EAAA,EACE,QAAA,EAAA;AAAA,cAAA,QAAA,oBAAYH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,cACtC,SAAA,CAAU,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC7BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAA,EAAb,KAAiB,CACtC;AAAA,aAAA,EACH,CAAA;AAAA,4BAIFA,GAAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAO,IAAA;AAAA,gBACP,QAAA,EAAU,MAAM,QAAA,IAAY,YAAA;AAAA,gBAC5B,UAAU,CAAC,CAAA,KAAM,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA,aAC9C;AAAA,YAAA,CAGE,UAAA,CAAW,SAAS,CAAA,IAAK,SAAA,IAAa,iCACtCG,IAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAM,YAAA,EACpB,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAaH,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,cACxC,UAAA,CAAW,GAAA,CAAI,CAAC,aAAA,EAAe,KAAA,qBAC9BA,GAAAA,CAAC,aAAA,EAAA,EAA0B,IAAA,EAAM,EAAA,EAAA,EAAb,KAAiB,CACtC,CAAA;AAAA,cAEA,YAAA,oBACCA,GAAAA,CAAC,KAAA,EAAA,EACE,yBACG,gBAAA,GACA,OAAA,GACA,iBACA,gBAAA,EACN;AAAA,aAAA,EAEJ;AAAA,WAAA,EAGJ,CAAA,EACF,CAAA;AAAA,UAEC,MAAM,WAAA,oBAAeA,GAAAA,CAAC,eAAA,EAAA,EAAiB,gBAAM,WAAA,EAAY,CAAA;AAAA,0BAC1DA,IAAC,WAAA,EAAA,EAAY;AAAA,SAAA,EACf,CAAA;AAAA,MAEJ;AAAA,KAAA;AAAA,IAhEK,KAAA,CAAM;AAAA,GAiEb;AAEJ;AC/EA,IAAM,QAAA,GAAsD;AAAA,EAC1D,iCAAyB,cAAA;AAAA,EACzB,qBAAmB,SAAA;AAAA,EACnB,yBAAqB,WAAA;AAAA,EACrB,uBAAoB,UAAA;AAAA,EACpB,qBAAmB,SAAA;AAAA,EACnB,yBAAqB,WAAA;AAAA,EACrB,yBAAqB,WAAA;AAAA,EACrB,kDAAkC,kBAAA;AAAA,EAClC,sEAA4C,2BAAA;AAAA,EAC5C,6BAAuB,aAAA;AAAA,EACvB,mBAAkBmC,SAAAA;AAAA,EAClB,qBAAmB,SAAA;AAAA,EACnB,6CAAgC,oBAAA;AAAA,EAChC,6BAAuB,aAAA;AAAA,EACvB,mCAA0B,eAAA;AAAA,EAC1B,qBAAmB,QAAA;AAAA,EACnB,+BAAwB,aAAA;AAAA,EACxB,qBAAmB,SAAA;AAAA,EACnB,+CAAgC,oBAAA;AAAA,EAChC,qCAA2B,gBAAA;AAAA,EAC3B,6BAAuB,aAAA;AAAA,EACvB,+BAAwB,iBAAA;AAAA,EACxB,6BAAuB,aAAA;AAAA,EACvB,qCAA2B,gBAAA;AAAA,EAC3B,8BAAuB,aAAA;AAAA,EACvB,uCAA4B,iBAAA;AAAA,EAC5B,uCAA4B,iBAAA;AAAA,EAC5B,mCAA0B,oBAAA;AAAA;AAAA,EAI1B,yBAAqB,WAAA;AAAA;AAAA,EACrB,qBAAmB,SAAA;AAAA,EACnB,yBAAqB,SAAA;AAAA,EACrB,gCAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY3B,CAAA;AAEO,IAAM,eAAN,MAAmB;AAAA,EACxB,OAAO,MAAA,CACL,KAAA,EACA,IAAA,EACA,eAAwB,KAAA,EACX;AACb,IAAA,KAAA,CAAM,IAAA,GAAQ,IAAA;AACd,IAAA,MAAM,YAAa,KAAA,CAAM,SAAA,IAAA,MAAA;AAEzB,IAAA,MAAM,UAAA,GAAc,QAAA,CAAS,SAAS,CAAA,IACpC,SAAA;AAMF,IAAA,MAAM,QAAA,GAAW,IAAI,UAAA,CAAW,KAAA,EAAO,MAAM,YAAY,CAAA;AAEzD,IAAA,IAAI,CAAC,KAAA,CAAM,UAAA,EAAY,OAAO,SAAS,MAAA,EAAO;AAE9C,IAAA,uBACEnC,GAAAA,CAAC,IAAA,EAAA,EAAK,WAAU,eAAA,EACb,QAAA,EAAA,QAAA,CAAS,QAAO,EACnB,CAAA;AAAA,EAEJ;AACF;AAEO,SAAS,gBAAA,CACd,QACA,MAAA,EACqB;AACrB,EAAA,MAAM,WAAgC,EAAC;AAEvC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/C,MAAA,QAAA,CAAS,GAAG,IAAI,KAAA,IAAS,EAAA;AAAA,IAC3B,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,UAAA,GAAayC,eAAc,MAAM,CAAA;AACvC,IAAA,KAAA,MAAW,SAAS,UAAA,EAAY;AAC9B,MAAA,MAAM,MAAM,KAAA,CAAM,IAAA;AAClB,MAAA,IAAI,QAAA,CAAS,GAAG,CAAA,KAAM,MAAA,EAAW;AAC/B,QAAA,QAAA,CAAS,GAAG,CAAA,GAAI,KAAA,CAAM,KAAA,IAAS,MAAM,YAAA,IAAgB,EAAA;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AAIA,IAAMA,cAAAA,GAAgB,CAAgC,MAAA,KAA8C;AAClG,EAAA,MAAM,SAA0B,EAAC;AAEjC,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,MAAA,CAAO,IAAA,CAAK,GAAGA,cAAAA,CAAc,KAAK,CAAC,CAAA;AAAA,IACrC,CAAA,MAAA,IAAY,MAAc,MAAA,EAAQ;AAChC,MAAA,MAAA,CAAO,IAAA,CAAK,GAAGA,cAAAA,CAAe,KAAA,CAAc,MAAM,CAAC,CAAA;AAAA,IACrD,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT,CAAA;AAEO,IAAM,gBAAA,GAAmB,CAC9B,MAAA,EACA,gBAAA,KAC2C;AAG3C,EAAA,MAAM,UAAA,GAAaA,eAAc,MAAM,CAAA;AASvC,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,CAAC,KAAK,CAAA,KAAM;AAC1C,IAAA,GAAA,CAAI,EAAE,IAAe,CAAA,GAAI,CAAA,CAAE,OAAA,IAAWC,GAAE,GAAA,EAAI;AAC5C,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAiC,CAAA;AAEpC,EAAA,IAAI,MAAA,GAAiDA,EAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAGnE,EAAA,IAAI,kBAAkB,MAAA,EAAQ;AAC5B,IAAA,KAAA,MAAW,MAAM,gBAAA,EAAkB;AACjC,MAAA,MAAA,GAAS,GAAG,MAAM,CAAA;AAAA,IACpB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;ACvLA,IAAMD,cAAAA,GAAgB,CACpB,MAAA,KACoB;AACpB,EAAA,MAAM,SAA0B,EAAC;AAEjC,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,MAAA,CAAO,IAAA,CAAK,GAAGA,cAAAA,CAAc,KAAK,CAAC,CAAA;AAAA,IACrC,CAAA,MAAA,IAAY,MAAc,MAAA,EAAQ;AAEhC,MAAA,MAAA,CAAO,IAAA,CAAK,GAAGA,cAAAA,CAAe,KAAA,CAAc,MAAM,CAAC,CAAA;AAAA,IACrD,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT,CAAA;AAEO,IAAM,kBAAkB,CAA8C;AAAA,EAC3E,SAAA;AAAA,EACA;AACF,CAAA,KAAgB;AACd,EAAA,MAAM,UAAA,GAAaA,eAAc,MAAM,CAAA;AAEvC,EAAA,MAAM,YAAY,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAM,EAAE,MAAA,GAAS,CAAA;AAEzD,EAAA,uBACEzC,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAE,EACxB,QAAA,EAAA,SAAA,oBACCA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,kCAAA;AAAA,MACN,6BACEA,GAAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,QAAQ,SAAA,CAAU,MAAM,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,qBAChDG,KAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAA,KAAC,QAAA,EAAA,EAAQ,QAAA,EAAA;AAAA,UAAA,aAAA,CAAiB,KAAK,UAAU,CAAA;AAAA,UAAE;AAAA,SAAA,EAAC,CAAA;AAAA,QAAU,GAAA;AAAA,QACrD,KAAA,EAAO,OAAA,EAAS,QAAA,EAAS,IAAK;AAAA,OAAA,EAAA,EAFxB,GAGT,CACD,CAAA,EACH,CAAA;AAAA,MAEF,SAAA,EAAU,MAAA;AAAA,MACV,OAAA,EAAQ;AAAA;AAAA,GACV,EAEJ,CAAA;AAEJ;AAEO,IAAM,aAAA,GAAgB,CAC3B,aAAA,EACA,MAAA,KACW;AACX,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,aAAa,CAAA;AACtE,EAAA,OAAO,YAAY,KAAA,IAAS,aAAA;AAC9B;ACvDA,IAAM,iBAAA,GAAoB,CAAC,CAAA,KACzB,CAAA,KAAM,UAAa,CAAA,KAAM,IAAA,IAAQ,OAAO,CAAA,KAAM,UAAA;AAEhD,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAY,MAAA,KAAyB;AAC5D,EAAA,IAAI,OAAO,KAAA,CAAM,QAAA,KAAa,UAAA,EAAY;AACxC,IAAA,IAAI;AACF,MAAA,OAAO,CAAC,CAAC,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AAAA,IAChC,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT,CAAA;AAEO,IAAM,iBAAiB,CAAsD;AAAA,EAClF,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAA,GAAM;AACR,CAAA,KAA6B;AAC3B,EAAA,MAAM,MAAA,GAAS,KAAK,KAAA,EAAM;AAG1B,EAAA,uBACEH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,wBAAA,EAA2B,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EACxD,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,cAAc,GAAA,KAAQ;AAKjC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAAG;AAC/B,MAAA,MAAM,gBAAgB,YAAA,CAAa,MAAA;AAAA,QAAO,CAAC,CAAA,KACzC,eAAA,CAAgB,CAAA,EAAG,MAAM;AAAA,OAC3B;AAEA,MAAA,IAAI,aAAA,CAAc,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEvC,MAAA,uBACEA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,6CAAA;AAAA,UAET,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,KAAA,EAAO,MAAA,KAAW;AACpC,YAAA,MAAM2C,UAAAA,GAAY;AAAA,cAChB,GAAI,KAAA;AAAA,cACJ,QAAA,EAAU,QAAA,GAAW,IAAA,GAAQ,KAAA,CAAc;AAAA,aAC7C;AAEA,YAAA,MAAMC,YACJD,UAAAA,CAAU,gBAAA,KAAqB,MAAA,IAC/B,iBAAA,CAAkBA,WAAU,QAAQ,CAAA;AAEtC,YAAA,MAAME,cACJF,UAAAA,CAAU,gBAAA,KAAqB,MAAA,IAC/B,iBAAA,CAAkBA,WAAU,QAAQ,CAAA;AAEtC,YAAA,uBACExC,IAAAA,CAAC,KAAA,EAAA,EAAmC,SAAA,EAAU,aAAA,EAC3C,QAAA,EAAA;AAAA,cAAAyC,6BAAY5C,GAAAA,CAAA2B,UAAA,EAAG,QAAA,EAAAgB,WAAU,QAAA,EAAS,CAAA;AAAA,cAElC,YAAA,CAAa,MAAA,CAAOA,UAAAA,EAAW,IAAA,EAAM,SAAS,CAAA;AAAA,cAE9CE,+BAAc7C,GAAAA,CAAA2B,UAAA,EAAG,QAAA,EAAAgB,WAAU,QAAA,EAAS;AAAA,aAAA,EAAA,EAL7B,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAMhC,CAAA;AAAA,UAEJ,CAAC;AAAA,SAAA;AAAA,QA1BI,eAAe,GAAG,CAAA;AAAA,OA2BzB;AAAA,IAEJ;AAKA,IAAA,IAAI,CAAC,eAAA,CAAgB,YAAA,EAAc,MAAM,GAAG,OAAO,IAAA;AAEnD,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,GAAI,YAAA;AAAA,MACJ,QAAA,EAAU,QAAA,GAAW,IAAA,GAAQ,YAAA,CAAqB;AAAA,KACpD;AAEA,IAAA,MAAM,WACJ,SAAA,CAAU,gBAAA,KAAqB,MAAA,IAC/B,iBAAA,CAAkB,UAAU,QAAQ,CAAA;AAEtC,IAAA,MAAM,aACJ,SAAA,CAAU,gBAAA,KAAqB,MAAA,IAC/B,iBAAA,CAAkB,UAAU,QAAQ,CAAA;AAEtC,IAAA,uBACExC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,gDAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,QAAA,oBAAYH,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,oBAAU,QAAA,EAAS,CAAA;AAAA,UAElC,YAAA,CAAa,MAAA,CAAO,SAAA,EAAW,IAAA,EAAM,SAAS,CAAA;AAAA,UAE9C,8BAAc3B,GAAAA,CAAA2B,QAAAA,EAAA,EAAG,oBAAU,QAAA,EAAS;AAAA;AAAA,OAAA;AAAA,MAPhC,gBAAgB,GAAG,CAAA;AAAA,KAQ1B;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AClEO,IAAM,cAAc,CAAgC;AAAA,EACzD,SAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAS,EAAC;AAAA,EACV,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,cAAA,GAAiB,IAAA;AAAA,EACjB,eAAA,GAAkB,IAAA;AAAA,EAClB,kBAAA,GAAqB,IAAA;AAAA,EACrB,QAAA,GAAW,KAAA;AAAA,EACX,cAAA,GAAe,EAAA;AAAA,EACf,gBAAgB,EAAC;AAAA,EACjB,cAAA,GAAiB,SAAA;AAAA,EACjB,uBAAA,GAA0B,cAAA;AAAA,EAC1B,eAAA,GAAkB,IAAA;AAAA,EAClB,iBAAA,GAAoB,UAAA;AAAA,EACpB,aAAA,GAAgB,IAAA;AAAA,EAChB,KAAA,GAAQ,KAAA;AAAA,EACR,cAAA,GAAiB,KAAA;AAAA,EACjB,UAAA,GAAa,CAAA;AAAA,EACb,WAAA,GAAc;AAChB,CAAA,KAAgB;AAEd,EAAA,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,GAAI,aAAA,EAAc;AAGnD,EAAA,MAAM,MAAA,GAASL,QAAQ,MAAM;AAC3B,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,MAAA,EAAQ,gBAAgB,CAAA;AACxD,IAAA,OAAO,gBAAA,CAAoB,WAAW,gBAAgB,CAAA;AAAA,EACxD,CAAA,EAAG,CAAC,MAAA,EAAQ,gBAAgB,CAAC,CAAA;AAG7B,EAAA,MAAM,QAAA,GAAW,YAAY,MAAM,CAAA;AAEnC,EAAA,MAAM,aAAA,GAAgBA,QAAQ,MAAM,gBAAA,CAAoB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEzE,EAAA,MAAM,OAAO,OAAA,CAAkB;AAAA,IAC7B,QAAA;AAAA,IACA,aAAA,EAAe;AAAA,GAChB,CAAA;AAGD,EAAAN,UAAU,MAAM;AACd,IAAA,IAAA,CAAK,MAAM,aAAmD,CAAA;AAAA,EAEhE,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAmB;AACvC,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,MAAM,IAAA,GAAoB,EAAE,IAAA,EAA4B,IAAA,EAAK;AAC7D,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAC,CAAA;AAAA,EACH,CAAA;AAGA,EAAA,MAAM,cAAc,YAAY;AAC9B,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,OAAA,EAAQ;AACnC,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,IAAA,GAAO,KAAK,KAAA,EAAM;AACxB,IAAA,MAAM,IAAA,GAAoB,EAAE,IAAA,EAAM,IAAA,EAAK;AACvC,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,QAAA,mBACJb,IAAAA,CAAAwB,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAxB,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAH,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MACC,4BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kDACZ,QAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAG,IAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,+BAA8B,KAAA,EAAO;AAAA,MACxD,cAAA,EAAgB,iBAAA;AAAA;AAAA,MAChB,UAAA,EAAY;AAAA;AAAA,KACd,EACC,QAAA,EAAA;AAAA,MAAA,aAAA,CAAc,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,qBACvBH,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,MAAM,GAAA,CAAI,OAAA;AAAA,UAEV,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,cAAA;AAAA,UACX,SAAS,GAAA,CAAI,OAAA;AAAA,UACb,SAAS,GAAA,CAAI,OAAA;AAAA,UACb,UAAU,GAAA,CAAI,QAAA;AAAA,UAEb,QAAA,EAAA,GAAA,CAAI;AAAA,SAAA;AAAA,QAPA;AAAA,OASR,CAAA;AAAA,MACA,CAAC,QAAA,IAAY,aAAA,oBACZA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,UAAU,QAAA,GAAW,QAAA;AAAA,UAC3B,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,GAAG,cAAc,CAAA;AAAA,UAC5B,QAAA,EAAU,SAAA;AAAA,UACV,OAAA,EAAS,UAAU,WAAA,GAAc,MAAA;AAAA,UAEhC,QAAA,EAAA,SAAA,mBACCG,IAAAA,CAAAwB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,YAAA,uBAAA;AAAA,4BACD3B,GAAAA,CAACyB,OAAAA,EAAA,EAAQ,WAAU,2BAAA,EAA4B;AAAA,WAAA,EACjD,CAAA,mBAEAtB,IAAAA,CAAAwB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,YAAA,cAAA;AAAA,YAAA,CACC,UAAA,IAAc,KAAK,UAAA,IAAc,WAAA,qBAAiB3B,GAAAA,CAAC,IAAA,EAAA,EAAK,WAAU,cAAA,EAAe;AAAA,WAAA,EACrF;AAAA;AAAA;AAEJ,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAIF,EAAA,MAAM,WAAA,mBACJG,IAAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,cAAA,oBACCA,IAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,+CAAA,EACnB,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,QAAA,QAAA,oBAAYH,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,wBACzCG,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,UACnC,YAAA,oBAAgBA,GAAAA,CAAC,eAAA,EAAA,EAAiB,QAAA,EAAA,YAAA,EAAa;AAAA,SAAA,EAClD;AAAA,OAAA,EACF,CAAA;AAAA,MACC,kCACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kDACZ,QAAA,EAAA,cAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,IAGD,eAAA,IAAmB,kBAAA,KAAuB,IAAA,oBACzCA,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB;AAAA;AAAA,KACF;AAAA,IAGD,mCACCA,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,cAAA;AAAA,QACA,YAAA;AAAA,QAA6B,QAAA,EAAA;AAAA;AAAA,KAC/B;AAAA,IAED,CAAC,eAAA,IAAoB,QAAA;AAAA,IAGrB,eAAA,IAAmB,kBAAA,KAAuB,MAAA,oBACzCA,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,CAAA,CAAA,KAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAC;AAAA;AAAA;AACxD,GAAA,EAEJ,CAAA;AAGF,EAAA,IAAI,CAAC,UAAU,OAAO,WAAA;AAEtB,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EACC,0BAAAA,GAAAA,CAAC,WAAA,EAAA,EAAa,uBAAY,CAAA,EAC5B,CAAA;AAEJ;AAYA,IAAM,WAAA,GAAc,CAAC,EAAC,IAAA,EAAM,cAAc,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,cAAA,EAAc,KAAwB;AACzG,EAAA,MAAM,SAAA,GAAY,KAAK,KAAA,EAAM;AAC7B,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAM,GAAG,MACR,QAAA,kBAAAG,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,IAAA,CAAK,YAAA,CAAa,YAAY,CAAA;AAAA,MACxC,SAAA,EAAW,CAAA,oBAAA,EAAuB,QAAA,GAAW,4CAAA,GAA+C,EAAE,CAAA,CAAA;AAAA,MAE7F,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,KAAA,oBACCH,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACZ,QAAA,EAAA,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW,IAAA,EAAM,CAAC,CAAA,EACpC;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ,CAAA;AC3PO,SAAS,QAAQ,EAAE,KAAA,EAAO,aAAa,SAAA,GAAY,KAAA,EAAO,aAAY,EAAiB;AAC5F,EAAA,MAAM,eAAA,GAAkB,CAAC,UAAA,KAAuB;AAC9C,IAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,MAAA,WAAA,CAAY,UAAU,CAAA;AAAA,IACxB;AAAA,EACF,CAAA;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UACb,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU;AAC1B,IAAA,MAAM,aAAa,KAAA,GAAQ,CAAA;AAC3B,IAAA,MAAM,cAAc,UAAA,GAAa,WAAA;AACjC,IAAA,MAAM,YAAY,UAAA,KAAe,WAAA;AACjC,IAAA,MAAM,aAAa,UAAA,GAAa,WAAA;AAEhC,IAAA,uBACEG,IAAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAU,0BAAA,EACzB,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EAEb,QAAA,EAAA;AAAA,wBAAAH,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,eAAA,CAAgB,UAAU,CAAA;AAAA,YACzC,SAAA,EAAW,EAAA;AAAA,cACT,uGAAA;AAAA,cACA,WAAA,IAAe,mDAAA;AAAA,cACf,SAAA,IAAa,qDAAA;AAAA,cACb,UAAA,IAAc,yEAAA;AAAA,cACd,SAAA,IAAa,gDAAA;AAAA,cACb,CAAC,SAAA,IAAa;AAAA,aAChB;AAAA,YAEC,QAAA,EAAA,WAAA,mBACCA,GAAAA,CAACkC,KAAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA,mBAE1BlC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAyB,QAAA,EAAA,UAAA,EAAW;AAAA;AAAA,SAExD;AAAA,QAGC,KAAK,KAAA,oBACJG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACb,QAAA,EAAA;AAAA,0BAAAH,GAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,uCAAA;AAAA,gBAAA,CACC,eAAe,SAAA,KAAc,iBAAA;AAAA,gBAC9B,UAAA,IAAc;AAAA,eAChB;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,WACR;AAAA,UACC,IAAA,CAAK,+BACJA,GAAAA,CAAC,OAAE,SAAA,EAAU,kDAAA,EAAoD,eAAK,WAAA,EAAY;AAAA,SAAA,EAEtF;AAAA,OAAA,EAEJ,CAAA;AAAA,MAGC,KAAA,GAAQ,MAAM,MAAA,GAAS,CAAA,oBACtBA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,0CAAA;AAAA,YACA,UAAA,GAAa,cAAc,YAAA,GAAe;AAAA;AAC5C;AAAA,OACF,EACF;AAAA,KAAA,EAAA,EAjDM,KAmDV,CAAA;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ;ACnEO,IAAM,aAAa,CAAgC;AAAA,EACxD,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA,GAAiB,IAAA;AAAA,EACjB,SAAA,GAAY;AAEd,CAAA,KAAgB;AAEd,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIc,SAAS,CAAC,CAAA;AAEhD,EAAA,MAAM2B,cAAAA,GAAgB,CAAC,IAAA,KACrB,IAAA,CAAK,QAAQ,CAAC,CAAA,KAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAIA,cAAAA,CAAc,CAAC,IAAI,CAAE,CAAA;AAE/D,EAAA,MAAM,SAAA,GAAYA,eAAc,MAAM,CAAA;AAEtC,EAAA,MAAM,aAAa,SAAA,CAAU,MAAA;AAAA,IAC3B,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,IAAI,GAAA,EAAK,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,IACrC;AAAA,GACF;AAEA,EAAA,MAAM,UAAA,GAAa,UAAU,MAAA,CAAO,CAAC,OAAO,CAAA,CAAE,IAAA,IAAQ,OAAO,WAAW,CAAA;AAExE,EAAA,uBACEtC,IAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAGd,QAAA,EAAA;AAAA,oBAAAH,IAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCACb,QAAA,kBAAAA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAA,CAAM,UAAU,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,QAChC,WAAA;AAAA,QACA,SAAA,EAAW,SAAA;AAAA,QACX,WAAA,EAAa;AAAA;AAAA,OAqBjB,CAAA,EACF,CAAA;AAAA,IAGC,WACC,QAAA,CAAS;AAAA,MACP,UAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,oBAEDA,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,YAAA,EAAa,oBAAA;AAAA,QACb,SAAA,EAAU,qBAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,kBAAA,EAAmB,MAAA;AAAA,QACnB,MAAA,EAAQ,UAAA;AAAA,QACR,QAAA;AAAA,QACA,cAAA,EAAgB,IAAA;AAAA,QAChB,WAAA;AAAA,QACA;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AC1FO,IAAM,qBAAqB,MAAO;AACvC,EAAA,MAAM,MAAA,GAAqB;AAAA,IACzB,QAAA,EAAU,WAAA;AAAA,IACV,KAAA,EAAO,qBAAA;AAAA,IACP,QAAA,EAAU,IAAA;AAAA,IACV,aAAA,EAAe,MAAA;AAAA,IACf,GAAA,EAAK,EAAA;AAAA,IACL,IAAA,EAAM;AAAA,GACR;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,WAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,MAAA;AAAA,MACA,UAAU,CAAC,IAAA,KAAS,OAAA,CAAQ,GAAA,CAAI,8BAAuB,IAAI;AAAA;AAAA,GAC7D;AAEJ;AAEO,IAAM,UAAA,GAA8C;AAAA;AAAA,EAEvD;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO,mBAAA;AAAA,IACP,SAAA,EAAA,MAAA;AAAA,IACA,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS0C,EAAAA,CACN,MAAA,EAAO,CACP,GAAA,CAAI,GAAG,4CAA4C,CAAA,CACnD,GAAA,CAAI,EAAA,EAAI,kDAA+C;AAAA,GAC5D;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,uBAAA;AAAA,IACP,SAAA,EAAA,MAAA;AAAA,IACA,QAAA,EAAU,KAAA;AAAA,IACV,SAASA,EAAAA,CACN,MAAA,EAAO,CACP,KAAA,CAAM,oBAAiB,CAAA,CACvB,WAAA,EAAY,CACZ,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,GAAA,CAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AAAA,MAC3C,OAAA,EAAS;AAAA,KACV;AAAA,GACL;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO,eAAA;AAAA,IACP,SAAA,EAAA,MAAA;AAAA,IACA,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAA,UAAA;AAAA,IACA,OAAA,EAASA,EAAAA,CACN,MAAA,EAAO,CACP,GAAA,CAAI,CAAA,EAAG,kCAAkC,CAAA,CACzC,GAAA,CAAI,EAAA,EAAI,4BAAyB,CAAA,CACjC,QAAA;AAAS,GACd;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO,gBAAA;AAAA,IACP,SAAA,EAAA,QAAA;AAAA,IACA,QAAA,EAAU,KAAA;AAAA,IACV,OAAA,EAASA,EAAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI;AAAA,GACnC;AAAA;AAAA,EAGA;AAAA,IACE;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,KAAA,EAAO,gBAAA;AAAA,MACP,SAAA,EAAA,OAAA;AAAA,MACA,QAAA,EAAU,KAAA;AAAA,MACV,SAASA,EAAAA,CACN,MAAA,EAAO,CACP,KAAA,CAAM,uBAAuB,yCAAsC;AAAA,KACxE;AAAA;AAAA,IAGA;AAAA,MACE,IAAA,EAAM,KAAA;AAAA,MACN,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAA,QAAA;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAASA,EAAAA,CACN,MAAA,CAAO,MAAA,EAAO,CACd,GAAA,CAAI,EAAA,EAAI,sBAAsB,CAAA,CAC9B,GAAA,CAAI,EAAA,EAAI,sBAAsB;AAAA;AACnC,GACF;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,WAAA;AAAA,IACN,KAAA,EAAO,qBAAA;AAAA,IACP,SAAA,EAAA,MAAA;AAAA,IACA,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAASA,EAAAA,CAAE,MAAA,CAAO,IAAA,EAAK,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,mBAAI,IAAI,IAAA,EAAK,EAAG;AAAA,MACrD,OAAA,EAAS;AAAA,KACV;AAAA,GACH;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,gBAAA;AAAA,IACP,SAAA,EAAA,QAAA;AAAA,IACA,QAAA,EAAU,IAAA;AAAA,IACV,UAAA,EAAY;AAAA,MACV,gBAAgB,MAAK;AAAA,MAAC,CAAA;AAAA,MACtB,IAAA,EAAM;AAAA,QACJ,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,eAAA,EAAiB,OAAO,OAAA,EAAQ;AAAA,QAC/C,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,QACzC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,OAAO,QAAA;AAAS;AAC3C,KACF;AAAA,IACA,SAASA,EAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAC;AAAA,GAC/C;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,kBAAA;AAAA,IACP,SAAA,EAAA,MAAA;AAAA,IACA,QAAA,EAAU,KAAA;AAAA,IACV,OAAA,EAASA,EAAAA,CACN,GAAA,EAAI,CACJ,MAAA;AAAA,MACC,CAAC,IAAA,KAAS;AACR,QAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,QAAA,OACE,IAAA,CAAK,IAAA,IAAQ,EAAA,GAAK,IAAA,GAAO,IAAA,IACzB,CAAC,YAAA,EAAc,WAAW,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAAA,MAElD,CAAA;AAAA,MACA,EAAE,SAAS,yDAAA;AAAuD,MAEnE,QAAA;AAAS,GACd;AAAA;AAAA,EAGA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,eAAA;AAAA,IACP,SAAA,EAAA,KAAA;AAAA,IACA,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAASA,EAAAA,CACN,MAAA,EAAO,CACP,GAAA,CAAI,GAAG,kCAA+B,CAAA,CACtC,GAAA,CAAI,CAAA,EAAG,mCAA6B;AAAA;AAE3C;AC9JK,IAAM,SAAA,GAAY,CAAC,EAAE,cAAA,EAAgB,aAAc,KAAa;AAErE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI5B,QAAAA;AAAA,IAAqC,MACzE,MAAA,CAAO,WAAA;AAAA,MACL,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,KAAS,CAAC,IAAA,EAAM,EAAE,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,CAAC;AAAA;AACxE,GACF;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAc,GAAA,KAA0B;AAC5D,IAAA,cAAA,CAAe,CAAC,IAAA,MAAU;AAAA,MACxB,GAAG,IAAA;AAAA,MACH,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA,EAAG,CAAC,GAAG,GAAG,CAAC,IAAA,CAAK,IAAI,CAAA,CAAE,GAAG,CAAA;AAAE,KACnD,CAAE,CAAA;AAAA,EACJ,CAAA;AAEA,EAAA,uBACEd,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BACZ,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,KAAS;AACzB,IAAA,MAAM,KAAA,GAAQ,YAAY,IAAI,CAAA;AAC9B,IAAA,uBACEG,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,uDAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAH,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,MAAA,EAAO,SAAS,MAAM,cAAA,CAAe,IAAA,EAAM,KAAK,CAAA,EAC3D,QAAA,kBAAAA,GAAAA,CAACqC,IAAAA,EAAA,EAAI,CAAA,EACP,CAAA;AAAA,0BACArC,GAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,QAAA,EAAS,WAAA,EAAW,IAAA,EAAC,SAAA,EAAU,QAAA,EAC7C,QAAA,kBAAAG,IAAAA,CAAC,aAAA,EAAA,EAAc,OAAM,QAAA,EACnB,QAAA,EAAA;AAAA,4BAAAH,GAAAA,CAAC,gBAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,SAAI,SAAA,EAAU,qDAAA,EACb,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,IAAA,EAAK,GAChD,CAAA,EACF,CAAA;AAAA,4BACAA,GAAAA,CAAC,gBAAA,EAAA,EAEC,0BAAAG,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yBAAA,EACf,QAAA,EAAA;AAAA,gCAAAH,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAS,KAAA,CAAM,QAAA;AAAA,oBACf,eAAA,EAAiB,MAAM,YAAA,CAAa,IAAA,EAAM,UAAU;AAAA;AAAA,iBACtD;AAAA,gCACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,UAAA,EAAQ;AAAA,eAAA,EAChB,CAAA;AAAA,8BAEAG,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yBAAA,EACf,QAAA,EAAA;AAAA,gCAAAH,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAS,KAAA,CAAM,QAAA;AAAA,oBACf,eAAA,EAAiB,MAAM,YAAA,CAAa,IAAA,EAAM,UAAU;AAAA;AAAA,iBACtD;AAAA,gCACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,UAAA,EAAQ;AAAA,eAAA,EAChB;AAAA,aAAA,EACF,CAAA,EACF;AAAA,WAAA,EACF,CAAA,EACF;AAAA;AAAA,OAAA;AAAA,MAlCK;AAAA,KA+CP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;ACjDO,IAAM,gBAAgB,CAAK;AAAA,EAChC,UAAU,EAAC;AAAA,EACX,UAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,gBAAgB,EAAC;AAAA,EACjB,QAAA,GAAW,CAAA;AAAA,EACX,SAAA,GAAY,EAAA;AAAA,EACZ,UAAA,GAAa,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,EAC7B,QAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,YAAA,GAAe,IAAA;AAAA,EACf,WAAA,GAAc,IAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA,GAAa;AACf,CAAA,KAA6B;AAC3B,EAAA,MAAM,MAAA,GAAiB;AAAA,IACrB,IAAA,EAAM,QAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIc,SAAiB,MAAM,CAAA;AACnD,EAAA,MAAM,aAAA,GAAgBc,OAAO,IAAI,CAAA;AAEjC,EAAAZ,UAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,MAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAc,KAAA,KAAe;AACjD,IAAA,SAAA,CAAU,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,KAAA,EAAM,CAAE,CAAA;AAChD,IAAA,IAAI,UAAA,IAAc,QAAA,EAAU,QAAA,CAAS,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAA,EAAO,CAAA;AAAA,EACnE,CAAA;AAWA,EAAA,MAAM,UAAA,GAA2B;AAAA,IAC/B,GAAI,UAAA,GACA;AAAA,MACE;AAAA,QACE,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAA,YAAA;AAAA,QACA,gBAAA,EAAkB,EAAE,SAAA,EAAW,CAAC,MAAM,CAAA,EAAE;AAAA,QACxC,QAAA,EAAU,CAAC,KAAA,KAAe,YAAA,CAAa,UAAU,KAAK;AAAA;AACxD,QAEF,EAAC;AAAA,IACL,GAAI,YAAA,GACA;AAAA,MACE;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,iBAAA;AAAA,QACP,SAAA,EAAA,MAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAe,YAAA,CAAa,YAAY,KAAK;AAAA;AAC1D,QAEF,EAAC;AAAA,IACL,GAAI,WAAA,GACA;AAAA,MACE;AAAA,QACE,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO,aAAA;AAAA,QACP,SAAA,EAAA,MAAA;AAAA,QACA,QAAA,EAAU,CAAC,KAAA,KAAe,YAAA,CAAa,WAAW,KAAK;AAAA;AACzD,QAEF,EAAC;AAAA,IACL,GAAI,UAAA,GACA;AAAA,MACE;AAAA,QACE,UAAA,EAAY,IAAA;AAAA,QACZ,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO,EAAA;AAAA,QACP,SAAA,EAAA,cAAA;AAAA,QACA,WAAA,EAAa,QAAA;AAAA,QACb,UAAA,EAAY;AAAA,UACV,IAAA,EAAM;AAAA,YACJ,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,OAAO,IAAA,EAAK;AAAA,YACrC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,UAAA,EAAY,OAAO,KAAA,EAAM;AAAA,YACxC,EAAE,EAAA,EAAI,CAAA,EAAG,IAAA,EAAM,OAAA,EAAS,OAAO,MAAA;AAAU,WAC3C;AAAA,UACA,cAAA,EAAgB,CAAC,IAAA,KAAuC;AACtD,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,EAAG,YAAA,CAAa,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,iBAAA,IAC/D,QAAQ,OAAA,IAAW,IAAA,EAAM,YAAA,CAAa,QAAA,EAAU,KAAK,KAAK,CAAA;AAAA,UACrE;AAAA;AACF;AACF,QAEF,EAAC;AAAA,IACL,GAAI,SAAA,GACA;AAAA,MACE;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO,yBAAA;AAAA,QACP,SAAA,EAAA,QAAA;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,UAAA,CAAW,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,YAC7B,KAAA,EAAO,OAAO,GAAG,CAAA;AAAA,YACjB,EAAA,EAAI,GAAA;AAAA,YACJ,IAAA,EAAM,OAAO,GAAG;AAAA,WAClB,CAAE,CAAA;AAAA,UACF,cAAA,EAAgB,CAAC,IAAA,KAAc,YAAA,CAAa,SAAS,MAAA,CAAO,IAAA,EAAM,KAAA,IAAS,EAAE,CAAC;AAAA;AAChF;AACF,QAEF;AAAC,GACP;AAIA,EAAA,MAAM,YAAA,GAAiD;AAAA,IACrD,GAAG,OAAA;AAAA,IACH;AAAA,GACF;AAEA,EAAA,uBACEhB,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDAAA,EACb,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EACb,QAAA,kBAAAA,GAAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,UAAA;AAAA,MACV,eAAe,CAAC,UAAA;AAAA,MAChB,SAAA,EAAU,EAAA;AAAA,MACV,cAAA,EAAe,QAAA;AAAA,MACf,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ,MAAA;AAAA,MACR,cAAA,EAAgB,KAAA;AAAA,MAChB,QAAA,EAAU,CAAC,EAAE,IAAA,EAAK,KAAM;AACtB,QAAA,IAAI,QAAA,IAAY,CAAC,UAAA,EAAY,QAAA,CAAS,IAAI,CAAA;AAAA,MAC5C;AAAA;AAAA,KAEJ,CAAA,EACF,CAAA;AAEJ","file":"index.mjs","sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border 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 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\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 AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground 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, AlertTitle, AlertDescription }\n","'use client'\n\nimport { ReactNode } from \"react\";\nimport { MessageCircleWarning } from \"lucide-react\";\nimport { InfoCircledIcon } from '@radix-ui/react-icons';\nimport { Alert, AlertDescription, AlertTitle } from \"@/src/components/ui/alert\";\nimport { cn } from \"@/src/lib/utils\";\n\ninterface Props {\n title: string;\n description: string | ReactNode;\n className?: string;\n variant?: \"info\" | \"warning\" | \"error\" | \"success\";\n}\n\nexport const CustomAlert = ({\n title,\n description,\n className = \"\",\n variant = \"info\",\n}: Props) => {\n const variantClasses = {\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200\",\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200\",\n error: \"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200\",\n success: \"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200\",\n };\n\n const variantIcons = {\n info: <MessageCircleWarning size={32} className=\"text-blue-500 dark:text-blue-300\" />,\n warning: <MessageCircleWarning size={32} className=\"text-yellow-500 dark:text-yellow-300\" />,\n error: <MessageCircleWarning size={32} className=\"text-red-500 dark:text-red-300\" />,\n success: <InfoCircledIcon className=\"w-8 h-8 text-green-500 dark:text-green-300\" />,\n };\n\n return (\n <Alert\n className={cn(\n \"mb-4 flex items-start gap-3 border-l-4 p-4 rounded-lg\",\n variantClasses[variant],\n className\n )}\n >\n {/* Icono a la izquierda */}\n <div className=\"flex flex-col shrink-0\">{variantIcons[variant]}</div>\n\n {/* Texto a la derecha */}\n <div className=\"flex flex-col\">\n <AlertTitle className=\"font-semibold text-lg\">{title}</AlertTitle>\n <AlertDescription className=\"text-sm text-muted-foreground dark:text-gray-300\">\n {description}\n </AlertDescription>\n </div>\n </Alert>\n );\n};\n","export const validationMessages = {\n required: \"Este campo es obligatorio\",\n email: \"El correo electrónico no es válido\",\n invalidFormat: \"Formato inválido\",\n onlyPositive: \"Solo números positivos\",\n minLength: (length: number) => `Debe tener al menos ${length} caracteres`,\n maxLength: (length: number) => `No puede tener más de ${length} caracteres`,\n passwordMismatch: \"Las contraseñas no coinciden\",\n invalidPhone: \"El número de teléfono no es válido\",\n};\n\nexport default validationMessages;","import { JSX, ReactNode } from \"react\";\n\nimport { ControllerRenderProps, FieldValues, UseFormReturn } from \"react-hook-form\";\nimport { FieldProps, GroupedOption, InputOption } from \"./definitions\";\n// import { FieldProps } from \"./field-props\";\n\n\nexport abstract class BaseInput {\n constructor(\n protected readonly input: FieldProps,\n protected readonly form: UseFormReturn,\n protected readonly isSubmitting?: boolean,\n ) {}\n\n abstract render(): JSX.Element;\n}\n\n\nexport const entityToInputOption = (entitiy:any, name:string = 'name', description:string = 'description', groupedLabel?:string): InputOption => ({\n id: entitiy['id'],\n name: entitiy[name],\n description: entitiy[description],\n groupedLabel\n})\n\nexport const entitiesToInputOption = (data:any[], optionValue:string = 'name', groupedLabel?:string): InputOption[] => {\n const entities: InputOption[] = [];\n for (const key of data) {\n const entidad = entityToInputOption(key, optionValue, undefined, groupedLabel);\n if(entidad) entities.push(entidad);\n }\n return entities;\n}\nexport const entityToGroupedOption = (entitiy:any, name:string = 'name'): GroupedOption => ({\n id: entitiy['id'],\n label: entitiy[name] || entitiy['label'],\n options: entitiy['options'] || [],\n selectedOptions: [],\n})\n\n\nexport const entitiesToGroupedOption = (data:any[], optionValue:string = 'name' ): GroupedOption[] => {\n const entities: GroupedOption[] = [];\n for (const key of data) {\n const entidad = entityToGroupedOption(key, optionValue);\n if(entidad) entities.push(entidad);\n }\n return entities;\n}\n\nexport const handleOnChage = (\n event: any[] | any,\n input: FieldProps,\n field?: ControllerRenderProps<FieldValues, string>\n): void => {\n let value: any = event;\n\n // 🔹 Detecta si el valor viene de un input DOM normal\n if (event && typeof event === \"object\" && \"target\" in event) {\n value = (event.target as HTMLInputElement).value;\n }\n\n // 🔹 React Hook Form: actualiza el valor del campo\n field?.onChange(value);\n\n // 🔹 Obtiene los valores actuales del formulario\n const data = input.form?.getValues();\n\n // 🔹 Llama al callback específico del input (si existe)\n input.onChange?.(value, data);\n\n // 🔹 Callback global (si existe)\n input.onAnyFieldChange?.(data);\n};\n\nexport const isValidField = (input: FieldProps, form: UseFormReturn, defaultValue?: any): boolean => {\n const value = defaultValue ?? form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n \n // Si el campo tiene un esquema zod, validamos con él\n if (input.zodType) {\n const result = input.zodType.safeParse(value);\n return result.success;\n }\n // Si no tiene zodType, usamos la validación estándar de react-hook-form\n return !fieldState.error && value !== undefined && value !== \"\";\n }\n","import { z, ZodTypeAny } from \"zod\";\nimport { InputTypes } from \"./input-types\"\nimport { LucideProps } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\nexport const flattenFields = <T extends Record<string, any>>(\n fields: FieldConfig<T>[],\n onAnyFieldChange?: (data:any) => void\n): FieldProps<T>[] => {\n const result: FieldProps<T>[] = [];\n\n for (const field of fields) {\n if (Array.isArray(field)) {\n result.push(...flattenFields(field));\n } else if ((field as any).fields) {\n result.push(...flattenFields((field as any).fields));\n } else {\n if (onAnyFieldChange) field.onAnyFieldChange = (data:any) => onAnyFieldChange(data)\n result.push(field);\n }\n }\n\n return result;\n};\n\n\nexport type FieldConfig<T, RT = Record<string,any>> = FieldProps<T,RT> | FieldConfig<T,RT>[];\n\nexport interface FieldProps<T = Record<string,any>, RT = Record<string,any>> {\n name: keyof T // Campo debe coincidir con la definición en el esquema\n label: string\n \n showWhen?: (values: Record<string, any>) => boolean\n step?:number;\n withAddBtn?: boolean;\n form?: UseFormReturn<any>;\n isRemovebleOption?:boolean\n withDuplicatTag?: boolean\n onChange?: (event: any[], formValues?: Record<string,any>) => void\n tabLabelField?:string\n childrenPosition?: 'up' | 'down'\n children?: ReactNode | ((item: any, index: number) => ReactNode);\n defaultValue?: any;\n direction?: 'row' | 'col';\n \n repeaterFields?: Array<FieldProps<RT> | FieldProps<RT>[]>;\n minItems?: number;\n maxItems?: number;\n\n\n currencyFormat?: Intl.NumberFormatOptions\n mask?: string | RegExp;\n\n onAnyFieldChange?: (data:Record<string,any>) => void\n wrapInCard?: boolean\n placeHolder?: string\n description?: string\n className?: string\n inputType?: InputTypes\n keyboardType?: TextInputType\n disabled?: boolean\n required?: boolean\n value?: any\n min?: number,\n max?: number,\n zodType?: ZodTypeAny;\n\n infoTooltip?: string\n \n // list?: any[]\n dependsOn?: string // Nombre del campo del que depende este campo\n loadOptions?: (dependencyValue: any) => Promise<any[]> // Función para cargar opciones dinámicamente\n optionLabel?: string // Propiedad a mostrar como etiqueta en el select\n optionValue?: string // Propiedad a usar como valor en el select\n optionDescription?: string // Propiedad a usar como valor en el select\n hidden?:boolean\n onListOptionChange?: (item: any) => void\n\n\n listConfig?: ListConfig\n\n fileConfig?: {\n previewSize?: number\n showPreview?: boolean\n accept: string // tipos de archivo permitidos\n multiple: boolean // múltiples archivos\n maxSize: number\n }\n\n inputGroupConfig?: inputGroudConfig\n}\n\ninterface inputGroudConfig {\n\n autoValidIcons?: boolean \n\n iconsLeft?: React.ForwardRefExoticComponent<Omit<LucideProps, \"ref\"> & React.RefAttributes<SVGSVGElement>>[];\n iconsRight?: React.ForwardRefExoticComponent<Omit<LucideProps, \"ref\"> & React.RefAttributes<SVGSVGElement>>[];\n\n textLeft?: string;\n textRight?: string;\n}\n\n\ninterface ListConfig {\n children?: ReactNode | ((item: any, index: number) => ReactNode);\n list: InputOption[] | GroupedOption[]\n optionLabel?: string\n optionValue?: InputOption| string | number | object\n onOptionChange: (item?: InputOption | InputOption[] | GroupedOption ) => void\n optionDescription?: string\n selectedList?: InputOption[]\n sortable?: boolean;\n\n // filterList?: (all: any, values: any) => any\n}\nexport interface BtnConfig {\n label: string;\n btnType: 'submit' | 'button';\n onClick: () => void\n variant?: \"default\" | \"link\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | null | undefined;\n disabled?: boolean;\n}\n\nexport interface InputOption {\n id: number | string\n name: string\n label?: string\n description?: string\n disabled?: boolean\n checked?: boolean\n groupedLabel?: string\n value?:any\n}\nexport interface GroupedOption {\n id?: number\n label: string\n options: InputOption[]\n selectedOptions: InputOption[]\n totalSelected?: number\n disabled?: boolean\n value?:any\n}\n\nexport interface InputSetup {\n required: boolean;\n disabled: boolean;\n minLegth?: number;\n maxLength?: number;\n pattern?: RegExp;\n min?:number;\n max?:number;\n isObscure?:boolean;\n isEmail?:boolean;\n isUrl?:boolean;\n zopType?: z.ZodType\n}\n\n\nexport enum TextInputType {\n DEFAULT = \"default\",\n NUMBER = \"number\",\n EMAIL = \"email\",\n PHONE = \"phone\",\n PASSWORD = \"password\",\n}","export enum InputTypes {\n HIDDEN = \"hidden\",\n TEXT = \"text\",\n TEXT_GROUP = \"text_group\",\n NUMBER = \"number\",\n SWITCH = \"switch\",\n CHECKBOX = \"checkbox\",\n SELECT = \"select\",\n SIMPLE_CHECK_LIST = \"siple_checklist\",\n CHECK_LIST = \"checklist\",\n // SWITCH_LIST = \"switchlist\",\n GROUPED_SWITCH_LIST = \"grouped_switchlist\",\n ACCORDION_GROUPED_SWITCH_LIST = \"accordion_grouped_switchlist\",\n DATE = \"date\",\n TEXTAREA = \"textarea\",\n FILE = \"file\",\n OTP = \"otp\",\n FORM = \"form\",\n COLOR = \"color\",\n RADIO_GROUP = \"radio_group\",\n TAGS = \"tags\",\n DATE_TIME = \"date_time\",\n TIME = \"time\",\n FILE_MULTI_UPLOAD = \"file_multi_upload\",\n SLIDER = \"slider\",\n BUTTON_GROUP = \"button_group\",\n CURRENCY = \"currency\",\n KEY_VALUE = \"key_value\",\n REPEATER = \"repeater\",\n MULTI_SELECT = \"multi_select\",\n COMBOBOX = \"COMBO_BOX\",\n SORTABLE_LIST = \"sortable_list\",\n REPEATER_TABS = \"repeater_tabs\",\n STRING_LIST = \"string_list\",\n}\n\nexport const inputFieldComp = [\n InputTypes.STRING_LIST,\n InputTypes.REPEATER_TABS,\n InputTypes.SORTABLE_LIST,\n InputTypes.COMBOBOX,\n InputTypes.MULTI_SELECT,\n InputTypes.REPEATER,\n InputTypes.KEY_VALUE,\n InputTypes.CURRENCY,\n InputTypes.BUTTON_GROUP,\n InputTypes.SLIDER,\n InputTypes.FILE_MULTI_UPLOAD,\n InputTypes.TIME,\n InputTypes.DATE_TIME,\n InputTypes.TAGS,\n InputTypes.RADIO_GROUP,\n InputTypes.TEXT_GROUP,\n InputTypes.ACCORDION_GROUPED_SWITCH_LIST,\n InputTypes.GROUPED_SWITCH_LIST,\n InputTypes.TEXT,\n InputTypes.SWITCH,\n InputTypes.SIMPLE_CHECK_LIST,\n InputTypes.CHECKBOX,\n InputTypes.COLOR,\n InputTypes.OTP,\n InputTypes.SELECT,\n InputTypes.DATE,\n InputTypes.FILE,\n InputTypes.FORM,\n InputTypes.NUMBER,\n InputTypes.TEXTAREA,\n // InputTypes.SWITCH_LIST,\n InputTypes.HIDDEN,\n]","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { cn } from \"@/src/lib/utils\"\n\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Button, buttonVariants } from \"@/src/components/ui/button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\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 \"bg-popover text-popover-foreground 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 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ColorPicker, IColor, useColor } from \"react-color-palette\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/src/components/ui/popover\"\nimport { Button } from \"@/src/components/ui/button\"\nimport { cn } from \"@/src/lib/utils\"\nimport \"react-color-palette/css\"\n\nexport interface Props {\n value?: string\n onChange?: (color: string) => void\n onBlur?: () => void\n disabled?: boolean\n className?: string\n placeholder?: string\n}\n\nconst ColorCnInput = React.forwardRef<HTMLButtonElement, Props>(\n ({ value = \"#000000\", onChange, onBlur, disabled, className }, ref) => {\n const [color, setColor] = useColor(value)\n const [open, setOpen] = React.useState(false)\n\n React.useEffect(() => {\n if (value !== color.hex) {\n setColor({ ...color, hex: value })\n }\n }, [color, setColor, value])\n\n const handleColorChange = (newColor: IColor) => {\n setColor(newColor)\n onChange?.(newColor.hex)\n }\n\n const handleOpenChange = (newOpen: boolean) => {\n setOpen(newOpen)\n if (!newOpen) {\n onBlur?.()\n }\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\"w-full justify-start text-left font-normal\", !value && \"text-muted-foreground\", className)}\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"h-4 w-4 rounded border border-border\" style={{ backgroundColor: color.hex }} />\n <span>{color.hex}</span>\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"start\">\n <ColorPicker color={color} onChange={handleColorChange} hideInput={[\"rgb\", \"hsv\"]} />\n </PopoverContent>\n </Popover>\n )\n },\n)\n\nColorCnInput.displayName = \"ColorCnInput\"\n\nexport { ColorCnInput }\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: 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-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\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-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 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 [&_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 flex-col gap-2 text-center sm:text-left\", 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(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", 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(\"text-muted-foreground text-sm\", 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 * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Label } from \"@/src/components/ui/label\"\nimport { Separator } from \"@/src/components/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Label } from \"@/src/components/ui/label\"\n\nconst 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>(\n {} as FormFieldContextValue\n)\n\nconst 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\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\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>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction 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\nfunction 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={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction 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\nfunction 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\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Button } from \"@/src/components/ui/button\"\nimport { Input } from \"@/src/components/ui/input\"\nimport { Textarea } from \"@/src/components/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"text-sm shadow-none flex gap-2 items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 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 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport { JSX, useState } from \"react\"\nimport { Switch, Label, Card } from \"@/src/components/ui\"\nimport { BaseInput, handleOnChage } from \"../base\"\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { cn } from \"@/src/lib/utils\";\n\n\n// interface Props {\n// options: InputOption[]\n// onChange?: (optionsUpdated: InputOption[]) => void\n// }\n\n// export const GroupedSwitches = ({ options, onChange, }: Props) => {\nexport class GroupedSwitchInput extends BaseInput {\n render(): JSX.Element {\n const { input, isSubmitting } = this;\n return (\n <GroupedSwitches options={[]} input={input} isSubmitting={isSubmitting} />\n )\n }\n}\n\ninterface Props {\n input: FieldProps;\n options?: InputOption[];\n isSubmitting?: boolean;\n onChange?: (optionsUpdated: InputOption[]) => void\n}\n\nexport const GroupedSwitches = ({ options, onChange, input, isSubmitting}: Props) => {\n\n const mockInputOptions:InputOption[] = [\n { id: 1, name: 'MOCK OPTION - CREATE', checked: false },\n { id: 2, name: 'MOCK OPTION - READ', checked: true },\n { id: 3, name: 'MOCK OPTION - UPDATE', checked: false },\n { id: 4, name: 'MOCK OPTION - DELETE ', checked: false },\n ]\n \n const initialSwitches: InputOption[] = options ? (options.length > 0 ? options : ((input.listConfig?.list as InputOption[]) ?? []) ) : mockInputOptions \n const [switches, setSwitches] = useState<InputOption[]>(initialSwitches)\n const [allChecked, setAllChecked] = useState<boolean>(initialSwitches.every((opt) => opt.checked))\n \n const [bgColor, setBgColor] = useState<string>('bg-green-500/5 border-green-400/10')\n\n const handleMainToggle = (checked: boolean) => {\n const updated = switches.map((opt) => ({ ...opt, checked }));\n setSwitches(updated);\n setAllChecked(checked);\n onChange?.(updated.filter((opt) => opt.checked));\n }\n\n const handleChildToggle = (option: InputOption, checked: boolean, input: FieldProps) => {\n const updated = switches.map((opt) =>\n opt.id === option.id ? { ...opt, checked } : opt\n );\n setSwitches(updated);\n setAllChecked(updated.every((opt) => opt.checked));\n onChange?.(updated.filter((opt) => opt.checked));\n handleOnChage(updated.filter((opt) => opt.checked),input)\n }\n\n return (\n <Card >\n <div className={cn(`w-full h-full space-y-4 p-4 border-2 rounded-xl bg-green-500 ${allChecked ? 'bg-green-500/5 border-green-400/10' : 'bg-black/5'}`)}>\n {/* Switch principal */}\n <div className=\"flex items-center justify-between border-b p-2\">\n <div>{input.name}</div>\n <div className=\"flex flex-row gap-2\">\n <Label htmlFor=\"main\">Seleccionar todo</Label>\n <Switch id=\"main\" checked={allChecked} onCheckedChange={handleMainToggle} />\n </div>\n </div>\n\n {/* Switches hijos */}\n {switches.map((opt, index) => (\n <div key={opt.id} className={`p-2 rounded-lg flex flex-row w-full items-center justify-between ${!(index % 2 )? 'bg-black/5' : 'bg-white/5'}`}>\n <Label htmlFor={String(opt.id)}>{opt.label || opt.name}</Label>\n <Switch\n disabled={input.disabled || isSubmitting}\n id={String(opt.id)}\n checked={opt?.checked || false}\n onCheckedChange={checked => handleChildToggle(opt, checked, input) }\n />\n </div>\n ))}\n </div>\n </Card>\n )\n}\n\n","'use client'\n\n\nimport { UseFormReturn } from 'react-hook-form'\nimport { JSX, useEffect, useState } from 'react'\nimport { BaseInput, FieldProps, GroupedOption, handleOnChage, InputOption } from '../base'\nimport { GroupedSwitches } from './grouped-switches-input'\nimport { \n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n Badge,\n Card,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormMessage \n} from '@/src/components/ui'\n\n/* ========= INPUT PRINCIPAL ========= */\n\nexport class AccordionGroupedSwitchInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this\n return (\n <AccordionGroupedSwitches\n form={form}\n input={input}\n isSubmitting={isSubmitting}\n groups={(input?.listConfig?.list as GroupedOption[]) ?? []}\n onChange={input?.listConfig?.onOptionChange ?? (() => {})}\n />\n )\n }\n}\n\n/* ========= COMPONENTE ========= */\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n groups?: GroupedOption[];\n isSubmitting?: boolean;\n onChange?: (optionsUpdated: InputOption[]) => void\n}\n\nexport const AccordionGroupedSwitches = ({ form, input, groups = [], onChange, isSubmitting }: Props) => {\n const [groupsState, setGroupsState] = useState<GroupedOption[]>([])\n const [selectedOptions, setSelectedOptions] = useState<InputOption[]>([])\n\n // 🔹 Cargar los grupos y sincronizar seleccionados\n useEffect(() => {\n const selected = input.listConfig?.selectedList ?? []\n const updatedGroups = groups.map((group) => ({\n ...group,\n options: group.options.map((opt) => ({\n ...opt,\n checked: selected.some((sel) => sel.id === opt.id),\n groupedLabel: group.label,\n })),\n }))\n setGroupsState(updatedGroups)\n setSelectedOptions(selected)\n }, [groups, input])\n\n // 🔹 Calcular cuántos están seleccionados por grupo\n const countCheckedByGroup = (group: GroupedOption): number => {\n return group.options.filter((opt) => opt.checked).length\n }\n\n // 🔹 Manejar cambio en switches individuales\n const handleOptionChange = (field: any, updatedGroupLabel: string, updatedOptions: InputOption[], input: FieldProps) => {\n const newGroups = groupsState.map((group) =>\n group.label === updatedGroupLabel ? { ...group, options: updatedOptions } : group\n )\n\n setGroupsState(newGroups)\n\n const allChecked = newGroups.flatMap((g) => g.options).filter((o) => o.checked)\n setSelectedOptions(allChecked)\n field.onChange(allChecked)\n onChange?.(allChecked)\n handleOnChage(allChecked, input, field)\n }\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem className=\"shadow-lg\">\n <FormControl>\n <Card className=\"p-4 space-y-4\">\n <h2 className=\"text-2xl font-bold\">{input.label}</h2>\n <Accordion type=\"multiple\">\n {groupsState.map((group, indx) => (\n <AccordionItem\n key={indx}\n value={group.label}\n className={`px-1 ${indx % 2 ? `bg-black/10` : 'bg-black/5'}`}\n >\n <AccordionTrigger>\n <div className=\"grid grid-cols-2 w-full\">\n {group.label}{' '}\n <Badge>\n {countCheckedByGroup(group)} / {group.options.length}\n </Badge>\n </div>\n </AccordionTrigger>\n <AccordionContent>\n <GroupedSwitches\n isSubmitting={isSubmitting}\n input={input}\n options={group.options}\n onChange={(updated: InputOption[]) =>\n handleOptionChange(field, group.label, updated, input)\n }\n />\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </Card>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n\n {/* Debug visual opcional */}\n {/* <pre className=\"text-xs font-bold mt-2 bg-black/5 p-2 rounded-lg\">\n <code>{JSON.stringify(selectedOptions, null, 2)}</code>\n </pre> */}\n </FormItem>\n )}\n />\n )\n}\n","import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Separator } from \"@/src/components/ui/separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","'use client'\n\nimport { JSX } from \"react\";\nimport { BaseInput, FieldProps, handleOnChage, InputOption } from \"../base\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { ButtonGroup } from \"@/src/components/ui/button-group\";\n\ninterface Option {\n label: string;\n value: string | number;\n}\n\nexport class ButtonGroupInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n const className = input.className\n return <FieldButtonGroup input={input} form={form} isSubmitting={isSubmitting} className={className}/>;\n }\n}\n\ninterface Props {\n input: FieldProps;\n form: UseFormReturn;\n isSubmitting?: boolean;\n className?: string;\n}\n\nexport const FieldButtonGroup = ({ input, form, isSubmitting, className = \"w-full flex-1\" }: Props) => {\n const options: InputOption[] = (input.listConfig?.list ?? []).filter((option): option is InputOption => 'name' in option);\n\n const handleSelect = (value: any) => {\n form.setValue(input.name, value, { shouldValidate: true });\n if (input.listConfig?.onOptionChange) input.listConfig.onOptionChange(value);\n };\n\n\n\n const selectedValue = form.watch(input.name);\n\n return (\n <ButtonGroup className=\"flex flex-row w-full\">\n {options.map((option, key) => (\n <Button\n type=\"button\"\n className={className}\n key={`${input.name}-${key}-btn-g`}\n variant={selectedValue === option.value ? \"default\" : \"outline\"}\n onClick={() => {\n handleSelect(option.value)\n handleOnChage(option.value, input)\n }}\n disabled={isSubmitting}\n >\n {option.label ?? option.name }\n </Button>\n ))}\n </ButtonGroup>\n );\n};\n","'use client'\nimport { JSX } from 'react';\nimport { BaseInput, handleOnChage } from '../base'\nimport { Card, CardContent, CardHeader, CardTitle, Checkbox, Label } from '@/src/components/ui';\n\n\n\n// interface Props {\n// title?: string,\n// input: FieldProps,\n// onCheckedChange: (value : InputOption) => void\n// }\n\nexport class CheckListInput extends BaseInput {\n render(): JSX.Element {\n const { input, isSubmitting } = this;\n const listConfig = input?.listConfig\n // export const InputCheckList = ({input, onCheckedChange, title}:Props) => {\n let lista = listConfig?.list ?? []\n if (lista == undefined) lista = []\n const title = 'title' //listConfig?.title\n\n const value: string[] = input.value\n const label = (listConfig?.optionLabel ?? \"name\") as string;\n const optionValue = (listConfig?.optionValue ?? \"id\") as string;\n const description = (listConfig?.optionDescription ?? \"description\") as string;\n return (\n <Card key={title}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base\">{title ?? input.label}</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {lista.map((item) => ( \n <div key={item[optionValue as keyof typeof item] as React.Key} className=\"flex items-center space-x-2\">\n <Checkbox\n onChange={(e) => handleOnChage(e, input)}\n disabled={input.disabled || isSubmitting}\n id={String(item[optionValue as keyof typeof item])}\n checked={value.includes(item[optionValue as keyof typeof item] as string)}\n onCheckedChange={() => {/* onCheckedChange(item[optionValue as keyof typeof item]) */}}\n />\n <div className=\"grid gap-1.5 leading-none\">\n <Label\n htmlFor={String(item[optionValue as keyof typeof item])}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {item[label as keyof typeof item]}\n </Label>\n <p className=\"text-xs text-muted-foreground\">{item[description as keyof typeof item]}</p>\n </div>\n </div>\n )\n )}\n </CardContent>\n </Card>\n )\n }\n}\n","'use client'\n\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { JSX } from \"react\";\nimport { Checkbox } from \"@/src/components/ui/checkbox\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/src/components/ui/form\";\nimport { UseFormReturn } from \"react-hook-form\";\n\nexport class CheckboxInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n\n return (\n <FieldCheckbox form={form} input={input} isSubmitting={isSubmitting} />\n );\n }\n}\n\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldCheckbox = ({ input, form, isSubmitting }: Props) => {\n const className = input.className;\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem\n className={`hover:bg-accent/50 flex items-start gap-3 rounded-lg border p-3 transition \n has-[[aria-checked=true]]:border-blue-600 \n has-[[aria-checked=true]]:bg-blue-50 \n dark:has-[[aria-checked=true]]:border-blue-900 \n dark:has-[[aria-checked=true]]:bg-blue-950\n ${className ?? \"\"}`}\n >\n <FormControl>\n <Checkbox\n id={input.name}\n checked={field.value}\n onCheckedChange={(e) => handleOnChage(e, input, field)}\n disabled={input.disabled || isSubmitting}\n className=\"data-[state=checked]:border-blue-600 data-[state=checked]:bg-blue-600 data-[state=checked]:text-white \n dark:data-[state=checked]:border-blue-700 dark:data-[state=checked]:bg-blue-700\"\n />\n </FormControl>\n\n <div className=\"grid gap-1.5 font-normal\">\n <FormLabel htmlFor={input.name} className=\"text-sm leading-none font-medium\">\n {input.label ?? \"Enable notifications\"}\n </FormLabel>\n {(input.description || input.placeHolder) && (\n <FormDescription className=\"text-muted-foreground text-sm\">\n {input.description ?? input.placeHolder}\n </FormDescription>\n )}\n <FormMessage />\n </div>\n </FormItem>\n )}\n />\n )\n}","\"use client\"\nimport React, { JSX, useEffect, useState } from \"react\"\nimport { ColorPicker, useColor } from 'react-color-palette';\nimport { UseFormReturn } from \"react-hook-form\"\nimport \"react-color-palette/css\"\nimport { cn } from \"@/src/lib/utils\"\nimport { \n Button,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n Popover, \n PopoverContent, \n PopoverTrigger,\n} from \"@/src/components/ui\"\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\"\n// ...existing code...\n\nexport class ColorInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldColor input={input} form={form} isSubmitting={isSubmitting} />\n )\n }\n}\n\ntype HideInputOption = \"rgb\" | \"hsv\" | \"hex\";\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst PRESET_COLORS = [\n \"#9A275A\", // QuinaMagenta\n \"#800000\", // Maroon\n \"#ef4444\", // red\n \"#f97316\", // orange\n \"#eab308\", // yellow\n \"#22c55e\", // green\n \"#99EDCC\", // Aquamarine\n \"#00FF00\", // lime\n \"#00FFFF\", // Aqua\n \"#06b6d4\", // cyan\n \"#3b82f6\", // blue\n \"#8b5cf6\", // purple\n \"#800080\", // purple\n \"#FF00FF\", // Fuchsia\n \"#ec4899\", // pink\n \"#64748b\", // slate\n \"#000000\", // black\n \"#808080\", // Gray\n \"#FFFFFF\", // White\n]\n\n\nconst FieldColor = ({ form, input, isSubmitting }: Props) => {\n const [ColorCmp, _setColorCmp] = useState<any>(ColorComp)\n\n \n return (\n <FormField\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n {ColorCmp ? (\n <ColorCmp\n value={field.value || \"#000000\"}\n onChange={(event: any[])=> {\n handleOnChage(event, input, field)\n }}\n onBlur={field.onBlur}\n disabled={input.disabled || isSubmitting}\n placeholder={input.placeHolder}\n />\n ) : (\n 'N/A'\n // <input\n // type=\"color\"\n // value={field.value || \"#000000\"}\n // onChange={(e) => {\n // field.onChange(e.target.value);\n // input.onChange?.(e)\n // }}\n // onBlur={() => field.onBlur()}\n // disabled={input.disabled || isSubmitting}\n // placeholder={input.placeHolder}\n // style={{ width: 48, height: 28 }}\n // />\n )}\n </FormControl>\n <FormDescription>{input.description}</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n )\n}\n// ...existing code...\n\n\nexport interface ColorCompProps {\n value?: string;\n onChange?: (color: string) => void;\n onBlur?: () => void;\n disabled?: boolean;\n className?: string;\n placeholder?: string;\n hideInput?: HideInputOption[];\n}\n\nconst ColorComp = React.forwardRef<HTMLButtonElement, ColorCompProps>(\n ({ value = \"#000000\", onChange, onBlur, disabled, className, hideInput =[\"hsv\"] }, ref) => {\n // const [color, setColor] = useColor(value)\n // const [open, setOpen] = React.useState(false)\n\n // React.useEffect(() => {\n // if (value !== color.hex) {\n // setColor({ ...color, hex: value })\n // }\n // }, [color, setColor, value])\n\n // const handleColorChange = (newColor: IColor) => {\n // setColor(newColor)\n // onChange?.(newColor.hex)\n // }\n\n // const handleOpenChange = (newOpen: boolean) => {\n // setOpen(newOpen)\n // if (!newOpen) {\n // onBlur?.()\n // }\n // }\n\n const [color, setColor] = useColor(value)\n const [open, setOpen] = useState(false)\n\n React.useEffect(() => {\n if (value !== color.hex) {\n setColor({ ...color, hex: value })\n }\n }, [value])\n\n const handleColorChange = (newColor: string) => {\n setColor({ ...color, hex: newColor })\n onChange?.(newColor)\n }\n\n const handlePickerChange = (newColor: any) => {\n setColor(newColor)\n onChange?.(newColor.hex)\n }\n\n const handleOpenChange = (newOpen: boolean) => {\n setOpen(newOpen)\n if (!newOpen) {\n onBlur?.()\n }\n }\n\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-row gap-2 p-2\">\n {PRESET_COLORS.map((presetColor) => (\n <button\n key={presetColor}\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex-1 size-4 shadow-lg rounded-md border-2 border-black transition-all hover:scale-110 disabled:opacity-50 disabled:cursor-not-allowed\",\n color.hex === presetColor\n ? \"border-foreground ring-2 ring-foreground/20\"\n : \"border-border hover:border-foreground/50\",\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n aria-label={`Select color ${presetColor}`}\n />\n ))}\n </div>\n \n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\"w-full justify-start text-left font-normal\", !value && \"text-muted-foreground\", className)}\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"h-4 w-4 border border-border rounded-sm\" style={{ backgroundColor: color.hex, width: 20, height:20 }} />\n <span>{color.hex}</span>\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"start\">\n <ColorPicker color={color} onChange={handlePickerChange} hideInput={hideInput} />\n </PopoverContent>\n </Popover>\n </div>\n )\n },\n)","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/src/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"@/src/lib/utils\";\nimport { Button } from \"@/src/components/ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/src/components/ui/command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/src/components/ui/popover\";\n\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\n\nexport class ComboboxInput extends BaseInput {\n render() {\n const { input, form, isSubmitting } = this;\n return <FieldCombobox input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldCombobox = ({ form, input, isSubmitting }: Props) => {\n const [open, setOpen] = React.useState(false);\n const [options, setOptions] = React.useState<InputOption[]>(\n () =>\n input.listConfig?.list?.length\n ? (input.listConfig.list as InputOption[])\n : []\n );\n\n const optionValue = input?.listConfig?.optionValue ?? input.optionValue ?? \"id\";\n const [value, setValue] = React.useState<string>(input.value?.toString() ?? \"\");\n\n // 🔁 Si depende de otro campo\n React.useEffect(() => {\n const dependsOn = input.dependsOn;\n if (!dependsOn || !input.loadOptions) return;\n\n const subscription = form.watch(async (values) => {\n const parentValue = values[dependsOn];\n if (parentValue) {\n const loader = input.loadOptions!;\n const newOptions = await loader(parentValue);\n setOptions(newOptions as InputOption[]);\n form.setValue(input.name, \"\");\n setValue(\"\");\n } else {\n setOptions([]);\n }\n });\n\n return () => subscription.unsubscribe?.();\n }, [form, input.loadOptions, input.dependsOn]);\n\n // Sincronizar valor inicial\n React.useEffect(() => {\n const currentValue = form.getValues(input.name);\n if (!currentValue && input.value) {\n form.setValue(input.name, input.value);\n setValue(input.value.toString());\n }\n }, [form, input.name, input.value]);\n\n const getValue = (item: InputOption): string =>\n (optionValue === \"name\"\n ? item.name\n : item.value?.toString() ?? item.id?.toString()) ?? \"\";\n\n const selectedOption = options.find((o) => getValue(o) === value);\n\n return (\n <div className=\"flex flex-col gap-2\">\n {input.label && (\n <label className=\"font-medium text-sm\">{input.label}</label>\n )}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n disabled={input.disabled || isSubmitting}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-[60%] justify-between bg-black/10 dark:bg-white/25\"\n >\n {selectedOption ? selectedOption.name : input.placeHolder ?? \"Seleccionar...\"}\n <ChevronsUpDown className=\"opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[60%] p-0\">\n <Command\n filter={(value, search) => {\n const option = options.find((o) => getValue(o) === value);\n return option?.name?.toLowerCase().includes(search.toLowerCase())\n ? 1\n : 0;\n }}\n >\n <CommandInput placeholder={`Buscar ${input.label?.toLowerCase()}...`} className=\"h-9\" />\n <CommandList>\n <CommandEmpty>No se encontraron resultados.</CommandEmpty>\n <CommandGroup>\n {options.map((item) => (\n <CommandItem\n key={item.id}\n value={getValue(item)}\n onSelect={(currentValue) => {\n const newValue = currentValue === value ? \"\" : currentValue;\n setValue(newValue);\n form.setValue(input.name, newValue);\n handleOnChage(options.find((o) => getValue(o) === newValue), input)\n input.listConfig?.onOptionChange?.(\n options.find((o) => getValue(o) === newValue)\n );\n setOpen(false);\n }}\n >\n {item.name}\n <Check\n className={cn(\n \"ml-auto\",\n value === getValue(item) ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n","'use client'\n\nimport { JSX, useState, useMemo } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { \n FormField, \n FormItem, \n FormLabel, \n FormControl, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { \n InputGroup, \n InputGroupAddon, \n InputGroupInput, \n InputGroupText \n} from \"@/src/components/ui/input-group\";\nimport { FieldProps } from \"../base/definitions\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\";\nimport { CircleCheck, CircleX, Loader2 } from \"lucide-react\";\n\nexport class CurrencyInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldCurrency input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\n/**\n * Campo numérico con formato monetario.\n * Acepta solo números y el punto mientras se edita.\n */\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldCurrency = ({ form, input, isSubmitting }: Props): JSX.Element => {\n const groupConfig = input.inputGroupConfig;\n const infoTooltip = input?.infoTooltip;\n const autoValidate = groupConfig?.autoValidIcons;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n // Estado local para manejar validez desde el primer render\n const [isValid, setIsValid] = useState<boolean>(() => {\n const value = form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n return !fieldState.error && value !== undefined && value !== \"\";\n });\n\n const defaultCurrencyFormat: Intl.NumberFormatOptions = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n };\n\n const mask = input?.mask;\n const currencyFormat = input?.currencyFormat ?? defaultCurrencyFormat;\n\n const [rawValue, setRawValue] = useState<string>(form.getValues(input.name) ?? \"\");\n\n // Formateador monetario (por defecto: español - República Dominicana)\n const formatter = useMemo(() => {\n return new Intl.NumberFormat('es-DO', currencyFormat);\n }, [currencyFormat]);\n\n // 🔢 Limpia y convierte el texto a número\n const parseValue = (formatted: string): number | null => {\n const numeric = parseFloat(formatted.replace(/[^0-9.-]/g, \"\"));\n return isNaN(numeric) ? null : numeric;\n };\n\n // 🎨 Aplica formato visual\n const formatValue = (value: string): string => {\n if (!value) return \"\";\n const numeric = parseFloat(value.replace(/[^0-9.-]/g, \"\"));\n if (isNaN(numeric)) return \"\";\n\n if (typeof mask === \"string\") {\n return mask.replace(/0+(?:[.,]0+)?/, formatter.format(numeric).replace(/[^\\d.,]/g, \"\"));\n }\n\n if (mask instanceof RegExp) {\n const valid = mask.test(value);\n return valid ? value : rawValue;\n }\n\n return formatter.format(numeric);\n };\n\n // 🚫 Permite solo números y punto\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowedKeys = [\n \"Backspace\",\n \"Delete\",\n \"Tab\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Home\",\n \"End\",\n ];\n\n // Permitir navegación y borrado\n if (allowedKeys.includes(e.key)) return;\n\n // Permitir solo dígitos y un único punto decimal\n if (!/^[0-9.]$/.test(e.key)) {\n e.preventDefault();\n return;\n }\n\n // Impedir más de un punto\n if (e.key === \".\" && rawValue.includes(\".\")) {\n e.preventDefault();\n }\n };\n\n return (\n <FormField\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const validNow = !fieldState.error && field.value !== undefined && field.value !== \"\";\n if (validNow !== isValid) setIsValid(validNow);\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n <InputGroup>\n {/* Prefijo */}\n <InputGroupAddon>\n <InputGroupText>$</InputGroupText>\n {input.inputGroupConfig?.textLeft && (\n <InputGroupText>{input.inputGroupConfig.textLeft}</InputGroupText>\n )}\n </InputGroupAddon>\n\n {/* Input principal */}\n <InputGroupInput\n {...field}\n disabled={input.disabled || isSubmitting}\n placeholder={input.placeHolder ?? \"0.00\"}\n inputMode=\"decimal\"\n value={rawValue}\n onKeyDown={handleKeyDown}\n onChange={(e) => {\n const newVal = e.target.value;\n setRawValue(newVal);\n const parsed = parseValue(newVal);\n if (parsed !== null) field.onChange(parsed);\n handleOnChage(parsed, input, field)\n }}\n onBlur={(e) => {\n const formatted = formatValue(e.target.value);\n setRawValue(formatted);\n }}\n onFocus={(e) => {\n const numeric = e.target.value.replace(/[^0-9.-]/g, \"\");\n setRawValue(numeric);\n }}\n />\n\n {/* Sufijo */}\n <InputGroupAddon align=\"inline-end\">\n <InputGroupText>{currencyFormat.currency}</InputGroupText>\n {input.inputGroupConfig?.textRight && (\n <InputGroupText>{input.inputGroupConfig.textRight}</InputGroupText>\n )}\n {/* Icono de validación / loading */}\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n </InputGroup>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}}\n />\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon, CircleCheck, CircleX, Info, Loader2 } from \"lucide-react\"\n\nimport { Button } from \"@/src/components/ui/button\"\nimport { Calendar } from \"@/src/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/src/components/ui/popover\"\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui/form\"\nimport { BaseInput, FieldProps, handleOnChage, isValidField } from \"../base\"\nimport { JSX, useState } from \"react\"\nimport { cn } from '@/src/lib/utils';\nimport { UseFormReturn } from \"react-hook-form\"\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText } from \"@/src/components/ui/input-group\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/src/components\"\n\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean; // estado submit externo opcional\n}\nexport class DateInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldTimeInput input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\nconst FieldTimeInput = ({ form, input, isSubmitting }: Props) => {\n\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n const infoTooltip = input?.infoTooltip;\n const groupConfig = input.inputGroupConfig;\n const autoValidate = groupConfig?.autoValidIcons ?? input.zodType ? true : false;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n \n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n setIsValid(isValidField(input, form));\n // 🔑 Inicializa el estado con el valor actual del formulario (si existe)\n const [date, setDate] = React.useState<Date | undefined>(\n field.value ? new Date(field.value) : undefined\n )\n\n // 🔑 Sincroniza el estado con el form cuando cambie\n React.useEffect(() => {\n if (field.value && !date) {\n setDate(new Date(field.value))\n setIsValid(isValidField(input, form));\n }\n }, [field.value])\n\n const handleSelect = (selectedDate?: Date) => {\n // setIsValid(isValidField(input, form));\n setDate(selectedDate)\n // field.onChange(selectedDate) // <-- Actualiza el form\n handleOnChage(selectedDate, input, field)\n }\n\n return (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <Popover>\n <PopoverTrigger asChild>\n {/* <div className=\"flex flex-col justify-start gap-2 \"> */}\n <FormControl>\n <InputGroup className=\"flex flex-row gap-1\">\n\n\n {/* Tooltip de información */}\n {infoTooltip && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Info size={20} />\n </TooltipTrigger>\n <TooltipContent>\n <p>{infoTooltip}</p>\n </TooltipContent>\n </Tooltip>\n )}\n\n <Button\n variant=\"outline\"\n type=\"button\"\n className={cn(\n \"w-full justify-start text-left py-0.5 \",\n !date && \"text-muted-foreground\"\n )}\n >\n <div className=\"flex flex-1 items-center gap-1 justify-start text-left \">\n <CalendarIcon />\n {date ? format(date, \"PPP\") : <span>{input.placeHolder ?? 'Fecha'}</span>}\n </div>\n {(iconsRight.length > 0 || textRight || autoValidate) && (\n <>\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={24} className=\"w-6! h-6!\" />\n ))}\n\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </>\n )}\n \n </Button>\n\n\n </InputGroup>\n </FormControl>\n {/* </div> */}\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={date}\n selected={date}\n onSelect={handleSelect}\n captionLayout={'dropdown'}\n initialFocus />\n </PopoverContent>\n </Popover>\n <FormDescription>{input.description}</FormDescription>\n <FormMessage />\n </FormItem>\n )\n } } />\n return <>{formField}</>;\n}\n\n\n","'use client'\n\nimport { JSX, useState, useEffect } from \"react\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText } from \"@/src/components/ui/input-group\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Loader2 } from \"lucide-react\";\n\nexport class DateTimeInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldDateTimeInput input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldDateTimeInput = ({ form, input, isSubmitting }: Props) => {\n const groupConfig = input.inputGroupConfig;\n const autoValidate = groupConfig?.autoValidIcons ?? input.zodType ? true : false;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n\n // Estado local para manejar validez\n const [isValid, setIsValid] = useState<boolean>(() => {\n const value = form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n return !fieldState.error && value !== undefined && value !== \"\";\n });\n\n // Estado local para la fecha y hora\n const [dateTime, setDateTime] = useState<string>(() => form.getValues(input.name) ?? \"\");\n\n useEffect(() => {\n const fieldValue = form.getValues(input.name) ?? \"\";\n if (fieldValue !== dateTime) setDateTime(fieldValue);\n }, [form.getValues(input.name)]);\n\n const handleChange = (val: string) => {\n setDateTime(val);\n form.setValue(input.name, val);\n };\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const validNow = !fieldState.error && field.value !== undefined && field.value !== \"\";\n if (validNow !== isValid) setIsValid(validNow);\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl className=\"shadow-lg\">\n <InputGroup>\n\n {/* Iconos izquierda */}\n {(iconsLeft.length > 0 || textLeft) && (\n <InputGroupAddon>\n {textLeft && <InputGroupText>{textLeft}</InputGroupText>}\n {iconsLeft.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n </InputGroupAddon>\n )}\n\n {/* Input de tipo datetime-local */}\n <InputGroupInput\n type=\"datetime-local\"\n value={dateTime}\n disabled={input.disabled || isSubmitting}\n onChange={(e) =>{ \n handleOnChage(e.target.value, input, field);\n handleChange(e.target.value);\n }}\n />\n\n {/* Iconos derecha */}\n {(iconsRight.length > 0 || textRight || autoValidate) && (\n <InputGroupAddon align=\"inline-end\">\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={24} />\n ))}\n\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n )}\n\n </InputGroup>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport type { UseFormReturn } from \"react-hook-form\"\nimport { useEffect, useState } from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\"\nimport { Button } from \"@/src/components/ui/button\"\nimport { Card } from \"@/src/components/ui/card\"\nimport { FieldProps, BaseInput, handleOnChage } from \"../base\";\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input } from \"@/src/components/ui\";\nimport { JSX } from \"react\"\n\nexport class FileInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return ( <FieldFile input={input} form={form} isSubmitting={isSubmitting} /> )\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldFile = ({ form, input, isSubmitting }: Props) => {\n const [preview, setPreview] = useState<string | null>(form.getValues(input.name) ?? null)\n const [showPreview, setShowPreview] = useState<boolean>(input.fileConfig?.showPreview ?? false)\n \n const accept = input.fileConfig?.accept || \"*/*\";\n const multiple = input.fileConfig?.multiple || false;\n // const maxSize = input.fileConfig?.maxSize || 25;\n // const previewSize = input.fileConfig?.previewSize || 60;\n\n useEffect(() => {\n setPreview(form.getValues(input.name) || null)\n }, [input])\n\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (file) {\n const objectUrl = URL.createObjectURL(file)\n setPreview(objectUrl)\n } else {\n setPreview(null)\n }\n }\n\n return (\n <>\n \n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <div className=\"flex gap-1\">\n <FormControl>\n <Input \n type=\"file\"\n accept={accept}\n multiple={multiple}\n placeholder={input.placeHolder}\n name={field.name}\n disabled={input.disabled || isSubmitting}\n onChange={(e) => {\n field.onChange(e.target.files?.[0]); handleFileChange(e)\n handleOnChage(e.target.files?.[0], input, field)\n }} \n />\n </FormControl>\n { preview && (<Button type=\"button\" onClick={() => { setShowPreview(!showPreview); }}>\n {showPreview ? <EyeOff /> : <Eye />}\n </Button>) }\n <FormDescription>{input.description}</FormDescription>\n </div>\n {/* <pre> <b>{JSON.stringify(field, null, 2) } </b> </pre> */}\n <FormMessage />\n {\n (preview && showPreview) && (\n <Card>\n {/* <Image\n src={preview}\n alt=\"Preview\"\n width={previewSize}\n height={previewSize}\n /> */}\n </Card> ) \n }\n </FormItem>\n )}\n />\n </>\n )\n}\n\n","'use client'\n\nimport { JSX, useRef, useState } from \"react\";\nimport { BaseInput } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Loader2, Upload } from \"lucide-react\";\nimport { cn } from \"@/src/lib/utils\";\n\nexport class FileMultiUploadInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldFileMultiUpload input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldFileMultiUpload = ({ input, form, isSubmitting }: Props) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [files, setFiles] = useState<File[]>(form.getValues(input.name) || []);\n const [dragOver, setDragOver] = useState(false);\n\n const autoValidate = input.inputGroupConfig?.autoValidIcons;\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = event.target.files ? Array.from(event.target.files) : [];\n setFiles(selectedFiles);\n form.setValue(input.name, selectedFiles);\n };\n\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n const droppedFiles = event.dataTransfer.files ? Array.from(event.dataTransfer.files) : [];\n const updatedFiles = [...files, ...droppedFiles];\n setFiles(updatedFiles);\n form.setValue(input.name, updatedFiles);\n setDragOver(false);\n };\n\n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const isValid = !fieldState.error && files.length > 0;\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n\n <FormControl>\n <div\n ref={inputRef}\n onClick={() => inputRef.current?.click()}\n onDragOver={(e) => { e.preventDefault(); setDragOver(true); } }\n onDragLeave={() => setDragOver(false)}\n onDrop={handleDrop}\n className={cn(\n \"w-full h-40 border-2 border-dashed rounded-lg flex flex-col items-center justify-center cursor-pointer transition-all duration-200\",\n dragOver ? \"border-blue-500 bg-blue-50\" : \"border-gray-400 bg-gray-50\",\n isSubmitting && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Upload className=\"w-10 h-10 text-gray-500 mb-2\" />\n <span className=\"text-gray-600 text-sm text-center px-2\">\n {files.length === 0\n ? \"Arrastra tus archivos aquí o haz click para seleccionar\"\n : `${files.length} archivo(s) seleccionados`}\n </span>\n <input\n ref={inputRef}\n type=\"file\"\n multiple\n className=\"hidden\"\n disabled={input.disabled || isSubmitting}\n onChange={handleFileSelect} />\n </div>\n </FormControl>\n\n {/* Lista de archivos seleccionados */}\n {files.length > 0 && (\n <ul className=\"mt-2 max-h-40 overflow-y-auto border rounded-md p-2 bg-white\">\n {files.map((f, idx) => (\n <li key={idx} className=\"flex justify-between items-center py-1 px-2 rounded hover:bg-gray-100\">\n <span className=\"truncate\">{f.name}</span>\n <button\n type=\"button\"\n onClick={() => {\n const filtered = files.filter((_, i) => i !== idx);\n setFiles(filtered);\n form.setValue(input.name, filtered);\n } }\n className=\"text-red-500 hover:text-red-700 text-sm\"\n >\n Eliminar\n </button>\n </li>\n ))}\n </ul>\n )}\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n\n {autoValidate && (\n <div className=\"mt-1\">\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n\n <FormMessage />\n </FormItem>\n );\n } } />;\n\n return <>{formField}</>;\n \n};\n","'use client'\n\nimport { ChangeEventHandler, Dispatch, ForwardRefExoticComponent, JSX, RefAttributes, SetStateAction, useEffect, useState } from \"react\";\nimport { BaseInput, handleOnChage, isValidField } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { \n InputGroup, \n InputGroupAddon, \n InputGroupInput, \n InputGroupText \n} from \"@/src/components/ui/input-group\";\nimport { FieldProps, TextInputType } from \"../base/definitions\";\nimport { ControllerRenderProps, FieldValues, UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Info, Loader2, Eye, EyeOff, LucideProps } from \"lucide-react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/src/components/ui/tooltip\";\n\nexport class TextInputGroup extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldTextGroup input={input} form={form} isSubmitting={isSubmitting}/>;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean; // estado submit externo opcional\n}\n\nexport const FieldTextGroup = ({ form, input, isSubmitting }: Props) => {\n // Estado local para manejar validez desde el primer render\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n const formField = (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n setIsValid(isValidField(input, form));\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl className=\"shadow-lg\">\n {\n CustomInputGroup({\n input,\n isSubmitting,\n field,\n form,\n isValid,\n })\n }\n </FormControl>\n\n {/* Descripción */}\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n \n return <>{formField}</>;\n};\n\n\ninterface customInputGroup {\n value?: any;\n input: FieldProps<Record<string,any>,Record<string,any>>,\n field?: ControllerRenderProps<FieldValues, string>,\n form: UseFormReturn, \n isSubmitting?: boolean,\n isValid?: boolean,\n setShowPassword?: Dispatch<SetStateAction<boolean>>, \n autoValidate?: boolean, \n onChange?: ChangeEventHandler<HTMLInputElement> | undefined\n}\n\nexport const CustomInputGroup = ({\n value,\n input,\n field,\n form,\n isSubmitting,\n onChange,\n isValid\n }: customInputGroup) => {\n \n const groupConfig = input.inputGroupConfig;\n const infoTooltip = input?.infoTooltip;\n const autoValidate = groupConfig?.autoValidIcons ?? input.zodType ? true : false;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n\n // Estado local para manejar validez desde el primer render\n // const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n // 👁️ Estado para mostrar/ocultar contraseña\n const [showPassword, setShowPassword] = useState(false);\n const isPasswordField = input.keyboardType === TextInputType.PASSWORD;\n const isNumberField = input.keyboardType === TextInputType.NUMBER;\n\n const showInputGroupAddons = iconsRight.length > 0 || textRight || autoValidate || infoTooltip || isPasswordField\n \n // useEffect(()=>{\n // setIsValid(isValidField(input, form));\n // },[input])\n return (\n <InputGroup>\n {/* Iconos izquierda */}\n {(iconsLeft.length > 0 || textLeft) && (\n <InputGroupAddon>\n {textLeft && <InputGroupText>{textLeft}</InputGroupText>}\n {iconsLeft.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n </InputGroupAddon>\n )}\n\n {/* Input principal */}\n <InputGroupInput\n placeholder={input.placeHolder}\n disabled={input.disabled || isSubmitting}\n onBlur={field?.onBlur}\n name={field?.name}\n ref={field?.ref}\n type={isPasswordField && !showPassword\n ? \"password\"\n : isNumberField\n ? \"number\"\n : \"text\"}\n value={field?.value ?? value ?? \"\"}\n onChange={(e) => {\n if (onChange) {\n onChange(e)\n }\n let value: any = e.target.value;\n if (isNumberField) {\n value = e.target.value === \"\" ? \"\" : Number(e.target.value); // 👈 conversión si es number\n }\n field?.onChange(value);\n isValidField(input, form);\n handleOnChage(value, input, field);\n }\n } \n // {...field} \n />\n\n {/* Iconos derecha */}\n {showInputGroupAddons && (\n <InputGroupAddon align=\"inline-end\">\n {/* Tooltip de información */}\n {infoTooltip && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Info size={20} />\n </TooltipTrigger>\n <TooltipContent>\n <p>{infoTooltip}</p>\n </TooltipContent>\n </Tooltip>\n )}\n\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n\n {/* 👁️ Toggle mostrar/ocultar contraseña */}\n {isPasswordField && (\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword) }\n className=\"p-1\"\n >\n {showPassword ? <EyeOff size={20} /> : <Eye size={20} />}\n </button>\n )}\n\n {/* Icono de validación / loading */}\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n}\n\n","'use client'\n\nimport { JSX } from \"react\";\nimport { BaseInput } from \"../base/base-input\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { Link2Icon, Plus, Trash2 } from \"lucide-react\";\nimport { useEffect } from \"react\";\nimport { CustomInputGroup, FieldTextGroup } from \"./text-input-group\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"@/src/components/ui/input-group\";\nimport { ButtonGroup, ButtonGroupText } from \"@/src/components/ui/button-group\";\nimport { Label } from \"@radix-ui/react-label\";\n\nexport class KeyValueListInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldKeyValueList\n input={input}\n form={form}\n isSubmitting={isSubmitting}\n />\n );\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\n/**\n * 🧠 Lista editable de pares clave-valor\n */\nexport const FieldKeyValueList = ({ form, input, isSubmitting }: Props) => {\n const fieldName = input.name;\n\n // Inicializamos el valor como array vacío si no existe\n useEffect(() => {\n const current = form.getValues(fieldName);\n if (!Array.isArray(current)) {\n form.setValue(fieldName, []);\n }\n }, [form, fieldName]);\n\n const handleAddPair = () => {\n const current = form.getValues(fieldName) || [];\n form.setValue(fieldName, [...current, { key: \"\", value: \"\" }]);\n };\n\n const handleRemovePair = (index: number) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.filter((_: any, i: number) => i !== index);\n form.setValue(fieldName, updated);\n };\n\n const handleChange = (index: number, fieldType: \"key\" | \"value\", newValue: string) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.map((item: any, i: number) =>\n i === index ? { ...item, [fieldType]: newValue } : item\n );\n form.setValue(fieldName, updated);\n };\n\n return (\n <FormField\n control={form.control}\n name={fieldName}\n render={() => {\n const pairs = form.watch(fieldName) || [];\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormMessage />\n <FormControl>\n <div className=\"flex flex-col gap-3 rounded-xl \">\n {pairs.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n No pairs have been added yet.\n </p>\n )}\n\n {pairs.map((pair: { key: string; value: string }, index: number) => (\n <div\n key={index}\n className=\"flex flex-row w-full gap-2 items-center py-0.5\"\n > \n\n <ButtonGroup className=\"w-full\">\n <ButtonGroupText asChild>\n <Label htmlFor=\"key\">Key</Label>\n </ButtonGroupText>\n <CustomInputGroup \n autoValidate={true}\n value={pair.key}\n input={input}\n isValid={pair.key.trim() != ''}\n isSubmitting={isSubmitting}\n onChange={(e) => handleChange(index, \"key\", e.target.value)}\n form={form}\n />\n {/* <InputGroup>\n <InputGroupInput\n placeholder=\"Key\"\n value={pair.key}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"key\", e.target.value)}\n className=\"flex-1\"\n />\n </InputGroup> */}\n </ButtonGroup>\n\n <ButtonGroup className=\"w-full\">\n <ButtonGroupText asChild>\n <Label htmlFor=\"value\">Value</Label>\n </ButtonGroupText>\n <CustomInputGroup \n autoValidate={true}\n value={pair.value}\n input={input}\n isValid={pair.value.trim() != ''}\n isSubmitting={isSubmitting}\n onChange={(e) => handleChange(index, \"value\", e.target.value)}\n form={form}\n />\n {/* <InputGroupInput\n placeholder=\"Value\"\n value={pair.value}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"value\", e.target.value)}\n className=\"flex-1\"\n /> */}\n </ButtonGroup>\n\n {/* <Input\n placeholder=\"Key\"\n value={pair.key}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"key\", e.target.value)}\n className=\"w-1/2\"\n /> */}\n {/* <Input\n placeholder=\"Value\"\n value={pair.value}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"value\", e.target.value)}\n className=\"w-1/2\"\n /> */}\n { input.isRemovebleOption && (<Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => handleRemovePair(index)}\n disabled={isSubmitting}\n >\n <Trash2 size={18} />\n </Button>)}\n </div>\n ))}\n\n <div className=\"flex justify-end mt-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={handleAddPair}\n disabled={isSubmitting}\n >\n <Plus size={18} className=\"mr-1\" />\n </Button>\n </div>\n </div>\n </FormControl>\n\n {input.description && (\n <FormDescription>{input.description}</FormDescription>\n )}\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\n\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n Button,\n Badge,\n Popover,\n PopoverTrigger,\n PopoverContent,\n\n} from \"@/src/components/ui\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { cn } from \"@/src/lib/utils\";\nimport { useState } from \"react\";\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"@/src/components/ui/command\";\n\nexport class MultiSelectInput extends BaseInput {\n render() {\n const { input, form, isSubmitting } = this;\n return <FieldMultiSelect input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldMultiSelect = ({ form, input, isSubmitting }: Props) => {\n const mockInputOptions: InputOption[] = [\n { id: 1, name: \"PERMISO 1\" },\n { id: 2, name: \"PERMISO 2\" },\n { id: 3, name: \"PERMISO 3\" },\n { id: 4, name: \"PERMISO 4\" },\n ];\n\n const lista = (input?.listConfig?.list ?? mockInputOptions) as InputOption[];\n\n const optionValue = input?.listConfig?.optionValue ?? input.optionValue ?? \"id\";\n\n const getValue = (item: InputOption) => {\n if (optionValue === \"name\") return item[optionValue];\n return item.value ?? item.id;\n };\n\n const [open, setOpen] = useState(false);\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n const selectedValues: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggleOption = (value: string) => {\n const newValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n field.onChange(newValues);\n };\n\n return (\n <FormItem className=\"flex flex-col rounded-lg border p-3 shadow bg-blue-100/20\">\n <FormLabel><b>{input.label}</b></FormLabel>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n\n <FormControl>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n disabled={input.disabled || isSubmitting}\n className={cn(\n \"justify-between w-full bg-black/10 dark:bg-white/10\",\n !selectedValues.length && \"text-muted-foreground\"\n )}\n >\n {selectedValues.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {selectedValues.map((val) => {\n const option = lista.find(\n (item) => getValue(item).toString() === val\n );\n return (\n <Badge key={`${input.name}-${val}-ms`} variant=\"secondary\">\n {option?.name ?? val}\n </Badge>\n );\n })}\n </div>\n ) : (\n <span>{input.placeHolder ?? \"Selecciona...\"}</span>\n )}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 opacity-50\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className=\"p-0 w-[var(--radix-popover-trigger-width)]\">\n <Command>\n <CommandInput placeholder=\"Buscar...\" />\n <CommandList>\n <CommandEmpty>No hay resultados.</CommandEmpty>\n <CommandGroup>\n {lista.map((item) => {\n const value = getValue(item).toString();\n const selected = selectedValues.includes(value);\n return (\n <CommandItem\n key={`${value}-ms`}\n onSelect={() => {\n handleOnChage(value,input,field)\n toggleOption(value)}\n }\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n selected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {item.name}\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </FormControl>\n\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport { BaseInput, FieldProps, InputTypes } from \"../base\"\nimport { JSX } from \"react\"\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui\"\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldTextGroup } from \"./text-input-group\";\n\nexport class NumberInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (<FieldNumber form={form} input={input} isSubmitting={isSubmitting}/>)\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldNumber = ({form, input, isSubmitting}:Props) => {\n const fielInput: FieldProps = { ...input, inputType: InputTypes.NUMBER }\n return (<FieldTextGroup input={fielInput} form={form} isSubmitting={isSubmitting}/>)\n}\n\n","'use client'\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, InputOTP, InputOTPGroup, InputOTPSlot } from \"@/src/components/ui\"\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\n\nexport class OTPInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this; \n return (\n <FieldOTP form={form} input={input} isSubmitting={isSubmitting} />\n )\n\n }\n}\n\ninterface Props {\n form: UseFormReturn\n input: FieldProps,\n isSubmitting?: boolean;\n}\n\nconst FieldOTP = ({ form, input, isSubmitting }: Props ): JSX.Element => {\n\n const totalPositions = Array.from({ length: input.min ?? 6 }, (_, i) => i);\n \n return <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n <InputOTP maxLength={totalPositions.length} {...field} onChange={(event)=> handleOnChage(event, input, field)}>\n <InputOTPGroup>\n {totalPositions.map((position) => (\n <InputOTPSlot key={position} index={position} />\n ))}\n </InputOTPGroup>\n </InputOTP>\n </FormControl>\n <FormDescription>{input.description}</FormDescription>\n <FormMessage />\n </FormItem>\n )} />;\n}\n\n","'use client'\nimport { BaseInput, FieldProps, handleOnChage, InputOption } from \"../base\";\nimport { Card, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Label, RadioGroup, RadioGroupItem } from \"@/src/components/ui\";\nimport { cn } from \"@/src/lib/utils\";\nimport { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\n\n\nexport class RadioGroupInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldRadioGroup input={input} form={form} isSubmitting={isSubmitting}/>\n )\n }\n}\n\ninterface Props {\n form: UseFormReturn\n input: FieldProps,\n isSubmitting?: boolean;\n}\n\nconst FieldRadioGroup = ({ input, form, isSubmitting }: Props): JSX.Element => {\n const mockInputOptions: InputOption[] = [\n { id: 1, name: \"A+\", value: \"A+\" },\n { id: 2, name: \"A-\", value: \"A-\" },\n { id: 3, name: \"B+\", value: \"B+\" },\n { id: 4, name: \"B-\", value: \"B-\" },\n { id: 5, name: \"O+\", value: \"O+\" },\n { id: 6, name: \"O-\", value: \"O-\" },\n { id: 7, name: \"AB+\", value: \"AB+\" },\n { id: 8, name: \"AB-\", value: \"AB-\" },\n ]\n\n const options = (input.listConfig?.list as InputOption[]) ?? mockInputOptions\n\n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <div className=\"flex items-center justify-between p-2 border-b\">\n <FormLabel className=\"font-semibold\">\n {input.label || input.name}\n </FormLabel>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n </div>\n\n <FormControl>\n <RadioGroup\n {...field}\n value={field.value ?? \"\"}\n onValueChange={(e)=> handleOnChage(e, input, field)}\n className=\"space-y-2 mt-3\"\n >\n {options.map((opt, index) => (\n <div\n key={opt.id}\n className={cn(\n \"p-2 rounded-lg flex items-center gap-2 cursor-pointer\",\n index % 2 ? \"bg-black/5\" : \"bg-white/5\"\n )}\n >\n <RadioGroupItem\n disabled={input.disabled || isSubmitting}\n value={opt.value ?? String(opt.id)}\n id={`opt-${opt.id}`} />\n <Label htmlFor={`opt-${opt.id}`}>\n {opt.label || opt.name}\n </Label>\n </div>\n ))}\n </RadioGroup>\n </FormControl>\n\n <FormMessage />\n </FormItem>\n )} />;\n\n return <>{formField}</>;\n \n}","'use client'\n\nimport { JSX, useEffect, useState } from \"react\";\nimport { BaseInput, isValidField } from \"../base/base-input\";\nimport { UseFormReturn, useFieldArray } from \"react-hook-form\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { FieldProps } from \"../base/definitions\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { FormFieldsGrid } from \"../FormFieldsGrid\";\nimport { CustomInputGroup } from \"./text-input-group\";\n\nexport class RepeaterInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldRepeater form={form} input={input} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps\n isSubmitting?: boolean;\n}\n\nexport const FieldRepeater = ({ form, input, isSubmitting }: Props) => {\n const { control } = form;\n const { fields, append, remove } = useFieldArray({\n control,\n name: input.name,\n });\n\n const canAdd = !input.maxItems || fields.length < input.maxItems;\n const canRemove = fields.length > (input.minItems ?? 0);\n\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n useEffect(() => {\n setIsValid(isValidField(input, form));\n },[input])\n\n return (\n <FormField\n control={control}\n name={input.name}\n render={() => (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n\n <FormControl>\n <div className=\"space-y-3\">\n {fields.map((item, index) => (\n <div\n key={item.id}\n className=\"border p-3 rounded-md flex flex-col gap-4 py-3\"\n >\n\n {/* <FormFieldsGrid fields={input?.repeaterFields ?? []} form={form} /> */}\n {input.repeaterFields?.map((fieldGroup, groupIndex) => {\n // Si el elemento es un array → varios campos en una línea\n const group =\n Array.isArray(fieldGroup) ? fieldGroup : [fieldGroup];\n const cols = group.length;\n\n return (\n <div\n key={groupIndex}\n className={`grid gap-1 grid-cols-${cols}`}\n >\n {group.map((subField) => (\n <FormField\n key={`${input.name}.${index}.${subField.name}`}\n control={control}\n name={`${input.name}.${index}.${subField.name}`}\n render={({ field, fieldState }) => (\n <FormItem className=\"flex-1\">\n <FormLabel>{subField.label}</FormLabel>\n <FormControl>\n <CustomInputGroup \n autoValidate={true}\n value={field.value}\n input={subField}\n isValid={isValid}\n // onChange={(e) => handleChange(index, e.target.value)}\n field={field}\n form={form}\n />\n {/* <Input\n placeholder={subField.placeHolder}\n disabled={subField.disabled || isSubmitting}\n {...field}\n /> */}\n </FormControl>\n <FormMessage>{fieldState.error?.message}</FormMessage>\n </FormItem>\n )}\n />\n ))}\n </div>\n );\n })}\n\n {/* Botón eliminar */}\n {canRemove && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => remove(index)}\n className=\"self-end\"\n >\n <Trash2 size={18} />\n </Button>\n )}\n </div>\n ))}\n\n {/* Botón agregar */}\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={() => append({})}\n disabled={isSubmitting}\n className=\"w-full\"\n >\n <Plus size={16} className=\"mr-2\" />\n Agregar\n </Button>\n )}\n </div>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: 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\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction 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 \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport { JSX, useState } from \"react\";\nimport { UseFormReturn, useFieldArray } from \"react-hook-form\";\nimport { BaseInput } from \"../base/base-input\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { FieldProps } from \"../base/definitions\";\nimport { TabsContent, Tabs, TabsTrigger, TabsList } from '@/src/components/ui/tabs';\n\n/**\n * 🧱 Clase que extiende BaseInput\n * Se usa igual que tus otros inputs (TextInput, SelectInput, etc.)\n */\nexport class RepeaterTabsInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldRepeaterTabs form={form} input={input} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\n/**\n * 📋 FieldRepeaterTabs\n * - Cada ítem del FieldArray se representa como un tab.\n * - Permite agregar/eliminar tabs.\n * - Mantiene sincronía con React Hook Form.\n */\nconst FieldRepeaterTabs = ({ form, input, isSubmitting }: Props): JSX.Element => {\n const { control } = form;\n const { fields, append, remove } = useFieldArray({\n control,\n name: input.name,\n });\n\n const [activeTab, setActiveTab] = useState<string>(fields[0]?.id ?? \"\");\n\n const canAdd = !input.maxItems || fields.length < input.maxItems;\n const canRemove = fields.length > (input.minItems ?? 0);\n\n const handleAdd = () => {\n const newItem = { id: `tab-${Date.now()}` };\n append(newItem);\n setActiveTab(newItem.id);\n };\n\n const handleRemove = (index: number) => {\n const removedId = fields[index].id;\n remove(index);\n if (activeTab === removedId && fields.length > 1) {\n const nextTab = fields[index - 1] ?? fields[0];\n if (nextTab) setActiveTab(nextTab.id);\n }\n };\n\n return (\n <FormField\n control={control}\n name={input.name}\n render={() => (\n <FormItem className={input.className}>\n {input.label && <FormLabel><b>{input.label}</b></FormLabel>}\n <FormControl>\n <div className=\"space-y-3\">\n <Tabs value={activeTab} onValueChange={setActiveTab} className=\"w-full\">\n {/* 🔹 Lista de Tabs */}\n <TabsList className=\"flex w-full justify-start overflow-x-auto\">\n {fields.map((item, index) => (\n <div key={item.id} className=\"flex items-center\">\n <TabsTrigger value={item.id} className=\"flex items-center gap-1\">\n {input.tabLabelField\n ? form.watch(`${input.name}.${index}.${input.tabLabelField}`) ||\n `Item ${index + 1}`\n : `Item ${index + 1}`}\n </TabsTrigger>\n {canRemove && (\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => handleRemove(index)}\n >\n <Trash2 size={14} />\n </Button>\n )}\n </div>\n ))}\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleAdd}\n disabled={isSubmitting}\n className=\"ml-2\"\n >\n <Plus size={14} className=\"mr-1\" /> Agregar\n </Button>\n )}\n </TabsList>\n\n {/* 🔹 Contenido de cada Tab */}\n {fields.map((item, index) => (\n <TabsContent key={item.id} value={item.id} className=\"mt-4\">\n {input.repeaterFields?.map((fieldGroup, groupIndex) => {\n const group = Array.isArray(fieldGroup)\n ? fieldGroup\n : [fieldGroup];\n const cols = group.length;\n\n return (\n <div key={groupIndex} className={`grid gap-3 grid-cols-${cols}`}>\n {group.map((subField) => (\n <FormField\n key={`${input.name}.${index}.${subField.name}`}\n control={control}\n name={`${input.name}.${index}.${subField.name}`}\n render={({ field, fieldState }) => (\n <FormItem className=\"flex-1\">\n <FormLabel>{subField.label}</FormLabel>\n <FormControl>\n <Input\n placeholder={subField.placeHolder}\n disabled={subField.disabled || isSubmitting}\n {...field}\n />\n </FormControl>\n <FormMessage>{fieldState.error?.message}</FormMessage>\n </FormItem>\n )}\n />\n ))}\n </div>\n );\n })}\n </TabsContent>\n ))}\n </Tabs>\n </div>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};\n","'use client'\n\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/src/components/ui\";\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { useEffect, useState } from \"react\";\n\nexport class SelectInput extends BaseInput {\n render() {\n const { input, form, isSubmitting } = this;\n return <FieldSelect input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldSelect = ({ form, input, isSubmitting }: Props) => {\n const mockInputOptions: InputOption[] = [\n { value: 1, id: 1, name: \"MOCK OPTION - PERMISO 1\" },\n { value: 2, id: 2, name: \"MOCK OPTION - PERMISO 2\" },\n { value: 3, id: 3, name: \"MOCK OPTION - PERMISO 3\" },\n { value: 4, id: 4, name: \"MOCK OPTION - PERMISO 4\" },\n ];\n\n // 🧩 Estado interno para lista y valor seleccionado\n const [lista, setLista] = useState<InputOption[]>(\n (input?.listConfig?.list?.every((item): item is InputOption => \"name\" in item)\n ? input.listConfig.list\n : mockInputOptions) as InputOption[]\n );\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState<string>(input.value?.toString() ?? \"\");\n\n const optionValue = input?.listConfig?.optionValue ?? input.optionValue ?? \"id\";\n\n // 🧠 Sincroniza el valor inicial con react-hook-form\n useEffect(() => {\n const currentValue = form.getValues(input.name);\n if (!currentValue && input.value) {\n form.setValue(input.name, input.value);\n setValue(input.value.toString());\n }\n }, [form, input.name, input.value]);\n\n // 🪄 Nuevo: escucha cambios en el campo del que depende (si existe)\n useEffect(() => {\n if (input.dependsOn && input.loadOptions) {\n const subscription = form.watch(async (values) => {\n const dependencyValue = values[input.dependsOn!];\n if (dependencyValue) {\n try {\n setLoading(true);\n const newOptions = await input.loadOptions!(dependencyValue);\n setLista(newOptions);\n } catch (err) {\n console.error(`Error loading options for ${input.name}:`, err);\n setLista([]);\n } finally {\n setLoading(false);\n }\n } else {\n // Limpia opciones si el campo dependiente se vacía\n setLista([]);\n form.setValue(input.name, \"\"); // limpia selección\n }\n });\n\n // cleanup\n return () => subscription.unsubscribe?.();\n }\n }, [form, input.dependsOn, input.loadOptions, input.name]);\n\n const getValue = (item: InputOption): string => {\n const val =\n optionValue === \"name\"\n ? item.name\n : item.value?.toString?.() ?? item.id?.toString();\n return val?.toString() ?? \"\";\n };\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n const currentValue = field.value?.toString() ?? value;\n\n return (\n <FormItem className=\"flex flex-row items-center justify-between rounded-lg border p-3 shadow-lg bg-blue-100/20\">\n <div className=\"space-y-0.5 pr-5\">\n <FormLabel>\n <b>{input.label}</b>\n </FormLabel>\n {input.description && (\n <FormDescription>{input.description}</FormDescription>\n )}\n <FormMessage />\n </div>\n\n <FormControl>\n <Select\n disabled={input.disabled || isSubmitting || loading}\n onValueChange={(val) => {\n handleOnChage(val, input, field)\n // field.onChange(val);\n setValue(val);\n\n // 🔸 Ejecuta el callback definido si existe\n if (input.listConfig?.onOptionChange) {\n const selectedItem = lista.find(\n (item) => getValue(item) === val\n );\n input.listConfig.onOptionChange(selectedItem);\n }\n }}\n value={currentValue || undefined}\n >\n <FormControl>\n <SelectTrigger className=\"w-[60%] bg-black/10 dark:bg-white/25\">\n <SelectValue\n placeholder={\n loading\n ? \"Cargando...\"\n : input.placeHolder ?? \"Seleccionar\"\n }\n />\n </SelectTrigger>\n </FormControl>\n\n <SelectContent>\n {lista.map((item) => (\n <SelectItem value={getValue(item)} key={`${input.name}-${item.id}-s`}>\n {item.name}\n </SelectItem>\n ))}\n {lista.length === 0 && !loading && (\n <div className=\"p-2 text-sm text-muted-foreground\">\n No hay opciones disponibles\n </div>\n )}\n </SelectContent>\n </Select>\n </FormControl>\n </FormItem>\n );\n }}\n />\n );\n};\n","\"use client\";\n\nimport { JSX, useState } from \"react\";\nimport { Card, Label, Checkbox } from \"@/src/components/ui\";\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui/form\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { cn } from \"@/src/lib/utils\";\n\nexport class SimpleCheckListInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FormField\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FieldSimpleCheckList\n isSubmitting={isSubmitting}\n input={input}\n value={field.value || []}\n onChange={(e) =>handleOnChage(e, input, field)}\n />\n )}\n />\n );\n }\n}\n\ninterface Props {\n input: FieldProps;\n value: InputOption[];\n isSubmitting?: boolean;\n onChange: (value: InputOption[]) => void;\n}\n\nexport const FieldSimpleCheckList = ({ input, value, onChange, isSubmitting }: Props) => {\n const mockInputOptions: InputOption[] = [\n { id: 1, name: \"MOCK OPTION - CREATE\", checked: false },\n { id: 2, name: \"MOCK OPTION - READ\", checked: true },\n { id: 3, name: \"MOCK OPTION - UPDATE\", checked: false },\n { id: 4, name: \"MOCK OPTION - DELETE\", checked: false },\n ];\n\n // Usa las opciones del input o las mock\n const initialOptions =\n (input.listConfig?.list as InputOption[]) ?? mockInputOptions;\n\n // Estado local sincronizado con el form\n const [options, setOptions] = useState<InputOption[]>(\n value.length > 0 ? value : initialOptions\n );\n\n const allChecked = options.every((opt) => opt.checked);\n\n const handleMainToggle = (checked: boolean) => {\n const updated = options.map((opt) => ({ ...opt, checked }));\n setOptions(updated);\n handleOnChage(updated, input)\n onChange(updated); // sincroniza con el form\n };\n\n const handleChildToggle = (option: InputOption, checked: boolean) => {\n const updated = options.map((opt) =>\n opt.id === option.id ? { ...opt, checked } : opt\n );\n handleOnChage(updated, input)\n setOptions(updated);\n onChange(updated); // sincroniza con el form\n };\n\n const formField = <FormItem>\n <div className=\"flex items-center justify-between p-2 border-b\">\n <FormLabel className=\"font-semibold\">{input.label || input.name}</FormLabel>\n <div className=\"flex items-center gap-2\">\n <Label htmlFor=\"main\">Seleccionar todo</Label>\n <Checkbox\n id=\"main\"\n checked={allChecked}\n onCheckedChange={handleMainToggle} />\n </div>\n </div>\n\n <FormControl>\n <div className=\"space-y-2 mt-3\">\n {options.map((opt, index) => (\n <div\n key={opt.id}\n className={cn(\n \"p-2 rounded-lg flex justify-items-start gap-2 items-center\",\n index % 2 ? \"bg-black/5\" : \"bg-white/5\"\n )}\n >\n <Checkbox\n disabled={input.disabled || isSubmitting}\n id={String(opt.id)}\n checked={opt.checked || false}\n onCheckedChange={(checked) => handleChildToggle(opt, checked as boolean)} />\n <Label htmlFor={String(opt.id)}>{opt.label || opt.name}</Label>\n </div>\n ))}\n </div>\n </FormControl>\n\n <FormMessage />\n </FormItem>;\n\n return <>{formField}</>;\n \n};\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport { JSX, useState } from \"react\";\nimport { BaseInput } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Slider } from \"@/src/components/ui/slider\";\nimport { Card } from \"@/src/components/ui\";\n\nexport class SliderInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldSlider input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldSlider = ({ input, form, isSubmitting }: Props) => {\n // Valor inicial del slider\n const initialValue = form.getValues(input.name) ?? input.value ?? 0;\n const [value, setValue] = useState<number>(initialValue);\n\n const handleChange = (val: number) => {\n setValue(val);\n form.setValue(input.name, val);\n };\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n\n <FormControl>\n <Slider\n defaultValue={[initialValue]}\n value={[value]}\n max={input.max ?? 100}\n min={input.min ?? 0}\n step={1}\n className=\"w-[60%]\"\n disabled={input.disabled || isSubmitting}\n onValueChange={(val) => handleChange(val[0])}\n />\n </FormControl>\n\n <div className=\"mt-2 text-sm text-gray-700\">\n Valor actual: {value}\n </div>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};\n","'use client'\n\nimport { JSX, ReactNode, useState } from \"react\"\nimport { UseFormReturn } from \"react-hook-form\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { useSortable } from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { GripVertical } from \"lucide-react\"\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/src/components/ui/form\"\nimport { cn } from \"@/src/lib/utils\"\nimport { BaseInput, FieldProps } from \"../base\"\n\n// ============================================================================\n// 🔹 Clase principal que extiende de BaseInput\n// ============================================================================\n\nexport class SortableListInput<T> extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this\n const children = input.listConfig?.children ?? undefined\n return (\n <FieldSortableList<T>\n form={form}\n input={input}\n isSubmitting={isSubmitting}\n children={children as (item: T, index: number) => ReactNode}\n />\n )\n }\n}\n\n// ============================================================================\n// 🔹 Campo principal con lógica de drag & drop\n// ============================================================================\n\ninterface Props<T> {\n form: UseFormReturn\n input: FieldProps\n isSubmitting?: boolean\n children?: (item: T, index: number) => ReactNode\n}\n\nfunction FieldSortableList<T>({\n form,\n input,\n isSubmitting,\n children,\n}: Props<T>): JSX.Element {\n const [items, setItems] = useState<any[]>(() => input.listConfig?.list ?? [])\n const sortableEnabled = input.listConfig?.sortable ?? true;\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n const handleDragEnd = (event: any) => {\n if (!sortableEnabled) return; \n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = items.findIndex((i: any) => i.id === active.id)\n const newIndex = items.findIndex((i: any) => i.id === over.id)\n const newList = arrayMove(items, oldIndex, newIndex)\n\n setItems(newList)\n form.setValue(input.name, newList)\n input.listConfig?.onOptionChange?.(newList)\n }\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={() => (\n <FormItem className={cn(\"space-y-2\", input.className)}>\n {input.label && <FormLabel><b>{input.label}</b></FormLabel>}\n <FormControl>\n {sortableEnabled ? (\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext\n items={items.map((i) => i.id)}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"flex flex-col gap-2\">\n {items.map((item, index) => (\n <SortableWrapper key={item.id} id={item.id}>\n {typeof children === \"function\"\n ? children(item, index)\n : <div className=\"p-3 border rounded-md bg-white\">{item.name}</div>}\n </SortableWrapper>\n ))}\n </div>\n </SortableContext>\n </DndContext>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {items.map((item, index) =>\n typeof children === \"function\"\n ? children(item, index)\n : <div key={item.id} className=\"p-3 border rounded-md bg-gray-50\">{item.name}</div>\n )}\n </div>\n )}\n </FormControl>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n )\n}\n\n// ============================================================================\n// 🔹 SortableWrapper: item individual draggable\n// ============================================================================\n\nfunction SortableWrapper({\n id,\n children,\n disabled,\n}: {\n id: string | number\n children: React.ReactNode\n disabled?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n className={cn(\n \"flex items-center gap-2 p-2 border rounded-md mb-1 bg-muted/30 cursor-grab select-none transition-all\",\n isDragging && \"opacity-60 bg-muted/50 scale-[0.98]\"\n )}\n >\n <GripVertical className=\"w-4 h-4 opacity-70\" />\n <div className=\"flex-1\">{children}</div>\n </div>\n )\n}\n","'use client';\n\nimport { JSX, useEffect, useState } from \"react\";\nimport { BaseInput, isValidField } from \"../base/base-input\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { CustomInputGroup } from \"./text-input-group\";\n\nexport class StringValueListInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldStringValueList\n input={input}\n form={form}\n isSubmitting={isSubmitting}\n />\n );\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\n/**\n * 🧠 Lista editable de strings\n */\nexport const FieldStringValueList = ({ form, input, isSubmitting }: Props) => {\n const fieldName = input.name;\n const withAddBtn = input.withAddBtn ?? false\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n // Inicializamos como array vacío si no existe\n useEffect(() => {\n setIsValid(isValidField(input, form));\n },[input])\n \n useEffect(() => {\n const current = form.getValues(fieldName);\n if (!Array.isArray(current)) {\n form.setValue(fieldName, []);\n }\n }, [form, fieldName]);\n\n const handleAddItem = () => {\n const current = form.getValues(fieldName) || [];\n form.setValue(fieldName, [...current, \"\"]);\n };\n\n const handleRemoveItem = (index: number) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.filter((_: string, i: number) => i !== index);\n form.setValue(fieldName, updated);\n };\n\n const handleChange = (index: number, newValue: string) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.map((item: string, i: number) =>\n i === index ? newValue : item\n );\n form.setValue(fieldName, updated);\n };\n\n return (\n <FormField\n control={form.control}\n name={fieldName}\n render={(field) => {\n const items = form.watch(fieldName) || [];\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormMessage />\n <FormControl>\n <div className=\"flex flex-col gap-3 rounded-xl \">\n {items.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n No items have been added yet.\n </p>\n )}\n\n {items.map((value: string, index: number) => (\n <div\n key={index}\n className=\"flex items-center gap-4 py-2\"\n >\n <CustomInputGroup \n autoValidate={true}\n value={value}\n input={input}\n isValid={isValid}\n onChange={(e) => handleChange(index, e.target.value)}\n // field={field}\n form={form}\n />\n {/* <Input\n placeholder={`Item ${index + 1}`}\n value={value}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, e.target.value)}\n /> */}\n {input.isRemovebleOption && (<Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => handleRemoveItem(index)}\n disabled={isSubmitting}\n >\n <Trash2 size={18} />\n </Button>)}\n </div>\n ))}\n\n <div className=\"flex justify-end mt-2\">\n { withAddBtn && (<Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={handleAddItem}\n disabled={isSubmitting}\n >\n <Plus size={18} className=\"mr-1\" />\n </Button>)}\n </div>\n </div>\n </FormControl>\n\n {input.description && (\n <FormDescription>{input.description}</FormDescription>\n )}\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { Card, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Switch } from \"@/src/components/ui\";\nimport { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\n\n\nexport class SwitchInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldSwitch input={input} form={form} isSubmitting={isSubmitting} />\n )\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldSwitch = ({ input, form, isSubmitting }: Props): JSX.Element => {\n const className = input.className\n return (<FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <Card className={`${className ? className : 'p-3 shadow-lg bg-blue-100/20'}`}>\n\n <FormItem className=\"flex flex-row items-center justify-between rounded-lg\">\n <div className=\"space-y-0.5\">\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormDescription>{input.placeHolder ?? input.description}</FormDescription>\n <FormMessage />\n </div>\n <FormControl>\n <Switch checked={field.value} \n onCheckedChange={(event)=> { handleOnChage(event, input, field)}} \n disabled={input.disabled || isSubmitting} />\n </FormControl>\n </FormItem>\n </Card>\n )} />)\n}\n\n","'use client'\nimport React, { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Badge, FormControl, FormField, FormItem, FormLabel, FormMessage, Input } from \"@/src/components/ui\";\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { cn } from \"@/src/lib/utils\";\n\n\n\n\nexport class TagInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldTags input={input} form={form} isSubmitting={isSubmitting}/>\n )\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldTags = ({ input, form, isSubmitting }: Props): JSX.Element => {\n\n\n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <div className=\"flex items-center justify-between p-2 border-b\">\n <FormLabel className=\"font-semibold\">\n {input.label || input.name}\n </FormLabel>\n </div>\n\n <FormControl>\n <TagsInput\n input={input}\n value={field.value ?? []}\n onValueChange={(event)=> handleOnChage(event, input, field)}\n placeholder=\"Enter for add tag\"\n />\n </FormControl>\n\n <FormMessage />\n </FormItem>\n )} />;\n\n return <>{formField}</>;\n \n}\n\n\n\n/**\n * used for identifying the split char and use will pasting\n */\nconst SPLITTER_REGEX = /[\\n#?=&\\t,./-]+/;\n\n/**\n * used for formatting the pasted element for the correct value format to be added\n */\n\nconst FORMATTING_REGEX = /^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g;\n\ninterface TagsInputProps extends React.HTMLAttributes<HTMLDivElement> {\n input: FieldProps;\n value: string[];\n onValueChange: (value: string[]) => void;\n placeholder?: string;\n maxItems?: number;\n minItems?: number;\n /** Donde mostrar los tags: 'top' o 'bottom', default 'bottom' */\n tagsPosition?: 'top' | 'bottom';\n}\n\nconst TagsInput = React.forwardRef<HTMLDivElement, TagsInputProps>(\n (\n {\n input,\n value,\n onValueChange,\n placeholder,\n maxItems,\n minItems,\n tagsPosition = 'bottom',\n className,\n dir,\n ...props\n },\n ref\n ) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n const parseMinItems = minItems ?? 0;\n const parseMaxItems = maxItems ?? Infinity;\n\n const addTag = (val: string) => {\n if ((!value.includes(val) && value.length < parseMaxItems) || input.withDuplicatTag) {\n onValueChange([...value, val]);\n }\n };\n\n const removeTag = (val: string) => {\n if (value.includes(val) && value.length > parseMinItems) {\n onValueChange(value.filter((v) => v !== val));\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && inputValue.trim() !== '') {\n e.preventDefault();\n addTag(inputValue.trim());\n setInputValue('');\n }\n if (e.key === 'Backspace' && inputValue === '' && value.length > 0) {\n removeTag(value[value.length - 1]);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const tags = e.clipboardData.getData('text').split(SPLITTER_REGEX)\n .map(t => t.replace(FORMATTING_REGEX, '').trim())\n .filter(t => t && !value.includes(t))\n .slice(0, parseMaxItems - value.length);\n if (tags.length) onValueChange([...value, ...tags]);\n };\n\n const renderTags = () => (\n <div className=\"flex flex-wrap gap-1 mb-1 mt-1\">\n {value.map(tag => (\n <Badge\n key={tag}\n className=\"flex items-center gap-1 px-2 py-0.5 rounded bg-muted text-muted-foreground text-xs\"\n >\n {tag}\n <button\n type=\"button\"\n onClick={() => removeTag(tag)}\n className=\"ml-1 text-xs hover:text-destructive\"\n >\n ×\n </button>\n </Badge>\n ))}\n </div>\n );\n\n return (\n <div {...props} ref={ref} className={cn(\"w-full\", className)}>\n {tagsPosition === 'top' && renderTags()}\n <input\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n className=\"w-full px-2 py-1 border rounded focus:outline-none focus:ring focus:ring-primary\"\n />\n {tagsPosition === 'bottom' && renderTags()}\n </div>\n );\n }\n);\n\nTagsInput.displayName = 'TagsInput';\n","'use client'\nimport { JSX, ChangeEvent } from \"react\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\"\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Textarea } from \"@/src/components/ui\"\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldProps } from \"../base\";\n\n\nexport class TextAreaInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldTextArea form={form} input={input} isSubmitting={isSubmitting} />\n )\n\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nfunction FieldTextArea({ form, input, isSubmitting }: Props): JSX.Element {\n return <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem className=\"shadow-lg\">\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n <Textarea className=\"min-w-[260px] bg-white\" \n placeholder={input.placeHolder} \n {...field} \n onChange={(event: ChangeEvent<HTMLTextAreaElement>) => {\n handleOnChage(event, input, field)\n }}\n disabled={input.disabled || isSubmitting} />\n </FormControl>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )} />;\n}\n\n","'use client'\nimport { JSX } from \"react\";\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui/form\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { BaseInput, FieldProps, handleOnChage, InputTypes } from \"../base\";\n\n\nexport class TextInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldText form={form} input={input} isSubmitting={isSubmitting} />\n )\n\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean; // estado submit externo opcional\n}\n\nconst FieldText = ({input, form, isSubmitting }: Props ): JSX.Element => {\n const hidden = input.hidden ?? input.inputType === InputTypes.HIDDEN;\n const type = hidden ? \"hidden\" : input.keyboardType || \"text\";\n return <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem className={input.className}>\n { !hidden && (<FormLabel><b>{input.label}</b></FormLabel>)}\n <FormControl className=\"shadow-lg\">\n <Input className=\"min-w-[180px]\" placeholder={input.placeHolder} {...field} type={type}\n onChange={(e)=> handleOnChage(e, input, field)}\n disabled={input.disabled || isSubmitting} />\n </FormControl>\n {input.description && <FormDescription> {input.description} </FormDescription>}\n <FormMessage />\n {/* <pre> {JSON.stringify(field, null, 2)}</pre> */}\n </FormItem>\n )} />;\n}\n\n","'use client'\n\nimport { JSX, useState, useEffect } from \"react\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText } from \"@/src/components/ui/input-group\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Loader2 } from \"lucide-react\";\n\nexport class TimeInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldTimeInput input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldTimeInput = ({ form, input, isSubmitting }: Props) => {\n const groupConfig = input.inputGroupConfig;\n const autoValidate = groupConfig?.autoValidIcons;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n\n // Estado local para manejar validez\n const [isValid, setIsValid] = useState<boolean>(() => {\n const value = form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n return !fieldState.error && value !== undefined && value !== \"\";\n });\n\n // Estado local para la hora\n const [time, setTime] = useState<string>(() => form.getValues(input.name) ?? \"\");\n\n useEffect(() => {\n const fieldValue = form.getValues(input.name) ?? \"\";\n if (fieldValue !== time) setTime(fieldValue);\n }, [form.getValues(input.name)]);\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const validNow = !fieldState.error && field.value !== undefined && field.value !== \"\";\n if (validNow !== isValid) setIsValid(validNow);\n\n const handleChange = (val: string) => {\n setTime(val);\n handleOnChage(val, input, field)\n field.onChange(val);\n };\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl className=\"shadow-lg\">\n <InputGroup>\n\n {/* Iconos izquierda */}\n {(iconsLeft.length > 0 || textLeft) && (\n <InputGroupAddon>\n {textLeft && <InputGroupText>{textLeft}</InputGroupText>}\n {iconsLeft.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n </InputGroupAddon>\n )}\n\n {/* Input de tipo time */}\n <InputGroupInput\n type=\"time\"\n value={time}\n disabled={input.disabled || isSubmitting}\n onChange={(e) => handleChange(e.target.value)}\n />\n\n {/* Iconos derecha */}\n {(iconsRight.length > 0 || textRight || autoValidate) && (\n <InputGroupAddon align=\"inline-end\">\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n )}\n\n </InputGroup>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport { UseFormReturn } from \"react-hook-form\";\nimport { BaseInput, FieldConfig, FieldProps, InputTypes } from \"./base\";\nimport { \n TextInput,\n SelectInput,\n ColorInput,\n DateInput,\n NumberInput,\n SwitchInput,\n GroupedSwitchInput,\n OTPInput,\n FileInput,\n TextAreaInput,\n TextInputGroup,\n CheckboxInput,\n SimpleCheckListInput,\n RadioGroupInput,\n TagInput,\n DateTimeInput,\n TimeInput,\n FileMultiUploadInput,\n SliderInput,\n ButtonGroupInput,\n CurrencyInput,\n KeyValueListInput,\n RepeaterInput,\n MultiSelectInput,\n ComboboxInput,\n SortableListInput,\n RepeaterTabsInput,\n StringValueListInput,\n // SwitchListInput, // ES LO MISMO QUE => GroupedSwitchInput\n // CheckListInput,\n} from \"./types\";\nimport { JSX } from \"react\";\nimport z, { ZodObject, ZodTypeAny } from \"zod\";\nimport { AccordionGroupedSwitchInput } from \"./types/accordion-grouped-switches\";\nimport { Card } from '@/src/components/ui/card';\n\n\ntype InputClassConstructor = new (\n input: FieldProps,\n form: UseFormReturn,\n isSubmitting?: boolean\n) => BaseInput;\n\n\nconst inputMap: Record<InputTypes, InputClassConstructor> = {\n [InputTypes.TEXT_GROUP]: TextInputGroup,\n [InputTypes.TEXT]: TextInput,\n [InputTypes.SWITCH]: SwitchInput,\n [InputTypes.COLOR]: ColorInput,\n [InputTypes.DATE]: DateInput,\n [InputTypes.NUMBER]: NumberInput,\n [InputTypes.SELECT]: SelectInput,\n [InputTypes.GROUPED_SWITCH_LIST]: GroupedSwitchInput,\n [InputTypes.ACCORDION_GROUPED_SWITCH_LIST]: AccordionGroupedSwitchInput,\n [InputTypes.CHECKBOX]: CheckboxInput,\n [InputTypes.OTP]: OTPInput,\n [InputTypes.FILE]: FileInput,\n [InputTypes.SIMPLE_CHECK_LIST]: SimpleCheckListInput,\n [InputTypes.TEXTAREA]: TextAreaInput,\n [InputTypes.RADIO_GROUP]: RadioGroupInput,\n [InputTypes.TAGS]: TagInput,\n [InputTypes.DATE_TIME]: DateTimeInput,\n [InputTypes.TIME]: TimeInput,\n [InputTypes.FILE_MULTI_UPLOAD]: FileMultiUploadInput,\n [InputTypes.BUTTON_GROUP]: ButtonGroupInput,\n [InputTypes.CURRENCY]: CurrencyInput,\n [InputTypes.KEY_VALUE]: KeyValueListInput,\n [InputTypes.REPEATER]: RepeaterInput,\n [InputTypes.MULTI_SELECT]: MultiSelectInput,\n [InputTypes.COMBOBOX]: ComboboxInput,\n [InputTypes.SORTABLE_LIST]: SortableListInput,\n [InputTypes.REPEATER_TABS]: RepeaterTabsInput,\n [InputTypes.STRING_LIST]: StringValueListInput,\n \n \n //ToDos: ============================================================\n [InputTypes.SLIDER]: SliderInput, //ToDo: // PENDIENTE ... VISUALMENTE NO SE VE BIEN.!!!\n [InputTypes.FORM]: TextInput,\n [InputTypes.HIDDEN]: TextInput,\n [InputTypes.CHECK_LIST]: TextInput,\n // [InputTypes.SWITCH_LIST]: SwitchListInput,\n\n // [InputTypes.RANGE]: TextInput,\n // [InputTypes.MULTISELECT]: TextInput,\n \n // [InputTypes.IMAGE_UPLOAD]: TextInput,\n // [InputTypes.AUDIO_UPLOAD]: TextInput,\n // [InputTypes.VIDEO_UPLOAD]: TextInput,\n \n // [InputTypes.CREDIT_CARD]: TextInput,\n\n};\n\nexport class InputFactory {\n static create<T extends Record<string, any> = Record<string, any>>(\n input: FieldProps<T>,\n form: UseFormReturn<T>,\n isSubmitting: boolean = false\n ): JSX.Element {\n input.form = form\n const inputType = (input.inputType as InputTypes) ?? InputTypes.TEXT;\n\n const InputClass = (inputMap[inputType] ??\n TextInput) as new (\n input: FieldProps<T>,\n form: UseFormReturn<T>,\n isSubmitting: boolean\n ) => { render: () => JSX.Element };\n\n const instance = new InputClass(input, form, isSubmitting);\n\n if (!input.wrapInCard) return instance.render();\n\n return (\n <Card className=\"p-4 space-y-3\">\n {instance.render()}\n </Card>\n );\n }\n}\n\nexport function getDefaultValues<T extends Record<string, any>>(\n entity?: Partial<T>,\n fields?: FieldConfig<T>[]\n): Record<string, any> {\n const defaults: Record<string, any> = {};\n\n if (entity) {\n Object.entries(entity).forEach(([key, value]) => {\n defaults[key] = value ?? \"\";\n });\n }\n\n if (fields) {\n const flatFields = flattenFields(fields); // ✅ aplanado recursivo completo\n for (const field of flatFields) {\n const key = field.name as string;\n if (defaults[key] === undefined) {\n defaults[key] = field.value ?? field.defaultValue ?? \"\";\n }\n }\n }\n\n return defaults;\n}\n\n\n\nconst flattenFields = <T extends Record<string, any>>(fields: FieldConfig<T>[]): FieldProps<T>[] => {\n const result: FieldProps<T>[] = [];\n\n for (const field of fields) {\n if (Array.isArray(field)) {\n result.push(...flattenFields(field));\n } else if ((field as any).fields) {\n result.push(...flattenFields((field as any).fields));\n } else {\n result.push(field);\n }\n }\n\n return result;\n};\n\nexport const getDynamicSchema = <T extends Record<string, any>>(\n fields: FieldConfig<T>[],\n extraValidations?: ((schema: ZodObject<any>) => ZodObject<any>)[]\n): ZodObject<Record<keyof T, ZodTypeAny>> => {\n\n // 🔁 aplanamos el árbol completo de campos\n const flatFields = flattenFields(fields);\n\n // // 🔥 Filtrar solo los visibles\n // const visibleFields = flatFields.filter(f =>\n // !f.showWhen || f.showWhen(values)\n // );\n\n\n // 🎯 construimos el shape del schema\n const shape = flatFields.reduce((acc, f) => {\n acc[f.name as keyof T] = f.zodType ?? z.any();\n return acc;\n }, {} as Record<keyof T, ZodTypeAny>);\n\n let schema: ZodObject<Record<keyof T, ZodTypeAny>> = z.object(shape);\n\n // ⚙️ Aplicar validaciones adicionales si las hay\n if (extraValidations?.length) {\n for (const fn of extraValidations) {\n schema = fn(schema);\n }\n }\n\n return schema;\n};","import { FieldValues, FormState } from \"react-hook-form\";\nimport { CustomAlert } from \"@/src/components/custom/custom-alert\";\nimport { FieldConfig, FieldProps } from \"./definitions\";\n\n// ✅ mismo tipo recursivo que usamos antes\n\n\ninterface Props<T extends FieldValues = Record<string, any>> {\n formState: FormState<any>;\n fields: FieldConfig<T>[]; // 👈 ahora soporta anidación\n}\n\n/**\n * 🔁 Función recursiva para aplanar la estructura de campos\n */\nconst flattenFields = <T extends FieldValues>(\n fields: FieldConfig<T>[]\n): FieldProps<T>[] => {\n const result: FieldProps<T>[] = [];\n\n for (const field of fields) {\n if (Array.isArray(field)) {\n result.push(...flattenFields(field));\n } else if ((field as any).fields) {\n // 👇 si el campo tiene subcampos, también los aplanamos\n result.push(...flattenFields((field as any).fields));\n } else {\n result.push(field);\n }\n }\n\n return result;\n};\n\nexport const FormErrorsAlert = <T extends FieldValues = Record<string, any>>({\n formState,\n fields,\n}: Props<T>) => {\n const flatFields = flattenFields(fields); // ✅ recursivo\n\n const hasErrors = Object.keys(formState.errors).length > 0;\n\n return (\n <div style={{ marginTop: 4 }}>\n {hasErrors && (\n <CustomAlert\n title=\"Revisar los siguientes criterios\"\n description={\n <ul>\n {Object.entries(formState.errors).map(([key, value]) => (\n <li key={key}>\n <strong>{getFieldLabel<T>(key, flatFields)}:</strong>{\" \"}\n {value?.message?.toString() ?? \"\"}\n </li>\n ))}\n </ul>\n }\n className=\"mb-4\"\n variant=\"error\"\n />\n )}\n </div>\n );\n};\n\nexport const getFieldLabel = <T extends FieldValues>(\n fieldErrorKey: string,\n fields: ReadonlyArray<FieldProps<T>>\n): string => {\n const foundField = fields.find((field) => field.name === fieldErrorKey);\n return foundField?.label ?? fieldErrorKey;\n};\n","'use client';\n\nimport { JSX, ReactNode } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldConfig } from \"./base\";\nimport { InputFactory } from \"./input-factory\";\n\ninterface Props<T extends Record<string, any> = Record<string, any>> {\n fields: FieldConfig<T>[];\n form: UseFormReturn<any>;\n readOnly?: boolean;\n isPending?: boolean;\n className?: string;\n gap?: string;\n}\n\nconst isRenderableChild = (c?: ReactNode | ((item: any, index: number) => ReactNode)) =>\n c !== undefined && c !== null && typeof c !== \"function\";\n\nconst shouldShowField = (field: any, values: any): boolean => {\n if (typeof field.showWhen === \"function\") {\n try {\n return !!field.showWhen(values);\n } catch {\n return true; // fallback behavior\n }\n }\n return true;\n};\n\nexport const FormFieldsGrid = <T extends Record<string, any> = Record<string, any>>({\n fields,\n form,\n isPending,\n readOnly,\n className = \"\",\n gap = \"gap-2\",\n}: Props<T>): JSX.Element => {\n const values = form.watch(); // 🚀 valores actuales\n \n\n return (\n <div className={`w-full grid grid-cols-1 ${gap} ${className}`}>\n {fields.map((inputOrGroup, idx) => {\n \n // =============================================\n // 🔥 GRUPO DE CAMPOS [ field1, field2 ]\n // =============================================\n if (Array.isArray(inputOrGroup)) {\n const visibleFields = inputOrGroup.filter((f) =>\n shouldShowField(f, values)\n );\n\n if (visibleFields.length === 0) return null; // Oculta el grupo entero\n\n return (\n <div\n key={`field-group-${idx}`}\n className=\"w-full flex flex-row items-start gap-4 py-3\"\n >\n {visibleFields.map((field, subIdx) => {\n const fieldCopy = {\n ...(field as any),\n disabled: readOnly ? true : (field as any).disabled,\n };\n\n const renderUp =\n fieldCopy.childrenPosition !== \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n const renderDown =\n fieldCopy.childrenPosition === \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n return (\n <div key={`field-${idx}-${subIdx}`} className=\"w-full px-2\">\n {renderUp && <>{fieldCopy.children}</>}\n\n {InputFactory.create(fieldCopy, form, isPending)}\n\n {renderDown && <>{fieldCopy.children}</>}\n </div>\n );\n })}\n </div>\n );\n }\n\n // =============================================\n // 🔥 CAMPO ÚNICO\n // =============================================\n if (!shouldShowField(inputOrGroup, values)) return null;\n\n const fieldCopy = {\n ...(inputOrGroup as any),\n disabled: readOnly ? true : (inputOrGroup as any).disabled,\n };\n\n const renderUp =\n fieldCopy.childrenPosition !== \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n const renderDown =\n fieldCopy.childrenPosition === \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n return (\n <div\n key={`field-single-${idx}`}\n className=\"flex flex-col justify-between py-3 w-full px-2\"\n >\n {renderUp && <>{fieldCopy.children}</>}\n\n {InputFactory.create(fieldCopy, form, isPending)}\n\n {renderDown && <>{fieldCopy.children}</>}\n </div>\n );\n })}\n </div>\n );\n};\n","'use client';\n\nimport { ReactNode, useEffect, useMemo, useTransition } from \"react\";\nimport { useForm, UseFormReturn, DefaultValues, Resolver } from \"react-hook-form\";\nimport { BtnConfig, FieldConfig, FieldProps, flattenFields } from \"./base\";\nimport { getDefaultValues, getDynamicSchema } from \"./input-factory\";\nimport { FormErrorsAlert } from \"./base/form-errors\";\nimport { Button, Card, CardContent, CardDescription, CardTitle, Form } from '@/src/components/ui';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Loader2, Pencil, Save } from \"lucide-react\";\nimport { ZodObject, z } from \"zod\";\nimport { FormFieldsGrid } from \"./FormFieldsGrid\";\nimport { ButtonGroup } from \"@/src/components/ui/button-group\";\nimport { cn } from \"@/src/lib/utils\";\n\ntype alertPositionType = 'up' | 'down';\n\nexport interface FormResp<T> {\n form?: UseFormReturn<any>;\n data: T;\n}\n\ninterface Props<T extends Record<string, any>> {\n showIcon?: boolean;\n showFormHeader?: boolean;\n formTitle: string;\n formSubTitle?: string;\n readOnly?: boolean;\n fields: FieldConfig<T>[];\n record?: Partial<T>;\n onAnyFieldChange?: (data: Record<string,any>) => void;\n onSubmit?: (resp: FormResp<T>) => void;\n onClick?: (resp: FormResp<T>) => void;\n extraValidations?: ((schema: ZodObject<any>) => ZodObject<any>)[];\n withErrorsAlert?: boolean;\n errorAlertPosition?: alertPositionType;\n withCard?: boolean;\n withFormWrapper?: boolean;\n withSubmitBtn?: boolean;\n submitBtnLabel?: string;\n submitBtnLabelSubmiting?: string;\n submitBtnClass?: string;\n btnGroupDirection?: 'flex-start' | 'flex-end' | 'flex-center';\n children?: ReactNode;\n childrenHeader?: ReactNode;\n listBtnConfig?: BtnConfig[];\n debug?:boolean\n\n\n\n isWrapInWizard?: boolean\n currentStep?: number\n totalSteps?: number\n}\n\nexport const DynamicForm = <T extends Record<string, any>>({\n formTitle,\n formSubTitle,\n fields,\n readOnly = false,\n record = {},\n onAnyFieldChange,\n onSubmit,\n onClick,\n extraValidations,\n children,\n childrenHeader,\n showIcon = false,\n showFormHeader = true,\n withErrorsAlert = true,\n errorAlertPosition = 'up',\n withCard = false,\n submitBtnClass=\"\",\n listBtnConfig = [],\n submitBtnLabel = 'Guardar',\n submitBtnLabelSubmiting = 'Guardando...',\n withFormWrapper = true,\n btnGroupDirection = \"flex-end\",\n withSubmitBtn = true,\n debug = false,\n isWrapInWizard = false,\n totalSteps = 0,\n currentStep = 1,\n}: Props<T>) => {\n\n const [isPending, startTransition] = useTransition();\n\n /** ✅ Schema dinámico basado en los campos */\n const schema = useMemo(() => {\n const allFields = flattenFields(fields, onAnyFieldChange);\n return getDynamicSchema<T>(allFields, extraValidations);\n }, [fields, extraValidations]);\n\n type FormData = z.infer<typeof schema>;\n const resolver = zodResolver(schema) as unknown as Resolver<FormData>;\n\n const initialValues = useMemo(() => getDefaultValues<T>(record), [record]);\n\n const form = useForm<FormData>({\n resolver,\n defaultValues: initialValues as unknown as DefaultValues<FormData>,\n });\n\n /** 🔄 Reset cuando cambia record */\n useEffect(() => {\n form.reset(initialValues as unknown as DefaultValues<FormData>);\n // }, [initialValues, form]);\n }, []);\n\n /** 💾 onSubmit */\n const handleSubmit = (data: FormData) => {\n if (readOnly) return;\n startTransition(() => {\n const resp: FormResp<T> = { data: data as unknown as T, form };\n onSubmit?.(resp);\n });\n };\n\n /** 🖱️ onClick con validación */\n const handleClick = async () => {\n if (!onClick) return;\n const isValid = await form.trigger();\n if (!isValid) return;\n\n const data = form.watch() as unknown as T;\n const resp: FormResp<T> = { data, form };\n onClick(resp);\n };\n\n const formBody = (\n <>\n <div className=\"w-full grid grid-cols-1\">\n <FormFieldsGrid\n fields={fields as unknown as FieldConfig<T>[]}\n form={form}\n readOnly={readOnly}\n />\n {children && (\n <div className=\"flex flex-row items-center gap-2 w-full h-full\">\n {children}\n </div>\n )}\n </div>\n\n <ButtonGroup className=\"flex flex-row w-full h-full\" style={{\n justifyContent: btnGroupDirection, // Alinea horizontalmente a la derecha\n alignItems: \"center\", // Centra verticalmente (opcional)\n }}>\n {listBtnConfig.map((btn, key) => (\n <Button\n type={btn.btnType}\n key={key}\n size=\"lg\"\n className={submitBtnClass}\n variant={btn.variant}\n onClick={btn.onClick}\n disabled={btn.disabled}\n >\n {btn.label}\n </Button>\n ))}\n {!readOnly && withSubmitBtn && (\n <Button\n type={onClick ? 'button' : 'submit'}\n size=\"lg\"\n className={cn(submitBtnClass)}\n disabled={isPending}\n onClick={onClick ? handleClick : undefined}\n >\n {isPending ? (\n <>\n {submitBtnLabelSubmiting}\n <Loader2 className=\"h-5 w-5 mr-2 animate-spin\" />\n </>\n ) : (\n <>\n {submitBtnLabel}\n {(totalSteps == 0 || totalSteps == currentStep) && (<Save className=\"h-5 w-5 mr-2\" />)}\n </>\n )}\n </Button>\n )}\n </ButtonGroup>\n </>\n )\n\n /** 🧩 Render del contenido principal del formulario */\n const formContent = (\n <div>\n {showFormHeader && (\n <CardTitle className=\"flex flex-row items-center gap-2 p-2 border-b\">\n <div className=\"flex flex-row items-center gap-2 w-full\">\n {showIcon && <Pencil className=\"h-5 w-5\" />}\n <div className=\"flex flex-col\">\n <div className=\"text-xl\">{formTitle}</div>\n {formSubTitle && <CardDescription>{formSubTitle}</CardDescription>}\n </div>\n </div>\n {childrenHeader && (\n <div className=\"flex flex-row items-center gap-2 w-full h-full\">\n {childrenHeader}\n </div>\n )}\n </CardTitle>\n )}\n\n {withErrorsAlert && errorAlertPosition === 'up' && (\n <FormErrorsAlert\n formState={form.formState}\n fields={fields as unknown as FieldConfig<T>[]}\n />\n )}\n\n {withFormWrapper && (\n <FormWrapper \n form={form} \n isWrapInWizard={isWrapInWizard}\n handleSubmit={handleSubmit}>{formBody}\n </FormWrapper>)\n }\n {!withFormWrapper && (formBody)}\n\n\n {withErrorsAlert && errorAlertPosition === 'down' && (\n <FormErrorsAlert\n formState={form.formState}\n fields={fields.flatMap(f => Array.isArray(f) ? f : [f])}\n />\n )}\n </div>\n );\n\n if (!withCard) return formContent;\n\n return (\n <Card>\n <CardContent>{formContent}</CardContent>\n </Card>\n );\n};\n\n\ninterface FormWrapperProps {\n form:UseFormReturn<any>\n handleSubmit: (data: any) => void\n children: ReactNode;\n readOnly?: boolean\n debug?: boolean\n isWrapInWizard?:boolean\n}\n\nconst FormWrapper = ({form, handleSubmit, children, readOnly, debug, isWrapInWizard}: FormWrapperProps) => {\n const allValues = form.watch();\n return (\n <Form {...form}>\n <form\n onSubmit={form.handleSubmit(handleSubmit)}\n className={`flex flex-col gap-2 ${readOnly ? 'opacity-70 pointer-events-none select-none' : ''}`}\n >\n {children}\n {debug && (\n <pre className=\"mt-4 p-3 bg-muted text-xs rounded\">\n {JSON.stringify(allValues, null, 2)}\n </pre>\n )}\n </form>\n </Form>\n )\n}\n\n\n","\"use client\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Check } from \"lucide-react\"\n\ninterface Step {\n title?: string\n description?: string\n}\n\ninterface StepperProps {\n steps: Step[]\n currentStep: number\n clickable?: boolean\n onStepClick?: (step: number) => void\n}\n\nexport function Stepper({ steps, currentStep, clickable = false, onStepClick }: StepperProps) {\n const handleStepClick = (stepNumber: number) => {\n if (clickable && onStepClick) {\n onStepClick(stepNumber)\n }\n }\n\n return (\n <div className=\"w-full\">\n <div className=\"flex flex-row gap-4 items-center justify-around\">\n {steps.map((step, index) => {\n const stepNumber = index + 1\n const isCompleted = stepNumber < currentStep\n const isCurrent = stepNumber === currentStep\n const isUpcoming = stepNumber > currentStep\n\n return (\n <div key={index} className=\"flex flex-1 items-center\">\n <div className=\"flex flex-col items-center\">\n {/* Circle indicator */}\n <div\n onClick={() => handleStepClick(stepNumber)}\n className={cn(\n \"flex size-10 items-center shadow-lg justify-center rounded-full border-2 transition-all duration-300\",\n isCompleted && \"border-primary bg-primary text-primary-foreground\",\n isCurrent && \"border-primary bg-background text-primary scale-110\",\n isUpcoming && \"border-muted-foreground/60 bg-background border-b text-muted-foreground\",\n clickable && \"cursor-pointer hover:scale-125 hover:shadow-xl\",\n !clickable && \"cursor-default\",\n )}\n >\n {isCompleted ? (\n <Check className=\"size-5\" />\n ) : (\n <span className=\"text-sm font-semibold\">{stepNumber}</span>\n )}\n </div>\n\n {/* Step info */}\n {step.title && (\n <div className=\"mt-3 text-center\">\n <p\n className={cn(\n \"text-sm font-medium transition-colors\",\n (isCompleted || isCurrent) && \"text-foreground\",\n isUpcoming && \"text-muted-foreground\",\n )}\n >\n {step.title}\n </p>\n {step.description && (\n <p className=\"mt-1 text-xs text-muted-foreground max-w-[120px]\">{step.description}</p>\n )}\n </div>\n )}\n </div>\n\n {/* Connector line */}\n {index < steps.length - 1 && (\n <div className=\"mx-2 flex-1 mb-8\">\n <div\n className={cn(\n \"h-0.5 w-full transition-all duration-300\",\n stepNumber < currentStep ? \"bg-primary\" : \"bg-muted-foreground/30\",\n )}\n />\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import { Dispatch, ReactNode, SetStateAction, useState } from \"react\"\nimport { DynamicForm, FormResp } from \"./DynamicForm\";\nimport { FieldConfig, FieldProps } from \"./base/definitions\";\nimport { Stepper } from \"@/src/components/ui/stepper\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Card } from \"@/src/components/ui/card\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\ninterface WizardRenderProps<T> {\n stepFields: FieldProps<T>[]\n currentStep: number\n totalSteps: number,\n setCurrentStep: Dispatch<SetStateAction<number>>\n}\n\ninterface Props<T> {\n onSubmit?: (resp: FormResp<T>) => void;\n fields: FieldConfig<T>[];\n record: any,\n children?: (props: WizardRenderProps<T>) => ReactNode,\n isWrapInWizard?: boolean,\n skipSteps?:boolean,\n}\n\nexport const WizardForm = <T extends Record<string, any>>({\n fields,\n record,\n onSubmit,\n children,\n isWrapInWizard = true,\n skipSteps = false,\n \n}: Props<T>) => {\n\n const [currentStep, setCurrentStep] = useState(1)\n\n const flattenFields = (list: FieldConfig<T>[]): FieldProps<T>[] =>\n list.flatMap((f) => (Array.isArray(f) ? flattenFields(f) : f))\n\n const allFields = flattenFields(fields)\n\n const totalSteps = allFields.reduce(\n (max, f) => Math.max(max, f.step ?? 1),\n 1\n )\n\n const stepFields = allFields.filter((f) => (f.step ?? 1) === currentStep)\n\n return (\n <Card className=\"flex flex-col gap-4 px-4\">\n\n {/* Header con Stepper */}\n <Card>\n <div className=\"flex justify-between mb-4 gap-2 px-4\">\n <Stepper\n steps={Array(totalSteps).fill({})}\n currentStep={currentStep}\n clickable={skipSteps}\n onStepClick={setCurrentStep}\n />\n {/* <div className=\"flex justify-center space-x-4 gap-2\">\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev - 1)}\n disabled={currentStep === 1}\n >\n <ChevronLeftIcon />\n </Button>\n\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev + 1)}\n disabled={currentStep >= totalSteps}\n >\n <ChevronRightIcon />\n </Button>\n </div> */}\n </div>\n </Card>\n\n {/* 👇 Aquí va el truco: usar children o fallback a DynamicForm */}\n {children ? (\n children({\n stepFields,\n currentStep,\n totalSteps,\n setCurrentStep\n })\n ) : (\n <DynamicForm<T>\n record={record}\n formSubTitle=\"This is a subtitle\"\n formTitle=\"Wizard Form Example\"\n withCard={false}\n errorAlertPosition=\"down\"\n fields={stepFields}\n onSubmit={onSubmit}\n isWrapInWizard={true}\n currentStep={currentStep}\n totalSteps={totalSteps}\n />\n )}\n </Card>\n )\n}\n","\"use client\";\n\nimport z from \"zod\";\nimport { FieldProps, InputTypes, TextInputType } from \"./base\";\nimport { DynamicForm } from \"./DynamicForm\";\nimport validationMessages from \"../input-errors\";\n\ninterface UserFromDB {\n username: string;\n email: string;\n isActive: boolean;\n favoriteColor: undefined;\n age: number;\n role: string;\n}\n\nexport const DynamicFormExample = () => {\n const record: UserFromDB = {\n username: \"John Doe \",\n email: \"johndoe@example.com\",\n isActive: true,\n favoriteColor: undefined,\n age: 25,\n role: \"editor\",\n };\n\n return (\n <DynamicForm\n formTitle=\"User Form\"\n fields={mockFields}\n record={record}\n onSubmit={(data) => console.log(\"📤 Resultado final:\", data)}\n />\n );\n}\n\nexport const mockFields: Array<FieldProps |FieldProps[]> = [\n // 🧍♂️ Campo requerido simple\n {\n name: \"username\",\n label: \"Nombre de usuario\",\n inputType: InputTypes.TEXT,\n required: true,\n zodType: z\n .string()\n .min(3, \"El nombre debe tener al menos 3 caracteres\")\n .max(20, \"El nombre no puede tener más de 20 caracteres\"),\n },\n\n // 📧 Campo de correo con validación personalizada (ZodTypeAny)\n {\n name: \"email\",\n label: \"Correo electrónico\",\n inputType: InputTypes.TEXT,\n required: false,\n zodType: z\n .string()\n .email(\"Correo inválido\")\n .toLowerCase()\n .refine((val) => !val.endsWith(\"@spam.com\"), {\n message: \"No se permiten correos de spam.com\",\n }),\n },\n\n // 🔒 Campo opcional (no requerido)\n {\n name: \"password\",\n label: \"Contraseña\",\n inputType: InputTypes.TEXT,\n required: false,\n keyboardType: TextInputType.PASSWORD,\n zodType: z\n .string()\n .min(6, \"Debe tener al menos 6 caracteres\")\n .max(20, \"No más de 20 caracteres\")\n .optional(),\n },\n\n // 🟢 Campo tipo switch (boolean)\n {\n name: \"isActive\",\n label: \"Usuario activo\",\n inputType: InputTypes.SWITCH,\n required: false,\n zodType: z.boolean().default(true),\n },\n\n // 🎨 Color con validación personalizada\n [ \n {\n name: \"favoriteColor\",\n label: \"Color favorito\",\n inputType: InputTypes.COLOR,\n required: false,\n zodType: z\n .string()\n .regex(/^#([0-9A-Fa-f]{6})$/, \"Debe ser un color hexadecimal válido\"),\n },\n\n // 🔢 Número con rango\n {\n name: \"age\",\n label: \"Edad\",\n inputType: InputTypes.NUMBER,\n required: true,\n zodType: z\n .coerce.number() // fuerza a number\n .min(18, \"Debe ser mayor de 18\")\n .max(99, \"Debe ser menor de 99\"),\n }\n ],\n\n // 📅 Fecha\n {\n name: \"birthDate\",\n label: \"Fecha de nacimiento\",\n inputType: InputTypes.DATE,\n required: true,\n zodType: z.coerce.date().refine((d) => d < new Date(), {\n message: \"La fecha no puede ser futura\",\n }),\n },\n\n // 🎓 Select con validación personalizada\n {\n name: \"role\",\n label: \"Rol de usuario\",\n inputType: InputTypes.SELECT,\n required: true,\n listConfig: {\n onOptionChange: () =>{},\n list: [\n { id: 1, name: \"Administrador\", value: \"admin\" },\n { id: 2, name: \"Editor\", value: \"editor\" },\n { id: 3, name: \"Lector\", value: \"reader\" },\n ]\n },\n zodType: z.enum([\"admin\", \"editor\", \"reader\"]),\n },\n\n // 🧾 Campo tipo archivo (file)\n {\n name: \"profileImage\",\n label: \"Imagen de perfil\",\n inputType: InputTypes.FILE,\n required: false,\n zodType: z\n .any()\n .refine(\n (file) => {\n if (!file) return true;\n return (\n file.size <= 10 * 1024 * 1024 &&\n [\"image/jpeg\", \"image/png\"].includes(file.type)\n );\n },\n { message: \"Solo se permiten imágenes JPG o PNG de menos de 10MB\" }\n )\n .optional(),\n },\n\n // 🔢 OTP (código)\n {\n name: \"otpCode\",\n label: \"Código OTP\",\n inputType: InputTypes.OTP,\n required: true,\n zodType: z\n .string()\n .min(4, \"Debe tener al menos 4 dígitos\")\n .max(6, \"Debe tener máximo 6 dígitos\"),\n },\n ];","import { useState } from \"react\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Switch } from \"@/src/components/ui/switch\";\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from \"@/src/components/ui/accordion\";\nimport { Plus } from 'lucide-react';\nimport { InputSetup, InputTypes } from \"./form/inputs/base\";\n\ninterface Props {\n handleAddInput: (type: InputTypes, config?: InputSetup) => void;\n inputsTypes: InputTypes[];\n}\n\n\n\nexport const InputList = ({ handleAddInput, inputsTypes, }: Props) => {\n // Estado: un objeto donde la clave es el inputType y el valor su configuración\n const [inputSetups, setInputSetups] = useState<Record<string, InputSetup>>(() =>\n Object.fromEntries(\n inputsTypes.map((type) => [type, { required: false, disabled: false }])\n )\n );\n\n const toggleConfig = (type: string, key: keyof InputSetup) => {\n setInputSetups((prev) => ({\n ...prev,\n [type]: { ...prev[type], [key]: !prev[type][key] },\n }));\n };\n\n return (\n <div className=\"grid grid-cols-1 gap-1\">\n {inputsTypes.map((type) => {\n const setup = inputSetups[type];\n return (\n <div\n key={type}\n className=\"border rounded-lg p-2 flex flex-col-2 gap-1 shadow-sm\"\n >\n <Button size=\"icon\" onClick={() => handleAddInput(type, setup)} >\n <Plus/>\n </Button>\n <Accordion type=\"single\" collapsible className=\"w-full\">\n <AccordionItem value=\"item-1\">\n <AccordionTrigger>\n <div className=\"flex flex-row justify-center w-full content-center\">\n <span className=\"font-semibold text-xl\">{type}</span>\n </div>\n </AccordionTrigger>\n <AccordionContent>\n {/* ✅ Controles para configurar */}\n <div className=\"flex flex-col gap-1\">\n <label className=\"flex items-center gap-2\">\n <Switch\n checked={setup.required}\n onCheckedChange={() => toggleConfig(type, \"required\")}\n />\n <span>Required</span>\n </label>\n\n <label className=\"flex items-center gap-2\">\n <Switch\n checked={setup.disabled}\n onCheckedChange={() => toggleConfig(type, \"disabled\")}\n />\n <span>Disabled</span>\n </label>\n </div>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n\n {/* <div className=\"flex justify-between items-center\">\n \n <Button\n size=\"sm\"\n onClick={() => handleAddInput(type, setup)}\n >\n Agregar\n </Button>\n </div> */}\n\n \n </div>\n );\n })}\n </div>\n );\n};\n","\"use client\"\n\nimport { useState, useEffect, useRef } from \"react\"\nimport { FieldProps, GroupedOption, InputOption, InputTypes } from \"../form/inputs/base\"\nimport { DynamicForm } from \"../form/inputs/DynamicForm\"\nimport { Search } from \"lucide-react\"\n\n\ninterface GenericFilterProps<T> {\n filters?: Array<FieldProps | FieldProps[]>\n pagination?: boolean\n autoSubmit?: boolean\n defaultValues?: Record<string, any>\n initPage?: number\n initLimit?: number\n onChange?: (values: Record<string, any>) => void\n rangeLimit?: number[]\n withSearch?: boolean\n withInitDate?: boolean\n withEndDate?: boolean\n withActive?: boolean\n withLimit?: boolean\n wrapInCard?: boolean\n}\n\ninterface Filter {\n page?: number\n limit?: number\n search?: string\n active?: boolean\n initDate?: Date\n endDate?: Date\n defaultValues?: Record<string, any>\n}\n\n/**\n * ✅ Componente genérico y dinámico de filtro\n */\nexport const GenericFilter = <T,>({\n filters = [],\n pagination,\n autoSubmit = false,\n defaultValues = {},\n initPage = 1,\n initLimit = 10,\n rangeLimit = [10, 25, 50, 100],\n onChange,\n withSearch = true,\n withInitDate = true,\n withEndDate = true,\n withActive = true,\n withLimit = true,\n wrapInCard = true,\n}: GenericFilterProps<T>) => {\n const record: Filter = {\n page: initPage,\n limit: initLimit,\n ...defaultValues,\n }\n\n const [values, setValues] = useState<Filter>(record)\n const isFirstRender = useRef(true)\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n }, [values])\n\n const handleChange = (name: string, value: any) => {\n setValues((prev) => ({ ...prev, [name]: value }))\n if (autoSubmit && onChange) onChange({ ...values, [name]: value })\n }\n\n const handleReset = () => {\n setValues({\n page: initPage,\n limit: initLimit,\n ...defaultValues,\n })\n }\n\n // 🧩 Filtros base (predefinidos)\n const baseFields: FieldProps[] = [\n ...(withSearch\n ? [\n {\n name: \"search\",\n label: \"Buscar\",\n inputType: InputTypes.TEXT_GROUP,\n inputGroupConfig: { iconsLeft: [Search] },\n onChange: (value: any) => handleChange(\"search\", value),\n } as FieldProps,\n ]\n : []),\n ...(withInitDate\n ? [\n {\n name: \"initDate\",\n label: \"Fecha de Inicio\",\n inputType: InputTypes.DATE,\n onChange: (value: any) => handleChange(\"initDate\", value),\n } as FieldProps,\n ]\n : []),\n ...(withEndDate\n ? [\n {\n name: \"endDate\",\n label: \"Fecha Final\",\n inputType: InputTypes.DATE,\n onChange: (value: any) => handleChange(\"endDate\", value),\n } as FieldProps,\n ]\n : []),\n ...(withActive\n ? [\n {\n wrapInCard: true,\n name: \"active\",\n label: \"\",\n inputType: InputTypes.BUTTON_GROUP,\n description: \"Estado\",\n listConfig: {\n list: [\n { id: 1, name: \"Activo\", value: true },\n { id: 2, name: \"Inactivo\", value: false },\n { id: 3, name: \"Todos\", value: undefined },\n ],\n onOptionChange: (item?: InputOption | InputOption[]) => {\n if (Array.isArray(item) && item[0]) handleChange(\"active\", item[0].value)\n else if (item && \"value\" in item) handleChange(\"active\", item.value)\n },\n },\n } as FieldProps,\n ]\n : []),\n ...(withLimit\n ? [\n {\n name: \"limit\",\n label: \"Límite por página\",\n inputType: InputTypes.SELECT,\n listConfig: {\n list: rangeLimit.map((num) => ({\n value: String(num),\n id: num,\n name: String(num),\n })),\n onOptionChange: (item: any) => handleChange(\"limit\", Number(item?.value ?? 10)),\n },\n } as FieldProps,\n ]\n : []),\n ]\n\n \n // 🧱 Combina todos los campos\n const fieldsConfig: Array<FieldProps | FieldProps[]> = [\n ...filters,\n baseFields,\n ]\n\n return (\n <div className=\"flex flex-col md:flex-row md:items-end gap-4 py-3\">\n <div className=\"flex-1\">\n <DynamicForm<Filter>\n withCard={wrapInCard}\n withSubmitBtn={!autoSubmit}\n formTitle=\"\"\n submitBtnLabel=\"Buscar\"\n fields={fieldsConfig}\n record={values}\n showFormHeader={false}\n onSubmit={({ data }) => {\n if (onChange && !autoSubmit) onChange(data)\n }}\n />\n </div>\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/clsx/dist/clsx.mjs","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/custom/custom-alert.tsx","../src/components/custom/form/input-errors.ts","../src/components/custom/form/inputs/base/base-input.ts","../src/components/custom/form/inputs/base/definitions.ts","../src/components/custom/form/inputs/base/input-types.ts","../src/components/ui/accordion.tsx","../src/components/ui/badge.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/popover.tsx","../src/components/ui/color-input.tsx","../src/components/ui/dialog.tsx","../src/components/ui/label.tsx","../src/components/ui/separator.tsx","../src/components/ui/field.tsx","../src/components/ui/form.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/input-group.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/select.tsx","../src/components/ui/sonner.tsx","../src/components/ui/switch.tsx","../src/components/ui/tooltip.tsx","../src/components/custom/form/inputs/types/grouped-switches-input.tsx","../src/components/custom/form/inputs/types/accordion-grouped-switches.tsx","../src/components/ui/button-group.tsx","../src/components/custom/form/inputs/types/button-group-input.tsx","../src/components/custom/form/inputs/types/check-list-input.tsx","../src/components/custom/form/inputs/types/checkbox-input.tsx","../src/components/custom/form/inputs/types/color-input.tsx","../src/components/ui/command.tsx","../src/components/custom/form/inputs/types/combo-box-input.tsx","../src/components/custom/form/inputs/types/currency-input.tsx","../src/components/custom/form/inputs/types/date-input.tsx","../src/components/custom/form/inputs/types/date-time-input.tsx","../src/components/custom/form/inputs/types/file-input.tsx","../src/components/custom/form/inputs/types/file-multi-input.tsx","../src/components/custom/form/inputs/types/text-input-group.tsx","../src/components/custom/form/inputs/types/key-value-input.tsx","../src/components/custom/form/inputs/types/multi-select-input.tsx","../src/components/custom/form/inputs/types/number-input.tsx","../src/components/custom/form/inputs/types/otp-input.tsx","../src/components/custom/form/inputs/types/radio-group-input.tsx","../src/components/custom/form/inputs/types/repeater-input.tsx","../src/components/ui/tabs.tsx","../src/components/custom/form/inputs/types/repeater-tabs-input.tsx","../src/components/custom/form/inputs/types/select-input.tsx","../src/components/custom/form/inputs/types/simple-check-list-input.tsx","../src/components/ui/slider.tsx","../src/components/custom/form/inputs/types/slide-input.tsx","../src/components/custom/form/inputs/types/sortable-list-input.tsx","../src/components/custom/form/inputs/types/string-value-input.tsx","../src/components/custom/form/inputs/types/switch-input.tsx","../src/components/custom/form/inputs/types/tags-input.tsx","../src/components/custom/form/inputs/types/text-area-input.tsx","../src/components/custom/form/inputs/types/text-input.tsx","../src/components/custom/form/inputs/types/time-input.tsx","../src/components/custom/form/inputs/input-factory.tsx","../src/components/custom/form/inputs/base/form-errors.tsx","../src/components/custom/form/inputs/FormFieldsGrid.tsx","../src/components/custom/form/inputs/DynamicForm.tsx","../src/components/ui/stepper.tsx","../src/components/custom/form/inputs/WizardForm.tsx","../src/components/custom/form/inputs/DynamicFormExample.tsx","../src/components/custom/input-list.tsx","../src/components/custom/others/GenericFilter.tsx"],"names":["jsx","TextInputType","InputTypes","jsxs","cva","Slot","className","props","ChevronDownIcon","React","React2","React4","CheckIcon","Sonner","useState","input","useEffect","useColor","ColorPicker","CommandPrimitive","React6","value","useMemo","CircleCheck","CircleX","Loader2","React7","Fragment","useRef","Info","EyeOff","Eye","Label","ChevronsUpDown","Check","OTPInput","Trash2","Plus","useFieldArray","React8","FieldTimeInput","flattenFields","z","fieldCopy","renderUp","renderDown"],"mappings":"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","file":"index.mjs","sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border 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 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\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 AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground 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, AlertTitle, AlertDescription }\n","'use client'\n\nimport { ReactNode } from \"react\";\nimport { MessageCircleWarning } from \"lucide-react\";\nimport { InfoCircledIcon } from '@radix-ui/react-icons';\nimport { Alert, AlertDescription, AlertTitle } from \"@/src/components/ui/alert\";\nimport { cn } from \"@/src/lib/utils\";\n\ninterface Props {\n title: string;\n description: string | ReactNode;\n className?: string;\n variant?: \"info\" | \"warning\" | \"error\" | \"success\";\n}\n\nexport const CustomAlert = ({\n title,\n description,\n className = \"\",\n variant = \"info\",\n}: Props) => {\n const variantClasses = {\n info: \"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200\",\n warning: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200\",\n error: \"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200\",\n success: \"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200\",\n };\n\n const variantIcons = {\n info: <MessageCircleWarning size={32} className=\"text-blue-500 dark:text-blue-300\" />,\n warning: <MessageCircleWarning size={32} className=\"text-yellow-500 dark:text-yellow-300\" />,\n error: <MessageCircleWarning size={32} className=\"text-red-500 dark:text-red-300\" />,\n success: <InfoCircledIcon className=\"w-8 h-8 text-green-500 dark:text-green-300\" />,\n };\n\n return (\n <Alert\n className={cn(\n \"mb-4 flex items-start gap-3 border-l-4 p-4 rounded-lg\",\n variantClasses[variant],\n className\n )}\n >\n {/* Icono a la izquierda */}\n <div className=\"flex flex-col shrink-0\">{variantIcons[variant]}</div>\n\n {/* Texto a la derecha */}\n <div className=\"flex flex-col\">\n <AlertTitle className=\"font-semibold text-lg\">{title}</AlertTitle>\n <AlertDescription className=\"text-sm text-muted-foreground dark:text-gray-300\">\n {description}\n </AlertDescription>\n </div>\n </Alert>\n );\n};\n","export const validationMessages = {\n required: \"Este campo es obligatorio\",\n email: \"El correo electrónico no es válido\",\n invalidFormat: \"Formato inválido\",\n onlyPositive: \"Solo números positivos\",\n minLength: (length: number) => `Debe tener al menos ${length} caracteres`,\n maxLength: (length: number) => `No puede tener más de ${length} caracteres`,\n passwordMismatch: \"Las contraseñas no coinciden\",\n invalidPhone: \"El número de teléfono no es válido\",\n};\n\nexport default validationMessages;","import { JSX, ReactNode } from \"react\";\n\nimport { ControllerRenderProps, FieldValues, UseFormReturn } from \"react-hook-form\";\nimport { FieldProps, GroupedOption, InputOption } from \"./definitions\";\n// import { FieldProps } from \"./field-props\";\n\n\nexport abstract class BaseInput {\n constructor(\n protected readonly input: FieldProps,\n protected readonly form: UseFormReturn,\n protected readonly isSubmitting?: boolean,\n ) {}\n\n abstract render(): JSX.Element;\n}\n\n\nexport const entityToInputOption = (entitiy:any, name:string = 'name', description:string = 'description', groupedLabel?:string, optionLabel:string = 'label'): InputOption => ({\n id: entitiy['id'],\n name: entitiy[name],\n label: entitiy[optionLabel],\n description: entitiy[description],\n groupedLabel\n})\n\nexport const entitiesToInputOption = (data:any[], optionValue:string = 'name', groupedLabel?:string, optionLabel:string = 'description'): InputOption[] => {\n const entities: InputOption[] = [];\n for (const key of data) {\n const entidad = entityToInputOption(key, optionValue, optionLabel, groupedLabel);\n if(entidad) entities.push(entidad);\n }\n return entities;\n}\nexport const entityToGroupedOption = (entitiy:any, name:string = 'name'): GroupedOption => ({\n id: entitiy['id'],\n label: entitiy[name] || entitiy['label'],\n options: entitiy['options'] || [],\n selectedOptions: [],\n})\n\n\nexport const entitiesToGroupedOption = (data:any[], optionValue:string = 'name' ): GroupedOption[] => {\n const entities: GroupedOption[] = [];\n for (const key of data) {\n const entidad = entityToGroupedOption(key, optionValue);\n if(entidad) entities.push(entidad);\n }\n return entities;\n}\n\nexport const handleOnChage = (\n event: any[] | any,\n input: FieldProps,\n field?: ControllerRenderProps<FieldValues, string>\n): void => {\n let value: any = event;\n\n // 🔹 Detecta si el valor viene de un input DOM normal\n if (event && typeof event === \"object\" && \"target\" in event) {\n value = (event.target as HTMLInputElement).value;\n }\n\n // 🔹 React Hook Form: actualiza el valor del campo\n field?.onChange(value);\n\n // 🔹 Obtiene los valores actuales del formulario\n const data = input.form?.getValues();\n\n // 🔹 Llama al callback específico del input (si existe)\n input.onChange?.(value, data);\n\n // 🔹 Callback global (si existe)\n input.onAnyFieldChange?.(data);\n};\n\nexport const isValidField = (input: FieldProps, form: UseFormReturn, defaultValue?: any): boolean => {\n const value = defaultValue ?? form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n \n // Si el campo tiene un esquema zod, validamos con él\n if (input.zodType) {\n const result = input.zodType.safeParse(value);\n return result.success;\n }\n // Si no tiene zodType, usamos la validación estándar de react-hook-form\n return !fieldState.error && value !== undefined && value !== \"\";\n }\n","import { z, ZodTypeAny } from \"zod\";\nimport { InputTypes } from \"./input-types\"\nimport { LucideProps } from \"lucide-react\";\nimport { ReactNode } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\nexport const flattenFields = <T extends Record<string, any>>(\n fields: FieldConfig<T>[],\n onAnyFieldChange?: (data:any) => void\n): FieldProps<T>[] => {\n const result: FieldProps<T>[] = [];\n\n for (const field of fields) {\n if (Array.isArray(field)) {\n result.push(...flattenFields(field));\n } else if ((field as any).fields) {\n result.push(...flattenFields((field as any).fields));\n } else {\n if (onAnyFieldChange) field.onAnyFieldChange = (data:any) => onAnyFieldChange(data)\n result.push(field);\n }\n }\n\n return result;\n};\n\n\nexport type FieldConfig<T, RT = Record<string,any>> = FieldProps<T,RT> | FieldConfig<T,RT>[];\n\nexport interface FieldProps<T = Record<string,any>, RT = Record<string,any>> {\n name: keyof T // Campo debe coincidir con la definición en el esquema\n label: string\n \n showWhen?: (values: Record<string, any>) => boolean\n step?:number;\n withAddBtn?: boolean;\n form?: UseFormReturn<any>;\n isRemovebleOption?:boolean\n withDuplicatTag?: boolean\n onChange?: (event: any[], formValues?: Record<string,any>) => void\n tabLabelField?:string\n childrenPosition?: 'up' | 'down'\n children?: ReactNode | ((item: any, index: number) => ReactNode);\n defaultValue?: any;\n direction?: 'row' | 'col';\n \n repeaterFields?: Array<FieldProps<RT> | FieldProps<RT>[]>;\n minItems?: number;\n maxItems?: number;\n\n\n currencyFormat?: Intl.NumberFormatOptions\n mask?: string | RegExp;\n\n onAnyFieldChange?: (data:Record<string,any>) => void\n wrapInCard?: boolean\n placeHolder?: string\n description?: string\n className?: string\n inputType?: InputTypes\n keyboardType?: TextInputType\n disabled?: boolean\n required?: boolean\n value?: any\n min?: number,\n max?: number,\n zodType?: ZodTypeAny;\n\n infoTooltip?: string\n \n // list?: any[]\n dependsOn?: string // Nombre del campo del que depende este campo\n loadOptions?: (dependencyValue: any) => Promise<any[]> // Función para cargar opciones dinámicamente\n optionLabel?: string // Propiedad a mostrar como etiqueta en el select\n optionValue?: string // Propiedad a usar como valor en el select\n optionDescription?: string // Propiedad a usar como valor en el select\n hidden?:boolean\n onListOptionChange?: (item: any) => void\n\n\n listConfig?: ListConfig\n\n fileConfig?: {\n previewSize?: number\n showPreview?: boolean\n accept: string // tipos de archivo permitidos\n multiple: boolean // múltiples archivos\n maxSize: number\n }\n\n inputGroupConfig?: inputGroudConfig\n}\n\ninterface inputGroudConfig {\n\n autoValidIcons?: boolean \n\n iconsLeft?: React.ForwardRefExoticComponent<Omit<LucideProps, \"ref\"> & React.RefAttributes<SVGSVGElement>>[];\n iconsRight?: React.ForwardRefExoticComponent<Omit<LucideProps, \"ref\"> & React.RefAttributes<SVGSVGElement>>[];\n\n textLeft?: string;\n textRight?: string;\n}\n\n\ninterface ListConfig {\n children?: ReactNode | ((item: any, index: number) => ReactNode);\n list: InputOption[] | GroupedOption[]\n optionLabel?: string\n optionValue?: InputOption| string | number | object\n onOptionChange: (item?: InputOption | InputOption[] | GroupedOption ) => void\n optionDescription?: string\n selectedList?: InputOption[]\n sortable?: boolean;\n\n // filterList?: (all: any, values: any) => any\n}\nexport interface BtnConfig {\n label: string;\n btnType: 'submit' | 'button';\n onClick: () => void\n variant?: \"default\" | \"link\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | null | undefined;\n disabled?: boolean;\n}\n\nexport interface InputOption {\n id: number | string\n name: string\n label?: string\n description?: string\n disabled?: boolean\n checked?: boolean\n groupedLabel?: string\n value?:any\n}\nexport interface GroupedOption {\n id?: number\n label: string\n options: InputOption[]\n selectedOptions: InputOption[]\n totalSelected?: number\n disabled?: boolean\n value?:any\n}\n\nexport interface InputSetup {\n required: boolean;\n disabled: boolean;\n minLegth?: number;\n maxLength?: number;\n pattern?: RegExp;\n min?:number;\n max?:number;\n isObscure?:boolean;\n isEmail?:boolean;\n isUrl?:boolean;\n zopType?: z.ZodType\n}\n\n\nexport enum TextInputType {\n DEFAULT = \"default\",\n NUMBER = \"number\",\n EMAIL = \"email\",\n PHONE = \"phone\",\n PASSWORD = \"password\",\n}","export enum InputTypes {\n HIDDEN = \"hidden\",\n TEXT = \"text\",\n TEXT_GROUP = \"text_group\",\n NUMBER = \"number\",\n SWITCH = \"switch\",\n CHECKBOX = \"checkbox\",\n SELECT = \"select\",\n SIMPLE_CHECK_LIST = \"siple_checklist\",\n CHECK_LIST = \"checklist\",\n // SWITCH_LIST = \"switchlist\",\n GROUPED_SWITCH_LIST = \"grouped_switchlist\",\n ACCORDION_GROUPED_SWITCH_LIST = \"accordion_grouped_switchlist\",\n DATE = \"date\",\n TEXTAREA = \"textarea\",\n FILE = \"file\",\n OTP = \"otp\",\n FORM = \"form\",\n COLOR = \"color\",\n RADIO_GROUP = \"radio_group\",\n TAGS = \"tags\",\n DATE_TIME = \"date_time\",\n TIME = \"time\",\n FILE_MULTI_UPLOAD = \"file_multi_upload\",\n SLIDER = \"slider\",\n BUTTON_GROUP = \"button_group\",\n CURRENCY = \"currency\",\n KEY_VALUE = \"key_value\",\n REPEATER = \"repeater\",\n MULTI_SELECT = \"multi_select\",\n COMBOBOX = \"COMBO_BOX\",\n SORTABLE_LIST = \"sortable_list\",\n REPEATER_TABS = \"repeater_tabs\",\n STRING_LIST = \"string_list\",\n}\n\nexport const inputFieldComp = [\n InputTypes.STRING_LIST,\n InputTypes.REPEATER_TABS,\n InputTypes.SORTABLE_LIST,\n InputTypes.COMBOBOX,\n InputTypes.MULTI_SELECT,\n InputTypes.REPEATER,\n InputTypes.KEY_VALUE,\n InputTypes.CURRENCY,\n InputTypes.BUTTON_GROUP,\n InputTypes.SLIDER,\n InputTypes.FILE_MULTI_UPLOAD,\n InputTypes.TIME,\n InputTypes.DATE_TIME,\n InputTypes.TAGS,\n InputTypes.RADIO_GROUP,\n InputTypes.TEXT_GROUP,\n InputTypes.ACCORDION_GROUPED_SWITCH_LIST,\n InputTypes.GROUPED_SWITCH_LIST,\n InputTypes.TEXT,\n InputTypes.SWITCH,\n InputTypes.SIMPLE_CHECK_LIST,\n InputTypes.CHECKBOX,\n InputTypes.COLOR,\n InputTypes.OTP,\n InputTypes.SELECT,\n InputTypes.DATE,\n InputTypes.FILE,\n InputTypes.FORM,\n InputTypes.NUMBER,\n InputTypes.TEXTAREA,\n // InputTypes.SWITCH_LIST,\n InputTypes.HIDDEN,\n]","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { cn } from \"@/src/lib/utils\"\n\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Button, buttonVariants } from \"@/src/components/ui/button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\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 \"bg-popover text-popover-foreground 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 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ColorPicker, IColor, useColor } from \"react-color-palette\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/src/components/ui/popover\"\nimport { Button } from \"@/src/components/ui/button\"\nimport { cn } from \"@/src/lib/utils\"\nimport \"react-color-palette/css\"\n\nexport interface Props {\n value?: string\n onChange?: (color: string) => void\n onBlur?: () => void\n disabled?: boolean\n className?: string\n placeholder?: string\n}\n\nconst ColorCnInput = React.forwardRef<HTMLButtonElement, Props>(\n ({ value = \"#000000\", onChange, onBlur, disabled, className }, ref) => {\n const [color, setColor] = useColor(value)\n const [open, setOpen] = React.useState(false)\n\n React.useEffect(() => {\n if (value !== color.hex) {\n setColor({ ...color, hex: value })\n }\n }, [color, setColor, value])\n\n const handleColorChange = (newColor: IColor) => {\n setColor(newColor)\n onChange?.(newColor.hex)\n }\n\n const handleOpenChange = (newOpen: boolean) => {\n setOpen(newOpen)\n if (!newOpen) {\n onBlur?.()\n }\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\"w-full justify-start text-left font-normal\", !value && \"text-muted-foreground\", className)}\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"h-4 w-4 rounded border border-border\" style={{ backgroundColor: color.hex }} />\n <span>{color.hex}</span>\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"start\">\n <ColorPicker color={color} onChange={handleColorChange} hideInput={[\"rgb\", \"hsv\"]} />\n </PopoverContent>\n </Popover>\n )\n },\n)\n\nColorCnInput.displayName = \"ColorCnInput\"\n\nexport { ColorCnInput }\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: 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-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\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-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 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 [&_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 flex-col gap-2 text-center sm:text-left\", 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(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", 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(\"text-muted-foreground text-sm\", 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 * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Label } from \"@/src/components/ui/label\"\nimport { Separator } from \"@/src/components/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n responsive: [\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Label } from \"@/src/components/ui/label\"\n\nconst 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>(\n {} as FormFieldContextValue\n)\n\nconst 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\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\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>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction 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\nfunction 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={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction 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\nfunction 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\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Button } from \"@/src/components/ui/button\"\nimport { Input } from \"@/src/components/ui/input\"\nimport { Textarea } from \"@/src/components/ui/textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"text-sm shadow-none flex gap-2 items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center\", className)}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number\n}) {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 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 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Toaster as Sonner, ToasterProps } from \"sonner\"\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = \"system\" } = useTheme()\n\n return (\n <Sonner\n theme={theme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n style={\n {\n \"--normal-bg\": \"var(--popover)\",\n \"--normal-text\": \"var(--popover-foreground)\",\n \"--normal-border\": \"var(--border)\",\n } as React.CSSProperties\n }\n {...props}\n />\n )\n}\n\nexport { Toaster }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport { JSX, useState } from \"react\"\nimport { Switch, Label, Card } from \"@/src/components/ui\"\nimport { BaseInput, handleOnChage } from \"../base\"\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { cn } from \"@/src/lib/utils\";\n\n\n// interface Props {\n// options: InputOption[]\n// onChange?: (optionsUpdated: InputOption[]) => void\n// }\n\n// export const GroupedSwitches = ({ options, onChange, }: Props) => {\nexport class GroupedSwitchInput extends BaseInput {\n render(): JSX.Element {\n const { input, isSubmitting } = this;\n return (\n <GroupedSwitches options={[]} input={input} isSubmitting={isSubmitting} />\n )\n }\n}\n\ninterface Props {\n input: FieldProps;\n options?: InputOption[];\n isSubmitting?: boolean;\n onChange?: (optionsUpdated: InputOption[]) => void\n}\n\nexport const GroupedSwitches = ({ options, onChange, input, isSubmitting}: Props) => {\n\n const mockInputOptions:InputOption[] = [\n { id: 1, name: 'MOCK OPTION - CREATE', checked: false },\n { id: 2, name: 'MOCK OPTION - READ', checked: true },\n { id: 3, name: 'MOCK OPTION - UPDATE', checked: false },\n { id: 4, name: 'MOCK OPTION - DELETE ', checked: false },\n ]\n \n const initialSwitches: InputOption[] = options ? (options.length > 0 ? options : ((input.listConfig?.list as InputOption[]) ?? []) ) : mockInputOptions \n const [switches, setSwitches] = useState<InputOption[]>(initialSwitches)\n const [allChecked, setAllChecked] = useState<boolean>(initialSwitches.every((opt) => opt.checked))\n \n const [bgColor, setBgColor] = useState<string>('bg-green-500/5 border-green-400/10')\n\n const handleMainToggle = (checked: boolean) => {\n const updated = switches.map((opt) => ({ ...opt, checked }));\n setSwitches(updated);\n setAllChecked(checked);\n onChange?.(updated.filter((opt) => opt.checked));\n }\n\n const handleChildToggle = (option: InputOption, checked: boolean, input: FieldProps) => {\n const updated = switches.map((opt) =>\n opt.id === option.id ? { ...opt, checked } : opt\n );\n setSwitches(updated);\n setAllChecked(updated.every((opt) => opt.checked));\n onChange?.(updated.filter((opt) => opt.checked));\n handleOnChage(updated.filter((opt) => opt.checked),input)\n }\n\n return (\n <Card >\n <div className={cn(`w-full h-full space-y-4 p-4 border-2 rounded-xl bg-green-500 ${allChecked ? 'bg-green-500/5 border-green-400/10' : 'bg-black/5'}`)}>\n {/* Switch principal */}\n <div className=\"flex items-center justify-between border-b p-2\">\n <div>{input.name}</div>\n <div className=\"flex flex-row gap-2\">\n <Label htmlFor=\"main\">Seleccionar todo</Label>\n <Switch id=\"main\" checked={allChecked} onCheckedChange={handleMainToggle} />\n </div>\n </div>\n\n {/* Switches hijos */}\n {switches.map((opt, index) => (\n <div key={opt.id} className={`p-2 rounded-lg flex flex-row w-full items-center justify-between ${!(index % 2 )? 'bg-black/5' : 'bg-white/5'}`}>\n <Label htmlFor={String(opt.id)}>{opt.label || opt.description || opt.name}</Label>\n <Switch\n disabled={input.disabled || isSubmitting}\n id={String(opt.id)}\n checked={opt?.checked || false}\n onCheckedChange={checked => handleChildToggle(opt, checked, input) }\n />\n </div>\n ))}\n </div>\n </Card>\n )\n}\n\n","'use client'\n\n\nimport { UseFormReturn } from 'react-hook-form'\nimport { JSX, useEffect, useState } from 'react'\nimport { BaseInput, FieldProps, GroupedOption, handleOnChage, InputOption } from '../base'\nimport { GroupedSwitches } from './grouped-switches-input'\nimport { \n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n Badge,\n Card,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormMessage \n} from '@/src/components/ui'\n\n/* ========= INPUT PRINCIPAL ========= */\n\nexport class AccordionGroupedSwitchInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this\n return (\n <AccordionGroupedSwitches\n form={form}\n input={input}\n isSubmitting={isSubmitting}\n groups={(input?.listConfig?.list as GroupedOption[]) ?? []}\n onChange={input?.listConfig?.onOptionChange ?? (() => {})}\n />\n )\n }\n}\n\n/* ========= COMPONENTE ========= */\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n groups?: GroupedOption[];\n isSubmitting?: boolean;\n onChange?: (optionsUpdated: InputOption[]) => void\n}\n\nexport const AccordionGroupedSwitches = ({ form, input, groups = [], onChange, isSubmitting }: Props) => {\n const [groupsState, setGroupsState] = useState<GroupedOption[]>([])\n const [selectedOptions, setSelectedOptions] = useState<InputOption[]>([])\n\n // 🔹 Cargar los grupos y sincronizar seleccionados\n useEffect(() => {\n const selected = input.listConfig?.selectedList ?? []\n const updatedGroups = groups.map((group) => ({\n ...group,\n options: group.options.map((opt) => ({\n ...opt,\n checked: selected.some((sel) => sel.id === opt.id),\n groupedLabel: group.label,\n })),\n }))\n setGroupsState(updatedGroups)\n setSelectedOptions(selected)\n }, [groups, input])\n\n // 🔹 Calcular cuántos están seleccionados por grupo\n const countCheckedByGroup = (group: GroupedOption): number => {\n return group.options.filter((opt) => opt.checked).length\n }\n\n // 🔹 Manejar cambio en switches individuales\n const handleOptionChange = (field: any, updatedGroupLabel: string, updatedOptions: InputOption[], input: FieldProps) => {\n const newGroups = groupsState.map((group) =>\n group.label === updatedGroupLabel ? { ...group, options: updatedOptions } : group\n )\n\n setGroupsState(newGroups)\n\n const allChecked = newGroups.flatMap((g) => g.options).filter((o) => o.checked)\n setSelectedOptions(allChecked)\n field.onChange(allChecked)\n onChange?.(allChecked)\n handleOnChage(allChecked, input, field)\n }\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem className=\"shadow-lg\">\n <FormControl>\n <Card className=\"p-4 space-y-4\">\n <h2 className=\"text-2xl font-bold\">{input.label}</h2>\n <Accordion type=\"multiple\">\n {groupsState.map((group, indx) => (\n <AccordionItem\n key={indx}\n value={group.label}\n className={`px-1 ${indx % 2 ? `bg-black/10` : 'bg-black/5'}`}\n >\n <AccordionTrigger>\n <div className=\"grid grid-cols-2 w-full\">\n {group.label}{' '}\n <Badge>\n {countCheckedByGroup(group)} / {group.options.length}\n </Badge>\n </div>\n </AccordionTrigger>\n <AccordionContent>\n <GroupedSwitches\n isSubmitting={isSubmitting}\n input={input}\n options={group.options}\n onChange={(updated: InputOption[]) =>\n handleOptionChange(field, group.label, updated, input)\n }\n />\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </Card>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n\n {/* Debug visual opcional */}\n {/* <pre className=\"text-xs font-bold mt-2 bg-black/5 p-2 rounded-lg\">\n <code>{JSON.stringify(selectedOptions, null, 2)}</code>\n </pre> */}\n </FormItem>\n )}\n />\n )\n}\n","import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Separator } from \"@/src/components/ui/separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","'use client'\n\nimport { JSX } from \"react\";\nimport { BaseInput, FieldProps, handleOnChage, InputOption } from \"../base\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { ButtonGroup } from \"@/src/components/ui/button-group\";\n\ninterface Option {\n label: string;\n value: string | number;\n}\n\nexport class ButtonGroupInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n const className = input.className\n return <FieldButtonGroup input={input} form={form} isSubmitting={isSubmitting} className={className}/>;\n }\n}\n\ninterface Props {\n input: FieldProps;\n form: UseFormReturn;\n isSubmitting?: boolean;\n className?: string;\n}\n\nexport const FieldButtonGroup = ({ input, form, isSubmitting, className = \"w-full flex-1\" }: Props) => {\n const options: InputOption[] = (input.listConfig?.list ?? []).filter((option): option is InputOption => 'name' in option);\n\n const handleSelect = (value: any) => {\n form.setValue(input.name, value, { shouldValidate: true });\n if (input.listConfig?.onOptionChange) input.listConfig.onOptionChange(value);\n };\n\n\n\n const selectedValue = form.watch(input.name);\n\n return (\n <ButtonGroup className=\"flex flex-row w-full\">\n {options.map((option, key) => (\n <Button\n type=\"button\"\n className={className}\n key={`${input.name}-${key}-btn-g`}\n variant={selectedValue === option.value ? \"default\" : \"outline\"}\n onClick={() => {\n handleSelect(option.value)\n handleOnChage(option.value, input)\n }}\n disabled={isSubmitting}\n >\n {option.label ?? option.name }\n </Button>\n ))}\n </ButtonGroup>\n );\n};\n","'use client'\nimport { JSX } from 'react';\nimport { BaseInput, handleOnChage } from '../base'\nimport { Card, CardContent, CardHeader, CardTitle, Checkbox, Label } from '@/src/components/ui';\n\n\n\n// interface Props {\n// title?: string,\n// input: FieldProps,\n// onCheckedChange: (value : InputOption) => void\n// }\n\nexport class CheckListInput extends BaseInput {\n render(): JSX.Element {\n const { input, isSubmitting } = this;\n const listConfig = input?.listConfig\n // export const InputCheckList = ({input, onCheckedChange, title}:Props) => {\n let lista = listConfig?.list ?? []\n if (lista == undefined) lista = []\n const title = 'title' //listConfig?.title\n\n const value: string[] = input.value\n const label = (listConfig?.optionLabel ?? \"name\") as string;\n const optionValue = (listConfig?.optionValue ?? \"id\") as string;\n const description = (listConfig?.optionDescription ?? \"description\") as string;\n return (\n <Card key={title}>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base\">{title ?? input.label}</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {lista.map((item) => ( \n <div key={item[optionValue as keyof typeof item] as React.Key} className=\"flex items-center space-x-2\">\n <Checkbox\n onChange={(e) => handleOnChage(e, input)}\n disabled={input.disabled || isSubmitting}\n id={String(item[optionValue as keyof typeof item])}\n checked={value.includes(item[optionValue as keyof typeof item] as string)}\n onCheckedChange={() => {/* onCheckedChange(item[optionValue as keyof typeof item]) */}}\n />\n <div className=\"grid gap-1.5 leading-none\">\n <Label\n htmlFor={String(item[optionValue as keyof typeof item])}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {item[label as keyof typeof item]}\n </Label>\n <p className=\"text-xs text-muted-foreground\">{item[description as keyof typeof item]}</p>\n </div>\n </div>\n )\n )}\n </CardContent>\n </Card>\n )\n }\n}\n","'use client'\n\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { JSX } from \"react\";\nimport { Checkbox } from \"@/src/components/ui/checkbox\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/src/components/ui/form\";\nimport { UseFormReturn } from \"react-hook-form\";\n\nexport class CheckboxInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n\n return (\n <FieldCheckbox form={form} input={input} isSubmitting={isSubmitting} />\n );\n }\n}\n\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldCheckbox = ({ input, form, isSubmitting }: Props) => {\n const className = input.className;\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem\n className={`hover:bg-accent/50 flex items-start gap-3 rounded-lg border p-3 transition \n has-[[aria-checked=true]]:border-blue-600 \n has-[[aria-checked=true]]:bg-blue-50 \n dark:has-[[aria-checked=true]]:border-blue-900 \n dark:has-[[aria-checked=true]]:bg-blue-950\n ${className ?? \"\"}`}\n >\n <FormControl>\n <Checkbox\n id={input.name}\n checked={field.value}\n onCheckedChange={(e) => handleOnChage(e, input, field)}\n disabled={input.disabled || isSubmitting}\n className=\"data-[state=checked]:border-blue-600 data-[state=checked]:bg-blue-600 data-[state=checked]:text-white \n dark:data-[state=checked]:border-blue-700 dark:data-[state=checked]:bg-blue-700\"\n />\n </FormControl>\n\n <div className=\"grid gap-1.5 font-normal\">\n <FormLabel htmlFor={input.name} className=\"text-sm leading-none font-medium\">\n {input.label ?? \"Enable notifications\"}\n </FormLabel>\n {(input.description || input.placeHolder) && (\n <FormDescription className=\"text-muted-foreground text-sm\">\n {input.description ?? input.placeHolder}\n </FormDescription>\n )}\n <FormMessage />\n </div>\n </FormItem>\n )}\n />\n )\n}","\"use client\"\nimport React, { JSX, useEffect, useState } from \"react\"\nimport { ColorPicker, useColor } from 'react-color-palette';\nimport { UseFormReturn } from \"react-hook-form\"\nimport \"react-color-palette/css\"\nimport { cn } from \"@/src/lib/utils\"\nimport { \n Button,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n Popover, \n PopoverContent, \n PopoverTrigger,\n} from \"@/src/components/ui\"\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\"\n// ...existing code...\n\nexport class ColorInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldColor input={input} form={form} isSubmitting={isSubmitting} />\n )\n }\n}\n\ntype HideInputOption = \"rgb\" | \"hsv\" | \"hex\";\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst PRESET_COLORS = [\n \"#9A275A\", // QuinaMagenta\n \"#800000\", // Maroon\n \"#ef4444\", // red\n \"#f97316\", // orange\n \"#eab308\", // yellow\n \"#22c55e\", // green\n \"#99EDCC\", // Aquamarine\n \"#00FF00\", // lime\n \"#00FFFF\", // Aqua\n \"#06b6d4\", // cyan\n \"#3b82f6\", // blue\n \"#8b5cf6\", // purple\n \"#800080\", // purple\n \"#FF00FF\", // Fuchsia\n \"#ec4899\", // pink\n \"#64748b\", // slate\n \"#000000\", // black\n \"#808080\", // Gray\n \"#FFFFFF\", // White\n]\n\n\nconst FieldColor = ({ form, input, isSubmitting }: Props) => {\n const [ColorCmp, _setColorCmp] = useState<any>(ColorComp)\n\n \n return (\n <FormField\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n {ColorCmp ? (\n <ColorCmp\n value={field.value || \"#000000\"}\n onChange={(event: any[])=> {\n handleOnChage(event, input, field)\n }}\n onBlur={field.onBlur}\n disabled={input.disabled || isSubmitting}\n placeholder={input.placeHolder}\n />\n ) : (\n 'N/A'\n // <input\n // type=\"color\"\n // value={field.value || \"#000000\"}\n // onChange={(e) => {\n // field.onChange(e.target.value);\n // input.onChange?.(e)\n // }}\n // onBlur={() => field.onBlur()}\n // disabled={input.disabled || isSubmitting}\n // placeholder={input.placeHolder}\n // style={{ width: 48, height: 28 }}\n // />\n )}\n </FormControl>\n <FormDescription>{input.description}</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n )\n}\n// ...existing code...\n\n\nexport interface ColorCompProps {\n value?: string;\n onChange?: (color: string) => void;\n onBlur?: () => void;\n disabled?: boolean;\n className?: string;\n placeholder?: string;\n hideInput?: HideInputOption[];\n}\n\nconst ColorComp = React.forwardRef<HTMLButtonElement, ColorCompProps>(\n ({ value = \"#000000\", onChange, onBlur, disabled, className, hideInput =[\"hsv\"] }, ref) => {\n // const [color, setColor] = useColor(value)\n // const [open, setOpen] = React.useState(false)\n\n // React.useEffect(() => {\n // if (value !== color.hex) {\n // setColor({ ...color, hex: value })\n // }\n // }, [color, setColor, value])\n\n // const handleColorChange = (newColor: IColor) => {\n // setColor(newColor)\n // onChange?.(newColor.hex)\n // }\n\n // const handleOpenChange = (newOpen: boolean) => {\n // setOpen(newOpen)\n // if (!newOpen) {\n // onBlur?.()\n // }\n // }\n\n const [color, setColor] = useColor(value)\n const [open, setOpen] = useState(false)\n\n React.useEffect(() => {\n if (value !== color.hex) {\n setColor({ ...color, hex: value })\n }\n }, [value])\n\n const handleColorChange = (newColor: string) => {\n setColor({ ...color, hex: newColor })\n onChange?.(newColor)\n }\n\n const handlePickerChange = (newColor: any) => {\n setColor(newColor)\n onChange?.(newColor.hex)\n }\n\n const handleOpenChange = (newOpen: boolean) => {\n setOpen(newOpen)\n if (!newOpen) {\n onBlur?.()\n }\n }\n\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-row gap-2 p-2\">\n {PRESET_COLORS.map((presetColor) => (\n <button\n key={presetColor}\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex-1 size-4 shadow-lg rounded-md border-2 border-black transition-all hover:scale-110 disabled:opacity-50 disabled:cursor-not-allowed\",\n color.hex === presetColor\n ? \"border-foreground ring-2 ring-foreground/20\"\n : \"border-border hover:border-foreground/50\",\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n aria-label={`Select color ${presetColor}`}\n />\n ))}\n </div>\n \n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant=\"outline\"\n disabled={disabled}\n className={cn(\"w-full justify-start text-left font-normal\", !value && \"text-muted-foreground\", className)}\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"h-4 w-4 border border-border rounded-sm\" style={{ backgroundColor: color.hex, width: 20, height:20 }} />\n <span>{color.hex}</span>\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-3\" align=\"start\">\n <ColorPicker color={color} onChange={handlePickerChange} hideInput={hideInput} />\n </PopoverContent>\n </Popover>\n </div>\n )\n },\n)","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/src/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { cn } from \"@/src/lib/utils\";\nimport { Button } from \"@/src/components/ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/src/components/ui/command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/src/components/ui/popover\";\n\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\n\nexport class ComboboxInput extends BaseInput {\n render() {\n const { input, form, isSubmitting } = this;\n return <FieldCombobox input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldCombobox = ({ form, input, isSubmitting }: Props) => {\n const [open, setOpen] = React.useState(false);\n const [options, setOptions] = React.useState<InputOption[]>(\n () =>\n input.listConfig?.list?.length\n ? (input.listConfig.list as InputOption[])\n : []\n );\n\n const optionValue = input?.listConfig?.optionValue ?? input.optionValue ?? \"id\";\n const [value, setValue] = React.useState<string>(input.value?.toString() ?? \"\");\n\n // 🔁 Si depende de otro campo\n React.useEffect(() => {\n const dependsOn = input.dependsOn;\n if (!dependsOn || !input.loadOptions) return;\n\n const subscription = form.watch(async (values) => {\n const parentValue = values[dependsOn];\n if (parentValue) {\n const loader = input.loadOptions!;\n const newOptions = await loader(parentValue);\n setOptions(newOptions as InputOption[]);\n form.setValue(input.name, \"\");\n setValue(\"\");\n } else {\n setOptions([]);\n }\n });\n\n return () => subscription.unsubscribe?.();\n }, [form, input.loadOptions, input.dependsOn]);\n\n // Sincronizar valor inicial\n React.useEffect(() => {\n const currentValue = form.getValues(input.name);\n if (!currentValue && input.value) {\n form.setValue(input.name, input.value);\n setValue(input.value.toString());\n }\n }, [form, input.name, input.value]);\n\n const getValue = (item: InputOption): string =>\n (optionValue === \"name\"\n ? item.name\n : item.value?.toString() ?? item.id?.toString()) ?? \"\";\n\n const selectedOption = options.find((o) => getValue(o) === value);\n\n return (\n <div className=\"flex flex-col gap-2\">\n {input.label && (\n <label className=\"font-medium text-sm\">{input.label}</label>\n )}\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n disabled={input.disabled || isSubmitting}\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-[60%] justify-between bg-black/10 dark:bg-white/25\"\n >\n {selectedOption ? selectedOption.name : input.placeHolder ?? \"Seleccionar...\"}\n <ChevronsUpDown className=\"opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[60%] p-0\">\n <Command\n filter={(value, search) => {\n const option = options.find((o) => getValue(o) === value);\n return option?.name?.toLowerCase().includes(search.toLowerCase())\n ? 1\n : 0;\n }}\n >\n <CommandInput placeholder={`Buscar ${input.label?.toLowerCase()}...`} className=\"h-9\" />\n <CommandList>\n <CommandEmpty>No se encontraron resultados.</CommandEmpty>\n <CommandGroup>\n {options.map((item) => (\n <CommandItem\n key={item.id}\n value={getValue(item)}\n onSelect={(currentValue) => {\n const newValue = currentValue === value ? \"\" : currentValue;\n setValue(newValue);\n form.setValue(input.name, newValue);\n handleOnChage(options.find((o) => getValue(o) === newValue), input)\n input.listConfig?.onOptionChange?.(\n options.find((o) => getValue(o) === newValue)\n );\n setOpen(false);\n }}\n >\n {item.name}\n <Check\n className={cn(\n \"ml-auto\",\n value === getValue(item) ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n","'use client'\n\nimport { JSX, useState, useMemo } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { \n FormField, \n FormItem, \n FormLabel, \n FormControl, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { \n InputGroup, \n InputGroupAddon, \n InputGroupInput, \n InputGroupText \n} from \"@/src/components/ui/input-group\";\nimport { FieldProps } from \"../base/definitions\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\";\nimport { CircleCheck, CircleX, Loader2 } from \"lucide-react\";\n\nexport class CurrencyInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldCurrency input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\n/**\n * Campo numérico con formato monetario.\n * Acepta solo números y el punto mientras se edita.\n */\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldCurrency = ({ form, input, isSubmitting }: Props): JSX.Element => {\n const groupConfig = input.inputGroupConfig;\n const infoTooltip = input?.infoTooltip;\n const autoValidate = groupConfig?.autoValidIcons;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n // Estado local para manejar validez desde el primer render\n const [isValid, setIsValid] = useState<boolean>(() => {\n const value = form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n return !fieldState.error && value !== undefined && value !== \"\";\n });\n\n const defaultCurrencyFormat: Intl.NumberFormatOptions = {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n };\n\n const mask = input?.mask;\n const currencyFormat = input?.currencyFormat ?? defaultCurrencyFormat;\n\n const [rawValue, setRawValue] = useState<string>(form.getValues(input.name) ?? \"\");\n\n // Formateador monetario (por defecto: español - República Dominicana)\n const formatter = useMemo(() => {\n return new Intl.NumberFormat('es-DO', currencyFormat);\n }, [currencyFormat]);\n\n // 🔢 Limpia y convierte el texto a número\n const parseValue = (formatted: string): number | null => {\n const numeric = parseFloat(formatted.replace(/[^0-9.-]/g, \"\"));\n return isNaN(numeric) ? null : numeric;\n };\n\n // 🎨 Aplica formato visual\n const formatValue = (value: string): string => {\n if (!value) return \"\";\n const numeric = parseFloat(value.replace(/[^0-9.-]/g, \"\"));\n if (isNaN(numeric)) return \"\";\n\n if (typeof mask === \"string\") {\n return mask.replace(/0+(?:[.,]0+)?/, formatter.format(numeric).replace(/[^\\d.,]/g, \"\"));\n }\n\n if (mask instanceof RegExp) {\n const valid = mask.test(value);\n return valid ? value : rawValue;\n }\n\n return formatter.format(numeric);\n };\n\n // 🚫 Permite solo números y punto\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const allowedKeys = [\n \"Backspace\",\n \"Delete\",\n \"Tab\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Home\",\n \"End\",\n ];\n\n // Permitir navegación y borrado\n if (allowedKeys.includes(e.key)) return;\n\n // Permitir solo dígitos y un único punto decimal\n if (!/^[0-9.]$/.test(e.key)) {\n e.preventDefault();\n return;\n }\n\n // Impedir más de un punto\n if (e.key === \".\" && rawValue.includes(\".\")) {\n e.preventDefault();\n }\n };\n\n return (\n <FormField\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const validNow = !fieldState.error && field.value !== undefined && field.value !== \"\";\n if (validNow !== isValid) setIsValid(validNow);\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n <InputGroup>\n {/* Prefijo */}\n <InputGroupAddon>\n <InputGroupText>$</InputGroupText>\n {input.inputGroupConfig?.textLeft && (\n <InputGroupText>{input.inputGroupConfig.textLeft}</InputGroupText>\n )}\n </InputGroupAddon>\n\n {/* Input principal */}\n <InputGroupInput\n {...field}\n disabled={input.disabled || isSubmitting}\n placeholder={input.placeHolder ?? \"0.00\"}\n inputMode=\"decimal\"\n value={rawValue}\n onKeyDown={handleKeyDown}\n onChange={(e) => {\n const newVal = e.target.value;\n setRawValue(newVal);\n const parsed = parseValue(newVal);\n if (parsed !== null) field.onChange(parsed);\n handleOnChage(parsed, input, field)\n }}\n onBlur={(e) => {\n const formatted = formatValue(e.target.value);\n setRawValue(formatted);\n }}\n onFocus={(e) => {\n const numeric = e.target.value.replace(/[^0-9.-]/g, \"\");\n setRawValue(numeric);\n }}\n />\n\n {/* Sufijo */}\n <InputGroupAddon align=\"inline-end\">\n <InputGroupText>{currencyFormat.currency}</InputGroupText>\n {input.inputGroupConfig?.textRight && (\n <InputGroupText>{input.inputGroupConfig.textRight}</InputGroupText>\n )}\n {/* Icono de validación / loading */}\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n </InputGroup>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}}\n />\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { format } from \"date-fns\"\nimport { CalendarIcon, CircleCheck, CircleX, Info, Loader2 } from \"lucide-react\"\n\nimport { Button } from \"@/src/components/ui/button\"\nimport { Calendar } from \"@/src/components/ui/calendar\"\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/src/components/ui/popover\"\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui/form\"\nimport { BaseInput, FieldProps, handleOnChage, isValidField } from \"../base\"\nimport { JSX, useState } from \"react\"\nimport { cn } from '@/src/lib/utils';\nimport { UseFormReturn } from \"react-hook-form\"\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText } from \"@/src/components/ui/input-group\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/src/components\"\n\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean; // estado submit externo opcional\n}\nexport class DateInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldTimeInput input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\nconst FieldTimeInput = ({ form, input, isSubmitting }: Props) => {\n\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n const infoTooltip = input?.infoTooltip;\n const groupConfig = input.inputGroupConfig;\n const autoValidate = groupConfig?.autoValidIcons ?? input.zodType ? true : false;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n \n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n setIsValid(isValidField(input, form));\n // 🔑 Inicializa el estado con el valor actual del formulario (si existe)\n const [date, setDate] = React.useState<Date | undefined>(\n field.value ? new Date(field.value) : undefined\n )\n\n // 🔑 Sincroniza el estado con el form cuando cambie\n React.useEffect(() => {\n if (field.value && !date) {\n setDate(new Date(field.value))\n setIsValid(isValidField(input, form));\n }\n }, [field.value])\n\n const handleSelect = (selectedDate?: Date) => {\n // setIsValid(isValidField(input, form));\n setDate(selectedDate)\n // field.onChange(selectedDate) // <-- Actualiza el form\n handleOnChage(selectedDate, input, field)\n }\n\n return (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <Popover>\n <PopoverTrigger asChild>\n {/* <div className=\"flex flex-col justify-start gap-2 \"> */}\n <FormControl>\n <InputGroup className=\"flex flex-row gap-1\">\n\n\n {/* Tooltip de información */}\n {infoTooltip && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Info size={20} />\n </TooltipTrigger>\n <TooltipContent>\n <p>{infoTooltip}</p>\n </TooltipContent>\n </Tooltip>\n )}\n\n <Button\n variant=\"outline\"\n type=\"button\"\n className={cn(\n \"w-full justify-start text-left py-0.5 \",\n !date && \"text-muted-foreground\"\n )}\n >\n <div className=\"flex flex-1 items-center gap-1 justify-start text-left \">\n <CalendarIcon />\n {date ? format(date, \"PPP\") : <span>{input.placeHolder ?? 'Fecha'}</span>}\n </div>\n {(iconsRight.length > 0 || textRight || autoValidate) && (\n <>\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={24} className=\"w-6! h-6!\" />\n ))}\n\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </>\n )}\n \n </Button>\n\n\n </InputGroup>\n </FormControl>\n {/* </div> */}\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={date}\n selected={date}\n onSelect={handleSelect}\n captionLayout={'dropdown'}\n initialFocus />\n </PopoverContent>\n </Popover>\n <FormDescription>{input.description}</FormDescription>\n <FormMessage />\n </FormItem>\n )\n } } />\n return <>{formField}</>;\n}\n\n\n","'use client'\n\nimport { JSX, useState, useEffect } from \"react\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText } from \"@/src/components/ui/input-group\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Loader2 } from \"lucide-react\";\n\nexport class DateTimeInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldDateTimeInput input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldDateTimeInput = ({ form, input, isSubmitting }: Props) => {\n const groupConfig = input.inputGroupConfig;\n const autoValidate = groupConfig?.autoValidIcons ?? input.zodType ? true : false;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n\n // Estado local para manejar validez\n const [isValid, setIsValid] = useState<boolean>(() => {\n const value = form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n return !fieldState.error && value !== undefined && value !== \"\";\n });\n\n // Estado local para la fecha y hora\n const [dateTime, setDateTime] = useState<string>(() => form.getValues(input.name) ?? \"\");\n\n useEffect(() => {\n const fieldValue = form.getValues(input.name) ?? \"\";\n if (fieldValue !== dateTime) setDateTime(fieldValue);\n }, [form.getValues(input.name)]);\n\n const handleChange = (val: string) => {\n setDateTime(val);\n form.setValue(input.name, val);\n };\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const validNow = !fieldState.error && field.value !== undefined && field.value !== \"\";\n if (validNow !== isValid) setIsValid(validNow);\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl className=\"shadow-lg\">\n <InputGroup>\n\n {/* Iconos izquierda */}\n {(iconsLeft.length > 0 || textLeft) && (\n <InputGroupAddon>\n {textLeft && <InputGroupText>{textLeft}</InputGroupText>}\n {iconsLeft.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n </InputGroupAddon>\n )}\n\n {/* Input de tipo datetime-local */}\n <InputGroupInput\n type=\"datetime-local\"\n value={dateTime}\n disabled={input.disabled || isSubmitting}\n onChange={(e) =>{ \n handleOnChage(e.target.value, input, field);\n handleChange(e.target.value);\n }}\n />\n\n {/* Iconos derecha */}\n {(iconsRight.length > 0 || textRight || autoValidate) && (\n <InputGroupAddon align=\"inline-end\">\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={24} />\n ))}\n\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n )}\n\n </InputGroup>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport type { UseFormReturn } from \"react-hook-form\"\nimport { useEffect, useState } from \"react\";\nimport { Eye, EyeOff } from \"lucide-react\"\nimport { Button } from \"@/src/components/ui/button\"\nimport { Card } from \"@/src/components/ui/card\"\nimport { FieldProps, BaseInput, handleOnChage } from \"../base\";\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input } from \"@/src/components/ui\";\nimport { JSX } from \"react\"\n\nexport class FileInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return ( <FieldFile input={input} form={form} isSubmitting={isSubmitting} /> )\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldFile = ({ form, input, isSubmitting }: Props) => {\n const [preview, setPreview] = useState<string | null>(form.getValues(input.name) ?? null)\n const [showPreview, setShowPreview] = useState<boolean>(input.fileConfig?.showPreview ?? false)\n \n const accept = input.fileConfig?.accept || \"*/*\";\n const multiple = input.fileConfig?.multiple || false;\n // const maxSize = input.fileConfig?.maxSize || 25;\n // const previewSize = input.fileConfig?.previewSize || 60;\n\n useEffect(() => {\n setPreview(form.getValues(input.name) || null)\n }, [input])\n\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (file) {\n const objectUrl = URL.createObjectURL(file)\n setPreview(objectUrl)\n } else {\n setPreview(null)\n }\n }\n\n return (\n <>\n \n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <div className=\"flex gap-1\">\n <FormControl>\n <Input \n type=\"file\"\n accept={accept}\n multiple={multiple}\n placeholder={input.placeHolder}\n name={field.name}\n disabled={input.disabled || isSubmitting}\n onChange={(e) => {\n field.onChange(e.target.files?.[0]); handleFileChange(e)\n handleOnChage(e.target.files?.[0], input, field)\n }} \n />\n </FormControl>\n { preview && (<Button type=\"button\" onClick={() => { setShowPreview(!showPreview); }}>\n {showPreview ? <EyeOff /> : <Eye />}\n </Button>) }\n <FormDescription>{input.description}</FormDescription>\n </div>\n {/* <pre> <b>{JSON.stringify(field, null, 2) } </b> </pre> */}\n <FormMessage />\n {\n (preview && showPreview) && (\n <Card>\n {/* <Image\n src={preview}\n alt=\"Preview\"\n width={previewSize}\n height={previewSize}\n /> */}\n </Card> ) \n }\n </FormItem>\n )}\n />\n </>\n )\n}\n\n","'use client'\n\nimport { JSX, useRef, useState } from \"react\";\nimport { BaseInput } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Loader2, Upload } from \"lucide-react\";\nimport { cn } from \"@/src/lib/utils\";\n\nexport class FileMultiUploadInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldFileMultiUpload input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldFileMultiUpload = ({ input, form, isSubmitting }: Props) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [files, setFiles] = useState<File[]>(form.getValues(input.name) || []);\n const [dragOver, setDragOver] = useState(false);\n\n const autoValidate = input.inputGroupConfig?.autoValidIcons;\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = event.target.files ? Array.from(event.target.files) : [];\n setFiles(selectedFiles);\n form.setValue(input.name, selectedFiles);\n };\n\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n const droppedFiles = event.dataTransfer.files ? Array.from(event.dataTransfer.files) : [];\n const updatedFiles = [...files, ...droppedFiles];\n setFiles(updatedFiles);\n form.setValue(input.name, updatedFiles);\n setDragOver(false);\n };\n\n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const isValid = !fieldState.error && files.length > 0;\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n\n <FormControl>\n <div\n ref={inputRef}\n onClick={() => inputRef.current?.click()}\n onDragOver={(e) => { e.preventDefault(); setDragOver(true); } }\n onDragLeave={() => setDragOver(false)}\n onDrop={handleDrop}\n className={cn(\n \"w-full h-40 border-2 border-dashed rounded-lg flex flex-col items-center justify-center cursor-pointer transition-all duration-200\",\n dragOver ? \"border-blue-500 bg-blue-50\" : \"border-gray-400 bg-gray-50\",\n isSubmitting && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <Upload className=\"w-10 h-10 text-gray-500 mb-2\" />\n <span className=\"text-gray-600 text-sm text-center px-2\">\n {files.length === 0\n ? \"Arrastra tus archivos aquí o haz click para seleccionar\"\n : `${files.length} archivo(s) seleccionados`}\n </span>\n <input\n ref={inputRef}\n type=\"file\"\n multiple\n className=\"hidden\"\n disabled={input.disabled || isSubmitting}\n onChange={handleFileSelect} />\n </div>\n </FormControl>\n\n {/* Lista de archivos seleccionados */}\n {files.length > 0 && (\n <ul className=\"mt-2 max-h-40 overflow-y-auto border rounded-md p-2 bg-white\">\n {files.map((f, idx) => (\n <li key={idx} className=\"flex justify-between items-center py-1 px-2 rounded hover:bg-gray-100\">\n <span className=\"truncate\">{f.name}</span>\n <button\n type=\"button\"\n onClick={() => {\n const filtered = files.filter((_, i) => i !== idx);\n setFiles(filtered);\n form.setValue(input.name, filtered);\n } }\n className=\"text-red-500 hover:text-red-700 text-sm\"\n >\n Eliminar\n </button>\n </li>\n ))}\n </ul>\n )}\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n\n {autoValidate && (\n <div className=\"mt-1\">\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n\n <FormMessage />\n </FormItem>\n );\n } } />;\n\n return <>{formField}</>;\n \n};\n","'use client'\n\nimport { ChangeEventHandler, Dispatch, ForwardRefExoticComponent, JSX, RefAttributes, SetStateAction, useEffect, useState } from \"react\";\nimport { BaseInput, handleOnChage, isValidField } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { \n InputGroup, \n InputGroupAddon, \n InputGroupInput, \n InputGroupText \n} from \"@/src/components/ui/input-group\";\nimport { FieldProps, TextInputType } from \"../base/definitions\";\nimport { ControllerRenderProps, FieldValues, UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Info, Loader2, Eye, EyeOff, LucideProps } from \"lucide-react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/src/components/ui/tooltip\";\n\nexport class TextInputGroup extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldTextGroup input={input} form={form} isSubmitting={isSubmitting}/>;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean; // estado submit externo opcional\n}\n\nexport const FieldTextGroup = ({ form, input, isSubmitting }: Props) => {\n // Estado local para manejar validez desde el primer render\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n const formField = (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n setIsValid(isValidField(input, form));\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl className=\"shadow-lg\">\n {\n CustomInputGroup({\n input,\n isSubmitting,\n field,\n form,\n isValid,\n })\n }\n </FormControl>\n\n {/* Descripción */}\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n \n return <>{formField}</>;\n};\n\n\ninterface customInputGroup {\n value?: any;\n input: FieldProps<Record<string,any>,Record<string,any>>,\n field?: ControllerRenderProps<FieldValues, string>,\n form: UseFormReturn, \n isSubmitting?: boolean,\n isValid?: boolean,\n setShowPassword?: Dispatch<SetStateAction<boolean>>, \n autoValidate?: boolean, \n onChange?: ChangeEventHandler<HTMLInputElement> | undefined\n}\n\nexport const CustomInputGroup = ({\n value,\n input,\n field,\n form,\n isSubmitting,\n onChange,\n isValid\n }: customInputGroup) => {\n \n const groupConfig = input.inputGroupConfig;\n const infoTooltip = input?.infoTooltip;\n const autoValidate = groupConfig?.autoValidIcons ?? input.zodType ? true : false;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n\n // Estado local para manejar validez desde el primer render\n // const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n // 👁️ Estado para mostrar/ocultar contraseña\n const [showPassword, setShowPassword] = useState(false);\n const isPasswordField = input.keyboardType === TextInputType.PASSWORD;\n const isNumberField = input.keyboardType === TextInputType.NUMBER;\n\n const showInputGroupAddons = iconsRight.length > 0 || textRight || autoValidate || infoTooltip || isPasswordField\n \n // useEffect(()=>{\n // setIsValid(isValidField(input, form));\n // },[input])\n return (\n <InputGroup>\n {/* Iconos izquierda */}\n {(iconsLeft.length > 0 || textLeft) && (\n <InputGroupAddon>\n {textLeft && <InputGroupText>{textLeft}</InputGroupText>}\n {iconsLeft.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n </InputGroupAddon>\n )}\n\n {/* Input principal */}\n <InputGroupInput\n placeholder={input.placeHolder}\n disabled={input.disabled || isSubmitting}\n onBlur={field?.onBlur}\n name={field?.name}\n ref={field?.ref}\n type={isPasswordField && !showPassword\n ? \"password\"\n : isNumberField\n ? \"number\"\n : \"text\"}\n value={field?.value ?? value ?? \"\"}\n onChange={(e) => {\n if (onChange) {\n onChange(e)\n }\n let value: any = e.target.value;\n if (isNumberField) {\n value = e.target.value === \"\" ? \"\" : Number(e.target.value); // 👈 conversión si es number\n }\n field?.onChange(value);\n isValidField(input, form);\n handleOnChage(value, input, field);\n }\n } \n // {...field} \n />\n\n {/* Iconos derecha */}\n {showInputGroupAddons && (\n <InputGroupAddon align=\"inline-end\">\n {/* Tooltip de información */}\n {infoTooltip && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Info size={20} />\n </TooltipTrigger>\n <TooltipContent>\n <p>{infoTooltip}</p>\n </TooltipContent>\n </Tooltip>\n )}\n\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n\n {/* 👁️ Toggle mostrar/ocultar contraseña */}\n {isPasswordField && (\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword) }\n className=\"p-1\"\n >\n {showPassword ? <EyeOff size={20} /> : <Eye size={20} />}\n </button>\n )}\n\n {/* Icono de validación / loading */}\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n}\n\n","'use client'\n\nimport { JSX } from \"react\";\nimport { BaseInput } from \"../base/base-input\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { Link2Icon, Plus, Trash2 } from \"lucide-react\";\nimport { useEffect } from \"react\";\nimport { CustomInputGroup, FieldTextGroup } from \"./text-input-group\";\nimport { InputGroup, InputGroupAddon, InputGroupInput } from \"@/src/components/ui/input-group\";\nimport { ButtonGroup, ButtonGroupText } from \"@/src/components/ui/button-group\";\nimport { Label } from \"@radix-ui/react-label\";\n\nexport class KeyValueListInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldKeyValueList\n input={input}\n form={form}\n isSubmitting={isSubmitting}\n />\n );\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\n/**\n * 🧠 Lista editable de pares clave-valor\n */\nexport const FieldKeyValueList = ({ form, input, isSubmitting }: Props) => {\n const fieldName = input.name;\n\n // Inicializamos el valor como array vacío si no existe\n useEffect(() => {\n const current = form.getValues(fieldName);\n if (!Array.isArray(current)) {\n form.setValue(fieldName, []);\n }\n }, [form, fieldName]);\n\n const handleAddPair = () => {\n const current = form.getValues(fieldName) || [];\n form.setValue(fieldName, [...current, { key: \"\", value: \"\" }]);\n };\n\n const handleRemovePair = (index: number) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.filter((_: any, i: number) => i !== index);\n form.setValue(fieldName, updated);\n };\n\n const handleChange = (index: number, fieldType: \"key\" | \"value\", newValue: string) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.map((item: any, i: number) =>\n i === index ? { ...item, [fieldType]: newValue } : item\n );\n form.setValue(fieldName, updated);\n };\n\n return (\n <FormField\n control={form.control}\n name={fieldName}\n render={() => {\n const pairs = form.watch(fieldName) || [];\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormMessage />\n <FormControl>\n <div className=\"flex flex-col gap-3 rounded-xl \">\n {pairs.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n No pairs have been added yet.\n </p>\n )}\n\n {pairs.map((pair: { key: string; value: string }, index: number) => (\n <div\n key={index}\n className=\"flex flex-row w-full gap-2 items-center py-0.5\"\n > \n\n <ButtonGroup className=\"w-full\">\n <ButtonGroupText asChild>\n <Label htmlFor=\"key\">Key</Label>\n </ButtonGroupText>\n <CustomInputGroup \n autoValidate={true}\n value={pair.key}\n input={input}\n isValid={pair.key.trim() != ''}\n isSubmitting={isSubmitting}\n onChange={(e) => handleChange(index, \"key\", e.target.value)}\n form={form}\n />\n {/* <InputGroup>\n <InputGroupInput\n placeholder=\"Key\"\n value={pair.key}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"key\", e.target.value)}\n className=\"flex-1\"\n />\n </InputGroup> */}\n </ButtonGroup>\n\n <ButtonGroup className=\"w-full\">\n <ButtonGroupText asChild>\n <Label htmlFor=\"value\">Value</Label>\n </ButtonGroupText>\n <CustomInputGroup \n autoValidate={true}\n value={pair.value}\n input={input}\n isValid={pair.value.trim() != ''}\n isSubmitting={isSubmitting}\n onChange={(e) => handleChange(index, \"value\", e.target.value)}\n form={form}\n />\n {/* <InputGroupInput\n placeholder=\"Value\"\n value={pair.value}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"value\", e.target.value)}\n className=\"flex-1\"\n /> */}\n </ButtonGroup>\n\n {/* <Input\n placeholder=\"Key\"\n value={pair.key}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"key\", e.target.value)}\n className=\"w-1/2\"\n /> */}\n {/* <Input\n placeholder=\"Value\"\n value={pair.value}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, \"value\", e.target.value)}\n className=\"w-1/2\"\n /> */}\n { input.isRemovebleOption && (<Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => handleRemovePair(index)}\n disabled={isSubmitting}\n >\n <Trash2 size={18} />\n </Button>)}\n </div>\n ))}\n\n <div className=\"flex justify-end mt-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={handleAddPair}\n disabled={isSubmitting}\n >\n <Plus size={18} className=\"mr-1\" />\n </Button>\n </div>\n </div>\n </FormControl>\n\n {input.description && (\n <FormDescription>{input.description}</FormDescription>\n )}\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\n\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n Button,\n Badge,\n Popover,\n PopoverTrigger,\n PopoverContent,\n\n} from \"@/src/components/ui\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { cn } from \"@/src/lib/utils\";\nimport { useState } from \"react\";\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"@/src/components/ui/command\";\n\nexport class MultiSelectInput extends BaseInput {\n render() {\n const { input, form, isSubmitting } = this;\n return <FieldMultiSelect input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldMultiSelect = ({ form, input, isSubmitting }: Props) => {\n const mockInputOptions: InputOption[] = [\n { id: 1, name: \"PERMISO 1\" },\n { id: 2, name: \"PERMISO 2\" },\n { id: 3, name: \"PERMISO 3\" },\n { id: 4, name: \"PERMISO 4\" },\n ];\n\n const lista = (input?.listConfig?.list ?? mockInputOptions) as InputOption[];\n\n const optionValue = input?.listConfig?.optionValue ?? input.optionValue ?? \"id\";\n\n const getValue = (item: InputOption) => {\n if (optionValue === \"name\") return item[optionValue];\n return item.value ?? item.id;\n };\n\n const [open, setOpen] = useState(false);\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n const selectedValues: string[] = Array.isArray(field.value)\n ? field.value\n : [];\n\n const toggleOption = (value: string) => {\n const newValues = selectedValues.includes(value)\n ? selectedValues.filter((v) => v !== value)\n : [...selectedValues, value];\n field.onChange(newValues);\n };\n\n return (\n <FormItem className=\"flex flex-col rounded-lg border p-3 shadow bg-blue-100/20\">\n <FormLabel><b>{input.label}</b></FormLabel>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n\n <FormControl>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n disabled={input.disabled || isSubmitting}\n className={cn(\n \"justify-between w-full bg-black/10 dark:bg-white/10\",\n !selectedValues.length && \"text-muted-foreground\"\n )}\n >\n {selectedValues.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {selectedValues.map((val) => {\n const option = lista.find(\n (item) => getValue(item).toString() === val\n );\n return (\n <Badge key={`${input.name}-${val}-ms`} variant=\"secondary\">\n {option?.name ?? val}\n </Badge>\n );\n })}\n </div>\n ) : (\n <span>{input.placeHolder ?? \"Selecciona...\"}</span>\n )}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 opacity-50\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className=\"p-0 w-[var(--radix-popover-trigger-width)]\">\n <Command>\n <CommandInput placeholder=\"Buscar...\" />\n <CommandList>\n <CommandEmpty>No hay resultados.</CommandEmpty>\n <CommandGroup>\n {lista.map((item) => {\n const value = getValue(item).toString();\n const selected = selectedValues.includes(value);\n return (\n <CommandItem\n key={`${value}-ms`}\n onSelect={() => {\n handleOnChage(value,input,field)\n toggleOption(value)}\n }\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n selected ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {item.name}\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </FormControl>\n\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport { BaseInput, FieldProps, InputTypes } from \"../base\"\nimport { JSX } from \"react\"\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui\"\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldTextGroup } from \"./text-input-group\";\n\nexport class NumberInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (<FieldNumber form={form} input={input} isSubmitting={isSubmitting}/>)\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldNumber = ({form, input, isSubmitting}:Props) => {\n const fielInput: FieldProps = { ...input, inputType: InputTypes.NUMBER }\n return (<FieldTextGroup input={fielInput} form={form} isSubmitting={isSubmitting}/>)\n}\n\n","'use client'\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, InputOTP, InputOTPGroup, InputOTPSlot } from \"@/src/components/ui\"\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\n\nexport class OTPInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this; \n return (\n <FieldOTP form={form} input={input} isSubmitting={isSubmitting} />\n )\n\n }\n}\n\ninterface Props {\n form: UseFormReturn\n input: FieldProps,\n isSubmitting?: boolean;\n}\n\nconst FieldOTP = ({ form, input, isSubmitting }: Props ): JSX.Element => {\n\n const totalPositions = Array.from({ length: input.min ?? 6 }, (_, i) => i);\n \n return <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n <InputOTP maxLength={totalPositions.length} {...field} onChange={(event)=> handleOnChage(event, input, field)}>\n <InputOTPGroup>\n {totalPositions.map((position) => (\n <InputOTPSlot key={position} index={position} />\n ))}\n </InputOTPGroup>\n </InputOTP>\n </FormControl>\n <FormDescription>{input.description}</FormDescription>\n <FormMessage />\n </FormItem>\n )} />;\n}\n\n","'use client'\nimport { BaseInput, FieldProps, handleOnChage, InputOption } from \"../base\";\nimport { Card, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Label, RadioGroup, RadioGroupItem } from \"@/src/components/ui\";\nimport { cn } from \"@/src/lib/utils\";\nimport { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\n\n\nexport class RadioGroupInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldRadioGroup input={input} form={form} isSubmitting={isSubmitting}/>\n )\n }\n}\n\ninterface Props {\n form: UseFormReturn\n input: FieldProps,\n isSubmitting?: boolean;\n}\n\nconst FieldRadioGroup = ({ input, form, isSubmitting }: Props): JSX.Element => {\n const mockInputOptions: InputOption[] = [\n { id: 1, name: \"A+\", value: \"A+\" },\n { id: 2, name: \"A-\", value: \"A-\" },\n { id: 3, name: \"B+\", value: \"B+\" },\n { id: 4, name: \"B-\", value: \"B-\" },\n { id: 5, name: \"O+\", value: \"O+\" },\n { id: 6, name: \"O-\", value: \"O-\" },\n { id: 7, name: \"AB+\", value: \"AB+\" },\n { id: 8, name: \"AB-\", value: \"AB-\" },\n ]\n\n const options = (input.listConfig?.list as InputOption[]) ?? mockInputOptions\n\n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <div className=\"flex items-center justify-between p-2 border-b\">\n <FormLabel className=\"font-semibold\">\n {input.label || input.name}\n </FormLabel>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n </div>\n\n <FormControl>\n <RadioGroup\n {...field}\n value={field.value ?? \"\"}\n onValueChange={(e)=> handleOnChage(e, input, field)}\n className=\"space-y-2 mt-3\"\n >\n {options.map((opt, index) => (\n <div\n key={opt.id}\n className={cn(\n \"p-2 rounded-lg flex items-center gap-2 cursor-pointer\",\n index % 2 ? \"bg-black/5\" : \"bg-white/5\"\n )}\n >\n <RadioGroupItem\n disabled={input.disabled || isSubmitting}\n value={opt.value ?? String(opt.id)}\n id={`opt-${opt.id}`} />\n <Label htmlFor={`opt-${opt.id}`}>\n {opt.label || opt.name}\n </Label>\n </div>\n ))}\n </RadioGroup>\n </FormControl>\n\n <FormMessage />\n </FormItem>\n )} />;\n\n return <>{formField}</>;\n \n}","'use client'\n\nimport { JSX, useEffect, useState } from \"react\";\nimport { BaseInput, isValidField } from \"../base/base-input\";\nimport { UseFormReturn, useFieldArray } from \"react-hook-form\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { FieldProps } from \"../base/definitions\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { FormFieldsGrid } from \"../FormFieldsGrid\";\nimport { CustomInputGroup } from \"./text-input-group\";\n\nexport class RepeaterInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldRepeater form={form} input={input} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps\n isSubmitting?: boolean;\n}\n\nexport const FieldRepeater = ({ form, input, isSubmitting }: Props) => {\n const { control } = form;\n const { fields, append, remove } = useFieldArray({\n control,\n name: input.name,\n });\n\n const canAdd = !input.maxItems || fields.length < input.maxItems;\n const canRemove = fields.length > (input.minItems ?? 0);\n\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n useEffect(() => {\n setIsValid(isValidField(input, form));\n },[input])\n\n return (\n <FormField\n control={control}\n name={input.name}\n render={() => (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n\n <FormControl>\n <div className=\"space-y-3\">\n {fields.map((item, index) => (\n <div\n key={item.id}\n className=\"border p-3 rounded-md flex flex-col gap-4 py-3\"\n >\n\n {/* <FormFieldsGrid fields={input?.repeaterFields ?? []} form={form} /> */}\n {input.repeaterFields?.map((fieldGroup, groupIndex) => {\n // Si el elemento es un array → varios campos en una línea\n const group =\n Array.isArray(fieldGroup) ? fieldGroup : [fieldGroup];\n const cols = group.length;\n\n return (\n <div\n key={groupIndex}\n className={`grid gap-1 grid-cols-${cols}`}\n >\n {group.map((subField) => (\n <FormField\n key={`${input.name}.${index}.${subField.name}`}\n control={control}\n name={`${input.name}.${index}.${subField.name}`}\n render={({ field, fieldState }) => (\n <FormItem className=\"flex-1\">\n <FormLabel>{subField.label}</FormLabel>\n <FormControl>\n <CustomInputGroup \n autoValidate={true}\n value={field.value}\n input={subField}\n isValid={isValid}\n // onChange={(e) => handleChange(index, e.target.value)}\n field={field}\n form={form}\n />\n {/* <Input\n placeholder={subField.placeHolder}\n disabled={subField.disabled || isSubmitting}\n {...field}\n /> */}\n </FormControl>\n <FormMessage>{fieldState.error?.message}</FormMessage>\n </FormItem>\n )}\n />\n ))}\n </div>\n );\n })}\n\n {/* Botón eliminar */}\n {canRemove && (\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => remove(index)}\n className=\"self-end\"\n >\n <Trash2 size={18} />\n </Button>\n )}\n </div>\n ))}\n\n {/* Botón agregar */}\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={() => append({})}\n disabled={isSubmitting}\n className=\"w-full\"\n >\n <Plus size={16} className=\"mr-2\" />\n Agregar\n </Button>\n )}\n </div>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: 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\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction 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 \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport { JSX, useState } from \"react\";\nimport { UseFormReturn, useFieldArray } from \"react-hook-form\";\nimport { BaseInput } from \"../base/base-input\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { FieldProps } from \"../base/definitions\";\nimport { TabsContent, Tabs, TabsTrigger, TabsList } from '@/src/components/ui/tabs';\n\n/**\n * 🧱 Clase que extiende BaseInput\n * Se usa igual que tus otros inputs (TextInput, SelectInput, etc.)\n */\nexport class RepeaterTabsInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldRepeaterTabs form={form} input={input} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\n/**\n * 📋 FieldRepeaterTabs\n * - Cada ítem del FieldArray se representa como un tab.\n * - Permite agregar/eliminar tabs.\n * - Mantiene sincronía con React Hook Form.\n */\nconst FieldRepeaterTabs = ({ form, input, isSubmitting }: Props): JSX.Element => {\n const { control } = form;\n const { fields, append, remove } = useFieldArray({\n control,\n name: input.name,\n });\n\n const [activeTab, setActiveTab] = useState<string>(fields[0]?.id ?? \"\");\n\n const canAdd = !input.maxItems || fields.length < input.maxItems;\n const canRemove = fields.length > (input.minItems ?? 0);\n\n const handleAdd = () => {\n const newItem = { id: `tab-${Date.now()}` };\n append(newItem);\n setActiveTab(newItem.id);\n };\n\n const handleRemove = (index: number) => {\n const removedId = fields[index].id;\n remove(index);\n if (activeTab === removedId && fields.length > 1) {\n const nextTab = fields[index - 1] ?? fields[0];\n if (nextTab) setActiveTab(nextTab.id);\n }\n };\n\n return (\n <FormField\n control={control}\n name={input.name}\n render={() => (\n <FormItem className={input.className}>\n {input.label && <FormLabel><b>{input.label}</b></FormLabel>}\n <FormControl>\n <div className=\"space-y-3\">\n <Tabs value={activeTab} onValueChange={setActiveTab} className=\"w-full\">\n {/* 🔹 Lista de Tabs */}\n <TabsList className=\"flex w-full justify-start overflow-x-auto\">\n {fields.map((item, index) => (\n <div key={item.id} className=\"flex items-center\">\n <TabsTrigger value={item.id} className=\"flex items-center gap-1\">\n {input.tabLabelField\n ? form.watch(`${input.name}.${index}.${input.tabLabelField}`) ||\n `Item ${index + 1}`\n : `Item ${index + 1}`}\n </TabsTrigger>\n {canRemove && (\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => handleRemove(index)}\n >\n <Trash2 size={14} />\n </Button>\n )}\n </div>\n ))}\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={handleAdd}\n disabled={isSubmitting}\n className=\"ml-2\"\n >\n <Plus size={14} className=\"mr-1\" /> Agregar\n </Button>\n )}\n </TabsList>\n\n {/* 🔹 Contenido de cada Tab */}\n {fields.map((item, index) => (\n <TabsContent key={item.id} value={item.id} className=\"mt-4\">\n {input.repeaterFields?.map((fieldGroup, groupIndex) => {\n const group = Array.isArray(fieldGroup)\n ? fieldGroup\n : [fieldGroup];\n const cols = group.length;\n\n return (\n <div key={groupIndex} className={`grid gap-3 grid-cols-${cols}`}>\n {group.map((subField) => (\n <FormField\n key={`${input.name}.${index}.${subField.name}`}\n control={control}\n name={`${input.name}.${index}.${subField.name}`}\n render={({ field, fieldState }) => (\n <FormItem className=\"flex-1\">\n <FormLabel>{subField.label}</FormLabel>\n <FormControl>\n <Input\n placeholder={subField.placeHolder}\n disabled={subField.disabled || isSubmitting}\n {...field}\n />\n </FormControl>\n <FormMessage>{fieldState.error?.message}</FormMessage>\n </FormItem>\n )}\n />\n ))}\n </div>\n );\n })}\n </TabsContent>\n ))}\n </Tabs>\n </div>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};\n","'use client'\n\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/src/components/ui\";\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { useEffect, useState } from \"react\";\n\nexport class SelectInput extends BaseInput {\n render() {\n const { input, form, isSubmitting } = this;\n return <FieldSelect input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldSelect = ({ form, input, isSubmitting }: Props) => {\n const mockInputOptions: InputOption[] = [\n { value: 1, id: 1, name: \"MOCK OPTION - PERMISO 1\" },\n { value: 2, id: 2, name: \"MOCK OPTION - PERMISO 2\" },\n { value: 3, id: 3, name: \"MOCK OPTION - PERMISO 3\" },\n { value: 4, id: 4, name: \"MOCK OPTION - PERMISO 4\" },\n ];\n\n // 🧩 Estado interno para lista y valor seleccionado\n const [lista, setLista] = useState<InputOption[]>(\n (input?.listConfig?.list?.every((item): item is InputOption => \"name\" in item)\n ? input.listConfig.list\n : mockInputOptions) as InputOption[]\n );\n const [loading, setLoading] = useState(false);\n const [value, setValue] = useState<string>(input.value?.toString() ?? \"\");\n\n const optionValue = input?.listConfig?.optionValue ?? input.optionValue ?? \"id\";\n\n // 🧠 Sincroniza el valor inicial con react-hook-form\n useEffect(() => {\n const currentValue = form.getValues(input.name);\n if (!currentValue && input.value) {\n form.setValue(input.name, input.value);\n setValue(input.value.toString());\n }\n }, [form, input.name, input.value]);\n\n // 🪄 Nuevo: escucha cambios en el campo del que depende (si existe)\n useEffect(() => {\n if (input.dependsOn && input.loadOptions) {\n const subscription = form.watch(async (values) => {\n const dependencyValue = values[input.dependsOn!];\n if (dependencyValue) {\n try {\n setLoading(true);\n const newOptions = await input.loadOptions!(dependencyValue);\n setLista(newOptions);\n } catch (err) {\n console.error(`Error loading options for ${input.name}:`, err);\n setLista([]);\n } finally {\n setLoading(false);\n }\n } else {\n // Limpia opciones si el campo dependiente se vacía\n setLista([]);\n form.setValue(input.name, \"\"); // limpia selección\n }\n });\n\n // cleanup\n return () => subscription.unsubscribe?.();\n }\n }, [form, input.dependsOn, input.loadOptions, input.name]);\n\n const getValue = (item: InputOption): string => {\n const val =\n optionValue === \"name\"\n ? item.name\n : item.value?.toString?.() ?? item.id?.toString();\n return val?.toString() ?? \"\";\n };\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => {\n const currentValue = field.value?.toString() ?? value;\n\n return (\n <FormItem className=\"flex flex-row items-center justify-between rounded-lg border p-3 shadow-lg bg-blue-100/20\">\n <div className=\"space-y-0.5 pr-5\">\n <FormLabel>\n <b>{input.label}</b>\n </FormLabel>\n {input.description && (\n <FormDescription>{input.description}</FormDescription>\n )}\n <FormMessage />\n </div>\n\n <FormControl>\n <Select\n disabled={input.disabled || isSubmitting || loading}\n onValueChange={(val) => {\n handleOnChage(val, input, field)\n // field.onChange(val);\n setValue(val);\n\n // 🔸 Ejecuta el callback definido si existe\n if (input.listConfig?.onOptionChange) {\n const selectedItem = lista.find(\n (item) => getValue(item) === val\n );\n input.listConfig.onOptionChange(selectedItem);\n }\n }}\n value={currentValue || undefined}\n >\n <FormControl>\n <SelectTrigger className=\"w-[60%] bg-black/10 dark:bg-white/25\">\n <SelectValue\n placeholder={\n loading\n ? \"Cargando...\"\n : input.placeHolder ?? \"Seleccionar\"\n }\n />\n </SelectTrigger>\n </FormControl>\n\n <SelectContent>\n {lista.map((item) => (\n <SelectItem value={getValue(item)} key={`${input.name}-${item.id}-s`}>\n {item.name}\n </SelectItem>\n ))}\n {lista.length === 0 && !loading && (\n <div className=\"p-2 text-sm text-muted-foreground\">\n No hay opciones disponibles\n </div>\n )}\n </SelectContent>\n </Select>\n </FormControl>\n </FormItem>\n );\n }}\n />\n );\n};\n","\"use client\";\n\nimport { JSX, useState } from \"react\";\nimport { Card, Label, Checkbox } from \"@/src/components/ui\";\nimport { BaseInput, handleOnChage } from \"../base\";\nimport { FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui/form\";\nimport { FieldProps, InputOption } from \"../base/definitions\";\nimport { cn } from \"@/src/lib/utils\";\n\nexport class SimpleCheckListInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FormField\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FieldSimpleCheckList\n isSubmitting={isSubmitting}\n input={input}\n value={field.value || []}\n onChange={(e) =>handleOnChage(e, input, field)}\n />\n )}\n />\n );\n }\n}\n\ninterface Props {\n input: FieldProps;\n value: InputOption[];\n isSubmitting?: boolean;\n onChange: (value: InputOption[]) => void;\n}\n\nexport const FieldSimpleCheckList = ({ input, value, onChange, isSubmitting }: Props) => {\n const mockInputOptions: InputOption[] = [\n { id: 1, name: \"MOCK OPTION - CREATE\", checked: false },\n { id: 2, name: \"MOCK OPTION - READ\", checked: true },\n { id: 3, name: \"MOCK OPTION - UPDATE\", checked: false },\n { id: 4, name: \"MOCK OPTION - DELETE\", checked: false },\n ];\n\n // Usa las opciones del input o las mock\n const initialOptions =\n (input.listConfig?.list as InputOption[]) ?? mockInputOptions;\n\n // Estado local sincronizado con el form\n const [options, setOptions] = useState<InputOption[]>(\n value.length > 0 ? value : initialOptions\n );\n\n const allChecked = options.every((opt) => opt.checked);\n\n const handleMainToggle = (checked: boolean) => {\n const updated = options.map((opt) => ({ ...opt, checked }));\n setOptions(updated);\n handleOnChage(updated, input)\n onChange(updated); // sincroniza con el form\n };\n\n const handleChildToggle = (option: InputOption, checked: boolean) => {\n const updated = options.map((opt) =>\n opt.id === option.id ? { ...opt, checked } : opt\n );\n handleOnChage(updated, input)\n setOptions(updated);\n onChange(updated); // sincroniza con el form\n };\n\n const formField = <FormItem>\n <div className=\"flex items-center justify-between p-2 border-b\">\n <FormLabel className=\"font-semibold\">{input.label || input.name}</FormLabel>\n <div className=\"flex items-center gap-2\">\n <Label htmlFor=\"main\">Seleccionar todo</Label>\n <Checkbox\n id=\"main\"\n checked={allChecked}\n onCheckedChange={handleMainToggle} />\n </div>\n </div>\n\n <FormControl>\n <div className=\"space-y-2 mt-3\">\n {options.map((opt, index) => (\n <div\n key={opt.id}\n className={cn(\n \"p-2 rounded-lg flex justify-items-start gap-2 items-center\",\n index % 2 ? \"bg-black/5\" : \"bg-white/5\"\n )}\n >\n <Checkbox\n disabled={input.disabled || isSubmitting}\n id={String(opt.id)}\n checked={opt.checked || false}\n onCheckedChange={(checked) => handleChildToggle(opt, checked as boolean)} />\n <Label htmlFor={String(opt.id)}>{opt.label || opt.name}</Label>\n </div>\n ))}\n </div>\n </FormControl>\n\n <FormMessage />\n </FormItem>;\n\n return <>{formField}</>;\n \n};\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n \"relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n \"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5\"\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n \"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport { JSX, useState } from \"react\";\nimport { BaseInput } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Slider } from \"@/src/components/ui/slider\";\nimport { Card } from \"@/src/components/ui\";\n\nexport class SliderInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldSlider input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldSlider = ({ input, form, isSubmitting }: Props) => {\n // Valor inicial del slider\n const initialValue = form.getValues(input.name) ?? input.value ?? 0;\n const [value, setValue] = useState<number>(initialValue);\n\n const handleChange = (val: number) => {\n setValue(val);\n form.setValue(input.name, val);\n };\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n\n <FormControl>\n <Slider\n defaultValue={[initialValue]}\n value={[value]}\n max={input.max ?? 100}\n min={input.min ?? 0}\n step={1}\n className=\"w-[60%]\"\n disabled={input.disabled || isSubmitting}\n onValueChange={(val) => handleChange(val[0])}\n />\n </FormControl>\n\n <div className=\"mt-2 text-sm text-gray-700\">\n Valor actual: {value}\n </div>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n );\n};\n","'use client'\n\nimport { JSX, ReactNode, useState } from \"react\"\nimport { UseFormReturn } from \"react-hook-form\"\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { useSortable } from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { GripVertical } from \"lucide-react\"\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"@/src/components/ui/form\"\nimport { cn } from \"@/src/lib/utils\"\nimport { BaseInput, FieldProps } from \"../base\"\n\n// ============================================================================\n// 🔹 Clase principal que extiende de BaseInput\n// ============================================================================\n\nexport class SortableListInput<T> extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this\n const children = input.listConfig?.children ?? undefined\n return (\n <FieldSortableList<T>\n form={form}\n input={input}\n isSubmitting={isSubmitting}\n children={children as (item: T, index: number) => ReactNode}\n />\n )\n }\n}\n\n// ============================================================================\n// 🔹 Campo principal con lógica de drag & drop\n// ============================================================================\n\ninterface Props<T> {\n form: UseFormReturn\n input: FieldProps\n isSubmitting?: boolean\n children?: (item: T, index: number) => ReactNode\n}\n\nfunction FieldSortableList<T>({\n form,\n input,\n isSubmitting,\n children,\n}: Props<T>): JSX.Element {\n const [items, setItems] = useState<any[]>(() => input.listConfig?.list ?? [])\n const sortableEnabled = input.listConfig?.sortable ?? true;\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n )\n\n const handleDragEnd = (event: any) => {\n if (!sortableEnabled) return; \n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = items.findIndex((i: any) => i.id === active.id)\n const newIndex = items.findIndex((i: any) => i.id === over.id)\n const newList = arrayMove(items, oldIndex, newIndex)\n\n setItems(newList)\n form.setValue(input.name, newList)\n input.listConfig?.onOptionChange?.(newList)\n }\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={() => (\n <FormItem className={cn(\"space-y-2\", input.className)}>\n {input.label && <FormLabel><b>{input.label}</b></FormLabel>}\n <FormControl>\n {sortableEnabled ? (\n <DndContext collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext\n items={items.map((i) => i.id)}\n strategy={verticalListSortingStrategy}\n >\n <div className=\"flex flex-col gap-2\">\n {items.map((item, index) => (\n <SortableWrapper key={item.id} id={item.id}>\n {typeof children === \"function\"\n ? children(item, index)\n : <div className=\"p-3 border rounded-md bg-white\">{item.name}</div>}\n </SortableWrapper>\n ))}\n </div>\n </SortableContext>\n </DndContext>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {items.map((item, index) =>\n typeof children === \"function\"\n ? children(item, index)\n : <div key={item.id} className=\"p-3 border rounded-md bg-gray-50\">{item.name}</div>\n )}\n </div>\n )}\n </FormControl>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )}\n />\n )\n}\n\n// ============================================================================\n// 🔹 SortableWrapper: item individual draggable\n// ============================================================================\n\nfunction SortableWrapper({\n id,\n children,\n disabled,\n}: {\n id: string | number\n children: React.ReactNode\n disabled?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n className={cn(\n \"flex items-center gap-2 p-2 border rounded-md mb-1 bg-muted/30 cursor-grab select-none transition-all\",\n isDragging && \"opacity-60 bg-muted/50 scale-[0.98]\"\n )}\n >\n <GripVertical className=\"w-4 h-4 opacity-70\" />\n <div className=\"flex-1\">{children}</div>\n </div>\n )\n}\n","'use client';\n\nimport { JSX, useEffect, useState } from \"react\";\nimport { BaseInput, isValidField } from \"../base/base-input\";\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage\n} from \"@/src/components/ui/form\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldProps } from \"../base/definitions\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { CustomInputGroup } from \"./text-input-group\";\n\nexport class StringValueListInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldStringValueList\n input={input}\n form={form}\n isSubmitting={isSubmitting}\n />\n );\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\n/**\n * 🧠 Lista editable de strings\n */\nexport const FieldStringValueList = ({ form, input, isSubmitting }: Props) => {\n const fieldName = input.name;\n const withAddBtn = input.withAddBtn ?? false\n const [isValid, setIsValid] = useState<boolean>(isValidField(input, form));\n\n // Inicializamos como array vacío si no existe\n useEffect(() => {\n setIsValid(isValidField(input, form));\n },[input])\n \n useEffect(() => {\n const current = form.getValues(fieldName);\n if (!Array.isArray(current)) {\n form.setValue(fieldName, []);\n }\n }, [form, fieldName]);\n\n const handleAddItem = () => {\n const current = form.getValues(fieldName) || [];\n form.setValue(fieldName, [...current, \"\"]);\n };\n\n const handleRemoveItem = (index: number) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.filter((_: string, i: number) => i !== index);\n form.setValue(fieldName, updated);\n };\n\n const handleChange = (index: number, newValue: string) => {\n const current = form.getValues(fieldName) || [];\n const updated = current.map((item: string, i: number) =>\n i === index ? newValue : item\n );\n form.setValue(fieldName, updated);\n };\n\n return (\n <FormField\n control={form.control}\n name={fieldName}\n render={(field) => {\n const items = form.watch(fieldName) || [];\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormMessage />\n <FormControl>\n <div className=\"flex flex-col gap-3 rounded-xl \">\n {items.length === 0 && (\n <p className=\"text-sm text-muted-foreground\">\n No items have been added yet.\n </p>\n )}\n\n {items.map((value: string, index: number) => (\n <div\n key={index}\n className=\"flex items-center gap-4 py-2\"\n >\n <CustomInputGroup \n autoValidate={true}\n value={value}\n input={input}\n isValid={isValid}\n onChange={(e) => handleChange(index, e.target.value)}\n // field={field}\n form={form}\n />\n {/* <Input\n placeholder={`Item ${index + 1}`}\n value={value}\n disabled={isSubmitting}\n onChange={(e) => handleChange(index, e.target.value)}\n /> */}\n {input.isRemovebleOption && (<Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => handleRemoveItem(index)}\n disabled={isSubmitting}\n >\n <Trash2 size={18} />\n </Button>)}\n </div>\n ))}\n\n <div className=\"flex justify-end mt-2\">\n { withAddBtn && (<Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={handleAddItem}\n disabled={isSubmitting}\n >\n <Plus size={18} className=\"mr-1\" />\n </Button>)}\n </div>\n </div>\n </FormControl>\n\n {input.description && (\n <FormDescription>{input.description}</FormDescription>\n )}\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { Card, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Switch } from \"@/src/components/ui\";\nimport { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\n\n\n\n\nexport class SwitchInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldSwitch input={input} form={form} isSubmitting={isSubmitting} />\n )\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldSwitch = ({ input, form, isSubmitting }: Props): JSX.Element => {\n const className = input.className\n return (<FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <Card className={`${className ? className : 'p-3 shadow-lg bg-blue-100/20'}`}>\n\n <FormItem className=\"flex flex-row items-center justify-between rounded-lg\">\n <div className=\"space-y-0.5\">\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormDescription>{input.placeHolder ?? input.description}</FormDescription>\n <FormMessage />\n </div>\n <FormControl>\n <Switch checked={field.value} \n onCheckedChange={(event)=> { handleOnChage(event, input, field)}} \n disabled={input.disabled || isSubmitting} />\n </FormControl>\n </FormItem>\n </Card>\n )} />)\n}\n\n","'use client'\nimport React, { JSX } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { Badge, FormControl, FormField, FormItem, FormLabel, FormMessage, Input } from \"@/src/components/ui\";\nimport { BaseInput, FieldProps, handleOnChage } from \"../base\";\nimport { cn } from \"@/src/lib/utils\";\n\n\n\n\nexport class TagInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldTags input={input} form={form} isSubmitting={isSubmitting}/>\n )\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nconst FieldTags = ({ input, form, isSubmitting }: Props): JSX.Element => {\n\n\n const formField = <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem>\n <div className=\"flex items-center justify-between p-2 border-b\">\n <FormLabel className=\"font-semibold\">\n {input.label || input.name}\n </FormLabel>\n </div>\n\n <FormControl>\n <TagsInput\n input={input}\n value={field.value ?? []}\n onValueChange={(event)=> handleOnChage(event, input, field)}\n placeholder=\"Enter for add tag\"\n />\n </FormControl>\n\n <FormMessage />\n </FormItem>\n )} />;\n\n return <>{formField}</>;\n \n}\n\n\n\n/**\n * used for identifying the split char and use will pasting\n */\nconst SPLITTER_REGEX = /[\\n#?=&\\t,./-]+/;\n\n/**\n * used for formatting the pasted element for the correct value format to be added\n */\n\nconst FORMATTING_REGEX = /^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g;\n\ninterface TagsInputProps extends React.HTMLAttributes<HTMLDivElement> {\n input: FieldProps;\n value: string[];\n onValueChange: (value: string[]) => void;\n placeholder?: string;\n maxItems?: number;\n minItems?: number;\n /** Donde mostrar los tags: 'top' o 'bottom', default 'bottom' */\n tagsPosition?: 'top' | 'bottom';\n}\n\nconst TagsInput = React.forwardRef<HTMLDivElement, TagsInputProps>(\n (\n {\n input,\n value,\n onValueChange,\n placeholder,\n maxItems,\n minItems,\n tagsPosition = 'bottom',\n className,\n dir,\n ...props\n },\n ref\n ) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n const parseMinItems = minItems ?? 0;\n const parseMaxItems = maxItems ?? Infinity;\n\n const addTag = (val: string) => {\n if ((!value.includes(val) && value.length < parseMaxItems) || input.withDuplicatTag) {\n onValueChange([...value, val]);\n }\n };\n\n const removeTag = (val: string) => {\n if (value.includes(val) && value.length > parseMinItems) {\n onValueChange(value.filter((v) => v !== val));\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && inputValue.trim() !== '') {\n e.preventDefault();\n addTag(inputValue.trim());\n setInputValue('');\n }\n if (e.key === 'Backspace' && inputValue === '' && value.length > 0) {\n removeTag(value[value.length - 1]);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const tags = e.clipboardData.getData('text').split(SPLITTER_REGEX)\n .map(t => t.replace(FORMATTING_REGEX, '').trim())\n .filter(t => t && !value.includes(t))\n .slice(0, parseMaxItems - value.length);\n if (tags.length) onValueChange([...value, ...tags]);\n };\n\n const renderTags = () => (\n <div className=\"flex flex-wrap gap-1 mb-1 mt-1\">\n {value.map(tag => (\n <Badge\n key={tag}\n className=\"flex items-center gap-1 px-2 py-0.5 rounded bg-muted text-muted-foreground text-xs\"\n >\n {tag}\n <button\n type=\"button\"\n onClick={() => removeTag(tag)}\n className=\"ml-1 text-xs hover:text-destructive\"\n >\n ×\n </button>\n </Badge>\n ))}\n </div>\n );\n\n return (\n <div {...props} ref={ref} className={cn(\"w-full\", className)}>\n {tagsPosition === 'top' && renderTags()}\n <input\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n className=\"w-full px-2 py-1 border rounded focus:outline-none focus:ring focus:ring-primary\"\n />\n {tagsPosition === 'bottom' && renderTags()}\n </div>\n );\n }\n);\n\nTagsInput.displayName = 'TagsInput';\n","'use client'\nimport { JSX, ChangeEvent } from \"react\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\"\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Textarea } from \"@/src/components/ui\"\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldProps } from \"../base\";\n\n\nexport class TextAreaInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldTextArea form={form} input={input} isSubmitting={isSubmitting} />\n )\n\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nfunction FieldTextArea({ form, input, isSubmitting }: Props): JSX.Element {\n return <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem className=\"shadow-lg\">\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl>\n <Textarea className=\"min-w-[260px] bg-white\" \n placeholder={input.placeHolder} \n {...field} \n onChange={(event: ChangeEvent<HTMLTextAreaElement>) => {\n handleOnChage(event, input, field)\n }}\n disabled={input.disabled || isSubmitting} />\n </FormControl>\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n )} />;\n}\n\n","'use client'\nimport { JSX } from \"react\";\nimport { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from \"@/src/components/ui/form\";\nimport { Input } from \"@/src/components/ui/input\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { BaseInput, FieldProps, handleOnChage, InputTypes } from \"../base\";\n\n\nexport class TextInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return (\n <FieldText form={form} input={input} isSubmitting={isSubmitting} />\n )\n\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean; // estado submit externo opcional\n}\n\nconst FieldText = ({input, form, isSubmitting }: Props ): JSX.Element => {\n const hidden = input.hidden ?? input.inputType === InputTypes.HIDDEN;\n const type = hidden ? \"hidden\" : input.keyboardType || \"text\";\n return <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field }) => (\n <FormItem className={input.className}>\n { !hidden && (<FormLabel><b>{input.label}</b></FormLabel>)}\n <FormControl className=\"shadow-lg\">\n <Input className=\"min-w-[180px]\" placeholder={input.placeHolder} {...field} type={type}\n onChange={(e)=> handleOnChage(e, input, field)}\n disabled={input.disabled || isSubmitting} />\n </FormControl>\n {input.description && <FormDescription> {input.description} </FormDescription>}\n <FormMessage />\n {/* <pre> {JSON.stringify(field, null, 2)}</pre> */}\n </FormItem>\n )} />;\n}\n\n","'use client'\n\nimport { JSX, useState, useEffect } from \"react\";\nimport { BaseInput, handleOnChage } from \"../base/base-input\";\nimport { \n FormControl, \n FormDescription, \n FormField, \n FormItem, \n FormLabel, \n FormMessage \n} from \"@/src/components/ui/form\";\nimport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText } from \"@/src/components/ui/input-group\";\nimport { FieldProps } from \"../base/definitions\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { CircleCheck, CircleX, Loader2 } from \"lucide-react\";\n\nexport class TimeInput extends BaseInput {\n render(): JSX.Element {\n const { input, form, isSubmitting } = this;\n return <FieldTimeInput input={input} form={form} isSubmitting={isSubmitting} />;\n }\n}\n\ninterface Props {\n form: UseFormReturn;\n input: FieldProps;\n isSubmitting?: boolean;\n}\n\nexport const FieldTimeInput = ({ form, input, isSubmitting }: Props) => {\n const groupConfig = input.inputGroupConfig;\n const autoValidate = groupConfig?.autoValidIcons;\n\n const iconValidState = <CircleCheck style={{ color: \"#00bf3e\" }} />;\n const iconInvalidState = <CircleX style={{ color: \"#ff8080\" }} />;\n const iconLoadingState = <Loader2 className=\"animate-spin\" style={{ color: \"#1e90ff\" }} />;\n\n const iconsRight = groupConfig?.iconsRight ?? [];\n const iconsLeft = groupConfig?.iconsLeft ?? [];\n const textLeft = groupConfig?.textLeft;\n const textRight = groupConfig?.textRight;\n\n // Estado local para manejar validez\n const [isValid, setIsValid] = useState<boolean>(() => {\n const value = form.getValues(input.name);\n const fieldState = form.getFieldState(input.name);\n return !fieldState.error && value !== undefined && value !== \"\";\n });\n\n // Estado local para la hora\n const [time, setTime] = useState<string>(() => form.getValues(input.name) ?? \"\");\n\n useEffect(() => {\n const fieldValue = form.getValues(input.name) ?? \"\";\n if (fieldValue !== time) setTime(fieldValue);\n }, [form.getValues(input.name)]);\n\n return (\n <FormField\n key={input.name}\n control={form.control}\n name={input.name}\n render={({ field, fieldState }) => {\n const validNow = !fieldState.error && field.value !== undefined && field.value !== \"\";\n if (validNow !== isValid) setIsValid(validNow);\n\n const handleChange = (val: string) => {\n setTime(val);\n handleOnChage(val, input, field)\n field.onChange(val);\n };\n\n return (\n <FormItem className={input.className}>\n <FormLabel><b>{input.label}</b></FormLabel>\n <FormControl className=\"shadow-lg\">\n <InputGroup>\n\n {/* Iconos izquierda */}\n {(iconsLeft.length > 0 || textLeft) && (\n <InputGroupAddon>\n {textLeft && <InputGroupText>{textLeft}</InputGroupText>}\n {iconsLeft.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n </InputGroupAddon>\n )}\n\n {/* Input de tipo time */}\n <InputGroupInput\n type=\"time\"\n value={time}\n disabled={input.disabled || isSubmitting}\n onChange={(e) => handleChange(e.target.value)}\n />\n\n {/* Iconos derecha */}\n {(iconsRight.length > 0 || textRight || autoValidate) && (\n <InputGroupAddon align=\"inline-end\">\n {textRight && <InputGroupText>{textRight}</InputGroupText>}\n {iconsRight.map((IconComponent, index) => (\n <IconComponent key={index} size={20} />\n ))}\n\n {autoValidate && (\n <div>\n {isSubmitting\n ? iconLoadingState\n : isValid\n ? iconValidState\n : iconInvalidState}\n </div>\n )}\n </InputGroupAddon>\n )}\n\n </InputGroup>\n </FormControl>\n\n {input.description && <FormDescription>{input.description}</FormDescription>}\n <FormMessage />\n </FormItem>\n );\n }}\n />\n );\n};\n","'use client'\nimport { UseFormReturn } from \"react-hook-form\";\nimport { BaseInput, FieldConfig, FieldProps, InputTypes } from \"./base\";\nimport { \n TextInput,\n SelectInput,\n ColorInput,\n DateInput,\n NumberInput,\n SwitchInput,\n GroupedSwitchInput,\n OTPInput,\n FileInput,\n TextAreaInput,\n TextInputGroup,\n CheckboxInput,\n SimpleCheckListInput,\n RadioGroupInput,\n TagInput,\n DateTimeInput,\n TimeInput,\n FileMultiUploadInput,\n SliderInput,\n ButtonGroupInput,\n CurrencyInput,\n KeyValueListInput,\n RepeaterInput,\n MultiSelectInput,\n ComboboxInput,\n SortableListInput,\n RepeaterTabsInput,\n StringValueListInput,\n // SwitchListInput, // ES LO MISMO QUE => GroupedSwitchInput\n // CheckListInput,\n} from \"./types\";\nimport { JSX } from \"react\";\nimport z, { ZodObject, ZodTypeAny } from \"zod\";\nimport { AccordionGroupedSwitchInput } from \"./types/accordion-grouped-switches\";\nimport { Card } from '@/src/components/ui/card';\n\n\ntype InputClassConstructor = new (\n input: FieldProps,\n form: UseFormReturn,\n isSubmitting?: boolean\n) => BaseInput;\n\n\nconst inputMap: Record<InputTypes, InputClassConstructor> = {\n [InputTypes.TEXT_GROUP]: TextInputGroup,\n [InputTypes.TEXT]: TextInput,\n [InputTypes.SWITCH]: SwitchInput,\n [InputTypes.COLOR]: ColorInput,\n [InputTypes.DATE]: DateInput,\n [InputTypes.NUMBER]: NumberInput,\n [InputTypes.SELECT]: SelectInput,\n [InputTypes.GROUPED_SWITCH_LIST]: GroupedSwitchInput,\n [InputTypes.ACCORDION_GROUPED_SWITCH_LIST]: AccordionGroupedSwitchInput,\n [InputTypes.CHECKBOX]: CheckboxInput,\n [InputTypes.OTP]: OTPInput,\n [InputTypes.FILE]: FileInput,\n [InputTypes.SIMPLE_CHECK_LIST]: SimpleCheckListInput,\n [InputTypes.TEXTAREA]: TextAreaInput,\n [InputTypes.RADIO_GROUP]: RadioGroupInput,\n [InputTypes.TAGS]: TagInput,\n [InputTypes.DATE_TIME]: DateTimeInput,\n [InputTypes.TIME]: TimeInput,\n [InputTypes.FILE_MULTI_UPLOAD]: FileMultiUploadInput,\n [InputTypes.BUTTON_GROUP]: ButtonGroupInput,\n [InputTypes.CURRENCY]: CurrencyInput,\n [InputTypes.KEY_VALUE]: KeyValueListInput,\n [InputTypes.REPEATER]: RepeaterInput,\n [InputTypes.MULTI_SELECT]: MultiSelectInput,\n [InputTypes.COMBOBOX]: ComboboxInput,\n [InputTypes.SORTABLE_LIST]: SortableListInput,\n [InputTypes.REPEATER_TABS]: RepeaterTabsInput,\n [InputTypes.STRING_LIST]: StringValueListInput,\n \n \n //ToDos: ============================================================\n [InputTypes.SLIDER]: SliderInput, //ToDo: // PENDIENTE ... VISUALMENTE NO SE VE BIEN.!!!\n [InputTypes.FORM]: TextInput,\n [InputTypes.HIDDEN]: TextInput,\n [InputTypes.CHECK_LIST]: TextInput,\n // [InputTypes.SWITCH_LIST]: SwitchListInput,\n\n // [InputTypes.RANGE]: TextInput,\n // [InputTypes.MULTISELECT]: TextInput,\n \n // [InputTypes.IMAGE_UPLOAD]: TextInput,\n // [InputTypes.AUDIO_UPLOAD]: TextInput,\n // [InputTypes.VIDEO_UPLOAD]: TextInput,\n \n // [InputTypes.CREDIT_CARD]: TextInput,\n\n};\n\nexport class InputFactory {\n static create<T extends Record<string, any> = Record<string, any>>(\n input: FieldProps<T>,\n form: UseFormReturn<T>,\n isSubmitting: boolean = false\n ): JSX.Element {\n input.form = form\n const inputType = (input.inputType as InputTypes) ?? InputTypes.TEXT;\n\n const InputClass = (inputMap[inputType] ??\n TextInput) as new (\n input: FieldProps<T>,\n form: UseFormReturn<T>,\n isSubmitting: boolean\n ) => { render: () => JSX.Element };\n\n const instance = new InputClass(input, form, isSubmitting);\n\n if (!input.wrapInCard) return instance.render();\n\n return (\n <Card className=\"p-4 space-y-3\">\n {instance.render()}\n </Card>\n );\n }\n}\n\nexport function getDefaultValues<T extends Record<string, any>>(\n entity?: Partial<T>,\n fields?: FieldConfig<T>[]\n): Record<string, any> {\n const defaults: Record<string, any> = {};\n\n if (entity) {\n Object.entries(entity).forEach(([key, value]) => {\n defaults[key] = value ?? \"\";\n });\n }\n\n if (fields) {\n const flatFields = flattenFields(fields); // ✅ aplanado recursivo completo\n for (const field of flatFields) {\n const key = field.name as string;\n if (defaults[key] === undefined) {\n defaults[key] = field.value ?? field.defaultValue ?? \"\";\n }\n }\n }\n\n return defaults;\n}\n\n\n\nconst flattenFields = <T extends Record<string, any>>(fields: FieldConfig<T>[]): FieldProps<T>[] => {\n const result: FieldProps<T>[] = [];\n\n for (const field of fields) {\n if (Array.isArray(field)) {\n result.push(...flattenFields(field));\n } else if ((field as any).fields) {\n result.push(...flattenFields((field as any).fields));\n } else {\n result.push(field);\n }\n }\n\n return result;\n};\n\nexport const getDynamicSchema = <T extends Record<string, any>>(\n fields: FieldConfig<T>[],\n extraValidations?: ((schema: ZodObject<any>) => ZodObject<any>)[]\n): ZodObject<Record<keyof T, ZodTypeAny>> => {\n\n // 🔁 aplanamos el árbol completo de campos\n const flatFields = flattenFields(fields);\n\n // // 🔥 Filtrar solo los visibles\n // const visibleFields = flatFields.filter(f =>\n // !f.showWhen || f.showWhen(values)\n // );\n\n\n // 🎯 construimos el shape del schema\n const shape = flatFields.reduce((acc, f) => {\n acc[f.name as keyof T] = f.zodType ?? z.any();\n return acc;\n }, {} as Record<keyof T, ZodTypeAny>);\n\n let schema: ZodObject<Record<keyof T, ZodTypeAny>> = z.object(shape);\n\n // ⚙️ Aplicar validaciones adicionales si las hay\n if (extraValidations?.length) {\n for (const fn of extraValidations) {\n schema = fn(schema);\n }\n }\n\n return schema;\n};","import { FieldValues, FormState } from \"react-hook-form\";\nimport { CustomAlert } from \"@/src/components/custom/custom-alert\";\nimport { FieldConfig, FieldProps } from \"./definitions\";\n\n// ✅ mismo tipo recursivo que usamos antes\n\n\ninterface Props<T extends FieldValues = Record<string, any>> {\n formState: FormState<any>;\n fields: FieldConfig<T>[]; // 👈 ahora soporta anidación\n}\n\n/**\n * 🔁 Función recursiva para aplanar la estructura de campos\n */\nconst flattenFields = <T extends FieldValues>(\n fields: FieldConfig<T>[]\n): FieldProps<T>[] => {\n const result: FieldProps<T>[] = [];\n\n for (const field of fields) {\n if (Array.isArray(field)) {\n result.push(...flattenFields(field));\n } else if ((field as any).fields) {\n // 👇 si el campo tiene subcampos, también los aplanamos\n result.push(...flattenFields((field as any).fields));\n } else {\n result.push(field);\n }\n }\n\n return result;\n};\n\nexport const FormErrorsAlert = <T extends FieldValues = Record<string, any>>({\n formState,\n fields,\n}: Props<T>) => {\n const flatFields = flattenFields(fields); // ✅ recursivo\n\n const hasErrors = Object.keys(formState.errors).length > 0;\n\n return (\n <div style={{ marginTop: 4 }}>\n {hasErrors && (\n <CustomAlert\n title=\"Revisar los siguientes criterios\"\n description={\n <ul>\n {Object.entries(formState.errors).map(([key, value]) => (\n <li key={key}>\n <strong>{getFieldLabel<T>(key, flatFields)}:</strong>{\" \"}\n {value?.message?.toString() ?? \"\"}\n </li>\n ))}\n </ul>\n }\n className=\"mb-4\"\n variant=\"error\"\n />\n )}\n </div>\n );\n};\n\nexport const getFieldLabel = <T extends FieldValues>(\n fieldErrorKey: string,\n fields: ReadonlyArray<FieldProps<T>>\n): string => {\n const foundField = fields.find((field) => field.name === fieldErrorKey);\n return foundField?.label ?? fieldErrorKey;\n};\n","'use client';\n\nimport { JSX, ReactNode } from \"react\";\nimport { UseFormReturn } from \"react-hook-form\";\nimport { FieldConfig } from \"./base\";\nimport { InputFactory } from \"./input-factory\";\n\ninterface Props<T extends Record<string, any> = Record<string, any>> {\n fields: FieldConfig<T>[];\n form: UseFormReturn<any>;\n readOnly?: boolean;\n isPending?: boolean;\n className?: string;\n gap?: string;\n}\n\nconst isRenderableChild = (c?: ReactNode | ((item: any, index: number) => ReactNode)) =>\n c !== undefined && c !== null && typeof c !== \"function\";\n\nconst shouldShowField = (field: any, values: any): boolean => {\n if (typeof field.showWhen === \"function\") {\n try {\n return !!field.showWhen(values);\n } catch {\n return true; // fallback behavior\n }\n }\n return true;\n};\n\nexport const FormFieldsGrid = <T extends Record<string, any> = Record<string, any>>({\n fields,\n form,\n isPending,\n readOnly,\n className = \"\",\n gap = \"gap-2\",\n}: Props<T>): JSX.Element => {\n const values = form.watch(); // 🚀 valores actuales\n \n\n return (\n <div className={`w-full grid grid-cols-1 ${gap} ${className}`}>\n {fields.map((inputOrGroup, idx) => {\n \n // =============================================\n // 🔥 GRUPO DE CAMPOS [ field1, field2 ]\n // =============================================\n if (Array.isArray(inputOrGroup)) {\n const visibleFields = inputOrGroup.filter((f) =>\n shouldShowField(f, values)\n );\n\n if (visibleFields.length === 0) return null; // Oculta el grupo entero\n\n return (\n <div\n key={`field-group-${idx}`}\n className=\"w-full flex flex-row items-start gap-4 py-3\"\n >\n {visibleFields.map((field, subIdx) => {\n const fieldCopy = {\n ...(field as any),\n disabled: readOnly ? true : (field as any).disabled,\n };\n\n const renderUp =\n fieldCopy.childrenPosition !== \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n const renderDown =\n fieldCopy.childrenPosition === \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n return (\n <div key={`field-${idx}-${subIdx}`} className=\"w-full px-2\">\n {renderUp && <>{fieldCopy.children}</>}\n\n {InputFactory.create(fieldCopy, form, isPending)}\n\n {renderDown && <>{fieldCopy.children}</>}\n </div>\n );\n })}\n </div>\n );\n }\n\n // =============================================\n // 🔥 CAMPO ÚNICO\n // =============================================\n if (!shouldShowField(inputOrGroup, values)) return null;\n\n const fieldCopy = {\n ...(inputOrGroup as any),\n disabled: readOnly ? true : (inputOrGroup as any).disabled,\n };\n\n const renderUp =\n fieldCopy.childrenPosition !== \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n const renderDown =\n fieldCopy.childrenPosition === \"down\" &&\n isRenderableChild(fieldCopy.children);\n\n return (\n <div\n key={`field-single-${idx}`}\n className=\"flex flex-col justify-between py-3 w-full px-2\"\n >\n {renderUp && <>{fieldCopy.children}</>}\n\n {InputFactory.create(fieldCopy, form, isPending)}\n\n {renderDown && <>{fieldCopy.children}</>}\n </div>\n );\n })}\n </div>\n );\n};\n","'use client';\n\nimport { ReactNode, useEffect, useMemo, useTransition } from \"react\";\nimport { useForm, UseFormReturn, DefaultValues, Resolver } from \"react-hook-form\";\nimport { BtnConfig, FieldConfig, FieldProps, flattenFields } from \"./base\";\nimport { getDefaultValues, getDynamicSchema } from \"./input-factory\";\nimport { FormErrorsAlert } from \"./base/form-errors\";\nimport { Button, Card, CardContent, CardDescription, CardTitle, Form } from '@/src/components/ui';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Loader2, Pencil, Save } from \"lucide-react\";\nimport { ZodObject, z } from \"zod\";\nimport { FormFieldsGrid } from \"./FormFieldsGrid\";\nimport { ButtonGroup } from \"@/src/components/ui/button-group\";\nimport { cn } from \"@/src/lib/utils\";\n\ntype alertPositionType = 'up' | 'down';\n\nexport interface FormResp<T> {\n form?: UseFormReturn<any>;\n data: T;\n}\n\ninterface Props<T extends Record<string, any>> {\n showIcon?: boolean;\n showFormHeader?: boolean;\n formTitle: string;\n formSubTitle?: string;\n readOnly?: boolean;\n fields: FieldConfig<T>[];\n record?: Partial<T>;\n onAnyFieldChange?: (data: Record<string,any>) => void;\n onSubmit?: (resp: FormResp<T>) => void;\n onClick?: (resp: FormResp<T>) => void;\n extraValidations?: ((schema: ZodObject<any>) => ZodObject<any>)[];\n withErrorsAlert?: boolean;\n errorAlertPosition?: alertPositionType;\n withCard?: boolean;\n withFormWrapper?: boolean;\n withSubmitBtn?: boolean;\n submitBtnLabel?: string;\n submitBtnLabelSubmiting?: string;\n submitBtnClass?: string;\n btnGroupDirection?: 'flex-start' | 'flex-end' | 'flex-center';\n children?: ReactNode;\n childrenHeader?: ReactNode;\n listBtnConfig?: BtnConfig[];\n debug?:boolean\n\n\n\n isWrapInWizard?: boolean\n currentStep?: number\n totalSteps?: number\n}\n\nexport const DynamicForm = <T extends Record<string, any>>({\n formTitle,\n formSubTitle,\n fields,\n readOnly = false,\n record = {},\n onAnyFieldChange,\n onSubmit,\n onClick,\n extraValidations,\n children,\n childrenHeader,\n showIcon = false,\n showFormHeader = true,\n withErrorsAlert = true,\n errorAlertPosition = 'up',\n withCard = false,\n submitBtnClass=\"\",\n listBtnConfig = [],\n submitBtnLabel = 'Guardar',\n submitBtnLabelSubmiting = 'Guardando...',\n withFormWrapper = true,\n btnGroupDirection = \"flex-end\",\n withSubmitBtn = true,\n debug = false,\n isWrapInWizard = false,\n totalSteps = 0,\n currentStep = 1,\n}: Props<T>) => {\n\n const [isPending, startTransition] = useTransition();\n\n /** ✅ Schema dinámico basado en los campos */\n const schema = useMemo(() => {\n const allFields = flattenFields(fields, onAnyFieldChange);\n return getDynamicSchema<T>(allFields, extraValidations);\n }, [fields, extraValidations]);\n\n type FormData = z.infer<typeof schema>;\n const resolver = zodResolver(schema) as unknown as Resolver<FormData>;\n\n const initialValues = useMemo(() => getDefaultValues<T>(record), [record]);\n\n const form = useForm<FormData>({\n resolver,\n defaultValues: initialValues as unknown as DefaultValues<FormData>,\n });\n\n /** 🔄 Reset cuando cambia record */\n useEffect(() => {\n form.reset(initialValues as unknown as DefaultValues<FormData>);\n // }, [initialValues, form]);\n }, []);\n\n /** 💾 onSubmit */\n const handleSubmit = (data: FormData) => {\n if (readOnly) return;\n startTransition(() => {\n const resp: FormResp<T> = { data: data as unknown as T, form };\n onSubmit?.(resp);\n });\n };\n\n /** 🖱️ onClick con validación */\n const handleClick = async () => {\n if (!onClick) return;\n const isValid = await form.trigger();\n if (!isValid) return;\n\n const data = form.watch() as unknown as T;\n const resp: FormResp<T> = { data, form };\n onClick(resp);\n };\n\n const formBody = (\n <>\n <div className=\"w-full grid grid-cols-1\">\n <FormFieldsGrid\n fields={fields as unknown as FieldConfig<T>[]}\n form={form}\n readOnly={readOnly}\n />\n {children && (\n <div className=\"flex flex-row items-center gap-2 w-full h-full\">\n {children}\n </div>\n )}\n </div>\n\n <ButtonGroup className=\"flex flex-row w-full h-full\" style={{\n justifyContent: btnGroupDirection, // Alinea horizontalmente a la derecha\n alignItems: \"center\", // Centra verticalmente (opcional)\n }}>\n {listBtnConfig.map((btn, key) => (\n <Button\n type={btn.btnType}\n key={key}\n size=\"lg\"\n className={submitBtnClass}\n variant={btn.variant}\n onClick={btn.onClick}\n disabled={btn.disabled}\n >\n {btn.label}\n </Button>\n ))}\n {!readOnly && withSubmitBtn && (\n <Button\n type={onClick ? 'button' : 'submit'}\n size=\"lg\"\n className={cn(submitBtnClass)}\n disabled={isPending}\n onClick={onClick ? handleClick : undefined}\n >\n {isPending ? (\n <>\n {submitBtnLabelSubmiting}\n <Loader2 className=\"h-5 w-5 mr-2 animate-spin\" />\n </>\n ) : (\n <>\n {submitBtnLabel}\n {(totalSteps == 0 || totalSteps == currentStep) && (<Save className=\"h-5 w-5 mr-2\" />)}\n </>\n )}\n </Button>\n )}\n </ButtonGroup>\n </>\n )\n\n /** 🧩 Render del contenido principal del formulario */\n const formContent = (\n <div>\n {showFormHeader && (\n <CardTitle className=\"flex flex-row items-center gap-2 p-2 border-b\">\n <div className=\"flex flex-row items-center gap-2 w-full\">\n {showIcon && <Pencil className=\"h-5 w-5\" />}\n <div className=\"flex flex-col\">\n <div className=\"text-xl\">{formTitle}</div>\n {formSubTitle && <CardDescription>{formSubTitle}</CardDescription>}\n </div>\n </div>\n {childrenHeader && (\n <div className=\"flex flex-row items-center gap-2 w-full h-full\">\n {childrenHeader}\n </div>\n )}\n </CardTitle>\n )}\n\n {withErrorsAlert && errorAlertPosition === 'up' && (\n <FormErrorsAlert\n formState={form.formState}\n fields={fields as unknown as FieldConfig<T>[]}\n />\n )}\n\n {withFormWrapper && (\n <FormWrapper \n form={form} \n isWrapInWizard={isWrapInWizard}\n handleSubmit={handleSubmit}>{formBody}\n </FormWrapper>)\n }\n {!withFormWrapper && (formBody)}\n\n\n {withErrorsAlert && errorAlertPosition === 'down' && (\n <FormErrorsAlert\n formState={form.formState}\n fields={fields.flatMap(f => Array.isArray(f) ? f : [f])}\n />\n )}\n </div>\n );\n\n if (!withCard) return formContent;\n\n return (\n <Card>\n <CardContent>{formContent}</CardContent>\n </Card>\n );\n};\n\n\ninterface FormWrapperProps {\n form:UseFormReturn<any>\n handleSubmit: (data: any) => void\n children: ReactNode;\n readOnly?: boolean\n debug?: boolean\n isWrapInWizard?:boolean\n}\n\nconst FormWrapper = ({form, handleSubmit, children, readOnly, debug, isWrapInWizard}: FormWrapperProps) => {\n const allValues = form.watch();\n return (\n <Form {...form}>\n <form\n onSubmit={form.handleSubmit(handleSubmit)}\n className={`flex flex-col gap-2 ${readOnly ? 'opacity-70 pointer-events-none select-none' : ''}`}\n >\n {children}\n {debug && (\n <pre className=\"mt-4 p-3 bg-muted text-xs rounded\">\n {JSON.stringify(allValues, null, 2)}\n </pre>\n )}\n </form>\n </Form>\n )\n}\n\n\n","\"use client\"\n\nimport { cn } from \"@/src/lib/utils\"\nimport { Check } from \"lucide-react\"\n\ninterface Step {\n title?: string\n description?: string\n}\n\ninterface StepperProps {\n steps: Step[]\n currentStep: number\n clickable?: boolean\n onStepClick?: (step: number) => void\n}\n\nexport function Stepper({ steps, currentStep, clickable = false, onStepClick }: StepperProps) {\n const handleStepClick = (stepNumber: number) => {\n if (clickable && onStepClick) {\n onStepClick(stepNumber)\n }\n }\n\n return (\n <div className=\"w-full\">\n <div className=\"flex flex-row gap-4 items-center justify-around\">\n {steps.map((step, index) => {\n const stepNumber = index + 1\n const isCompleted = stepNumber < currentStep\n const isCurrent = stepNumber === currentStep\n const isUpcoming = stepNumber > currentStep\n\n return (\n <div key={index} className=\"flex flex-1 items-center\">\n <div className=\"flex flex-col items-center\">\n {/* Circle indicator */}\n <div\n onClick={() => handleStepClick(stepNumber)}\n className={cn(\n \"flex size-10 items-center shadow-lg justify-center rounded-full border-2 transition-all duration-300\",\n isCompleted && \"border-primary bg-primary text-primary-foreground\",\n isCurrent && \"border-primary bg-background text-primary scale-110\",\n isUpcoming && \"border-muted-foreground/60 bg-background border-b text-muted-foreground\",\n clickable && \"cursor-pointer hover:scale-125 hover:shadow-xl\",\n !clickable && \"cursor-default\",\n )}\n >\n {isCompleted ? (\n <Check className=\"size-5\" />\n ) : (\n <span className=\"text-sm font-semibold\">{stepNumber}</span>\n )}\n </div>\n\n {/* Step info */}\n {step.title && (\n <div className=\"mt-3 text-center\">\n <p\n className={cn(\n \"text-sm font-medium transition-colors\",\n (isCompleted || isCurrent) && \"text-foreground\",\n isUpcoming && \"text-muted-foreground\",\n )}\n >\n {step.title}\n </p>\n {step.description && (\n <p className=\"mt-1 text-xs text-muted-foreground max-w-[120px]\">{step.description}</p>\n )}\n </div>\n )}\n </div>\n\n {/* Connector line */}\n {index < steps.length - 1 && (\n <div className=\"mx-2 flex-1 mb-8\">\n <div\n className={cn(\n \"h-0.5 w-full transition-all duration-300\",\n stepNumber < currentStep ? \"bg-primary\" : \"bg-muted-foreground/30\",\n )}\n />\n </div>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import { Dispatch, ReactNode, SetStateAction, useState } from \"react\"\nimport { DynamicForm, FormResp } from \"./DynamicForm\";\nimport { FieldConfig, FieldProps } from \"./base/definitions\";\nimport { Stepper } from \"@/src/components/ui/stepper\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Card } from \"@/src/components/ui/card\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\ninterface WizardRenderProps<T> {\n stepFields: FieldProps<T>[]\n currentStep: number\n totalSteps: number,\n setCurrentStep: Dispatch<SetStateAction<number>>\n}\n\ninterface Props<T> {\n onSubmit?: (resp: FormResp<T>) => void;\n fields: FieldConfig<T>[];\n record: any,\n children?: (props: WizardRenderProps<T>) => ReactNode,\n isWrapInWizard?: boolean,\n skipSteps?:boolean,\n}\n\nexport const WizardForm = <T extends Record<string, any>>({\n fields,\n record,\n onSubmit,\n children,\n isWrapInWizard = true,\n skipSteps = false,\n \n}: Props<T>) => {\n\n const [currentStep, setCurrentStep] = useState(1)\n\n const flattenFields = (list: FieldConfig<T>[]): FieldProps<T>[] =>\n list.flatMap((f) => (Array.isArray(f) ? flattenFields(f) : f))\n\n const allFields = flattenFields(fields)\n\n const totalSteps = allFields.reduce(\n (max, f) => Math.max(max, f.step ?? 1),\n 1\n )\n\n const stepFields = allFields.filter((f) => (f.step ?? 1) === currentStep)\n\n return (\n <Card className=\"flex flex-col gap-4 px-4\">\n\n {/* Header con Stepper */}\n <Card>\n <div className=\"flex justify-between mb-4 gap-2 px-4\">\n <Stepper\n steps={Array(totalSteps).fill({})}\n currentStep={currentStep}\n clickable={skipSteps}\n onStepClick={setCurrentStep}\n />\n {/* <div className=\"flex justify-center space-x-4 gap-2\">\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev - 1)}\n disabled={currentStep === 1}\n >\n <ChevronLeftIcon />\n </Button>\n\n <Button\n variant=\"outline\"\n className=\"w-32\"\n onClick={() => setCurrentStep((prev) => prev + 1)}\n disabled={currentStep >= totalSteps}\n >\n <ChevronRightIcon />\n </Button>\n </div> */}\n </div>\n </Card>\n\n {/* 👇 Aquí va el truco: usar children o fallback a DynamicForm */}\n {children ? (\n children({\n stepFields,\n currentStep,\n totalSteps,\n setCurrentStep\n })\n ) : (\n <DynamicForm<T>\n record={record}\n formSubTitle=\"This is a subtitle\"\n formTitle=\"Wizard Form Example\"\n withCard={false}\n errorAlertPosition=\"down\"\n fields={stepFields}\n onSubmit={onSubmit}\n isWrapInWizard={true}\n currentStep={currentStep}\n totalSteps={totalSteps}\n />\n )}\n </Card>\n )\n}\n","\"use client\";\n\nimport z from \"zod\";\nimport { FieldProps, InputTypes, TextInputType } from \"./base\";\nimport { DynamicForm } from \"./DynamicForm\";\nimport validationMessages from \"../input-errors\";\n\ninterface UserFromDB {\n username: string;\n email: string;\n isActive: boolean;\n favoriteColor: undefined;\n age: number;\n role: string;\n}\n\nexport const DynamicFormExample = () => {\n const record: UserFromDB = {\n username: \"John Doe \",\n email: \"johndoe@example.com\",\n isActive: true,\n favoriteColor: undefined,\n age: 25,\n role: \"editor\",\n };\n\n return (\n <DynamicForm\n formTitle=\"User Form\"\n fields={mockFields}\n record={record}\n onSubmit={(data) => console.log(\"📤 Resultado final:\", data)}\n />\n );\n}\n\nexport const mockFields: Array<FieldProps |FieldProps[]> = [\n // 🧍♂️ Campo requerido simple\n {\n name: \"username\",\n label: \"Nombre de usuario\",\n inputType: InputTypes.TEXT,\n required: true,\n zodType: z\n .string()\n .min(3, \"El nombre debe tener al menos 3 caracteres\")\n .max(20, \"El nombre no puede tener más de 20 caracteres\"),\n },\n\n // 📧 Campo de correo con validación personalizada (ZodTypeAny)\n {\n name: \"email\",\n label: \"Correo electrónico\",\n inputType: InputTypes.TEXT,\n required: false,\n zodType: z\n .string()\n .email(\"Correo inválido\")\n .toLowerCase()\n .refine((val) => !val.endsWith(\"@spam.com\"), {\n message: \"No se permiten correos de spam.com\",\n }),\n },\n\n // 🔒 Campo opcional (no requerido)\n {\n name: \"password\",\n label: \"Contraseña\",\n inputType: InputTypes.TEXT,\n required: false,\n keyboardType: TextInputType.PASSWORD,\n zodType: z\n .string()\n .min(6, \"Debe tener al menos 6 caracteres\")\n .max(20, \"No más de 20 caracteres\")\n .optional(),\n },\n\n // 🟢 Campo tipo switch (boolean)\n {\n name: \"isActive\",\n label: \"Usuario activo\",\n inputType: InputTypes.SWITCH,\n required: false,\n zodType: z.boolean().default(true),\n },\n\n // 🎨 Color con validación personalizada\n [ \n {\n name: \"favoriteColor\",\n label: \"Color favorito\",\n inputType: InputTypes.COLOR,\n required: false,\n zodType: z\n .string()\n .regex(/^#([0-9A-Fa-f]{6})$/, \"Debe ser un color hexadecimal válido\"),\n },\n\n // 🔢 Número con rango\n {\n name: \"age\",\n label: \"Edad\",\n inputType: InputTypes.NUMBER,\n required: true,\n zodType: z\n .coerce.number() // fuerza a number\n .min(18, \"Debe ser mayor de 18\")\n .max(99, \"Debe ser menor de 99\"),\n }\n ],\n\n // 📅 Fecha\n {\n name: \"birthDate\",\n label: \"Fecha de nacimiento\",\n inputType: InputTypes.DATE,\n required: true,\n zodType: z.coerce.date().refine((d) => d < new Date(), {\n message: \"La fecha no puede ser futura\",\n }),\n },\n\n // 🎓 Select con validación personalizada\n {\n name: \"role\",\n label: \"Rol de usuario\",\n inputType: InputTypes.SELECT,\n required: true,\n listConfig: {\n onOptionChange: () =>{},\n list: [\n { id: 1, name: \"Administrador\", value: \"admin\" },\n { id: 2, name: \"Editor\", value: \"editor\" },\n { id: 3, name: \"Lector\", value: \"reader\" },\n ]\n },\n zodType: z.enum([\"admin\", \"editor\", \"reader\"]),\n },\n\n // 🧾 Campo tipo archivo (file)\n {\n name: \"profileImage\",\n label: \"Imagen de perfil\",\n inputType: InputTypes.FILE,\n required: false,\n zodType: z\n .any()\n .refine(\n (file) => {\n if (!file) return true;\n return (\n file.size <= 10 * 1024 * 1024 &&\n [\"image/jpeg\", \"image/png\"].includes(file.type)\n );\n },\n { message: \"Solo se permiten imágenes JPG o PNG de menos de 10MB\" }\n )\n .optional(),\n },\n\n // 🔢 OTP (código)\n {\n name: \"otpCode\",\n label: \"Código OTP\",\n inputType: InputTypes.OTP,\n required: true,\n zodType: z\n .string()\n .min(4, \"Debe tener al menos 4 dígitos\")\n .max(6, \"Debe tener máximo 6 dígitos\"),\n },\n ];","import { useState } from \"react\";\nimport { Button } from \"@/src/components/ui/button\";\nimport { Switch } from \"@/src/components/ui/switch\";\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from \"@/src/components/ui/accordion\";\nimport { Plus } from 'lucide-react';\nimport { InputSetup, InputTypes } from \"./form/inputs/base\";\n\ninterface Props {\n handleAddInput: (type: InputTypes, config?: InputSetup) => void;\n inputsTypes: InputTypes[];\n}\n\n\n\nexport const InputList = ({ handleAddInput, inputsTypes, }: Props) => {\n // Estado: un objeto donde la clave es el inputType y el valor su configuración\n const [inputSetups, setInputSetups] = useState<Record<string, InputSetup>>(() =>\n Object.fromEntries(\n inputsTypes.map((type) => [type, { required: false, disabled: false }])\n )\n );\n\n const toggleConfig = (type: string, key: keyof InputSetup) => {\n setInputSetups((prev) => ({\n ...prev,\n [type]: { ...prev[type], [key]: !prev[type][key] },\n }));\n };\n\n return (\n <div className=\"grid grid-cols-1 gap-1\">\n {inputsTypes.map((type) => {\n const setup = inputSetups[type];\n return (\n <div\n key={type}\n className=\"border rounded-lg p-2 flex flex-col-2 gap-1 shadow-sm\"\n >\n <Button size=\"icon\" onClick={() => handleAddInput(type, setup)} >\n <Plus/>\n </Button>\n <Accordion type=\"single\" collapsible className=\"w-full\">\n <AccordionItem value=\"item-1\">\n <AccordionTrigger>\n <div className=\"flex flex-row justify-center w-full content-center\">\n <span className=\"font-semibold text-xl\">{type}</span>\n </div>\n </AccordionTrigger>\n <AccordionContent>\n {/* ✅ Controles para configurar */}\n <div className=\"flex flex-col gap-1\">\n <label className=\"flex items-center gap-2\">\n <Switch\n checked={setup.required}\n onCheckedChange={() => toggleConfig(type, \"required\")}\n />\n <span>Required</span>\n </label>\n\n <label className=\"flex items-center gap-2\">\n <Switch\n checked={setup.disabled}\n onCheckedChange={() => toggleConfig(type, \"disabled\")}\n />\n <span>Disabled</span>\n </label>\n </div>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n\n {/* <div className=\"flex justify-between items-center\">\n \n <Button\n size=\"sm\"\n onClick={() => handleAddInput(type, setup)}\n >\n Agregar\n </Button>\n </div> */}\n\n \n </div>\n );\n })}\n </div>\n );\n};\n","\"use client\"\n\nimport { useState, useEffect, useRef } from \"react\"\nimport { FieldProps, GroupedOption, InputOption, InputTypes } from \"../form/inputs/base\"\nimport { DynamicForm } from \"../form/inputs/DynamicForm\"\nimport { Search } from \"lucide-react\"\n\n\ninterface GenericFilterProps<T> {\n filters?: Array<FieldProps | FieldProps[]>\n pagination?: boolean\n autoSubmit?: boolean\n defaultValues?: Record<string, any>\n initPage?: number\n initLimit?: number\n onChange?: (values: Record<string, any>) => void\n rangeLimit?: number[]\n withSearch?: boolean\n withInitDate?: boolean\n withEndDate?: boolean\n withActive?: boolean\n withLimit?: boolean\n wrapInCard?: boolean\n}\n\ninterface Filter {\n page?: number\n limit?: number\n search?: string\n active?: boolean\n initDate?: Date\n endDate?: Date\n defaultValues?: Record<string, any>\n}\n\n/**\n * ✅ Componente genérico y dinámico de filtro\n */\nexport const GenericFilter = <T,>({\n filters = [],\n pagination,\n autoSubmit = false,\n defaultValues = {},\n initPage = 1,\n initLimit = 10,\n rangeLimit = [10, 25, 50, 100],\n onChange,\n withSearch = true,\n withInitDate = true,\n withEndDate = true,\n withActive = true,\n withLimit = true,\n wrapInCard = true,\n}: GenericFilterProps<T>) => {\n const record: Filter = {\n page: initPage,\n limit: initLimit,\n ...defaultValues,\n }\n\n const [values, setValues] = useState<Filter>(record)\n const isFirstRender = useRef(true)\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n }, [values])\n\n const handleChange = (name: string, value: any) => {\n setValues((prev) => ({ ...prev, [name]: value }))\n if (autoSubmit && onChange) onChange({ ...values, [name]: value })\n }\n\n const handleReset = () => {\n setValues({\n page: initPage,\n limit: initLimit,\n ...defaultValues,\n })\n }\n\n // 🧩 Filtros base (predefinidos)\n const baseFields: FieldProps[] = [\n ...(withSearch\n ? [\n {\n name: \"search\",\n label: \"Buscar\",\n inputType: InputTypes.TEXT_GROUP,\n inputGroupConfig: { iconsLeft: [Search] },\n onChange: (value: any) => handleChange(\"search\", value),\n } as FieldProps,\n ]\n : []),\n ...(withInitDate\n ? [\n {\n name: \"initDate\",\n label: \"Fecha de Inicio\",\n inputType: InputTypes.DATE,\n onChange: (value: any) => handleChange(\"initDate\", value),\n } as FieldProps,\n ]\n : []),\n ...(withEndDate\n ? [\n {\n name: \"endDate\",\n label: \"Fecha Final\",\n inputType: InputTypes.DATE,\n onChange: (value: any) => handleChange(\"endDate\", value),\n } as FieldProps,\n ]\n : []),\n ...(withActive\n ? [\n {\n wrapInCard: true,\n name: \"active\",\n label: \"\",\n inputType: InputTypes.BUTTON_GROUP,\n description: \"Estado\",\n listConfig: {\n list: [\n { id: 1, name: \"Activo\", value: true },\n { id: 2, name: \"Inactivo\", value: false },\n { id: 3, name: \"Todos\", value: undefined },\n ],\n onOptionChange: (item?: InputOption | InputOption[]) => {\n if (Array.isArray(item) && item[0]) handleChange(\"active\", item[0].value)\n else if (item && \"value\" in item) handleChange(\"active\", item.value)\n },\n },\n } as FieldProps,\n ]\n : []),\n ...(withLimit\n ? [\n {\n name: \"limit\",\n label: \"Límite por página\",\n inputType: InputTypes.SELECT,\n listConfig: {\n list: rangeLimit.map((num) => ({\n value: String(num),\n id: num,\n name: String(num),\n })),\n onOptionChange: (item: any) => handleChange(\"limit\", Number(item?.value ?? 10)),\n },\n } as FieldProps,\n ]\n : []),\n ]\n\n \n // 🧱 Combina todos los campos\n const fieldsConfig: Array<FieldProps | FieldProps[]> = [\n ...filters,\n baseFields,\n ]\n\n return (\n <div className=\"flex flex-col md:flex-row md:items-end gap-4 py-3\">\n <div className=\"flex-1\">\n <DynamicForm<Filter>\n withCard={wrapInCard}\n withSubmitBtn={!autoSubmit}\n formTitle=\"\"\n submitBtnLabel=\"Buscar\"\n fields={fieldsConfig}\n record={values}\n showFormHeader={false}\n onSubmit={({ data }) => {\n if (onChange && !autoSubmit) onChange(data)\n }}\n />\n </div>\n </div>\n )\n}\n"]}
|