orynn 0.2.0 → 0.5.0

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/cx.ts","../src/internal/icons.tsx","../src/controls/Checkbox/Checkbox.tsx","../src/core/state/use-latest-ref.ts","../src/core/state/use-controllable-state.ts","../src/controls/Field/Field.tsx","../src/controls/Checkbox/CheckboxGroup.tsx","../src/internal/FieldBox.tsx","../src/internal/Popover.tsx","../src/controls/DatePicker/date-utils.ts","../src/controls/DatePicker/Calendar.tsx","../src/controls/DatePicker/DatePicker.tsx","../src/controls/Dropdown/Dropdown.tsx","../src/controls/Input/Input.tsx","../src/controls/NumberField/NumberField.tsx","../src/controls/Radio/Radio.tsx","../src/controls/Textarea/Textarea.tsx","../src/internal/dev.ts","../src/core/registry/registry.ts","../src/layout/resolve-columns.ts","../src/core/config/normalize.ts","../src/core/validation/messages.ts","../src/core/validation/rules.ts","../src/core/validation/resolver.ts","../src/core/state/reducer.ts","../src/core/state/use-fieldset-state.ts","../src/layout/FieldGrid.tsx","../src/fieldset/FieldRenderer.tsx","../src/fieldset/register-builtins.tsx","../src/fieldset/Fieldset.tsx","../src/theme/theme.ts","../src/theme/OrynnProvider.tsx","../src/types/validation.ts"],"names":["Checkbox","jsxs","jsx","useRef","useId","useCallback","forwardRef","FieldBox","useState","useEffect","len","DatePicker","Fragment","Dropdown","useMemo","Input","NumberField","base","createContext","sizePx","Radio","useContext","Textarea","pad","useLayoutEffect","registry","defaultRegistry"],"mappings":";;;;;;;;;;;;AACO,SAAS,MAAM,KAAA,EAAyD;AAC7E,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACvC;ACCA,IAAM,IAAA,GAAO,CAAC,KAAA,MAAiC;AAAA,EAC7C,KAAA,EAAO,KAAA;AAAA,EACP,MAAA,EAAQ,KAAA;AAAA,EACR,OAAA,EAAS,WAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,cAAA;AAAA,EACR,WAAA,EAAa,CAAA;AAAA,EACb,aAAA,EAAe,OAAA;AAAA,EACf,cAAA,EAAgB,OAAA;AAAA,EAChB,aAAA,EAAe,IAAA;AAAA,EACf,SAAA,EAAW,KAAA;AAAA,EACX,GAAG;AACL,CAAA,CAAA;AAEO,IAAM,SAAA,GAAY,CAAC,CAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,mBAAkB,CAAA,EAC5B,CAAA;AAGK,IAAM,SAAA,GAAY,CAAC,CAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAW,CAAA,EACrB,CAAA;AAGK,IAAM,QAAA,GAAW,CAAC,CAAA,qBACvB,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oBAAmB,CAAA,EAC7B,CAAA;AAGK,IAAM,eAAA,GAAkB,CAAC,CAAA,qBAC9B,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gBAAe,CAAA,EACzB,CAAA;AAGK,IAAM,eAAA,GAAkB,CAAC,CAAA,qBAC9B,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kBAAiB,CAAA,EAC3B,CAAA;AAGK,IAAM,gBAAA,GAAmB,CAAC,CAAA,qBAC/B,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iBAAgB,CAAA,EAC1B,CAAA;AAGK,IAAM,KAAA,GAAQ,CAAC,CAAA,qBACpB,GAAA,CAAC,KAAA,EAAA,EAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,wBAAuB,CAAA,EACjC,CAAA;AAUK,IAAM,cAAc,CAAC,CAAA,yBACzB,KAAA,EAAA,EAAK,GAAG,KAAK,EAAE,SAAA,EAAW,YAAA,EAAc,GAAG,GAAG,CAAA,EAC7C,8BAAC,MAAA,EAAA,EAAK,CAAA,EAAE,4BAA2B,CAAA,EACrC,CAAA;AAGK,IAAM,OAAA,GAAU,CAAC,CAAA,qBACtB,IAAA,CAAC,SAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,kDAAA,EAAmD,CAAA;AAAA,sBAC1D,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI;AAAA,CAAA,EAChC,CAAA;AAGK,IAAM,UAAA,GAAa,CAAC,CAAA,qBACzB,IAAA,CAAC,SAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,4HAAA,EAA6H,CAAA;AAAA,kBACrI,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,sCAAA,EAAuC;AAAA,CAAA,EACjD,CAAA;AAGK,IAAM,YAAA,GAAe,CAAC,CAAA,qBAC3B,IAAA,CAAC,SAAK,GAAG,IAAA,CAAK,CAAC,CAAA,EACb,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,OAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,CAAA;AAAA,kBAChD,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,uBAAA,EAAwB;AAAA,CAAA,EAClC,CAAA;AClEK,IAAM,oBAAA,GAAuB,cAAgD,IAAI,CAAA;AAiCxF,IAAM,MAAA,GAAsC;AAAA,EAC1C,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,UAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,QAAA,mBAA2B,UAAA;AAAA,EACtC,SAASA,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM,KAAA,GAAQ,WAAW,oBAAoB,CAAA;AAC7C,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,cAAA;AAAA,MACA,aAAA,GAAgB,KAAA;AAAA,MAChB,QAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,QAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,GAAU,QAAA;AAAA,MACV,cAAA,GAAiB,KAAA;AAAA,MACjB,IAAA;AAAA,MACA,IAAA;AAAA,MACA,iBAAA;AAAA,MACA,SAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA,EAAM,QAAA;AAAA,MACN,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAU,KAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,QAAA,GAAW,OAAgC,IAAI,CAAA;AAErD,IAAA,MAAM,OAAA,GAAU,KAAA,IAAS,IAAA,IAAQ,KAAA,IAAS,IAAA;AAC1C,IAAA,MAAM,eAAe,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA,GAAI,MAAA;AAC7D,IAAA,MAAM,YAAA,GAAe,WAAA,KAAgB,MAAA,IAAa,YAAA,KAAiB,MAAA;AACnE,IAAA,MAAM,OAAA,GAAU,eAAe,YAAA,IAAgB,MAAA;AAE/C,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,IAAA;AACxC,IAAA,MAAM,WACJ,YAAA,IACA,KAAA,EAAO,QAAA,IACN,OAAA,IAAW,YAAY,IAAA,IAAQ,KAAA,CAAM,mBAAA,CAAoB,KAAK,KAC9D,OAAA,IAAW,OAAA,KAAY,QAAQ,KAAA,CAAM,iBAAA,CAAkB,KAAK,CAAA,IAC7D,KAAA;AAEF,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,QAAA,CAAS,OAAA,EAAS,QAAA,CAAS,OAAA,CAAQ,aAAA,GAAgB,aAAA;AAAA,IACzD,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqC;AACzD,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,IAAA,GAAO,EAAE,MAAA,CAAO,OAAA;AACtB,MAAA,QAAA,GAAW,MAAM,CAAC,CAAA;AAClB,MAAA,IAAI,OAAA,EAAS,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA;AAAA,IACvC,CAAA;AAEA,IAAA,uBACEC,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,IAAA,IAAQ,oBAAA;AAAA,UACR,YAAY,SAAA,IAAa,uBAAA;AAAA,UACzB,mBAAmB,OAAA,IAAW,qBAAA;AAAA,UAC9B;AAAA,SACF;AAAA,QACA,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,KAAA,EAAO,EAAE,oBAAA,EAAsB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,QAE5C,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACE,GAAG,IAAA;AAAA,cACJ,GAAA,EAAK,CAAC,CAAA,KAAM;AACV,gBAAA,QAAA,CAAS,OAAA,GAAU,CAAA;AACnB,gBAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,CAAC,CAAA;AAAA,qBAAA,IAC3B,GAAA,EAAM,GAAA,CAAwD,OAAA,GAAU,CAAA;AAAA,cACnF,CAAA;AAAA,cACA,IAAA,EAAK,UAAA;AAAA,cACL,SAAA,EAAU,sBAAA;AAAA,cACV,EAAA;AAAA,cACA,IAAA,EAAM,YAAY,KAAA,EAAO,IAAA;AAAA,cACzB,KAAA;AAAA,cACA,OAAA,EAAS,YAAA,GAAe,OAAA,CAAQ,OAAO,CAAA,GAAI,MAAA;AAAA,cAC3C,cAAA,EAAgB,eAAe,MAAA,GAAY,cAAA;AAAA,cAC3C,QAAA;AAAA,cACA,QAAA;AAAA,cACA,gBAAc,OAAA,IAAW,MAAA;AAAA,cACzB,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAwD,eAAY,MAAA,EAClF,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,UAAK,SAAA,EAAU,8CAAA,EACb,kCAAQA,GAAAA,CAAC,aAAU,CAAA,EACtB,CAAA;AAAA,4BACAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+CACb,QAAA,EAAA,iBAAA,oBAAqBA,GAAAA,CAAC,SAAA,EAAA,EAAU,CAAA,EACnC;AAAA,WAAA,EACF,CAAA;AAAA,UAAA,CACE,KAAA,IAAS,QAAQ,WAAA,IAAe,IAAA,qBAChCD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EACb,QAAA,EAAA;AAAA,YAAA,KAAA,IAAS,wBAAQC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC9D,eAAe,IAAA,oBAAQA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAsB,QAAA,EAAA,WAAA,EAAY;AAAA,WAAA,EAC5E;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;ACxKO,SAAS,aAAgB,KAAA,EAAU;AACxC,EAAA,MAAM,GAAA,GAAMC,OAAO,KAAK,CAAA;AACxB,EAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AACd,EAAA,OAAO,GAAA;AACT;;;ACEO,SAAS,oBAAA,CAAwB;AAAA,EACtC,KAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAIuD;AACrD,EAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAY,YAAY,CAAA;AAEhE,EAAA,MAAM,OAAA,GAAU,eAAgB,KAAA,GAAc,YAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,aAAa,OAAO,CAAA;AACvC,EAAA,MAAM,WAAA,GAAc,aAAa,QAAQ,CAAA;AACzC,EAAA,MAAM,eAAA,GAAkB,aAAa,YAAY,CAAA;AAEjD,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,CAAC,IAAA,KAA+B;AAC3D,IAAA,MAAM,WACJ,OAAO,IAAA,KAAS,aAAc,IAAA,CAAwB,UAAA,CAAW,OAAO,CAAA,GAAI,IAAA;AAC9E,IAAA,IAAI,MAAA,CAAO,EAAA,CAAG,QAAA,EAAU,UAAA,CAAW,OAAO,CAAA,EAAG;AAC7C,IAAA,IAAI,CAAC,eAAA,CAAgB,OAAA,EAAS,eAAA,CAAgB,QAAQ,CAAA;AACtD,IAAA,WAAA,CAAY,UAAU,QAAQ,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,CAAC,SAAS,QAAQ,CAAA;AAC3B;AC/BA,SAAS,WAAW,KAAA,EAA4B;AAC9C,EAAA,IAAI,KAAA,IAAS,IAAA,EAAM,OAAO,EAAC;AAC3B,EAAA,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAA,EAAG,MAAA,CAAO,CAAC,CAAA,KAAmB,OAAA,CAAQ,CAAC,CAAC,CAAA;AACvF;AAEA,SAAS,WAAW,GAAA,EAAoD;AACtE,EAAA,MAAM,OAAO,GAAA,CAAI,MAAA,CAAO,CAAC,EAAA,KAAqB,OAAA,CAAQ,EAAE,CAAC,CAAA;AACzD,EAAA,OAAO,KAAK,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAC5C;AAeO,SAAS,MAAM,KAAA,EAAmB;AACvC,EAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,OAAA,EAAS,UAAU,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,QAAA,EAAS,GAC7F,KAAA;AAEF,EAAA,MAAM,UAAUC,KAAAA,EAAM;AACtB,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,IAAM,OAAA;AAEvB,EAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,EAAA,MAAM,OAAA,GAAU,SAAS,MAAA,GAAS,CAAA;AAClC,EAAA,MAAM,aAAa,CAAC,OAAA,IAAW,OAAO,OAAA,KAAY,QAAA,IAAY,UAAU,OAAA,GAAU,MAAA;AAClF,EAAA,MAAM,QAAQ,CAAC,OAAA,KAAY,OAAA,KAAY,IAAA,IAAQ,QAAQ,UAAU,CAAA,CAAA;AAEjE,EAAA,MAAM,aAAA,GAAgB,WAAA,IAAe,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,YAAA,CAAA,GAAiB,MAAA;AAClE,EAAA,MAAM,OAAA,GAAU,OAAA,GAAU,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,UAAA,GAAa,CAAA,EAAG,EAAE,CAAA,QAAA,CAAA,GAAa,MAAA;AACjD,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,aAAA,EAAe,OAAA,EAAS,SAAS,CAAA;AAE/D,EAAA,MAAM,MAA0B,EAAE,EAAA,EAAI,eAAe,OAAA,EAAS,KAAA,EAAO,UAAU,QAAA,EAAS;AAExF,EAAA,uBACEH,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA;AAAA,MACtC,gBAAc,OAAA,IAAW,MAAA;AAAA,MACzB,cAAY,KAAA,IAAS,MAAA;AAAA,MACrB,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,iBAAe,QAAA,IAAY,MAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,IAAA,IAAQ,CAAC,SAAA,oBACjBC,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,oBAAA,EAAqB,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAE,UACzD,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAGD,WAAA,IAAe,wBACdA,GAAAA,CAAC,OAAE,SAAA,EAAU,0BAAA,EAA2B,EAAA,EAAI,aAAA,EACzC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,wBAGFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACZ,QAAA,EAAA,OAAO,QAAA,KAAa,UAAA,GAAa,QAAA,CAAS,GAAG,CAAA,GAAI,QAAA,EACpD,CAAA;AAAA,QAEC,OAAA,oBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oBAAA,EAAqB,EAAA,EAAI,OAAA,EAAS,IAAA,EAAK,OAAA,EACjD,QAAA,EAAA,QAAA,CAAS,MAAA,KAAW,CAAA,GAAI,SAAS,CAAC,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,qBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAc,QAAA,EAAA,CAAA,EAAA,EAAJ,CAAM,CAAO,CAAA,EACrF,CAAA;AAAA,QAED,8BACCA,GAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,oBAAA;AAAA,YACV,EAAA,EAAI,SAAA;AAAA,YACJ,KAAA,EAAO,EAAE,KAAA,EAAO,4BAAA,EAA6B;AAAA,YAE5C,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AChDO,SAAS,cAAc,KAAA,EAA2B;AACvD,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,IAAA;AAAA,IACA,KAAA,EAAO,SAAA;AAAA,IACP,YAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,GAAA;AAAA,IACA,GAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA,EAAI;AAAA,GACN,GAAI,KAAA;AAEJ,EAAA,MAAM,UAAUE,KAAAA,EAAM;AACtB,EAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,EAAA,MAAM,OAAO,QAAA,IAAY,EAAA;AACzB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAA+B;AAAA,IACvD,KAAA,EAAO,SAAA;AAAA,IACP,YAAA,EAAc,gBAAgB,EAAC;AAAA,IAC/B,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,MAAA,GAASC,WAAAA;AAAA,IACb,CAAC,GAAW,IAAA,KAAkB;AAC5B,MAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,KAAK,CAAA;AACzB,MAAA,IAAI,IAAA,EAAM,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA;AAAA,WACd,GAAA,CAAI,OAAO,CAAC,CAAA;AACjB,MAAA,MAAM,GAAA,GAAM,CAAC,GAAG,GAAG,CAAA;AACnB,MAAA,QAAA,CAAS,GAAG,CAAA;AACZ,MAAA,QAAA,GAAW,GAAG,CAAA;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,QAAA,EAAU,QAAQ;AAAA,GAC5B;AAEA,EAAA,MAAM,GAAA,GAAM,OAAA;AAAA,IACV,OAAO;AAAA,MACL,IAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,mBAAA,EAAqB,MAAM,GAAA,IAAO,IAAA,IAAQ,MAAM,MAAA,IAAU,GAAA;AAAA,MAC1D,iBAAA,EAAmB,CAAC,CAAA,KAAM,GAAA,IAAO,IAAA,IAAQ,KAAA,CAAM,MAAA,IAAU,GAAA,IAAO,CAAC,KAAA,CAAM,QAAA,CAAS,CAAC;AAAA,KACnF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,KAAA,EAAO,QAAQ,QAAA,EAAU,IAAA,EAAM,KAAK,GAAG;AAAA,GAChD;AAEA,EAAA,uBACEH,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA;AAAA,MAEC,QAAA,EAAA,sBACCA,GAAAA,CAAC,oBAAA,CAAqB,UAArB,EAA8B,KAAA,EAAO,KACpC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,iBAAA,EAAiB,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,UACjD,SAAA,EAAW,GAAG,oBAAoB,CAAA;AAAA,UAClC,kBAAA,EAAkB,WAAA;AAAA,UAEjB,QAAA,EAAA,OAAA,GACG,OAAA,CAAQ,GAAA,CAAI,CAAC,sBACXA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,aAAa,CAAA,CAAE,WAAA;AAAA,cACf,UAAU,CAAA,CAAE;AAAA,aAAA;AAAA,YAJP,CAAA,CAAE;AAAA,WAMV,CAAA,GACD;AAAA;AAAA,OACN,EACF;AAAA;AAAA,GAEJ;AAEJ;AC9FO,IAAM,2BAA2BI,UAAAA;AAAA,EACtC,SAASC,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM;AAAA,MACJ,IAAA,GAAO,IAAA;AAAA,MACP,OAAA,GAAU,SAAA;AAAA,MACV,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIC,SAAS,KAAK,CAAA;AACpD,IAAA,MAAM,YAAY,OAAA,IAAW,WAAA;AAE7B,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAkC;AACrD,MAAA,IAAI,OAAA,KAAY,MAAA,EAAW,cAAA,CAAe,IAAI,CAAA;AAC9C,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AACA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAkC;AACpD,MAAA,IAAI,OAAA,KAAY,UAAa,CAAC,CAAA,CAAE,cAAc,QAAA,CAAS,CAAA,CAAE,aAAqB,CAAA,EAAG;AAC/E,QAAA,cAAA,CAAe,KAAK,CAAA;AAAA,MACtB;AACA,MAAA,MAAA,GAAS,CAAC,CAAA;AAAA,IACZ,CAAA;AAEA,IAAA,uBACEP,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,WAAA;AAAA,UACA,iBAAiB,IAAA,IAAQ,qBAAA;AAAA,UACzB,QAAA,IAAY,qBAAA;AAAA,UACZ;AAAA,SACF;AAAA,QACA,WAAA,EAAW,IAAA;AAAA,QACX,cAAA,EAAc,OAAA;AAAA,QACd,aAAA,EAAa,MAAA;AAAA,QACb,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,cAAY,KAAA,IAAS,MAAA;AAAA,QACrB,gBAAc,SAAA,IAAa,MAAA;AAAA,QAC3B,aAAA,EAAa,UAAU,SAAA,IAAa,MAAA;AAAA,QACpC,aAAW,IAAA,IAAQ,MAAA;AAAA,QACnB,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ,UAAA;AAAA,QACP,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,IAAA,IAAQ,wBAAQC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAwB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UAC7D,QAAA;AAAA,UACA,aAAA;AAAA,UACA,SAAS,IAAA,oBAAQA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAwB,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,KAClE;AAAA,EAEJ;AACF;AC1FA,IAAM,kBAAA,GAAqB,OAAO,MAAA,KAAW,WAAA,GAAcO,SAAAA,GAAY,eAAA;AA6BhE,SAAS,OAAA,CAAQ;AAAA,EACtB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,CAAA;AAAA,EACT,SAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAAiB;AACf,EAAA,MAAM,QAAA,GAAWN,OAA8B,IAAI,CAAA;AACnD,EAAA,MAAM,MAAA,GAAS,CAAC,EAAA,KAA8B;AAC5C,IAAA,QAAA,CAAS,OAAA,GAAU,EAAA;AACnB,IAAA,IAAI,UAAA,aAAuB,OAAA,GAAU,EAAA;AAAA,EACvC,CAAA;AACA,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIK,SAAqB,IAAI,CAAA;AAE/C,EAAA,kBAAA,CAAmB,MAAM;AACvB,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AACzB,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,MAAM,CAAA,GAAI,OAAO,qBAAA,EAAsB;AACvC,MAAA,MAAM,KAAK,MAAA,CAAO,WAAA;AAClB,MAAA,MAAM,KAAA,GAAQ,EAAA,GAAK,CAAA,CAAE,MAAA,GAAS,MAAA;AAC9B,MAAA,MAAM,KAAA,GAAQ,EAAE,GAAA,GAAM,MAAA;AACtB,MAAA,MAAM,MAAA,GAAS,QAAA,CAAS,OAAA,EAAS,YAAA,IAAgB,GAAA;AACjD,MAAA,MAAM,WAAW,KAAA,GAAQ,IAAA,CAAK,IAAI,MAAA,EAAQ,GAAG,KAAK,KAAA,GAAQ,KAAA;AAC1D,MAAA,MAAA,CAAO;AAAA,QACL,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,KAAK,QAAA,GAAW,CAAA,CAAE,GAAA,GAAM,MAAA,GAAS,EAAE,MAAA,GAAS,MAAA;AAAA,QAC5C,OAAO,CAAA,CAAE,KAAA;AAAA,QACT,SAAA,EAAW,WAAW,KAAA,GAAQ,QAAA;AAAA,QAC9B,WAAW,IAAA,CAAK,GAAA,CAAI,MAAM,QAAA,GAAW,KAAA,GAAQ,SAAS,CAAC;AAAA,OACxD,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,MAAA,EAAO;AACP,IAAA,MAAM,KAAK,OAAO,cAAA,KAAmB,cAAc,IAAI,cAAA,CAAe,MAAM,CAAA,GAAI,MAAA;AAChF,IAAA,EAAA,EAAI,QAAQ,MAAM,CAAA;AAClB,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,MAAM,CAAA;AACxC,IAAA,OAAO,MAAM;AACX,MAAA,EAAA,EAAI,UAAA,EAAW;AACf,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AACjD,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAAA,IAC7C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAW,MAAM,CAAC,CAAA;AAE5B,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAoB;AACzC,MAAA,MAAM,IAAI,CAAA,CAAE,MAAA;AACZ,MAAA,IAAI,QAAA,CAAS,SAAS,QAAA,CAAS,CAAC,KAAK,SAAA,CAAU,OAAA,EAAS,QAAA,CAAS,CAAC,CAAA,EAAG;AACrE,MAAA,OAAA,EAAQ;AAAA,IACV,CAAA;AACA,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAqB;AAClC,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAA,EAAe,aAAA,EAAe,IAAI,CAAA;AAC5D,IAAA,QAAA,CAAS,gBAAA,CAAiB,SAAA,EAAW,KAAA,EAAO,IAAI,CAAA;AAChD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAA,EAAe,aAAA,EAAe,IAAI,CAAA;AAC/D,MAAA,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,KAAA,EAAO,IAAI,CAAA;AAAA,IACrD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAW,OAAO,CAAC,CAAA;AAE7B,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,aAAa,WAAA,IAAe,CAAC,KAAK,OAAO,IAAA;AAE7D,EAAA,OAAO,YAAA;AAAA,oBACLP,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,MAAA;AAAA,QACL,EAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,QACxC,KAAA,EAAO;AAAA,UACL,MAAM,GAAA,CAAI,IAAA;AAAA,UACV,KAAK,GAAA,CAAI,GAAA;AAAA,UACT,KAAA,EAAO,UAAA,GAAa,GAAA,CAAI,KAAA,GAAQ,MAAA;AAAA,UAChC,UAAU,GAAA,CAAI,KAAA;AAAA,UACd,WAAW,GAAA,CAAI,SAAA;AAAA,UACf,SAAA,EAAW,GAAA,CAAI,SAAA,KAAc,KAAA,GAAQ,mBAAA,GAAsB;AAAA,SAC7D;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF;;;ACtIO,IAAM,UAAA,GAAa,CAAC,CAAA,KAAY,IAAI,IAAA,CAAK,CAAA,CAAE,WAAA,EAAY,EAAG,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA,CAAE,SAAS,CAAA;AAEnF,IAAM,SAAA,GAAY,CAAC,CAAA,EAAgB,CAAA,KACxC,CAAC,CAAC,CAAA,IACF,CAAC,CAAC,CAAA,IACF,CAAA,CAAE,WAAA,EAAY,KAAM,EAAE,WAAA,EAAY,IAClC,CAAA,CAAE,QAAA,EAAS,KAAM,CAAA,CAAE,QAAA,EAAS,IAC5B,CAAA,CAAE,OAAA,EAAQ,KAAM,CAAA,CAAE,OAAA,EAAQ;AAErB,IAAM,OAAA,GAAU,CAAC,CAAA,EAAS,CAAA,KAAc;AAC7C,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,CAAA,CAAE,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAQ,GAAI,CAAC,CAAA;AACzB,EAAA,OAAO,CAAA;AACT,CAAA;AAEO,IAAM,SAAA,GAAY,CAAC,CAAA,EAAS,CAAA,KAAc;AAC/C,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA,CAAE,WAAA,IAAe,CAAA,CAAE,QAAA,EAAS,GAAI,CAAA,EAAG,CAAC,CAAA;AACvD,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,OAAA,EAAQ,EAAG,WAAA,CAAY,CAAA,CAAE,WAAA,EAAY,EAAG,CAAA,CAAE,QAAA,EAAU,CAAC,CAAA;AAC5E,EAAA,CAAA,CAAE,QAAQ,GAAG,CAAA;AACb,EAAA,OAAO,CAAA;AACT,CAAA;AAEO,IAAM,WAAA,GAAc,CAAC,IAAA,EAAc,KAAA,KAAkB,IAAI,IAAA,CAAK,IAAA,EAAM,KAAA,GAAQ,CAAA,EAAG,CAAC,CAAA,CAAE,OAAA,EAAQ;AAE1F,IAAM,SAAA,GAAY,CAAC,CAAA,EAAS,GAAA,EAAY,GAAA,KAAe;AAC5D,EAAA,IAAI,OAAO,CAAA,GAAI,UAAA,CAAW,GAAG,CAAA,EAAG,OAAO,WAAW,GAAG,CAAA;AACrD,EAAA,IAAI,OAAO,CAAA,GAAI,UAAA,CAAW,GAAG,CAAA,EAAG,OAAO,WAAW,GAAG,CAAA;AACrD,EAAA,OAAO,CAAA;AACT,CAAA;AAEA,IAAM,GAAA,GAAM,CAAC,CAAA,EAAWQ,IAAAA,GAAM,CAAA,KAAM,OAAO,CAAC,CAAA,CAAE,QAAA,CAASA,IAAAA,EAAK,GAAG,CAAA;AAGxD,SAAS,UAAA,CAAW,CAAA,EAAS,GAAA,EAAa,MAAA,EAAyB;AACxE,EAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,KAAA,EAAO,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA;AAC7E,EAAA,MAAM,UAAA,GAAa,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,KAAA,EAAO,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA;AAC/E,EAAA,OAAO,GAAA,CACJ,QAAQ,OAAA,EAAS,MAAA,CAAO,EAAE,WAAA,EAAa,CAAC,CAAA,CACxC,OAAA,CAAQ,OAAA,EAAS,SAAS,CAAA,CAC1B,OAAA,CAAQ,QAAQ,UAAU,CAAA,CAC1B,QAAQ,KAAA,EAAO,GAAA,CAAI,CAAA,CAAE,QAAA,EAAS,GAAI,CAAC,CAAC,CAAA,CACpC,OAAA,CAAQ,OAAO,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,CAC/B,OAAA,CAAQ,QAAA,EAAU,MAAA,CAAO,EAAE,QAAA,EAAS,GAAI,CAAC,CAAC,CAAA,CAC1C,OAAA,CAAQ,UAAU,MAAA,CAAO,CAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAC1C;AAGO,SAAS,SAAA,CAAU,OAAe,GAAA,EAA0B;AACjE,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA;AAC/B,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,MAAM,KAAA,GAAA,CAAS,GAAA,CAAI,KAAA,CAAM,iBAAiB,KAAK,CAAC,MAAA,EAAQ,IAAA,EAAM,IAAI,GAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAC,CAAA;AACpF,EAAA,IAAI,CAAA;AACJ,EAAA,IAAI,CAAA;AACJ,EAAA,IAAI,EAAA;AACJ,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,KAAM;AACtB,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,CAAC,CAAC,CAAA;AACxB,IAAA,IAAI,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAG;AACrB,IAAA,IAAI,MAAM,GAAA,EAAK,CAAA,GAAI,CAAA,GAAI,GAAA,GAAM,MAAO,CAAA,GAAI,CAAA;AAAA,SAAA,IAC/B,CAAA,KAAM,GAAA,EAAK,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,SAAA,IACnB,CAAA,KAAM,KAAK,EAAA,GAAK,CAAA;AAAA,EAC3B,CAAC,CAAA;AACD,EAAA,IAAI,KAAK,IAAA,IAAQ,CAAA,IAAK,IAAA,IAAQ,EAAA,IAAM,MAAM,OAAO,IAAA;AACjD,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAA,EAAG,GAAG,EAAE,CAAA;AAC3B,EAAA,OAAO,OAAO,KAAA,CAAM,CAAA,CAAE,OAAA,EAAS,IAAI,IAAA,GAAO,CAAA;AAC5C;AAEO,SAAS,OAAO,CAAA,EAAkD;AACvE,EAAA,IAAI,CAAA,IAAK,MAAM,OAAO,IAAA;AACtB,EAAA,IAAI,CAAA,YAAa,IAAA,EAAM,OAAO,MAAA,CAAO,KAAA,CAAM,CAAA,CAAE,OAAA,EAAS,CAAA,GAAI,IAAA,GAAO,UAAA,CAAW,CAAC,CAAA;AAC7E,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,CAAC,CAAA;AACpB,EAAA,OAAO,MAAA,CAAO,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,GAAI,IAAA,GAAO,WAAW,CAAC,CAAA;AACxD;AAGO,SAAS,WAAA,CAAY,QAAA,EAAkB,SAAA,EAAmB,cAAA,EAAgC;AAC/F,EAAA,MAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,QAAA,EAAU,WAAW,CAAC,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAA,CAAU,KAAA,CAAM,MAAA,EAAO,GAAI,iBAAiB,CAAA,IAAK,CAAA;AACvD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,EAAO,CAAC,MAAM,CAAA;AACpC,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAC,CAAA;AAC/D;AAEO,SAAS,aAAA,CAAc,gBAAwB,MAAA,EAA2B;AAC/E,EAAA,MAAM,GAAA,GAAM,IAAI,IAAA,CAAK,cAAA,CAAe,QAAQ,EAAE,OAAA,EAAS,SAAS,CAAA;AAEhE,EAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,QAAQ,CAAA,EAAE;AAAA,IAAG,CAAC,CAAA,EAAG,CAAA,KACnC,GAAA,CAAI,MAAA,CAAO,IAAI,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,CAAA,GAAA,CAAM,cAAA,GAAiB,CAAA,IAAK,CAAE,CAAC;AAAA,GAC9D;AACF;AAEO,SAAS,QAAQ,CAAA,EAAiB;AACvC,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,CAAE,WAAA,EAAY,EAAG,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA,CAAE,OAAA,EAAS,CAAC,CAAA;AAC1E,EAAA,MAAM,MAAA,GAAA,CAAU,IAAA,CAAK,SAAA,EAAU,GAAI,CAAA,IAAK,CAAA;AACxC,EAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,UAAA,EAAW,GAAI,SAAS,CAAC,CAAA;AAC9C,EAAA,MAAM,aAAA,GAAgB,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAK,cAAA,EAAe,EAAG,CAAA,EAAG,CAAC,CAAC,CAAA;AACpE,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,EAAQ,GAAI,cAAc,OAAA,EAAQ;AACpD,EAAA,OAAO,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,GAAI,EAAA,GAAK,OAAO,GAAA,CAAK,CAAA;AACrD;ACnEO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA,GAAiB,CAAA;AAAA,EACjB,MAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,KAAA,GAAQ,UAAA,iBAAW,IAAI,IAAA,EAAM,CAAA;AACnC,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,SAAA,CAAU,KAAA,EAAO,SAAS,OAAO,CAAA;AAC1D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIF,SAAS,EAAE,CAAA,EAAG,OAAA,CAAQ,WAAA,EAAY,EAAG,CAAA,EAAG,OAAA,CAAQ,QAAA,IAAY,CAAA;AACpF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAe,OAAO,CAAA;AACpD,EAAA,MAAM,OAAA,GAAUL,OAAgC,IAAI,CAAA;AAEpD,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CAAQ,EAAE,GAAG,KAAA,CAAM,WAAA,IAAe,CAAA,EAAG,KAAA,CAAM,QAAA,EAAS,EAAG,CAAA;AACvD,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAiC,uBAAuB,CAAA,EAAG,KAAA,EAAM;AAAA,IACpF;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,QAAQ,WAAA,CAAY,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,GAAG,cAAc,CAAA;AACxD,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,cAAA,EAAgB,MAAM,CAAA;AACrD,EAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,CAAA,CAAE,MAAA;AAAA,IACpF,IAAI,IAAA,CAAK,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,GAAG,CAAC;AAAA,GAC5B;AAEA,EAAA,MAAM,aAAa,CAAC,CAAA,KACjB,WAAW,IAAA,IAAQ,CAAA,GAAI,WAAW,OAAO,CAAA,IACzC,OAAA,IAAW,IAAA,IAAQ,IAAI,UAAA,CAAW,OAAO,KAC1C,OAAA,CAAQ,UAAA,GAAa,CAAC,CAAC,CAAA;AAEzB,EAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAY;AACxB,IAAA,MAAM,CAAA,GAAI,SAAA,CAAU,CAAA,EAAG,OAAA,EAAS,OAAO,CAAA;AACvC,IAAA,UAAA,CAAW,CAAC,CAAA;AACZ,IAAA,OAAA,CAAQ,EAAE,GAAG,CAAA,CAAE,WAAA,IAAe,CAAA,EAAG,CAAA,CAAE,QAAA,EAAS,EAAG,CAAA;AAC/C,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAiC,uBAAuB,CAAA,EAAG,KAAA,EAAM;AAAA,IACpF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB;AACtC,IAAA,MAAM,IAAI,CAAA,CAAE,GAAA;AACZ,IAAA,IAAI,IAAA,GAAoB,IAAA;AACxB,IAAA,IAAI,CAAA,KAAM,WAAA,EAAa,IAAA,GAAO,OAAA,CAAQ,SAAS,EAAE,CAAA;AAAA,SAAA,IACxC,CAAA,KAAM,YAAA,EAAc,IAAA,GAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,SAAA,IAC7C,CAAA,KAAM,SAAA,EAAW,IAAA,GAAO,OAAA,CAAQ,SAAS,EAAE,CAAA;AAAA,SAAA,IAC3C,CAAA,KAAM,WAAA,EAAa,IAAA,GAAO,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,SAAA,IAC5C,CAAA,KAAM,MAAA,EAAQ,IAAA,GAAO,OAAA,CAAQ,OAAA,EAAS,EAAA,CAAG,OAAA,CAAQ,MAAA,EAAO,GAAI,cAAA,GAAiB,CAAA,IAAK,CAAA,CAAE,CAAA;AAAA,SAAA,IACpF,CAAA,KAAM,KAAA;AACb,MAAA,IAAA,GAAO,OAAA,CAAQ,SAAS,CAAA,GAAA,CAAM,OAAA,CAAQ,QAAO,GAAI,cAAA,GAAiB,KAAK,CAAE,CAAA;AAAA,SAAA,IAClE,CAAA,KAAM,UAAU,IAAA,GAAO,SAAA,CAAU,SAAS,CAAA,CAAE,QAAA,GAAW,MAAM,EAAE,CAAA;AAAA,SAAA,IAC/D,CAAA,KAAM,YAAY,IAAA,GAAO,SAAA,CAAU,SAAS,CAAA,CAAE,QAAA,GAAW,KAAK,CAAC,CAAA;AAAA,SAAA,IAC/D,CAAA,KAAM,OAAA,IAAW,CAAA,KAAM,GAAA,EAAK;AACnC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,CAAC,UAAA,CAAW,OAAO,CAAA,WAAY,OAAO,CAAA;AAC1C,MAAA;AAAA,IACF,CAAA,MAAO;AACP,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,IAAA,CAAK,IAAI,CAAA;AAAA,EACX,CAAA;AAEA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,MAAM,OAAO,OAAA,GAAU,OAAA,CAAQ,WAAA,EAAY,GAAI,KAAK,CAAA,GAAI,EAAA;AACxD,EAAA,MAAM,OAAO,OAAA,GAAU,OAAA,CAAQ,WAAA,EAAY,GAAI,KAAK,CAAA,GAAI,EAAA;AACxD,EAAA,KAAA,IAAS,CAAA,GAAI,MAAM,CAAA,IAAK,IAAA,EAAM,KAAK,CAAA,EAAG,KAAA,CAAM,KAAK,CAAC,CAAA;AAElD,EAAA,uBACER,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,qBAAA;AAAA,UACV,YAAA,EAAW,gBAAA;AAAA,UACX,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,EAAE,CAAA,KAAM,CAAA,GAAI,EAAE,CAAA,GAAI,CAAA,GAAI,EAAE,CAAA,EAAG,CAAA,EAAA,CAAI,EAAE,CAAA,GAAI,EAAA,IAAM,IAAG,CAAE,CAAA;AAAA,UAEpF,QAAA,kBAAAA,IAAC,eAAA,EAAA,EAAgB;AAAA;AAAA,OACnB;AAAA,sBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,wBAAA;AAAA,YACV,YAAA,EAAW,OAAA;AAAA,YACX,OAAO,IAAA,CAAK,CAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,GAAG,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,KAAK,GAAE,CAAE,CAAA;AAAA,YAEpE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAG,EAAG,CAAC,CAAA,EAAG,CAAA,qBAC9BA,GAAAA,CAAC,QAAA,EAAA,EAAe,KAAA,EAAO,GACpB,QAAA,EAAA,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,KAAA,EAAO,MAAA,EAAQ,EAAE,MAAA,CAAO,IAAI,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,CAAC,CAAC,CAAA,EAAA,EADpE,CAEb,CACD;AAAA;AAAA,SACH;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,wBAAA;AAAA,YACV,YAAA,EAAW,MAAA;AAAA,YACX,OAAO,IAAA,CAAK,CAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,GAAG,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,KAAK,GAAE,CAAE,CAAA;AAAA,YAEpE,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,GAAAA,CAAC,QAAA,EAAA,EAAe,KAAA,EAAO,CAAA,EACpB,QAAA,EAAA,CAAA,EAAA,EADU,CAEb,CACD;AAAA;AAAA;AACH,OAAA,EACF,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,qBAAA;AAAA,UACV,YAAA,EAAW,YAAA;AAAA,UACX,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,OAAO,EAAE,CAAA,EAAG,EAAE,CAAA,KAAM,EAAA,GAAK,EAAE,CAAA,GAAI,CAAA,GAAI,EAAE,CAAA,EAAG,CAAA,EAAA,CAAI,EAAE,CAAA,GAAI,CAAA,IAAK,IAAG,CAAE,CAAA;AAAA,UAEpF,QAAA,kBAAAA,IAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA;AACpB,KAAA,EACF,CAAA;AAAA,IAAO,GAAA;AAAA,oBACPD,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,SAAA,EAAU,sBAAA;AAAA,QACV,IAAA,EAAK,MAAA;AAAA,QACL,YAAA,EAAY,SAAA;AAAA,QACZ,SAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAD,IAAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA;AAAA,YAAA,eAAA,oBAAmBC,GAAAA,CAAC,IAAA,EAAA,EAAG,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,YAC1C,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,qBACbA,GAAAA,CAAC,IAAA,EAAA,EAAW,KAAA,EAAM,KAAA,EACf,QAAA,EAAA,CAAA,EAAA,EADM,CAET,CACD;AAAA,WAAA,EACH,CAAA,EACF,CAAA;AAAA,0BACAA,GAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,IAAA,KAAS;AACtC,YAAA,MAAM,MAAM,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA,EAAG,IAAA,GAAO,IAAI,CAAC,CAAA;AAC9C,YAAA,MAAM,UAAA,GAAa,IAAI,CAAC,CAAA;AACxB,YAAA,uBACED,KAAC,IAAA,EAAA,EACE,QAAA,EAAA;AAAA,cAAA,eAAA,oBACCC,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAU,yBAAA,EAA2B,QAAA,EAAA,OAAA,CAAQ,UAAU,CAAA,EAAE,CAAA;AAAA,cAE9D,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,KAAM;AACd,gBAAA,MAAM,OAAA,GAAU,CAAA,CAAE,QAAA,EAAS,KAAM,IAAA,CAAK,CAAA;AACtC,gBAAA,MAAM,QAAA,GAAW,WAAW,CAAC,CAAA;AAC7B,gBAAA,MAAM,QAAA,GAAW,SAAA,CAAU,CAAA,EAAG,KAAK,CAAA;AACnC,gBAAA,MAAM,SAAA,GAAY,SAAA,CAAU,CAAA,EAAG,OAAO,CAAA;AACtC,gBAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAyB,MAAK,UAAA,EAAW,eAAA,EAAe,UACvD,QAAA,kBAAAA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAU,qBAAA;AAAA,oBACV,QAAA,EAAU,YAAY,CAAA,GAAI,EAAA;AAAA,oBAC1B,gBAAc,SAAA,IAAa,MAAA;AAAA,oBAC3B,cAAA,EAAc,CAAC,OAAA,IAAW,MAAA;AAAA,oBAC1B,YAAA,EAAY,SAAA,CAAU,CAAA,EAAG,KAAK,CAAA,IAAK,MAAA;AAAA,oBACnC,iBAAe,QAAA,IAAY,MAAA;AAAA,oBAC3B,QAAA;AAAA,oBACA,YAAA,EAAY,IAAI,IAAA,CAAK,cAAA,CAAe,QAAQ,EAAE,SAAA,EAAW,MAAA,EAAQ,CAAA,CAAE,MAAA;AAAA,sBACjE;AAAA,qBACF;AAAA,oBACA,SAAS,MAAM;AACb,sBAAA,UAAA,CAAW,CAAC,CAAA;AACZ,sBAAA,QAAA,CAAS,CAAC,CAAA;AAAA,oBACZ,CAAA;AAAA,oBAEC,YAAE,OAAA;AAAQ;AAAA,iBACb,EAAA,EAnBO,CAAA,CAAE,WAAA,EAoBX,CAAA;AAAA,cAEJ,CAAC;AAAA,aAAA,EAAA,EAhCM,UAAA,CAAW,aAiCpB,CAAA;AAAA,UAEJ,CAAC,CAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,IAAA,CACE,aAAa,SAAA,qBACbD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,SAAA,mBACCC,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,SAAA,EAAU,wBAAA;AAAA,UACV,QAAA,EAAU,WAAW,KAAK,CAAA;AAAA,UAC1B,OAAA,EAAS,MAAM,QAAA,CAAS,KAAK,CAAA;AAAA,UAC9B,QAAA,EAAA;AAAA;AAAA,OAED,mBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA;AAAA,MAEP,SAAA,oBACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAU,wBAAA,EAAyB,OAAA,EAAS,OAAA,EAAS,QAAA,EAAA,OAAA,EAE3E;AAAA,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;AC7MO,IAAM,6BAA6BI,UAAAA;AAAA,EACxC,SAASK,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA,GAAS,YAAA;AAAA,MACT,OAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA,GAAiB,CAAA;AAAA,MACjB,MAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA,GAAY,IAAA;AAAA,MACZ,SAAA;AAAA,MACA,MAAA,GAAS,KAAA;AAAA,MACT,UAAA,GAAa,IAAA;AAAA,MACb,aAAA,GAAgB,IAAA;AAAA,MAChB;AAAA,KACF,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAUP,KAAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,OAAA,GAAU,GAAG,EAAE,CAAA,IAAA,CAAA;AAErB,IAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,IAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAII,SAAsB,MAAM,MAAA,CAAO,YAAY,CAAC,CAAA;AAC1E,IAAA,MAAM,KAAA,GAAQ,YAAA,GAAe,MAAA,CAAO,SAAS,CAAA,GAAI,KAAA;AAEjD,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtC,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,QAAAA,CAAS,MAAO,KAAA,GAAQ,UAAA,CAAW,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAA,GAAI,EAAG,CAAA;AACvF,IAAA,MAAM,MAAA,GAASL,OAA8B,IAAI,CAAA;AACjD,IAAA,MAAM,QAAA,GAAWA,OAAgC,IAAI,CAAA;AAErD,IAAAM,UAAU,MAAM;AACd,MAAA,OAAA,CAAQ,QAAQ,UAAA,CAAW,KAAA,EAAO,MAAA,EAAQ,MAAM,IAAI,EAAE,CAAA;AAAA,IACxD,CAAA,EAAG,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAC,CAAA;AAE1B,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAY;AAClC,MAAA,IAAI,KAAA,CAAM,QAAQ,aAAa,CAAA;AAC7B,QAAA,OAAO,aAAA,CAAc,KAAK,CAAC,CAAA,KAAM,UAAU,UAAA,CAAW,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA;AAC9D,MAAA,OAAO,OAAA,CAAQ,aAAA,GAAgB,CAAC,CAAC,CAAA;AAAA,IACnC,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAmB;AACjC,MAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,CAAC,CAAA;AAC7B,MAAA,QAAA,GAAW,CAAC,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAY;AAC1B,MAAA,IAAI,cAAA,CAAe,CAAC,CAAA,EAAG;AACvB,MAAA,MAAA,CAAO,UAAA,CAAW,CAAC,CAAC,CAAA;AACpB,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,MAC1B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAuC;AACxD,MAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,MACnB,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,IAAA,EAAM;AACrC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,OAAA,EAAS;AAC5B,QAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA;AACrC,QAAA,IAAI,MAAA,IAAU,CAAC,cAAA,CAAe,UAAA,CAAW,MAAM,CAAC,CAAA,SAAU,MAAM,CAAA;AAAA,MAClE;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,sBACJP,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,QAAA,EAAU,MAAA;AAAA,QACV,OAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,QACZ,cAAA;AAAA,QACA,MAAA;AAAA,QACA,eAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAS,MAAM;AACb,UAAA,MAAA,CAAO,IAAI,CAAA;AACX,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,QACf,CAAA;AAAA,QACA,SAAA,EAAY,QAAQ,SAAA,IAAc;AAAA;AAAA,KACpC;AAGF,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,uBACEA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA;AAAA,UACA,EAAA;AAAA,UACA,SAAA;AAAA,UAEC,QAAA,EAAA,sBACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EAAgB,KAAA,EAAO,EAAE,QAAA,EAAU,QAAA,EAAS,EACxD,QAAA,EAAA,GAAA,EACH;AAAA;AAAA,OAEJ;AAAA,IAEJ;AAEA,IAAA,MAAM,WAAW,KAAA,IAAS,IAAA;AAE1B,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,EAAA;AAAA,QACA,SAAA;AAAA,QAEC,QAAA,EAAA,CAAC,EAAE,aAAA,EAAe,OAAA,EAAS,OAAM,qBAChCD,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,MAAA;AAAA,cACL,IAAA;AAAA,cACA,OAAA;AAAA,cACA,MAAA;AAAA,cACA,QAAA;AAAA,cACA,OAAA;AAAA,cACA,KAAA;AAAA,cACA,IAAA;AAAA,cACA,MAAA,EAAQ,QAAA,IAAY,IAAA,CAAK,MAAA,GAAS,CAAA;AAAA,cAClC,aAAA,EACE,aAAA,mBACEA,GAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,kBAAA,EAAmB,OAAA,EAAS,EAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE,MAAA;AAAA,cAEN,KAAA,kBACED,IAAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,gBAAA,SAAA,IAAa,QAAA,IAAY,CAAC,QAAA,IAAY,CAAC,4BACtCC,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAU,oBAAA;AAAA,oBACV,YAAA,EAAW,OAAA;AAAA,oBACX,QAAA,EAAU,EAAA;AAAA,oBACV,SAAS,MAAM;AACb,sBAAA,MAAA,CAAO,IAAI,CAAA;AACX,sBAAA,OAAA,IAAU;AAAA,oBACZ,CAAA;AAAA,oBAEA,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAM;AAAA;AAAA,iBACT;AAAA,gCAEFA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAU,oBAAA;AAAA,oBACV,YAAA,EAAW,eAAA;AAAA,oBACX,eAAA,EAAc,QAAA;AAAA,oBACd,eAAA,EAAe,IAAA;AAAA,oBACf,QAAA;AAAA,oBACA,SAAS,MAAM;AACb,sBAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,sBAAA,YAAA,CAAa,IAAI,CAAA;AACjB,sBAAA,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,oBACnB,CAAA;AAAA,oBAEA,QAAA,kBAAAA,IAAC,YAAA,EAAA,EAAa;AAAA;AAAA;AAChB,eAAA,EACF,CAAA;AAAA,cAGF,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,CAAC,CAAA,KAAM;AACV,oBAAA,QAAA,CAAS,OAAA,GAAU,CAAA;AACnB,oBAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,CAAC,CAAA;AAAA,yBAAA,IAC3B,GAAA;AACP,sBAAC,IAAwD,OAAA,GAAU,CAAA;AAAA,kBACvE,CAAA;AAAA,kBACA,EAAA;AAAA,kBACA,IAAA;AAAA,kBACA,SAAA,EAAU,kBAAA;AAAA,kBACV,IAAA,EAAK,MAAA;AAAA,kBACL,SAAA,EAAU,SAAA;AAAA,kBACV,YAAA,EAAa,KAAA;AAAA,kBACb,IAAA,EAAK,UAAA;AAAA,kBACL,eAAA,EAAe,IAAA;AAAA,kBACf,eAAA,EAAe,OAAA;AAAA,kBACf,eAAA,EAAc,QAAA;AAAA,kBACd,gBAAc,OAAA,IAAW,MAAA;AAAA,kBACzB,kBAAA,EAAkB,aAAA;AAAA,kBAClB,KAAA,EAAO,IAAA;AAAA,kBACP,QAAA;AAAA,kBACA,QAAA,EAAU,CAAC,UAAA,IAAc,QAAA;AAAA,kBACzB,QAAA;AAAA,kBACA,WAAA,EAAa,aAAA,GAAgB,MAAA,GAAa,WAAA,IAAe,OAAO,WAAA,EAAY;AAAA,kBAC5E,UAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBACvC,SAAA;AAAA,kBACA,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,kBAC3B,QAAQ,MAAM;AACZ,oBAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,EAAM,MAAM,CAAA;AACrC,oBAAA,IAAI,UAAU,CAAC,cAAA,CAAe,UAAA,CAAW,MAAM,CAAC,CAAA,EAAG;AACjD,sBAAA,MAAA,CAAO,UAAA,CAAW,MAAM,CAAC,CAAA;AACzB,sBAAA,OAAA,CAAQ,WAAW,UAAA,CAAW,MAAM,CAAA,EAAG,MAAA,EAAQ,MAAM,CAAC,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,CAAQ,QAAQ,UAAA,CAAW,KAAA,EAAO,MAAA,EAAQ,MAAM,IAAI,EAAE,CAAA;AAAA,oBACxD;AAAA,kBACF;AAAA;AAAA;AACF;AAAA,WACF;AAAA,0BAEAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,SAAA,EAAW,MAAA;AAAA,cACX,SAAS,MAAM;AACb,gBAAA,OAAA,CAAQ,KAAK,CAAA;AACb,gBAAA,YAAA,CAAa,KAAK,CAAA;AAAA,cACpB,CAAA;AAAA,cACA,UAAA,EAAY,KAAA;AAAA,cACZ,EAAA,EAAI,OAAA;AAAA,cACJ,IAAA,EAAK,QAAA;AAAA,cAEJ,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AC3OA,IAAM,OAAA,GAAU,CAAC,CAAA,KACf,CAAA,IAAK,IAAA,GAAO,EAAC,GAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAA;AAE5C,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,KAAA,EAAM,EAAoC;AACnE,EAAA,IAAI,CAAC,KAAA,EAAO,uBAAOA,GAAAA,CAAAU,QAAAA,EAAA,EAAG,QAAA,EAAA,IAAA,EAAK,CAAA;AAC3B,EAAA,MAAM,IAAI,IAAA,CAAK,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AACxD,EAAA,IAAI,IAAI,CAAA,EAAG,uBAAOV,GAAAA,CAAAU,QAAAA,EAAA,EAAG,QAAA,EAAA,IAAA,EAAK,CAAA;AAC1B,EAAA,uBACEX,IAAAA,CAAAW,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,KAAA,CAAM,GAAG,CAAC,CAAA;AAAA,oBAChBV,IAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,MAAM,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAM,CAAA,EAAE,CAAA;AAAA,IACtC,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,KAAA,CAAM,MAAM;AAAA,GAAA,EAC9B,CAAA;AAEJ;AAEO,IAAM,2BAA2BI,UAAAA;AAAA,EACtC,SAASO,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,UAAA,GAAa,KAAA;AAAA,MACb,UAAA,GAAa,UAAA;AAAA,MACb,QAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA,GAAe,YAAA;AAAA,MACf,gBAAgB,CAAC,QAAA;AAAA,MACjB,iBAAA;AAAA,MACA,MAAA,GAAS,KAAA;AAAA,MACT;AAAA,KACF,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAUT,KAAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,MAAA,GAAS,GAAG,EAAE,CAAA,QAAA,CAAA;AAEpB,IAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,IAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAII,SAAmB,MAAM,OAAA,CAAQ,YAAY,CAAC,CAAA;AACxE,IAAA,MAAM,cAAA,GAAiB,YAAA,GAAe,OAAA,CAAQ,SAAS,CAAA,GAAI,KAAA;AAE3D,IAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAmB;AACjC,MAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,IAAI,CAAA;AAChC,MAAA,QAAA,GAAW,QAAA,GAAW,IAAA,GAAQ,IAAA,CAAK,CAAC,KAAK,IAAK,CAAA;AAAA,IAChD,CAAA;AAEA,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,SAAS,KAAK,CAAA;AACtC,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,CAAC,CAAA;AAChD,IAAA,MAAM,MAAA,GAASL,OAA8B,IAAI,CAAA;AACjD,IAAA,MAAM,QAAA,GAAWA,OAAgC,IAAI,CAAA;AACrD,IAAA,MAAM,OAAA,GAAUA,OAA8B,IAAI,CAAA;AAElD,IAAA,MAAM,UAAUW,OAAAA,CAAQ,MAAM,IAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,OAAO,CAAC,CAAC,CAAC,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAClF,IAAA,MAAM,eAAA,GAAkB,cAAA,CACrB,GAAA,CAAI,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA,CACzB,MAAA,CAAO,OAAO,CAAA;AAEjB,IAAA,MAAM,QAAA,GAAWA,QAAQ,MAAM;AAC7B,MAAA,IAAI,CAAC,UAAA,IAAc,CAAC,KAAA,EAAO,OAAO,OAAA;AAClC,MAAA,MAAM,CAAA,GAAI,MAAM,WAAA,EAAY;AAC5B,MAAA,MAAM,QACJ,QAAA,KACC,CAAC,MACA,UAAA,KAAe,YAAA,GACX,EAAE,KAAA,CAAM,WAAA,EAAY,CAAE,UAAA,CAAW,CAAC,CAAA,GAClC,CAAA,CAAE,MAAM,WAAA,EAAY,CAAE,SAAS,CAAC,CAAA,CAAA;AACxC,MAAA,OAAO,QAAQ,MAAA,CAAO,CAAC,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,CAAC,CAAA;AAAA,IAC9C,GAAG,CAAC,OAAA,EAAS,YAAY,KAAA,EAAO,UAAA,EAAY,QAAQ,CAAC,CAAA;AAGrD,IAAA,MAAM,IAAA,GAAOA,QAAQ,MAAM;AACzB,MAAA,MAAM,MAGF,EAAC;AACL,MAAA,IAAI,SAAA;AACJ,MAAA,IAAI,WAAA,GAAc,CAAA;AAClB,MAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,QAAA,IAAI,CAAA,CAAE,KAAA,IAAS,CAAA,CAAE,KAAA,KAAU,SAAA,EAAW;AACpC,UAAA,SAAA,GAAY,CAAA,CAAE,KAAA;AACd,UAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,CAAA,CAAE,OAAO,CAAA;AAAA,QAC5C;AACA,QAAA,GAAA,CAAI,KAAK,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,CAAA,EAAG,aAAa,CAAA;AACnD,QAAA,WAAA,IAAe,CAAA;AAAA,MACjB;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,IAAA,MAAM,iBAAA,GAAoB,QAAA;AAC1B,IAAAL,UAAU,MAAM;AACd,MAAA,cAAA,CAAe,CAAC,CAAA,KAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,CAAC,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAG,iBAAA,CAAkB,MAAA,GAAS,CAAC,CAAC,CAAC,CAAA;AAAA,IAC3F,CAAA,EAAG,CAAC,iBAAA,CAAkB,MAAM,CAAC,CAAA;AAE7B,IAAAA,UAAU,MAAM;AACd,MAAA,IAAI,CAAC,IAAA,EAAM,QAAA,CAAS,EAAE,CAAA;AAAA,IACxB,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,MAAM,GAAA,GAAM,kBAAkB,SAAA,CAAU,CAAC,MAAM,cAAA,CAAe,QAAA,CAAS,CAAA,CAAE,KAAK,CAAC,CAAA;AAC/E,MAAA,OAAO,GAAA,IAAO,IAAI,GAAA,GAAM,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAAA,UAAU,MAAM;AACd,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,OAAA,EAAS,aAAA,CAA2B,sBAAsB,CAAA;AAC7E,MAAA,EAAA,EAAI,cAAA,GAAiB,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,IAC3C,CAAA,EAAG,CAAC,WAAA,EAAa,IAAI,CAAC,CAAA;AAEtB,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,QAAA,IAAY,YAAY,IAAA,EAAM;AAClC,MAAA,cAAA,CAAe,oBAAoB,CAAA;AACnC,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO,CAAC,GAAA,KAAwB;AACpC,MAAA,IAAI,IAAI,QAAA,EAAU;AAClB,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,GAAA,GAAM,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAC7C,QAAA,MAAA;AAAA,UACE,GAAA,GAAM,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,GAAA,CAAI,KAAK,CAAA,GAAI,CAAC,GAAG,cAAA,EAAgB,IAAI,KAAK;AAAA,SACrF;AACA,QAAA,QAAA,CAAS,EAAE,CAAA;AAAA,MACb,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,CAAC,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,MACpB;AACA,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,MAC1B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,MAAA,CAAO,EAAE,CAAA;AACT,MAAA,OAAA,IAAU;AACV,MAAA,QAAA,CAAS,EAAE,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAuC;AACxD,MAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,WAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,IAAA,EAAM;AACT,YAAA,SAAA,EAAU;AACV,YAAA,cAAA,CAAe,oBAAoB,CAAA;AAAA,UACrC,CAAA,MAAO;AACL,YAAA,cAAA,CAAe,CAAC,MAAM,IAAA,CAAK,GAAA,CAAI,kBAAkB,MAAA,GAAS,CAAA,EAAG,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,UACrE;AACA,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,IAAA,EAAM;AACT,YAAA,SAAA,EAAU;AACV,YAAA,cAAA,CAAe,oBAAoB,CAAA;AAAA,UACrC,CAAA,MAAO;AACL,YAAA,cAAA,CAAe,CAAC,CAAA,KAAM,IAAA,CAAK,IAAI,CAAA,EAAG,CAAA,GAAI,CAAC,CAAC,CAAA;AAAA,UAC1C;AACA,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,cAAA,CAAe,CAAC,CAAA;AAAA,UAClB;AACA,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,cAAA,CAAe,iBAAA,CAAkB,SAAS,CAAC,CAAA;AAAA,UAC7C;AACA,UAAA;AAAA,QACF,KAAK,OAAA;AACH,UAAA,IAAI,IAAA,IAAQ,iBAAA,CAAkB,WAAW,CAAA,EAAG;AAC1C,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,IAAA,CAAK,iBAAA,CAAkB,WAAW,CAAC,CAAA;AAAA,UACrC;AACA,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,UACf;AACA,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,IAAI,CAAC,MAAM,SAAA,EAAU;AAAA,iBAAA,IACZ,kBAAkB,WAAW,CAAA,EAAG,IAAA,CAAK,iBAAA,CAAkB,WAAW,CAAC,CAAA;AAAA,UAC9E;AACA,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,IAAI,QAAA,IAAY,KAAA,KAAU,EAAA,IAAM,cAAA,CAAe,SAAS,CAAA,EAAG;AACzD,YAAA,MAAA,CAAO,cAAA,CAAe,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAAA,UACpC;AACA,UAAA;AAAA,QACF,KAAK,KAAA;AACH,UAAA,OAAA,CAAQ,KAAK,CAAA;AACb,UAAA;AAAA;AACJ,IACF,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,eAAe,MAAA,GAAS,CAAA;AACzC,IAAA,MAAM,cAAc,cAAA,IAAkB,UAAA;AAGtC,IAAA,IAAI,MAAA,IAAU,CAAC,QAAA,IAAY,CAAC,UAAA,EAAY;AACtC,MAAA,uBACEP,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA;AAAA,UACA,EAAA;AAAA,UACA,SAAA;AAAA,UAEC,QAAA,EAAA,CAAC,EAAE,aAAA,EAAe,OAAA,uBACjBD,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,EAAA;AAAA,cACA,IAAA;AAAA,cACA,SAAA,EAAU,gBAAA;AAAA,cACV,KAAA,EAAO,cAAA,CAAe,CAAC,CAAA,IAAK,EAAA;AAAA,cAC5B,QAAA;AAAA,cACA,QAAA;AAAA,cACA,gBAAc,OAAA,IAAW,MAAA;AAAA,cACzB,kBAAA,EAAkB,aAAA;AAAA,cAClB,QAAA,EAAU,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,GAAI,EAAE,CAAA;AAAA,cAE7D,QAAA,EAAA;AAAA,gBAAA,WAAA,IAAe,IAAA,oBACdC,GAAAA,CAAC,QAAA,EAAA,EAAO,OAAM,EAAA,EAAG,QAAA,EAAU,UACxB,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,gBAED,QAAQ,GAAA,CAAI,CAAC,CAAA,qBACZA,IAAC,QAAA,EAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,UAAU,CAAA,CAAE,QAAA,EAC/C,YAAE,KAAA,EAAA,EADQ,CAAA,CAAE,KAEf,CACD;AAAA;AAAA;AAAA;AACH;AAAA,OAEJ;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,EAAA;AAAA,QACA,SAAA;AAAA,QAEC,QAAA,EAAA,CAAC,EAAE,aAAA,EAAe,OAAA,EAAS,OAAM,qBAChCD,IAAAA,CAAAW,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAV,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,MAAA;AAAA,cACL,IAAA;AAAA,cACA,OAAA;AAAA,cACA,MAAA;AAAA,cACA,QAAA;AAAA,cACA,OAAA;AAAA,cACA,KAAA;AAAA,cACA,IAAA;AAAA,cACA,MAAA,EAAQ,QAAA;AAAA,cACR,SAAS,MAAM;AACb,gBAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AACxB,gBAAA,SAAA,EAAU;AAAA,cACZ,CAAA;AAAA,cACA,aAAA,EACE,aAAA,mBACEA,GAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,kBAAA,EAAmB,OAAA,EAAS,EAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE,MAAA;AAAA,cAEN,KAAA,kBACED,IAAAA,CAAAW,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,gBAAA,OAAA,oBAAWV,IAAC,WAAA,EAAA,EAAY,CAAA;AAAA,gBACxB,aAAa,QAAA,IAAY,CAAC,QAAA,IAAY,CAAC,4BACtCA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAU,oBAAA;AAAA,oBACV,YAAA,EAAW,OAAA;AAAA,oBACX,QAAA,EAAU,EAAA;AAAA,oBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,sBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,sBAAA,QAAA,EAAS;AAAA,oBACX,CAAA;AAAA,oBAEA,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAM;AAAA;AAAA,iBACT;AAAA,gBAED,SAAS,CAAC,OAAA,oBAAWA,GAAAA,CAAC,SAAA,EAAA,EAAU,WAAU,oBAAA,EAAqB,CAAA;AAAA,gCAChEA,GAAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,uBAAA,EAAwB;AAAA,eAAA,EACrD,CAAA;AAAA,cAGF,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,gBAAA,YAAA;AAAA,gBACA,QAAA,IAAY,gBAAgB,MAAA,GAAS,CAAA,oBACpCA,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,CAAA,iBAAA,GACE,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,iBAAiB,CAAA,GAC1C,eAAA,EACF,GAAA,CAAI,CAAC,CAAA,qBACLA,IAAAA,CAAC,MAAA,EAAA,EAAmB,WAAU,oBAAA,EAC5B,QAAA,EAAA;AAAA,oCAAAC,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,KAAA,EAAM,CAAA;AAAA,oCACfA,GAAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,QAAA;AAAA,wBACL,YAAA,EAAY,CAAA,OAAA,EAAU,CAAA,CAAE,KAAK,CAAA,CAAA;AAAA,wBAC7B,QAAA,EAAU,EAAA;AAAA,wBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,0BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,0BAAA,MAAA,CAAO,eAAe,MAAA,CAAO,CAAC,MAAM,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,wBACpD,CAAA;AAAA,wBAEA,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAM;AAAA;AAAA;AACT,mBAAA,EAAA,EAZS,CAAA,CAAE,KAab,CACD,CAAA;AAAA,kBACA,iBAAA,IAAqB,eAAA,CAAgB,MAAA,GAAS,iBAAA,oBAC7CA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EACd,QAAA,kBAAAD,IAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,oBAAE,gBAAgB,MAAA,GAAS;AAAA,mBAAA,EAAkB,CAAA,EACrD;AAAA,iBAAA,EAEJ,CAAA;AAAA,gBAED,CAAC,QAAA,IAAY,QAAA,IAAY,KAAA,KAAU,EAAA,oBAClCC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EACb,wBAAc,WAAA,CAAY,eAAe,IAAI,eAAA,CAAgB,CAAC,GAAG,KAAA,EACpE,CAAA;AAAA,gBAED,CAAC,QAAA,IAAY,CAAC,UAAA,IAAc,KAAA,KAAU,EAAA,oBACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EACb,QAAA,EAAA,aAAA,GAAgB,KAAK,WAAA,EACxB,CAAA;AAAA,gCAEFA,GAAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACE,GAAI,GAAA,GAAM,EAAE,GAAA,EAAK,OAAA,CAAQ,GAAA,EAAK,QAAQ,CAAA,EAAE,GAAI,EAAE,GAAA,EAAK,QAAA,EAAS;AAAA,oBAC7D,EAAA;AAAA,oBACA,IAAA;AAAA,oBACA,SAAA,EAAU,sBAAA;AAAA,oBACV,IAAA,EAAK,UAAA;AAAA,oBACL,eAAA,EAAe,IAAA;AAAA,oBACf,eAAA,EAAe,MAAA;AAAA,oBACf,mBAAA,EAAmB,aAAa,MAAA,GAAS,MAAA;AAAA,oBACzC,uBAAA,EACE,IAAA,IAAQ,iBAAA,CAAkB,WAAW,CAAA,GACjC,CAAA,EAAG,EAAE,CAAA,KAAA,EAAQ,iBAAA,CAAkB,WAAW,CAAA,CAAE,KAAK,CAAA,CAAA,GACjD,MAAA;AAAA,oBAEN,gBAAc,OAAA,IAAW,MAAA;AAAA,oBACzB,kBAAA,EAAkB,aAAA;AAAA,oBAClB,YAAA,EAAa,KAAA;AAAA,oBACb,QAAA,EAAU,CAAC,UAAA,IAAc,QAAA;AAAA,oBACzB,QAAA;AAAA,oBACA,aACE,CAAC,QAAA,KAAa,UAAA,IAAc,CAAC,iBAAiB,WAAA,GAAc,MAAA;AAAA,oBAE9D,KAAA,EAAO,KAAA;AAAA,oBACP,IAAA,EAAM,CAAA;AAAA,oBACN,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,sBAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AACvB,sBAAA,IAAI,CAAC,IAAA,EAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,oBACzB,CAAA;AAAA,oBACA,SAAA;AAAA,oBACA,OAAA,EAAS;AAAA;AAAA;AACX,eAAA,EACF;AAAA;AAAA,WACF;AAAA,0BAEAA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,SAAA,EAAW,MAAA;AAAA,cACX,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,cAC5B,UAAA,EAAY,OAAA;AAAA,cAEZ,QAAA,kBAAAA,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,eAAA;AAAA,kBACV,EAAA,EAAI,MAAA;AAAA,kBACJ,IAAA,EAAK,SAAA;AAAA,kBACL,wBAAsB,QAAA,IAAY,MAAA;AAAA,kBAEjC,QAAA,EAAA,iBAAA,CAAkB,MAAA,KAAW,CAAA,mBAC5BA,GAAAA,CAAC,SAAI,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,YAAA,EAAa,CAAA,GAEpD,IAAA,CAAK,GAAA;AAAA,oBAAI,CAAC,GAAA,KACR,GAAA,CAAI,IAAA,KAAS,OAAA,mBACXA,GAAAA,CAAC,KAAA,EAAA,EAA2B,SAAA,EAAU,sBAAA,EACnC,cAAI,KAAA,EAAA,EADG,CAAA,EAAA,EAAK,IAAI,KAAK,CAAA,CAExB,oBAEAA,GAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBAEC,IAAI,CAAA,EAAG,EAAE,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAO,KAAK,CAAA,CAAA;AAAA,wBACjC,IAAA,EAAK,QAAA;AAAA,wBACL,eAAA,EAAe,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,wBACvD,eAAA,EAAe,GAAA,CAAI,MAAA,CAAO,QAAA,IAAY,MAAA;AAAA,wBACtC,SAAA,EAAU,cAAA;AAAA,wBACV,aAAA,EAAa,GAAA,CAAI,WAAA,KAAgB,WAAA,IAAe,MAAA;AAAA,wBAChD,iBAAe,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA;AAAA,wBAC5D,eAAA,EAAe,GAAA,CAAI,MAAA,CAAO,QAAA,IAAY,MAAA;AAAA,wBACtC,YAAA,EAAc,MAAM,cAAA,CAAe,GAAA,CAAI,WAAW,CAAA;AAAA,wBAClD,OAAA,EAAS,MAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAAA,wBAE7B,QAAA,EAAA,YAAA,GACC,YAAA,CAAa,GAAA,CAAI,MAAA,EAAQ;AAAA,0BACvB,QAAA,EAAU,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,0BAClD,MAAA,EAAQ,IAAI,WAAA,KAAgB,WAAA;AAAA,0BAC5B,QAAA,EAAU,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAA;AAAA,0BACrC;AAAA,yBACD,CAAA,mBAEDD,IAAAA,CAAAW,UAAA,EACG,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAI,MAAA,CAAO,IAAA;AAAA,0CACZX,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EACd,QAAA,EAAA;AAAA,4CAAAC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA,WAAA,mBACCA,GAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAM,GAAA,CAAI,OAAO,KAAA,EAAO,KAAA,EAAc,CAAA,GAEjD,GAAA,CAAI,OAAO,KAAA,EAEf,CAAA;AAAA,4BACC,GAAA,CAAI,MAAA,CAAO,WAAA,IAAe,IAAA,oBACzBA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAA,GAAA,CAAI,MAAA,CAAO,WAAA,EAAY;AAAA,2BAAA,EAEjE,CAAA;AAAA,0BACC,cAAA,CAAe,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,KAAK,qBACvCA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,qBAAA,EAAsB;AAAA,yBAAA,EAE/C;AAAA,uBAAA;AAAA,sBArCG,IAAI,MAAA,CAAO;AAAA;AAuClB;AAEJ;AAAA;AAEJ;AAAA;AACF,SAAA,EACF;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,SAAS,WAAc,IAAA,EAAuC;AAC5D,EAAA,OAAO,CAAC,IAAA,KAAmB;AACzB,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,OAAO,CAAA,KAAM,UAAA,EAAY,CAAA,CAAE,IAAI,CAAA;AAAA,WAAA,IAC1B,KAAK,OAAO,CAAA,KAAM,QAAA,EAAW,EAAuC,OAAA,GAAU,IAAA;AAAA,IACzF;AAAA,EACF,CAAA;AACF;AC9eO,IAAM,wBAAwBI,UAAAA;AAAA,EACnC,SAASS,MAAAA,CAAM,KAAA,EAAO,GAAA,EAAK;AACzB,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA,GAAO,MAAA;AAAA,MACP,MAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAUX,KAAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAA6B;AAAA,MACrD,KAAA,EAAO,SAAA;AAAA,MACP,cAAc,YAAA,IAAgB,EAAA;AAAA,MAC9B,QAAA,EAAU;AAAA,KACX,CAAA;AACD,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAII,SAAS,KAAK,CAAA;AAE1C,IAAA,MAAM,cAAc,cAAA,IAAkB,IAAA,KAAS,UAAA,KAAe,CAAC,YAAY,CAAC,QAAA;AAC5E,IAAA,MAAM,aAAA,GAAgB,IAAA,KAAS,UAAA,IAAc,MAAA,GAAS,MAAA,GAAS,IAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,GAAS,CAAA;AAChC,IAAA,MAAM,SAAA,GAAY,SAAA,IAAa,QAAA,IAAY,CAAC,YAAY,CAAC,QAAA;AAEzD,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqC;AACzD,MAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AACvB,MAAA,QAAA,GAAW,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAAA,IAC9B,CAAA;AACA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAuC;AAC5D,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,EAAS,OAAA,GAAU,KAAK,CAAA;AACtC,MAAA,SAAA,GAAY,CAAC,CAAA;AAAA,IACf,CAAA;AACA,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,OAAA,IAAU;AAAA,IACZ,CAAA;AAEA,IAAA,uBACEN,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,EAAA;AAAA,QACA,SAAA;AAAA,QAEC,WAAC,EAAE,aAAA,EAAe,OAAA,EAAS,KAAA,uBAC1BA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,OAAA;AAAA,YACA,MAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,YACA,MAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EACE,gBAAgB,IAAA,IAAQ,MAAA,IAAU,uBAChCD,IAAAA,CAAAW,UAAA,EACG,QAAA,EAAA;AAAA,cAAA,YAAA;AAAA,cACA,UAAU,IAAA,oBAAQV,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAA+B,QAAA,EAAA,MAAA,EAAO;AAAA,aAAA,EAC3E,CAAA,GACE,MAAA;AAAA,YAEN,KAAA,kBACED,IAAAA,CAAAW,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,MAAA,IAAU,wBAAQV,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAA+B,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,cACxE,SAAA,oBACCD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,6BAAA,EACb,QAAA,EAAA;AAAA,gBAAA,KAAA,CAAM,MAAA;AAAA,gBACN,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK;AAAA,eAAA,EACjC,CAAA;AAAA,cAED,6BACCC,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,oBAAA;AAAA,kBACV,YAAA,EAAW,OAAA;AAAA,kBACX,QAAA,EAAU,EAAA;AAAA,kBACV,OAAA,EAAS,KAAA;AAAA,kBAET,QAAA,kBAAAA,IAAC,KAAA,EAAA,EAAM;AAAA;AAAA,eACT;AAAA,cAED,8BACCA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,oBAAA;AAAA,kBACV,YAAA,EAAY,SAAS,MAAA,GAAS,MAAA;AAAA,kBAC9B,cAAA,EAAc,MAAA;AAAA,kBACd,QAAA,EAAU,EAAA;AAAA,kBACV,SAAS,MAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,kBAEjC,mCAASA,GAAAA,CAAC,cAAW,CAAA,mBAAKA,IAAC,OAAA,EAAA,EAAQ;AAAA;AAAA,eACtC;AAAA,cAED,OAAA,oBAAWA,GAAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA,cACxB,UAAA;AAAA,cACA,SAAS,CAAC,OAAA,oBAAWA,GAAAA,CAAC,SAAA,EAAA,EAAU,WAAU,oBAAA,EAAqB;AAAA,aAAA,EAClE,CAAA;AAAA,YAEF,aAAA,EACE,aAAA,mBACEA,GAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,kBAAA,EAAmB,OAAA,EAAS,EAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE,MAAA;AAAA,YAGN,QAAA,kBAAAA,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACE,GAAG,IAAA;AAAA,gBACJ,GAAA;AAAA,gBACA,EAAA;AAAA,gBACA,IAAA;AAAA,gBACA,SAAA,EAAU,kBAAA;AAAA,gBACV,IAAA,EAAM,aAAA;AAAA,gBACN,KAAA;AAAA,gBACA,QAAA;AAAA,gBACA,QAAA;AAAA,gBACA,QAAA;AAAA,gBACA,SAAA;AAAA,gBACA,WAAA,EAAa,gBAAgB,MAAA,GAAY,WAAA;AAAA,gBACzC,gBAAc,OAAA,IAAW,MAAA;AAAA,gBACzB,kBAAA,EAAkB,aAAA;AAAA,gBAClB,QAAA,EAAU,YAAA;AAAA,gBACV,SAAA,EAAW;AAAA;AAAA;AACb;AAAA;AACF;AAAA,KAEJ;AAAA,EAEJ;AACF;ACnJA,IAAM,QAAQ,CAAC,CAAA,EAAW,GAAA,EAAc,GAAA,KACtC,KAAK,GAAA,CAAI,GAAA,IAAO,MAAA,CAAO,iBAAA,EAAmB,KAAK,GAAA,CAAI,GAAA,IAAO,MAAA,CAAO,iBAAA,EAAmB,CAAC,CAAC,CAAA;AAExF,IAAM,KAAA,GAAQ,CAAC,CAAA,EAAW,CAAA,KAAgB,CAAA,IAAK,IAAA,GAAO,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,EAAA,IAAM,CAAC,IAAI,EAAA,IAAM,CAAA;AAEnF,IAAM,8BAA8BI,UAAAA;AAAA,EACzC,SAASU,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,YAAA,GAAe,IAAA;AAAA,MACf,QAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA,GAAO,CAAA;AAAA,MACP,SAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA,GAAU,SAAA;AAAA,MACV,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA,GAAc,IAAA;AAAA,MACd,eAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAUZ,KAAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAAoC;AAAA,MAC5D,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,GAAA,GAAMU,OAAAA;AAAA,MACV,MACE,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,QAC5B,GAAI,QAAA,GAAW,EAAE,OAAO,UAAA,EAAqB,QAAA,KAAa,EAAC;AAAA,QAC3D,WAAA,EAAa,QAAA,IAAY,OAAA,CAAQ,QAAQ,CAAA;AAAA,QACzC,qBAAA,EAAuB,SAAA,KAAc,QAAA,GAAW,CAAA,GAAI,EAAA,CAAA;AAAA,QACpD,qBAAA,EAAuB,WAAW,CAAA,GAAI;AAAA,OACvC,CAAA;AAAA,MACH,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,SAAS;AAAA,KACxC;AAEA,IAAA,MAAM,IAAA,GAAOA,QAAQ,MAAM;AACzB,MAAA,MAAM,QAAQ,IAAI,IAAA,CAAK,aAAa,MAAM,CAAA,CAAE,cAAc,OAAO,CAAA;AACjE,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,MAAM,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,CAAA,EAAG,KAAA,IAAS,GAAA;AAAA,QACvD,OAAA,EAAS,MAAM,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,SAAS,CAAA,EAAG,KAAA,IAAS;AAAA,OAC7D;AAAA,IACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,IAAA,MAAM,OAAA,GAAUT,WAAAA;AAAA,MACd,CAAC,CAAA,KACC,CAAA,IAAK,QAAQ,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,GAAI,EAAA,GAAK,GAAG,MAAA,IAAU,EAAE,GAAG,GAAA,CAAI,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG,UAAU,EAAE,CAAA,CAAA;AAAA,MACpF,CAAC,GAAA,EAAK,MAAA,EAAQ,MAAM;AAAA,KACtB;AAEA,IAAA,MAAM,KAAA,GAAQA,WAAAA;AAAA,MACZ,CAAC,GAAA,KAA+B;AAC9B,QAAA,IAAI,CAAA,GAAI,GAAA;AACR,QAAA,IAAI,QAAQ,CAAA,GAAI,CAAA,CAAE,MAAM,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AACvC,QAAA,IAAI,QAAQ,CAAA,GAAI,CAAA,CAAE,MAAM,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AACvC,QAAA,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAC7D,QAAA,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,WAAA,EAAa,EAAE,CAAA;AAC7B,QAAA,IAAI,MAAM,EAAA,IAAM,CAAA,KAAM,GAAA,IAAO,CAAA,KAAM,KAAK,OAAO,IAAA;AAC/C,QAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA;AAC3B,QAAA,IAAI,UAAU,EAAA,EAAI,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,GAAG,KAAA,GAAQ,CAAC,CAAA,GAAI,CAAA,CAAE,MAAM,KAAA,GAAQ,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAO,EAAE,CAAA;AAClF,QAAA,MAAM,CAAA,GAAI,OAAO,CAAC,CAAA;AAClB,QAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA,GAAO,CAAA;AAAA,MAClC,CAAA;AAAA,MACA,CAAC,MAAA,EAAQ,MAAA,EAAQ,IAAI;AAAA,KACvB;AAEA,IAAA,MAAM,CAAC,MAAM,OAAO,CAAA,GAAIG,SAAS,MAAM,OAAA,CAAQ,KAAK,CAAC,CAAA;AACrD,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC5C,IAAAC,UAAU,MAAM;AACd,MAAA,IAAI,CAAC,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IACtC,CAAA,EAAG,CAAC,KAAA,EAAO,OAAA,EAAS,OAAO,CAAC,CAAA;AAE5B,IAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAqB;AACnC,MAAA,QAAA,CAAS,CAAC,CAAA;AACV,MAAA,QAAA,GAAW,CAAC,CAAA;AAAA,IACd,CAAA;AAGA,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB;AACtC,MAAA,MAAA,CAAO,CAAC,CAAA;AACR,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,IACpB,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO,CAAC,GAAA,EAAa,GAAA,GAAM,KAAA,KAAU;AACzC,MAAA,MAAM,KAAA,GAAA,CAAS,GAAA,GAAO,SAAA,IAAa,IAAA,GAAO,KAAM,IAAA,IAAQ,GAAA;AACxD,MAAA,MAAMQ,QAAO,KAAA,KAAU,GAAA,GAAM,CAAA,GAAK,GAAA,IAAO,IAAM,GAAA,IAAO,CAAA,CAAA;AACtD,MAAA,SAAA,CAAU,KAAA,CAAM,MAAMA,KAAAA,GAAO,KAAA,EAAO,KAAK,GAAG,CAAA,EAAG,SAAS,CAAC,CAAA;AAAA,IAC3D,CAAA;AAEA,IAAA,MAAM,QAAA,GAAWd,OAAgC,IAAI,CAAA;AACrD,IAAAM,UAAU,MAAM;AACd,MAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,MAAA,IAAI,CAAC,EAAA,IAAM,CAAC,eAAA,EAAiB;AAC7B,MAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,QAAA,IAAI,QAAA,CAAS,kBAAkB,EAAA,EAAI;AACnC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAA,CAAK,EAAE,MAAA,GAAS,CAAA,GAAI,CAAA,GAAI,EAAA,EAAI,EAAE,QAAQ,CAAA;AAAA,MACxC,CAAA;AACA,MAAA,EAAA,CAAG,iBAAiB,OAAA,EAAS,OAAA,EAAS,EAAE,OAAA,EAAS,OAAO,CAAA;AACxD,MAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,OAAA,EAAS,OAAO,CAAA;AAAA,IACtD,CAAC,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAuC;AACxD,MAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,MAAA,IAAI,CAAA,CAAE,QAAQ,SAAA,EAAW;AACvB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAA,CAAK,CAAA,EAAG,EAAE,QAAQ,CAAA;AAAA,MACpB,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,WAAA,EAAa;AAChC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAA,CAAK,EAAA,EAAI,EAAE,QAAQ,CAAA;AAAA,MACrB,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAA,CAAK,GAAG,IAAI,CAAA;AAAA,MACd,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,UAAA,EAAY;AAC/B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAA,CAAK,IAAI,IAAI,CAAA;AAAA,MACf,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,MAAA,IAAU,OAAO,IAAA,EAAM;AAC1C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,SAAA,CAAU,GAAG,CAAA;AAAA,MACf,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,KAAA,IAAS,OAAO,IAAA,EAAM;AACzC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,SAAA,CAAU,GAAG,CAAA;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,YAAYN,MAAAA,EAAuC;AACzD,IAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAgB;AACjC,MAAA,IAAA,CAAK,GAAG,CAAA;AACR,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,SAAA,CAAU,OAAA,GAAU,YAAY,MAAM;AACpC,QAAA,KAAA,IAAS,CAAA;AACT,QAAA,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAC,CAAA;AAAA,MACrB,GAAG,GAAG,CAAA;AAAA,IACR,CAAA;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,aAAA,CAAc,SAAA,CAAU,OAAO,CAAA;AACtD,IAAAM,SAAAA,CAAU,MAAM,MAAM,aAAA,CAAc,UAAU,OAAO,CAAA,EAAG,EAAE,CAAA;AAE1D,IAAA,MAAM,WAAA,GAAc,2BAClBR,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,CAAA,qBAAA,EAAwB,OAAA,KAAY,YAAA,GAAe,uCAAuC,EAAE,CAAA,CAAA;AAAA,QAEvG,QAAA,EAAA;AAAA,0BAAAC,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,mBAAA;AAAA,cACV,YAAA,EAAW,WAAA;AAAA,cACX,QAAA,EAAU,EAAA;AAAA,cACV,UAAU,QAAA,IAAY,QAAA,IAAa,GAAA,IAAO,IAAA,IAAA,CAAS,SAAS,CAAA,KAAM,GAAA;AAAA,cAClE,aAAA,EAAe,MAAM,SAAA,CAAU,CAAC,CAAA;AAAA,cAChC,WAAA,EAAa,QAAA;AAAA,cACb,cAAA,EAAgB,QAAA;AAAA,cAEhB,QAAA,kBAAAA,IAAC,QAAA,EAAA,EAAS;AAAA;AAAA,WACZ;AAAA,0BACAA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,mBAAA;AAAA,cACV,YAAA,EAAW,WAAA;AAAA,cACX,QAAA,EAAU,EAAA;AAAA,cACV,UAAU,QAAA,IAAY,QAAA,IAAa,GAAA,IAAO,IAAA,IAAA,CAAS,SAAS,CAAA,KAAM,GAAA;AAAA,cAClE,aAAA,EAAe,MAAM,SAAA,CAAU,EAAE,CAAA;AAAA,cACjC,WAAA,EAAa,QAAA;AAAA,cACb,cAAA,EAAgB,QAAA;AAAA,cAEhB,QAAA,kBAAAA,IAAC,SAAA,EAAA,EAAU;AAAA;AAAA;AACb;AAAA;AAAA,KACF;AAGF,IAAA,MAAM,WAAW,KAAA,IAAS,IAAA;AAE1B,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,EAAA;AAAA,QACA,SAAA;AAAA,QAEC,WAAC,EAAE,aAAA,EAAe,OAAA,EAAS,KAAA,uBAC1BA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,OAAA;AAAA,YACA,MAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,YACA,MAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAM,YAAA;AAAA,YACN,KAAA,kBACED,IAAAA,CAAAW,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,UAAA;AAAA,cACA;AAAA,aAAA,EACH,CAAA;AAAA,YAEF,aAAA,EACE,aAAA,mBACEV,GAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,kBAAA,EAAmB,OAAA,EAAS,EAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE,MAAA;AAAA,YAGN,QAAA,kBAAAA,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACE,GAAG,IAAA;AAAA,gBACJ,GAAA,EAAK,CAAC,CAAA,KAAM;AACV,kBAAA,QAAA,CAAS,OAAA,GAAU,CAAA;AACnB,kBAAA,IAAI,OAAO,GAAA,KAAQ,UAAA,EAAY,GAAA,CAAI,CAAC,CAAA;AAAA,uBAAA,IAC3B,GAAA,EAAM,GAAA,CAAwD,OAAA,GAAU,CAAA;AAAA,gBACnF,CAAA;AAAA,gBACA,EAAA;AAAA,gBACA,IAAA;AAAA,gBACA,SAAA,EAAU,kBAAA;AAAA,gBACV,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAU,SAAA;AAAA,gBACV,IAAA,EAAK,YAAA;AAAA,gBACL,iBAAe,KAAA,IAAS,MAAA;AAAA,gBACxB,eAAA,EAAe,GAAA;AAAA,gBACf,eAAA,EAAe,GAAA;AAAA,gBACf,KAAA,EAAO,IAAA;AAAA,gBACP,QAAA;AAAA,gBACA,QAAA;AAAA,gBACA,QAAA;AAAA,gBACA,WAAA,EAAa,gBAAgB,MAAA,GAAY,WAAA;AAAA,gBACzC,gBAAc,OAAA,IAAW,MAAA;AAAA,gBACzB,kBAAA,EAAkB,aAAA;AAAA,gBAClB,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,gBAC9B,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,kBAAA,OAAA,CAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AACtB,kBAAA,MAAA,CAAO,KAAA,CAAM,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,gBAC9B,CAAA;AAAA,gBACA,SAAA;AAAA,gBACA,QAAQ,MAAM;AACZ,kBAAA,UAAA,CAAW,KAAK,CAAA;AAChB,kBAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,kBAAA,MAAM,KAAA,GACJ,MAAA,IAAU,IAAA,GACN,IAAA,GACA,KAAA,CAAM,WAAA,GAAc,KAAA,CAAM,MAAA,EAAQ,GAAA,EAAK,GAAG,CAAA,GAAI,MAAA,EAAQ,SAAS,CAAA;AACrE,kBAAA,IAAI,KAAA,KAAU,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA;AACjC,kBAAA,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,gBACxB;AAAA;AAAA;AACF;AAAA;AACF;AAAA,KAEJ;AAAA,EAEJ;AACF;ACnTA,IAAM,iBAAA,GAAoBgB,cAA6C,IAAI,CAAA;AAE3E,IAAMC,UAAsC,EAAE,EAAA,EAAI,WAAW,EAAA,EAAI,UAAA,EAAY,IAAI,SAAA,EAAU;AAkBpF,IAAM,wBAAwBb,UAAAA;AAAA,EACnC,SAASc,MAAAA,CAAM,KAAA,EAAO,GAAA,EAAK;AACzB,IAAA,MAAM,KAAA,GAAQC,WAAW,iBAAiB,CAAA;AAC1C,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,cAAA,GAAiB,KAAA;AAAA,MACjB,SAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAUjB,KAAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,OAAA,GAAU,KAAA,GAAQ,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,MAAA;AAChD,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,KAAA,EAAO,QAAA,IAAY,KAAA;AACpD,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,IAAA;AACxC,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,OAAA,KAAY,MAAA;AAE5C,IAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAqC;AACrD,MAAA,IAAI,CAAA,CAAE,MAAA,CAAO,OAAA,EAAS,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,IAC3C,CAAA;AAEA,IAAA,uBACEH,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,cAAA;AAAA,UACA,IAAA,IAAQ,oBAAA;AAAA,UACR,mBAAmB,OAAA,IAAW,qBAAA;AAAA,UAC9B;AAAA,SACF;AAAA,QACA,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,KAAA,EAAO,EAAE,oBAAA,EAAsBkB,OAAAA,CAAO,IAAI,CAAA,EAAE;AAAA,QAE5C,QAAA,EAAA;AAAA,0BAAAjB,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACE,GAAG,IAAA;AAAA,cACJ,GAAA;AAAA,cACA,IAAA,EAAK,OAAA;AAAA,cACL,SAAA,EAAU,sBAAA;AAAA,cACV,EAAA;AAAA,cACA,MAAM,KAAA,EAAO,IAAA;AAAA,cACb,KAAA;AAAA,cACA,OAAA,EAAS,QAAQ,OAAA,GAAU,MAAA;AAAA,cAC3B,QAAA;AAAA,cACA;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAA,EAAqD,aAAA,EAAY,MAAA,EAC/E,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CAAA,EAA6C,CAAA,EAC/D,CAAA;AAAA,UAAA,CACE,KAAA,IAAS,QAAQ,WAAA,IAAe,IAAA,qBAChCD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,oBAAA,EACb,QAAA,EAAA;AAAA,YAAA,KAAA,IAAS,wBAAQC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC9D,eAAe,IAAA,oBAAQA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAsB,QAAA,EAAA,WAAA,EAAY;AAAA,WAAA,EAC5E;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AA6BO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,IAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,YAAA,GAAe,IAAA;AAAA,IACf,QAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA,EAAI;AAAA,GACN,GAAI,KAAA;AAEJ,EAAA,MAAM,UAAUE,KAAAA,EAAM;AACtB,EAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,EAAA,MAAM,OAAO,QAAA,IAAY,EAAA;AACzB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAAoC;AAAA,IAC5D,KAAA,EAAO,SAAA;AAAA,IACP,YAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAc;AAC5B,IAAA,QAAA,CAAS,CAAC,CAAA;AACV,IAAA,QAAA,GAAW,CAAC,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,uBACEF,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA;AAAA,MAEC,QAAA,EAAA,sBACCA,GAAAA,CAAC,iBAAA,CAAkB,UAAlB,EAA2B,KAAA,EAAO,EAAE,IAAA,EAAM,OAAO,MAAA,EAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,IACxE,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,YAAA;AAAA,UACL,iBAAA,EAAiB,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,UACjD,iBAAe,QAAA,IAAY,MAAA;AAAA,UAC3B,SAAA,EAAU,oBAAA;AAAA,UACV,kBAAA,EAAkB,WAAA;AAAA,UAEjB,QAAA,EAAA,OAAA,GACG,OAAA,CAAQ,GAAA,CAAI,CAAC,sBACXA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,OAAO,CAAA,CAAE,KAAA;AAAA,cACT,aAAa,CAAA,CAAE,WAAA;AAAA,cACf,UAAU,CAAA,CAAE;AAAA,aAAA;AAAA,YAJP,CAAA,CAAE;AAAA,WAMV,CAAA,GACD;AAAA;AAAA,OACN,EACF;AAAA;AAAA,GAEJ;AAEJ;ACzKO,IAAM,2BAA2BI,UAAAA;AAAA,EACtC,SAASgB,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,GAAU,CAAA;AAAA,MACV,OAAA,GAAU,EAAA;AAAA,MACV,MAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAUlB,KAAAA,EAAM;AACtB,IAAA,MAAM,KAAK,MAAA,IAAU,OAAA;AACrB,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAA6B;AAAA,MACrD,KAAA,EAAO,SAAA;AAAA,MACP,cAAc,YAAA,IAAgB,EAAA;AAAA,MAC9B,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,QAAA,GAAWD,OAAmC,IAAI,CAAA;AACxD,IAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,QAAA,CAAS,OAA8B,CAAA;AAEtE,IAAA,MAAM,WAAA,GAAcE,YAAY,MAAM;AACpC,MAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,MAAA,IAAI,CAAC,EAAA,IAAM,CAAC,UAAA,EAAY;AACxB,MAAA,EAAA,CAAG,MAAM,MAAA,GAAS,MAAA;AAClB,MAAA,MAAM,EAAA,GAAK,iBAAiB,EAAE,CAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,UAAA,CAAW,EAAA,CAAG,UAAU,CAAA,IAAK,EAAA;AACjD,MAAA,MAAMkB,IAAAA,GAAM,OAAO,UAAA,CAAW,EAAA,CAAG,UAAU,CAAA,GAAI,MAAA,CAAO,UAAA,CAAW,EAAA,CAAG,aAAa,CAAA;AACjF,MAAA,MAAM,GAAA,GAAM,OAAO,OAAA,GAAUA,IAAAA;AAC7B,MAAA,MAAM,GAAA,GAAM,OAAO,OAAA,GAAUA,IAAAA;AAC7B,MAAA,EAAA,CAAG,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,EAAA,CAAG,YAAA,EAAc,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA,EAAA,CAAA;AAClE,MAAA,EAAA,CAAG,KAAA,CAAM,SAAA,GAAY,EAAA,CAAG,YAAA,GAAe,MAAM,MAAA,GAAS,QAAA;AAAA,IACxD,CAAA,EAAG,CAAC,UAAA,EAAY,OAAA,EAAS,OAAO,CAAC,CAAA;AAGjC,IAAAC,eAAAA,CAAgB,WAAA,EAAa,CAAC,KAAA,EAAO,WAAW,CAAC,CAAA;AAEjD,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAwC;AAC5D,MAAA,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AACvB,MAAA,QAAA,GAAW,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,GAAS,CAAA;AAEhC,IAAA,uBACEtB,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,EAAA;AAAA,QACA,SAAA;AAAA,QAEC,WAAC,EAAE,aAAA,EAAe,OAAA,EAAS,KAAA,uBAC1BD,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,IAAA;AAAA,YACA,OAAA;AAAA,YACA,MAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,YACA,MAAA,EAAQ,QAAA;AAAA,YACR,aAAA,EACE,aAAA,mBACEC,GAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,kBAAA,EAAmB,OAAA,EAAS,EAAA,EAC1C,QAAA,EAAA,KAAA,EACH,CAAA,GACE,MAAA;AAAA,YAEN,OACE,SAAA,IAAa,QAAA,IAAY,CAAC,QAAA,IAAY,CAAC,2BACrCA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,oBAAA;AAAA,gBACV,YAAA,EAAW,OAAA;AAAA,gBACX,QAAA,EAAU,EAAA;AAAA,gBACV,SAAS,MAAM;AACb,kBAAA,QAAA,CAAS,EAAE,CAAA;AACX,kBAAA,OAAA,IAAU;AAAA,gBACZ,CAAA;AAAA,gBACD,QAAA,EAAA;AAAA;AAAA,aAED,GACE,MAAA;AAAA,YAGN,QAAA,EAAA;AAAA,8BAAAA,GAAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,IAAA;AAAA,kBACJ,GAAA,EAAK,QAAA;AAAA,kBACL,EAAA;AAAA,kBACA,IAAA;AAAA,kBACA,SAAA,EAAU,gBAAA;AAAA,kBACV,aAAA,EAAa,MAAA,KAAW,UAAA,GAAa,MAAA,GAAS,UAAA,CAAA;AAAA,kBAC9C,IAAA,EAAM,OAAA;AAAA,kBACN,KAAA;AAAA,kBACA,QAAA;AAAA,kBACA,QAAA;AAAA,kBACA,QAAA;AAAA,kBACA,SAAA;AAAA,kBACA,WAAA,EAAa,gBAAgB,MAAA,GAAY,WAAA;AAAA,kBACzC,gBAAc,OAAA,IAAW,MAAA;AAAA,kBACzB,kBAAA,EAAkB,aAAA;AAAA,kBAClB,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,cACC,SAAA,oBACCD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,gBAAA,KAAA,CAAM,MAAA;AAAA,gBACN,SAAA,GAAY,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,GAAK;AAAA,eAAA,EACjC;AAAA;AAAA;AAAA;AAEJ;AAAA,KAEJ;AAAA,EAEJ;AACF;;;AC5KO,IAAM,UACX,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,KAAK,QAAA,KAAa,YAAA;AAGvD,SAAS,SAAA,CAAU,WAAoB,OAAA,EAAoC;AAChF,EAAA,IAAI,SAAA,EAAW;AACf,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,EACtC;AACF;AAEA,IAAM,MAAA,uBAAa,GAAA,EAAY;AAGxB,SAAS,SAAS,OAAA,EAAuB;AAC9C,EAAA,IAAI,CAAC,OAAA,IAAW,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA,EAAG;AACrC,EAAA,MAAA,CAAO,IAAI,OAAO,CAAA;AAClB,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AACnC;;;ACtBA,IAAA,QAAA;AAGA,IAAM,WAAN,MAAwC;AAAA,EAAxC,WAAA,GAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAA,QAAA,sBAAe,GAAA,EAA+B,CAAA;AAAA,EAAA;AAAA,EAE9C,QAAA,CAAS,MAAc,YAAA,EAAuC;AAC5D,IAAA,IAAI,OAAA,IAAW,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG;AACtC,MAAA,QAAA,CAAS,CAAA,YAAA,EAAe,IAAI,CAAA,8DAAA,CAAgE,CAAA;AAAA,IAC9F;AACA,IAAA,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,IAAA,EAAM,YAAY,CAAA;AAAA,EACtC;AAAA,EAEA,IAAI,IAAA,EAA6C;AAC/C,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AAAA,EAC/B;AAAA,EAEA,IAAI,IAAA,EAAuB;AACzB,IAAA,OAAO,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AAAA,EAC/B;AAAA,EAEA,KAAA,GAAkB;AAChB,IAAA,OAAO,CAAC,GAAG,YAAA,CAAA,IAAA,EAAK,QAAA,CAAA,CAAS,MAAM,CAAA;AAAA,EACjC;AACF,CAAA;AApBE,QAAA,GAAA,IAAA,OAAA,EAAA;AA8BK,SAAS,cAAA,GAAgC;AAC9C,EAAA,OAAO,IAAI,QAAA,EAAS;AACtB;AAQO,IAAM,kCAAiD,cAAA;AAQvD,SAAS,aAAA,CAAc,MAAc,YAAA,EAAuC;AACjF,EAAA,eAAA,CAAgB,QAAA,CAAS,MAAM,YAAY,CAAA;AAC7C;;;ACnDO,IAAM,kBAA8B,EAAE,OAAA,EAAS,GAAG,MAAA,EAAQ,CAAA,EAAG,QAAQ,CAAA,EAAE;AAE9E,IAAM,aAAa,CAAC,CAAA,EAAY,QAAA,KAC9B,OAAO,MAAM,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,CAAC,KAAK,CAAA,IAAK,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA;AAGnE,SAAS,eAAe,OAAA,EAA2C;AACxE,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,OAAA,EAAS,gBAAgB,OAAO,CAAA;AAAA,IAC7D,MAAA,EAAQ,UAAA,CAAW,OAAA,EAAS,MAAA,EAAQ,gBAAgB,MAAM,CAAA;AAAA,IAC1D,MAAA,EAAQ,UAAA,CAAW,OAAA,EAAS,MAAA,EAAQ,gBAAgB,MAAM;AAAA,GAC5D;AACF;AAGO,SAAS,SAAA,CAAU,MAAe,WAAA,EAA6B;AACpE,EAAA,MAAM,CAAA,GAAI,UAAA,CAAW,IAAA,EAAM,CAAC,CAAA;AAC5B,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,WAAA,EAAa,CAAC,CAAC,CAAA;AAC7C;;;ACNA,SAAS,aAAa,GAAA,EAAgD;AACpE,EAAA,IAAI,GAAA,IAAO,MAAM,OAAO,MAAA;AACxB,EAAA,OAAO,OAAO,GAAA,KAAQ,QAAA,GAAW,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA,GAAO,GAAA;AAChD;AAUO,SAAS,eAAA,CACd,QACAwB,SAAAA,EAC0B;AAC1B,EAAA,SAAA;AAAA,IACE,MAAA,IAAU,QAAQ,OAAO,MAAA,KAAW,YAAY,KAAA,CAAM,OAAA,CAAQ,OAAO,MAAM,CAAA;AAAA,IAC3E;AAAA,GACF;AAEA,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAE7B,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,SAAA;AAAA,MACE,KAAA,IAAS,IAAA,IAAQ,OAAO,KAAA,KAAU,QAAA;AAAA,MAClC;AAAA,KACF;AACA,IAAA,SAAA;AAAA,MACE,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,KAAK,MAAA,GAAS,CAAA;AAAA,MACtD;AAAA,KACF;AACA,IAAA,SAAA,CAAU,CAAC,KAAK,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA,sBAAA,EAAyB,KAAA,CAAM,IAAI,CAAA,mBAAA,CAAqB,CAAA;AACzF,IAAA,IAAA,CAAK,GAAA,CAAI,MAAM,IAAI,CAAA;AACnB,IAAA,SAAA;AAAA,MACE,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,KAAK,MAAA,GAAS,CAAA;AAAA,MACtD,CAAA,OAAA,EAAU,MAAM,IAAI,CAAA,sBAAA;AAAA,KACtB;AAEA,IAAA,IAAIA,SAAAA,EAAU;AACZ,MAAA,SAAA;AAAA,QACEA,SAAAA,CAAS,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAAA,QACvB,CAAA,oBAAA,EAAuB,KAAA,CAAM,IAAI,CAAA,YAAA,EAAe,KAAA,CAAM,IAAI,CAAA,qBAAA,EACnCA,SAAAA,CAAS,KAAA,EAAM,CAAE,IAAA,CAAK,IAAI,KAAK,QAAQ,CAAA,CAAA;AAAA,OAChE;AACA,MAAA,MAAM,YAAYA,SAAAA,CAAS,GAAA,CAAI,MAAM,IAAI,CAAA,EAAG,iBAAiB,KAAK,CAAA;AAClE,MAAA,SAAA,CAAU,SAAA,IAAa,IAAA,EAAM,CAAA,OAAA,EAAU,KAAA,CAAM,IAAI,MAAM,KAAA,CAAM,IAAI,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,CAAA;AAAA,IACpF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,OAAA,EAAS,cAAA,CAAe,MAAA,CAAO,OAAO,CAAA;AAAA,IACtC,GAAA,EAAK,YAAA,CAAa,MAAA,CAAO,GAAG,CAAA;AAAA,IAC5B,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,IAAI,MAAA,CAAO;AAAA,GACb;AACF;;;ACtEA,IAAM,MAAA,GAAS,CAAC,CAAA,EAAY,IAAA,KAAiB,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAA;AAGvE,IAAM,eAAA,GAAoD;AAAA,EAC/D,UAAU,CAAC,EAAE,KAAA,EAAM,KAAM,GAAG,KAAK,CAAA,YAAA,CAAA;AAAA,EACjC,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,KAAA,EAAM,KAAM,CAAA,EAAG,KAAK,CAAA,kBAAA,EAAqB,MAAA,CAAO,KAAA,EAAO,WAAW,CAAC,CAAA,CAAA;AAAA,EACxF,SAAA,EAAW,CAAC,EAAE,KAAA,EAAO,KAAA,EAAM,KAAM,CAAA,EAAG,KAAK,CAAA,iBAAA,EAAoB,MAAA,CAAO,KAAA,EAAO,WAAW,CAAC,CAAA;AACzF,CAAA;AAEA,IAAM,cAAA,GAAiB,YAAA;AAShB,SAAS,cAAA,CACd,KAAA,EACA,KAAA,EACA,KAAA,EACA,SAAA,EACQ;AACR,EAAA,MAAM,QAAA,GAAW,YAAY,KAAK,CAAA;AAClC,EAAA,IAAI,QAAA,IAAY,MAAM,OAAO,QAAA;AAE7B,EAAA,MAAM,SAAA,GAAY,gBAAgB,KAAK,CAAA;AACvC,EAAA,IAAI,SAAA,SAAkB,SAAA,CAAU,EAAE,OAAO,KAAA,EAAO,KAAA,IAAS,gBAAgB,CAAA;AAEzE,EAAA,OAAO,KAAA;AACT;;;AChCA,IAAM,OAAA,GAAU,CAAC,KAAA,KACf,KAAA,IAAS,IAAA,IAAQ,KAAA,KAAU,EAAA,IAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAA,KAAW,CAAA;AAE7E,IAAM,QAAA,GAAW,CAAC,KAAA,KAChB,OAAO,UAAU,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,KAAA,CAAM,MAAA,GAAS,MAAA,CAAO,KAAA,IAAS,EAAE,CAAA,CAAE,MAAA;AAQlF,IAAM,YAAA,GAA2E;AAAA,EACtF,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,KAAU;AAC1B,IAAA,IAAI,KAAA,KAAU,OAAO,OAAO,IAAA;AAC5B,IAAA,OAAO,OAAA,CAAQ,KAAK,CAAA,GAAI,UAAA,GAAa,IAAA;AAAA,EACvC,CAAA;AAAA,EACA,SAAA,EAAW,CAAC,KAAA,EAAO,KAAA,KAAU;AAC3B,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAA,CAAQ,KAAK,GAAG,OAAO,IAAA;AACxD,IAAA,OAAO,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA,GAAQ,WAAA,GAAc,IAAA;AAAA,EACjD,CAAA;AAAA,EACA,SAAA,EAAW,CAAC,KAAA,EAAO,KAAA,KAAU;AAC3B,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAA,CAAQ,KAAK,GAAG,OAAO,IAAA;AACxD,IAAA,OAAO,QAAA,CAAS,KAAK,CAAA,GAAI,KAAA,GAAQ,WAAA,GAAc,IAAA;AAAA,EACjD;AACF,CAAA;AAEA,IAAM,WAAW,IAAI,GAAA,CAAoB,MAAA,CAAO,OAAA,CAAQ,YAAY,CAAC,CAAA;AAQ9D,SAAS,YAAA,CAAa,MAAc,EAAA,EAAkB;AAC3D,EAAA,QAAA,CAAS,GAAA,CAAI,MAAM,EAAE,CAAA;AACvB;AAEO,SAAS,QAAQ,IAAA,EAAkC;AACxD,EAAA,OAAO,QAAA,CAAS,IAAI,IAAI,CAAA;AAC1B;;;AChBO,SAAS,kBAAA,GAAmC;AACjD,EAAA,OAAO,CAAC,QAAQ,MAAA,KAA6B;AAC3C,IAAA,MAAM,SAA2B,EAAC;AAElC,IAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,MAAA,MAAM,aAAa,KAAA,CAAM,UAAA;AACzB,MAAA,IAAI,CAAC,UAAA,EAAY;AAEjB,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC/B,MAAA,MAAM,SAAuB,EAAC;AAE9B,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,EAAG;AACzC,QAAA,IAAI,QAAQ,UAAA,EAAY;AAExB,QAAA,MAAM,KAAA,GAAS,WAAuC,GAAG,CAAA;AACzD,QAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,KAAA,EAAO;AAE5C,QAAA,MAAM,IAAA,GAAO,QAAQ,GAAG,CAAA;AACxB,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,QAAA,CAAS,CAAA,kCAAA,EAAqC,GAAG,CAAA,UAAA,EAAa,KAAA,CAAM,IAAI,CAAA,GAAA,CAAK,CAAA;AAAA,UAC/E;AACA,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,MAAM,CAAA;AACvC,QAAA,IAAI,SAAS,IAAA,EAAM;AAEnB,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,IAAA,EAAM,GAAA;AAAA,UACN,SAAS,cAAA,CAAe,KAAA,EAAO,OAAO,KAAA,CAAM,KAAA,EAAO,WAAW,QAAQ;AAAA,SACvE,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,OAAO,MAAA,GAAS,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,GAAI,MAAA;AAAA,IAC9C;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AACF;AAGO,IAAM,kCAAsD,kBAAA;;;ACzD5D,IAAM,WAAA,GAAyB;AAAA,EACpC,SAAS,EAAC;AAAA,EACV,QAAQ,EAAC;AAAA,EACT,UAAA,EAAY,KAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAUO,SAAS,WAAA,CAAY,OAAkB,MAAA,EAA+B;AAC3E,EAAA,QAAQ,OAAO,IAAA;AAAM,IACnB,KAAK,OAAA,EAAS;AACZ,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,GAAG,OAAO,KAAA;AACvC,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,OAAA,EAAS,EAAE,GAAG,KAAA,CAAM,OAAA,EAAS,CAAC,MAAA,CAAO,IAAI,GAAG,MAAK,EAAE;AAAA,IACxE;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,OAAA,GAAU,EAAE,GAAG,KAAA,CAAM,OAAA,EAAQ;AACnC,MAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA;AACjD,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,OAAA,EAAQ;AAAA,IAC7B;AAAA,IACA,KAAK,kBAAA;AACH,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,IAAA,EAAK;AAAA,IACtC,KAAK,kBAAA,EAAoB;AACvB,MAAA,MAAM,MAAA,GAAS,EAAE,GAAG,KAAA,CAAM,MAAA,EAAO;AACjC,MAAA,IAAI,MAAA,CAAO,OAAO,MAAA,GAAS,CAAA,SAAU,MAAA,CAAO,IAAI,IAAI,MAAA,CAAO,MAAA;AAAA,WACtD,OAAO,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAC9B,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,QAAQ,UAAA,EAAY,KAAA,EAAO,eAAe,IAAA,EAAK;AAAA,IACpE;AAAA,IACA,KAAK,gBAAA;AACH,MAAA,OAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,aAAA,EAAe,IAAA,EAAK;AAAA,IACnF,KAAK,OAAA;AACH,MAAA,OAAO,EAAE,GAAG,WAAA,EAAY;AAAA,IAC1B;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAGO,SAAS,aAAa,IAAA,EAA8B;AACzD,EAAA,IAAI,IAAA,CAAK,YAAY,OAAO,YAAA;AAC5B,EAAA,IAAI,CAAC,IAAA,CAAK,aAAA,EAAe,OAAO,MAAA;AAChC,EAAA,OAAO,OAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,GAAS,IAAI,SAAA,GAAY,OAAA;AAC3D;AAGO,SAAS,YAAA,CACd,QACA,OAAA,EACyB;AACzB,EAAA,MAAM,QAAiC,EAAC;AACxC,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EAAG;AACrC,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,CAAG,MAAA,CAAO,GAAG,CAAA,EAAG,OAAA,CAAQ,GAAG,CAAC,CAAA,EAAG,KAAA,CAAM,GAAG,CAAA,GAAI,IAAA;AAAA,EAC1D;AACA,EAAA,OAAO,KAAA;AACT;;;ACpDA,IAAM,SAAA,GAAmC,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AA8CzD,SAAS,oBAAA,CACP,MAAA,EACAA,SAAAA,EACA,QAAA,EACQ;AACR,EAAA,MAAM,MAAc,EAAC;AACrB,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAI,QAAA,IAAY,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,QAAA,EAAU,KAAA,CAAM,IAAI,CAAA,EAAG;AAC1E,MAAA,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,GAAI,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,IACvC,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,MAAA,EAAW;AAC3C,MAAA,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA,CAAM,YAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,GAAIA,SAAAA,EAAU,IAAI,KAAA,CAAM,IAAI,GAAG,YAAA,IAAgB,EAAA;AAAA,IAC/D;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAaO,SAAS,gBAAA,CACd,MAAA,EACA,OAAA,GAA4C,EAAC,EACZ;AACjC,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA,GAAW,eAAA;AAAA,IACX,QAAA,EAAAA,SAAAA;AAAA,IACA,UAAA,GAAa;AAAA,GACf,GAAI,OAAA;AAEJ,EAAA,MAAM,UAAA,GAAaX,OAAAA,CAAQ,MAAM,eAAA,CAAgB,MAAA,EAAQW,SAAQ,CAAA,EAAG,CAAC,MAAA,EAAQA,SAAQ,CAAC,CAAA;AAEtF,EAAA,MAAM,UAAA,GAAatB,OAAsB,IAAI,CAAA;AAC7C,EAAA,IAAI,UAAA,CAAW,YAAY,IAAA,EAAM;AAC/B,IAAA,UAAA,CAAW,OAAA,GAAU,oBAAA;AAAA,MACnB,UAAA;AAAA,MACAsB,SAAAA;AAAA,MACC,KAAA,IAAS;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,oBAAA,CAA6B;AAAA,IAC7D,KAAA;AAAA,IACA,cAAc,UAAA,CAAW,OAAA;AAAA,IACzB;AAAA,GACD,CAAA;AAED,EAAA,MAAM,MAAA,GAASX,OAAAA,CAAQ,OAAO,EAAE,GAAG,UAAA,CAAW,OAAA,EAAS,GAAG,SAAA,EAAU,CAAA,EAAe,CAAC,SAAS,CAAC,CAAA;AAE9F,EAAA,MAAM,CAAC,IAAA,EAAM,QAAQ,CAAA,GAAI,UAAA,CAAW,aAAa,WAAW,CAAA;AAE5D,EAAA,MAAM,SAAA,GAAY,aAAqB,MAAM,CAAA;AAC7C,EAAA,MAAM,WAAA,GAAc,aAAa,QAAQ,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,aAAa,MAAM,CAAA;AACrC,EAAA,MAAM,aAAA,GAAgB,aAAa,UAAU,CAAA;AAC7C,EAAA,MAAM,WAAA,GAAc,aAAaW,SAAQ,CAAA;AACzC,EAAA,MAAM,aAAA,GAAgB,aAAa,UAAU,CAAA;AAC7C,EAAA,MAAM,qBAAA,GAAwB,aAAa,kBAAkB,CAAA;AAC7D,EAAA,MAAM,QAAA,GAAWtB,OAAO,CAAC,CAAA;AAEzB,EAAA,MAAM,aAAA,GAAgBE,WAAAA,CAAY,OAAO,KAAA,KAA+C;AACtF,IAAA,MAAM,KAAA,GAAQ,EAAE,QAAA,CAAS,OAAA;AACzB,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,IAAU,SAAA,CAAU,OAAA;AACxC,IAAA,QAAA,CAAS,EAAE,IAAA,EAAM,kBAAA,EAAoB,CAAA;AAErC,IAAA,MAAM,SAAS,MAAM,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,UAAU,OAAA,EAAS;AAAA,MACjE,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,GAAI,MAAM,KAAA,GAAQ,EAAE,cAAc,KAAA,CAAM,KAAA,KAAU;AAAC,KACpD,CAAA;AAED,IAAA,IAAI,KAAA,KAAU,QAAA,CAAS,OAAA,EAAS,OAAO,MAAA;AAEvC,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,QAAA,CAAS,EAAE,IAAA,EAAM,kBAAA,EAAoB,IAAA,EAAM,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,IAAK,IAAI,CAAA;AAAA,IAC7F,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,EAAE,IAAA,EAAM,gBAAA,EAAkB,MAAA,EAAQ,CAAA;AAC3C,MAAA,qBAAA,CAAsB,UAAU,MAAM,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,MAAA;AAAA,EAET,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,CAAC,MAAc,IAAA,KAAkB;AAC/B,MAAA,YAAA,CAAa,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,IAAA,EAAK,CAAE,CAAA;AAClD,MAAA,IAAI,aAAA,CAAc,YAAY,QAAA,EAAU;AACtC,QAAA,KAAK,aAAA,CAAc;AAAA,UACjB,KAAA,EAAO,IAAA;AAAA,UACP,OAAA,EAAS,QAAA;AAAA,UACT,MAAA,EAAQ,EAAE,GAAG,SAAA,CAAU,SAAS,CAAC,IAAI,GAAG,IAAA;AAAK,SAC9C,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAc,aAAa;AAAA,GAC9B;AAEA,EAAA,MAAM,SAAA,GAAYA,YAAY,CAAC,IAAA,KAAkB,aAAa,IAAc,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAE7F,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IAClB,CAAC,IAAA,KAAiB;AAChB,MAAA,QAAA,CAAS,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,CAAA;AAChC,MAAA,IAAI,aAAA,CAAc,YAAY,MAAA,EAAQ;AACpC,QAAA,KAAK,cAAc,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,EAAS,QAAQ,CAAA;AAAA,MACrD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,QAAA,GAAWA,WAAAA,CAAY,MAAM,aAAA,CAAc,EAAE,OAAA,EAAS,QAAA,EAAU,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAExF,EAAA,MAAM,YAAA,GAAeA,WAAAA;AAAA,IACnB,CAAC,OAAA,EAAoC,SAAA,KACnC,OAAO,KAAA,KAAsB;AAC3B,MAAA,KAAA,EAAO,cAAA,IAAiB;AACxB,MAAA,QAAA,CAAS;AAAA,QACP,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO,cAAc,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,EAAE,IAAI;AAAA,OACtD,CAAA;AACD,MAAA,MAAM,SAAS,MAAM,aAAA,CAAc,EAAE,OAAA,EAAS,UAAU,CAAA;AACxD,MAAA,IAAI,MAAA,CAAO,KAAK,MAAM,CAAA,CAAE,WAAW,CAAA,EAAG,OAAA,CAAQ,UAAU,OAAkB,CAAA;AAAA,uBACzD,MAAM,CAAA;AAAA,IACzB,CAAA;AAAA,IACF,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,KAAA,GAAQA,WAAAA;AAAA,IACZ,CAAC,IAAA,KAA4B;AAC3B,MAAA,MAAM,KAAA,GAAQ,oBAAA;AAAA,QACZ,aAAA,CAAc,OAAA;AAAA,QACd,WAAA,CAAY,OAAA;AAAA,QACZ;AAAA,OACF;AACA,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,QAAA,CAAS,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAC1B,MAAA,QAAA,CAAS,OAAA,EAAA;AAAA,IACX,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAGA,EAAA,MAAM,eAAA,GAAkBF,MAAAA;AAAA,wBAClB,GAAA;AAAyE,GAC/E;AACA,EAAA,MAAM,WAAA,GAAcE,WAAAA;AAAA,IAClB,CAAC,IAAA,KAAiB;AAChB,MAAA,MAAM,QAAQ,eAAA,CAAgB,OAAA;AAC9B,MAAA,IAAI,KAAA,GAAQ,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA;AAC1B,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,KAAA,GAAQ;AAAA,UACN,QAAA,EAAU,CAAC,CAAA,KAAe,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,UAC/C,WAAA,EAAa,MAAM,WAAA,CAAY,IAAI;AAAA,SACrC;AACA,QAAA,KAAA,CAAM,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,MACvB;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,eAAe,WAAW;AAAA,GAC7B;AAEA,EAAA,MAAM,KAAA,GAAQS,OAAAA,CAAQ,MAAM,YAAA,CAAa,MAAA,EAAQ,UAAA,CAAW,OAAA,IAAW,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACpF,EAAA,MAAM,MAAA,GAAS,aAAa,IAAI,CAAA;AAChC,EAAA,MAAM,UAAU,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,MAAM,EAAE,MAAA,KAAW,CAAA;AAEpD,EAAA,MAAM,aAAA,GAAgBT,WAAAA;AAAA,IACpB,CAAC,IAAA,KAA6B;AAC5B,MAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,MAAA,OAAO;AAAA,QACL,IAAA;AAAA,QACA,KAAA,EAAQ,OAAkB,IAAI,CAAA;AAAA,QAC9B,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA,IAAM,SAAA;AAAA,QAC9B,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,IAAK,KAAA;AAAA,QAC/B,KAAA,EAAO,KAAA,CAAM,IAAI,CAAA,IAAK,KAAA;AAAA,QACtB,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,aAAa,QAAA,CAAS;AAAA,OACxB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,IAAA,CAAK,QAAQ,IAAA,CAAK,OAAA,EAAS,OAAO,WAAW;AAAA,GACxD;AAEA,EAAA,MAAM,KAAA,GAAuBS,OAAAA;AAAA,IAC3B,OAAO;AAAA,MACL,MAAA;AAAA,MACA,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,KAAA;AAAA,MACA,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb;AAAA,KACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,IAAA,CAAK,SAAS,KAAA,EAAO,IAAA,CAAK,QAAQ,MAAM;AAAA,GACnD;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,UAAA;AAAA,IACR,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;ACzQO,SAAS,UAAU,EAAE,OAAA,EAAS,GAAA,EAAK,SAAA,EAAW,UAAS,EAAmB;AAC/E,EAAA,MAAM,KAAA,GAAiB;AAAA,IACrB,wBAAwB,OAAA,CAAQ,OAAA;AAAA,IAChC,uBAAuB,OAAA,CAAQ,MAAA;AAAA,IAC/B,uBAAuB,OAAA,CAAQ,MAAA;AAAA,IAC/B,GAAI,GAAA,GAAM,EAAE,kBAAA,EAAoB,GAAA,KAAQ;AAAC,GAC3C;AAEA,EAAA,uBACEZ,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,YAAA,EAAc,SAAS,CAAA,EAAG,KAAA,EAC3C,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAqB,UAAS,CAAA,EAC/C,CAAA;AAEJ;AAUO,SAAS,aAAA,CAAc,EAAE,IAAA,EAAM,OAAA,EAAS,UAAS,EAAuB;AAC7E,EAAA,IAAI,CAAC,IAAA,EAAM,uBAAOA,GAAAA,CAAAU,QAAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AAE9B,EAAA,MAAM,KAAA,GAAiB;AAAA,IACrB,sBAAA,EAAwB,SAAA,CAAU,IAAA,CAAK,OAAA,EAAS,QAAQ,OAAO,CAAA;AAAA,IAC/D,qBAAA,EAAuB,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,QAAQ,MAAM,CAAA;AAAA,IAC5D,qBAAA,EAAuB,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,QAAQ,MAAM;AAAA,GAC9D;AAEA,EAAA,uBACEV,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,OAC/B,QAAA,EACH,CAAA;AAEJ;ACnDA,IAAM,OAAO,MAAM;AAAC,CAAA;AASpB,SAAS,kBAAkB,EAAE,KAAA,EAAO,UAAAuB,SAAAA,EAAU,KAAA,EAAO,UAAS,EAAuB;AACnF,EAAA,MAAM,YAAA,GAAeA,SAAAA,CAAS,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC5C,EAAA,SAAA;AAAA,IACE,YAAA;AAAA,IACA,CAAA,sCAAA,EAAyC,KAAA,CAAM,IAAI,CAAA,UAAA,EAAa,MAAM,IAAI,CAAA,GAAA;AAAA,GAC5E;AACA,EAAA,IAAI,CAAC,cAAc,OAAO,IAAA;AAE1B,EAAA,MAAM,UAAU,YAAA,CAAa,SAAA;AAC7B,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,UAAA,EAAY,QAAA,KAAa,IAAA;AAChD,EAAA,MAAM,UAAA,GAAa,QAAA,KAAa,IAAA,IAAQ,KAAA,CAAM,QAAA,KAAa,IAAA;AAE3D,EAAA,MAAM,KAAA,GAAQ,aAAa,UAAA,GAAa,YAAA,CAAa,WAAW,KAAA,CAAM,KAAK,IAAI,KAAA,CAAM,KAAA;AAGrF,EAAA,MAAM,WAAW,KAAA,CAAM,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA;AAElD,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAkB;AACtC,IAAA,KAAA,CAAM,SAAS,YAAA,CAAa,WAAA,GAAc,aAAa,WAAA,CAAY,IAAI,IAAI,IAAI,CAAA;AAAA,EACjF,CAAA;AAEA,EAAA,uBACEvB,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,KAAA,EAAO,QAAA;AAAA,MACP,QAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MAET,WAAC,EAAE,EAAA,EAAI,aAAA,EAAe,OAAA,uBACrBA,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,EAAA;AAAA,UACA,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,KAAA;AAAA,UACA,QAAA,EAAU,YAAA;AAAA,UACV,QAAQ,KAAA,CAAM,WAAA;AAAA,UACd,OAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAU,UAAA;AAAA,UACV,QAAA,EAAU,MAAM,QAAA,KAAa,IAAA;AAAA,UAC7B,QAAA;AAAA,UACA,OAAA;AAAA,UACA,aAAA;AAAA,UACA,MAAA,EAAQ;AAAA;AAAA;AACV;AAAA,GAEJ;AAEJ;AAOO,IAAM,aAAA,mBAAgC,IAAA;AAAA,EAC3C,iBAAA;AAAA,EACA,CAAC,IAAA,EAAM,IAAA,KACL,KAAK,KAAA,KAAU,IAAA,CAAK,SACpB,IAAA,CAAK,QAAA,KAAa,KAAK,QAAA,IACvB,IAAA,CAAK,aAAa,IAAA,CAAK,QAAA,IACvB,KAAK,KAAA,CAAM,KAAA,KAAU,KAAK,KAAA,CAAM,KAAA,IAChC,KAAK,KAAA,CAAM,OAAA,KAAY,KAAK,KAAA,CAAM,OAAA,IAClC,KAAK,KAAA,CAAM,MAAA,KAAW,KAAK,KAAA,CAAM,MAAA,IACjC,KAAK,KAAA,CAAM,QAAA,KAAa,KAAK,KAAA,CAAM,QAAA,IACnC,KAAK,KAAA,CAAM,WAAA,KAAgB,KAAK,KAAA,CAAM;AAC1C,CAAA;AC9EA,IAAM,aAAA,GAAgB,CAAC,KAAA,KACrB,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,KAAA,IAAS,IAAA,GAAO,EAAA,GAAK,MAAA,CAAO,KAAK,CAAA;AAGvE,IAAM,eAAyC,CAAC;AAAA,EAC9C,EAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,KAAA,GAAQ,MAAA;AACd,EAAA,uBACEA,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAM,MAAM,SAAA,IAAa,MAAA;AAAA,MACzB,KAAA,EAAO,cAAc,KAAK,CAAA;AAAA,MAC1B,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,QAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,gBAAc,OAAA,IAAW,MAAA;AAAA,MACzB,kBAAA,EAAkB,aAAA;AAAA,MAClB,UAAU,CAAC,KAAA,KAAU,SAAS,KAAA,CAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,MACvD,MAAA;AAAA,MACA,OAAA;AAAA,MACC,GAAG,KAAA,CAAM;AAAA;AAAA,GACZ;AAEJ,CAAA;AAGA,IAAM,kBAA4C,CAAC;AAAA,EACjD,EAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,KAAA,GAAQ,MAAA;AACd,EAAA,uBACED,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA,EAAU,gBAAA;AAAA,MACV,KAAA,EAAO,cAAc,KAAK,CAAA;AAAA,MAC1B,QAAA;AAAA,MACA,QAAA;AAAA,MACA,gBAAc,OAAA,IAAW,MAAA;AAAA,MACzB,kBAAA,EAAkB,aAAA;AAAA,MAClB,UAAU,CAAC,KAAA,KAAU,SAAS,KAAA,CAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,MACvD,MAAA;AAAA,MACA,OAAA;AAAA,MACC,GAAG,KAAA,CAAM,KAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,WAAA,IAAe,IAAA,oBACpBC,GAAAA,CAAC,QAAA,EAAA,EAAO,OAAM,EAAA,EAAG,QAAA,EAAU,QAAA,EACxB,QAAA,EAAA,KAAA,CAAM,WAAA,EACT,CAAA;AAAA,QAED,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBAClBA,IAAC,QAAA,EAAA,EAA0B,KAAA,EAAO,MAAA,CAAO,KAAA,EAAO,UAAU,MAAA,CAAO,QAAA,EAC9D,iBAAO,KAAA,EAAA,EADG,MAAA,CAAO,KAEpB,CACD;AAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAMO,SAAS,iBAAiBuB,SAAAA,EAA+B;AAC9D,EAAA,IAAI,CAACA,SAAAA,CAAS,GAAA,CAAI,OAAO,CAAA,EAAG;AAC1B,IAAAA,SAAAA,CAAS,SAAS,OAAA,EAAS,EAAE,WAAW,YAAA,EAAc,YAAA,EAAc,IAAI,CAAA;AAAA,EAC1E;AACA,EAAA,IAAI,CAACA,SAAAA,CAAS,GAAA,CAAI,UAAU,CAAA,EAAG;AAC7B,IAAAA,SAAAA,CAAS,SAAS,UAAA,EAAY;AAAA,MAC5B,SAAA,EAAW,eAAA;AAAA,MACX,YAAA,EAAc,EAAA;AAAA,MACd,cAAA,EAAgB,CAAC,MAAA,KACf,KAAA,CAAM,QAAS,MAAA,CAAwC,OAAO,IAC1D,IAAA,GACA;AAAA,KACP,CAAA;AAAA,EACH;AACF;AAEA,IAAI,MAAA,GAAS,KAAA;AAQN,SAAS,eAAeC,gBAAAA,EAAsC;AACnE,EAAA,IAAI,MAAA,EAAQ;AACZ,EAAA,MAAA,GAAS,IAAA;AACT,EAAA,gBAAA,CAAiBA,gBAAe,CAAA;AAClC;ACzGO,SAAS,SACd,KAAA,EACA;AACA,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA,EAAAD,SAAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,cAAA,CAAe,eAAe,CAAA;AAC9B,EAAA,MAAM,iBAAiBA,SAAAA,IAAY,eAAA;AAEnC,EAAA,MAAM,OAAA,GAA4C;AAAA,IAChD,QAAA,EAAU,cAAA;AAAA,IACV,GAAI,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,KAAU,EAAC;AAAA,IACvC,GAAI,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,KAAiB,EAAC;AAAA,IACrD,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,IAC/B,GAAI,kBAAA,GAAqB,EAAE,kBAAA,KAAuB,EAAC;AAAA,IACnD,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa,EAAC;AAAA,IAC/B,GAAI,UAAA,GAAa,EAAE,UAAA,KAAe;AAAC,GACrC;AAEA,EAAA,MAAM,EAAA,GAAK,gBAAA,CAA0B,MAAA,EAAQ,OAAO,CAAA;AACpD,EAAA,MAAM,EAAE,SAAS,GAAA,EAAK,MAAA,EAAQ,QAAQ,EAAA,EAAI,QAAA,KAAa,EAAA,CAAG,MAAA;AAE1D,EAAA,uBACExB,IAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA;AAAA,MACzC,IAAI,EAAA,IAAM,QAAA;AAAA,MACV,UAAU,QAAA,IAAY,MAAA;AAAA,MAErB,QAAA,EAAA;AAAA,QAAA,MAAA,IAAU,wBAAQC,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,0BAA0B,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBACtEA,GAAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAkB,GAAA,EAC1B,iBAAO,GAAA,CAAI,CAAC,KAAA,qBACXA,IAAC,aAAA,EAAA,EAA+B,IAAA,EAAM,KAAA,CAAM,MAAA,EAAQ,SAClD,QAAA,kBAAAA,GAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,QAAA,EAAU,cAAA;AAAA,YACV,KAAA,EAAO,EAAA,CAAG,aAAA,CAAc,KAAA,CAAM,IAAI,CAAA;AAAA,YAClC,UAAU,QAAA,KAAa;AAAA;AAAA,SACzB,EAAA,EANkB,KAAA,CAAM,IAO1B,CACD,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;;;AC9BA,IAAM,eAAA,uBAAsB,GAAA,CAAI,CAAC,QAAQ,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,CAAC,CAAA;AAClE,IAAM,GAAA,GAAM,CAAC,CAAA,KAAwB,OAAO,MAAM,QAAA,GAAW,CAAA,EAAG,CAAC,CAAA,EAAA,CAAA,GAAO,CAAA;AAGxE,SAAS,YAAY,KAAA,EAAuB;AAC1C,EAAA,MAAM,CAAA,GAAI,8BAAA,CAA+B,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AAC1D,EAAA,IAAI,CAAC,CAAA,GAAI,CAAC,CAAA,EAAG,OAAO,SAAA;AACpB,EAAA,MAAM,GAAA,GAAM,CAAA,CAAE,CAAC,CAAA,CAAE,WAAW,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA,GAAI,EAAE,CAAC,CAAA;AAChE,EAAA,MAAM,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,GAAA,EAAK,EAAE,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAc;AAC3B,IAAA,MAAM,IAAI,CAAA,GAAI,GAAA;AACd,IAAA,OAAO,KAAK,OAAA,GAAU,CAAA,GAAI,KAAA,GAAA,CAAA,CAAU,CAAA,GAAI,SAAS,KAAA,KAAU,GAAA;AAAA,EAC7D,CAAA;AACA,EAAA,MAAM,MACJ,MAAA,GAAS,KAAA,CAAO,CAAA,IAAK,EAAA,GAAM,GAAG,CAAA,GAAI,MAAA,GAAS,KAAA,CAAO,CAAA,IAAK,IAAK,GAAG,CAAA,GAAI,MAAA,GAAS,KAAA,CAAM,IAAI,GAAG,CAAA;AAC3F,EAAA,OAAO,GAAA,GAAM,OAAO,SAAA,GAAY,SAAA;AAClC;AAEO,SAAS,eAAe,KAAA,EAAsD;AACnF,EAAA,OAAO,OAAO,UAAU,QAAA,GAAW,EAAE,QAAQ,KAAA,EAAM,GAAK,SAAS,EAAC;AACpE;AAGO,SAAS,iBAAiB,MAAA,EAAyC;AACxE,EAAA,MAAM,OAA+B,EAAC;AAEtC,EAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,IAAA,IAAA,CAAK,sBAAsB,IAAI,MAAA,CAAO,MAAA;AACtC,IAAA,IAAA,CAAK,4BAA4B,CAAA,GAAI,CAAA,mBAAA,EAAsB,MAAA,CAAO,MAAM,CAAA,WAAA,CAAA;AACxE,IAAA,IAAA,CAAK,+BAA+B,CAAA,GAAI,MAAA,CAAO,cAAA,IAAkB,WAAA,CAAY,OAAO,MAAM,CAAA;AAAA,EAC5F;AACA,EAAA,IAAI,MAAA,CAAO,IAAA,EAAM,IAAA,CAAK,0BAA0B,IAAI,MAAA,CAAO,IAAA;AAC3D,EAAA,IAAI,MAAA,CAAO,IAAA,EAAM,IAAA,CAAK,qBAAqB,IAAI,MAAA,CAAO,IAAA;AACtD,EAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM,IAAA,CAAK,mBAAmB,CAAA,GAAI,GAAA,CAAI,OAAO,QAAQ,CAAA;AAC5E,EAAA,IAAI,MAAA,CAAO,gBAAgB,IAAA,EAAM,IAAA,CAAK,uBAAuB,CAAA,GAAI,GAAA,CAAI,OAAO,YAAY,CAAA;AACxF,EAAA,IAAI,MAAA,CAAO,UAAU,IAAA,EAAM;AACzB,IAAA,MAAM,IAAI,MAAA,CAAO,MAAA;AACjB,IAAA,IAAI,CAAA,KAAM,IAAA,EAAM,IAAA,CAAK,gBAAgB,CAAA,GAAI,MAAA;AAAA,SAAA,IAChC,OAAO,CAAA,KAAM,QAAA,IAAY,eAAA,CAAgB,IAAI,CAAC,CAAA;AACrD,MAAA,IAAA,CAAK,gBAAgB,CAAA,GAAI,CAAA,mBAAA,EAAsB,CAAC,CAAA,CAAA,CAAA;AAAA,SAC7C,IAAA,CAAK,gBAAgB,CAAA,GAAI,GAAA,CAAI,CAAoB,CAAA;AAAA,EACxD;AAEA,EAAA,MAAA,CAAO,MAAA,CAAO,IAAA,EAAM,MAAA,CAAO,IAAA,IAAQ,EAAE,CAAA;AACrC,EAAA,OAAO,IAAA;AACT;AClEA,IAAM,eAAegB,aAAAA,CAAiC;AAAA,EACpD,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS,aAAA;AAAA,EACT,QAAQ;AACV,CAAC,CAAA;AAiBM,SAAS,cAAc,EAAE,KAAA,EAAO,KAAK,KAAA,EAAO,SAAA,EAAW,UAAS,EAAuB;AAC5F,EAAA,MAAM,MAAA,GAASJ,QAAQ,MAAM,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,OAAO,MAAA,IAAU,SAAA;AAChC,EAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IAAW,aAAA;AAClC,EAAA,MAAM,KAAA,GAAQA,QAAQ,MAAM,gBAAA,CAAiB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAE9D,EAAA,MAAM,GAAA,GAAMA,OAAAA;AAAA,IACV,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAO,CAAA;AAAA,IACjC,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAM;AAAA,GAC1B;AAEA,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,kBAAA,EAAoB,MAAA,KAAW,SAAA,GAAY,MAAA,GAAY,MAAA;AAAA,IACvD,oBAAA,EAAsB,OAAA,KAAY,aAAA,GAAgB,MAAA,GAAY;AAAA,GAChE;AAEA,EAAA,uBACEZ,IAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,GAAA,EAC3B,QAAA,EAAA,EAAA,KAAO,UAAA,mBACNA,GAAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAS,UAAA,EAAW,EAAI,GAAG,SAAA,EACtC,QAAA,EACH,CAAA,GACE,EAAA,KAAO,MAAA,mBACTA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,YAAA,EAAc,SAAS,GAAG,KAAA,EAAe,GAAG,SAAA,EAC7D,QAAA,EACH,CAAA,mBAEAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,YAAA,EAAc,SAAS,GAAG,KAAA,EAAe,GAAG,SAAA,EAC5D,QAAA,EACH,CAAA,EAEJ,CAAA;AAEJ;AAGO,SAAS,aAAA,GAAmC;AACjD,EAAA,OAAOmB,WAAW,YAAY,CAAA;AAChC;;;AC7CO,IAAM,cAAA,GAAiB","file":"index.js","sourcesContent":["/** Join truthy class names with a space. */\nexport function cx(...names: Array<string | false | null | undefined>): string {\n return names.filter(Boolean).join(\" \");\n}\n","import type { SVGProps } from \"react\";\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nconst base = (props: IconProps): IconProps => ({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n \"aria-hidden\": true,\n focusable: false,\n ...props,\n});\n\nexport const CheckIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n);\n\nexport const MinusIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M5 12h14\" />\n </svg>\n);\n\nexport const PlusIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n);\n\nexport const ChevronDownIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport const ChevronLeftIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n);\n\nexport const ChevronRightIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport const XIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n);\n\nexport const SearchIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n\nexport const SpinnerIcon = (p: IconProps) => (\n <svg {...base({ className: \"orynn-spin\", ...p })}>\n <path d=\"M21 12a9 9 0 1 1-6.2-8.6\" />\n </svg>\n);\n\nexport const EyeIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n);\n\nexport const EyeOffIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M10.7 5.1A9.9 9.9 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-3.4 4.2M6.6 6.6A17 17 0 0 0 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6\" />\n <path d=\"M9.9 9.9a3 3 0 0 0 4.2 4.2M2 2l20 20\" />\n </svg>\n);\n\nexport const CalendarIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n </svg>\n);\n\nexport const CircleIcon = (p: IconProps) => (\n <svg {...base({ strokeWidth: 0, fill: \"currentColor\", ...p })}>\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n);\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n type ReactNode,\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useId,\n useRef,\n} from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CheckIcon, MinusIcon } from \"../../internal/icons\";\nimport type { ControlSize } from \"../../types/common\";\n\nexport interface CheckboxGroupContextValue {\n name?: string;\n value: string[];\n toggle: (value: string, next: boolean) => void;\n disabled?: boolean;\n size?: ControlSize;\n isDisabledToUncheck: (value: string) => boolean;\n isDisabledToCheck: (value: string) => boolean;\n}\n\nexport const CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null);\n\ntype NativeCheckbox = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\" | \"size\" | \"value\"\n>;\n\nexport interface CheckboxProps extends NativeCheckbox {\n label?: ReactNode;\n description?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;\n /** Value used when inside a `<CheckboxGroup>`. */\n value?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n invalid?: boolean;\n size?: ControlSize;\n /** `\"filled\"` (default) paints the box on check; `\"outline\"` keeps it hollow. */\n variant?: \"filled\" | \"outline\";\n /** Put the label before the box. */\n labelPlacement?: \"end\" | \"start\";\n /** Bordered selectable card. */\n card?: boolean;\n /** Custom checked / indeterminate glyphs. */\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n className?: string;\n}\n\nconst sizePx: Record<ControlSize, string> = {\n sm: \"0.95rem\",\n md: \"1.125rem\",\n lg: \"1.35rem\",\n};\n\nexport const Checkbox = /* @__PURE__ */ forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(props, ref) {\n const group = useContext(CheckboxGroupContext);\n const {\n label,\n description,\n checked: checkedProp,\n defaultChecked,\n indeterminate = false,\n onChange,\n value,\n disabled: disabledProp,\n readOnly,\n required,\n invalid,\n size: sizeProp,\n variant = \"filled\",\n labelPlacement = \"end\",\n card,\n icon,\n indeterminateIcon,\n className,\n id: idProp,\n name: nameProp,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n const inGroup = group != null && value != null;\n const groupChecked = inGroup ? group.value.includes(value) : undefined;\n const isControlled = checkedProp !== undefined || groupChecked !== undefined;\n const checked = checkedProp ?? groupChecked ?? undefined;\n\n const size = sizeProp ?? group?.size ?? \"md\";\n const disabled =\n disabledProp ||\n group?.disabled ||\n (inGroup && checked === true && group.isDisabledToUncheck(value)) ||\n (inGroup && checked !== true && group.isDisabledToCheck(value)) ||\n false;\n\n useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n const next = e.target.checked;\n onChange?.(next, e);\n if (inGroup) group.toggle(value, next);\n };\n\n return (\n <label\n className={cx(\n \"orynn-choice\",\n card && \"orynn-choice--card\",\n variant === \"outline\" && \"orynn-choice--outline\",\n labelPlacement === \"start\" && \"orynn-choice--start\",\n className,\n )}\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n style={{ \"--orynn-check-size\": sizePx[size] } as React.CSSProperties}\n >\n <input\n {...rest}\n ref={(n) => {\n innerRef.current = n;\n if (typeof ref === \"function\") ref(n);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = n;\n }}\n type=\"checkbox\"\n className=\"orynn-choice__native\"\n id={id}\n name={nameProp ?? group?.name}\n value={value}\n checked={isControlled ? Boolean(checked) : undefined}\n defaultChecked={isControlled ? undefined : defaultChecked}\n disabled={disabled}\n required={required}\n aria-invalid={invalid || undefined}\n onChange={handleChange}\n />\n <span className=\"orynn-choice__control orynn-choice__control--checkbox\" aria-hidden=\"true\">\n <span className=\"orynn-choice__mark orynn-choice__mark--check\">\n {icon ?? <CheckIcon />}\n </span>\n <span className=\"orynn-choice__mark orynn-choice__mark--dash\">\n {indeterminateIcon ?? <MinusIcon />}\n </span>\n </span>\n {(label != null || description != null) && (\n <span className=\"orynn-choice__text\">\n {label != null && <span className=\"orynn-choice__label\">{label}</span>}\n {description != null && <span className=\"orynn-choice__desc\">{description}</span>}\n </span>\n )}\n </label>\n );\n },\n);\n","import { useRef } from \"react\";\n\n/** A ref whose `.current` always holds the latest value passed on render. */\nexport function useLatestRef<T>(value: T) {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n","import { useCallback, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/**\n * The single place the controlled / uncontrolled fork lives. When `value` is\n * provided the component is controlled and internal state is bypassed; otherwise\n * `defaultValue` seeds local state. `onChange` fires on every committed change in\n * both modes.\n */\nexport function useControllableState<T>({\n value,\n defaultValue,\n onChange,\n}: {\n value: T | undefined;\n defaultValue: T;\n onChange: ((value: T) => void) | undefined;\n}): readonly [T, (next: T | ((prev: T) => T)) => void] {\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState<T>(defaultValue);\n\n const current = isControlled ? (value as T) : uncontrolled;\n const currentRef = useLatestRef(current);\n const onChangeRef = useLatestRef(onChange);\n const isControlledRef = useLatestRef(isControlled);\n\n const setValue = useCallback((next: T | ((prev: T) => T)) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(currentRef.current) : next;\n if (Object.is(resolved, currentRef.current)) return;\n if (!isControlledRef.current) setUncontrolled(resolved);\n onChangeRef.current?.(resolved);\n }, []);\n\n return [current, setValue] as const;\n}\n","import { useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { ErrorProp, FieldProps, FieldRenderContext } from \"../../types/props\";\n\nfunction toMessages(error: ErrorProp): string[] {\n if (error == null) return [];\n return (Array.isArray(error) ? error : [error]).filter((m): m is string => Boolean(m));\n}\n\nfunction joinIds(...ids: Array<string | undefined>): string | undefined {\n const list = ids.filter((id): id is string => Boolean(id));\n return list.length > 0 ? list.join(\" \") : undefined;\n}\n\n/**\n * Layout + accessibility wrapper for a single control. Renders the label,\n * optional description, and an error/success region, and wires the ARIA\n * relationships (`htmlFor`, `aria-describedby`, `aria-invalid`, `aria-required`).\n *\n * ```tsx\n * <Field label=\"Name\" error={error}>\n * {({ id, describedById, invalid }) => (\n * <input id={id} aria-describedby={describedById} aria-invalid={invalid} />\n * )}\n * </Field>\n * ```\n */\nexport function Field(props: FieldProps) {\n const { label, description, error, success, required, disabled, hideLabel, className, children } =\n props;\n\n const reactId = useId();\n const id = props.id ?? reactId;\n\n const messages = toMessages(error);\n const invalid = messages.length > 0;\n const successMsg = !invalid && typeof success === \"string\" && success ? success : undefined;\n const valid = !invalid && (success === true || Boolean(successMsg));\n\n const descriptionId = description != null ? `${id}-description` : undefined;\n const errorId = invalid ? `${id}-error` : undefined;\n const successId = successMsg ? `${id}-success` : undefined;\n const describedById = joinIds(descriptionId, errorId, successId);\n\n const ctx: FieldRenderContext = { id, describedById, invalid, valid, required, disabled };\n\n return (\n <div\n className={cx(\"orynn-field\", className)}\n data-invalid={invalid || undefined}\n data-valid={valid || undefined}\n data-disabled={disabled || undefined}\n data-required={required || undefined}\n >\n {label != null && !hideLabel && (\n <label className=\"orynn-field__label\" htmlFor={id} id={`${id}-label`}>\n {label}\n </label>\n )}\n\n {description != null && (\n <p className=\"orynn-field__description\" id={descriptionId}>\n {description}\n </p>\n )}\n\n <div className=\"orynn-field__control\">\n {typeof children === \"function\" ? children(ctx) : children}\n </div>\n\n {invalid && (\n <p className=\"orynn-field__error\" id={errorId} role=\"alert\">\n {messages.length === 1 ? messages[0] : messages.map((m) => <span key={m}>{m}</span>)}\n </p>\n )}\n {successMsg && (\n <p\n className=\"orynn-field__error\"\n id={successId}\n style={{ color: \"var(--orynn-color-success)\" }}\n >\n {successMsg}\n </p>\n )}\n </div>\n );\n}\n","import { type ReactNode, useCallback, useId, useMemo } from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { cx } from \"../../internal/cx\";\nimport type { ControlSize, Feedback } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\nimport { Checkbox, CheckboxGroupContext, type CheckboxGroupContextValue } from \"./Checkbox\";\n\nexport interface CheckboxOption {\n label: ReactNode;\n value: string;\n description?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps {\n label?: ReactNode;\n description?: ReactNode;\n error?: Feedback;\n success?: string | boolean;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n size?: ControlSize;\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n orientation?: \"vertical\" | \"horizontal\";\n /** Minimum selections (blocks unchecking below it). */\n min?: number;\n /** Maximum selections (blocks checking above it). */\n max?: number;\n /** Convenience: render items from data instead of children. */\n options?: CheckboxOption[];\n children?: ReactNode;\n className?: string;\n id?: string;\n}\n\nexport function CheckboxGroup(props: CheckboxGroupProps) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n name: nameProp,\n size,\n value: valueProp,\n defaultValue,\n onChange,\n orientation = \"vertical\",\n min,\n max,\n options,\n children,\n className,\n id: idProp,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const name = nameProp ?? id;\n const [value, setValue] = useControllableState<string[]>({\n value: valueProp,\n defaultValue: defaultValue ?? [],\n onChange: undefined,\n });\n\n const toggle = useCallback(\n (v: string, next: boolean) => {\n const set = new Set(value);\n if (next) set.add(v);\n else set.delete(v);\n const arr = [...set];\n setValue(arr);\n onChange?.(arr);\n },\n [value, setValue, onChange],\n );\n\n const ctx = useMemo<CheckboxGroupContextValue>(\n () => ({\n name,\n value,\n toggle,\n disabled,\n size,\n isDisabledToUncheck: () => min != null && value.length <= min,\n isDisabledToCheck: (v) => max != null && value.length >= max && !value.includes(v),\n }),\n [name, value, toggle, disabled, size, min, max],\n );\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {() => (\n <CheckboxGroupContext.Provider value={ctx}>\n <div\n role=\"group\"\n aria-labelledby={label != null ? `${id}-label` : undefined}\n className={cx(\"orynn-choice-group\")}\n data-orientation={orientation}\n >\n {options\n ? options.map((o) => (\n <Checkbox\n key={o.value}\n value={o.value}\n label={o.label}\n description={o.description}\n disabled={o.disabled}\n />\n ))\n : children}\n </div>\n </CheckboxGroupContext.Provider>\n )}\n </Field>\n );\n}\n","import { type FocusEvent, type HTMLAttributes, type ReactNode, forwardRef, useState } from \"react\";\nimport { cx } from \"./cx\";\n\nexport type ControlSize = \"sm\" | \"md\" | \"lg\";\nexport type ControlVariant = \"outline\" | \"filled\" | \"flushed\" | \"unstyled\";\nexport type ControlRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"pill\";\n\nexport interface FieldBoxOwnProps {\n size?: ControlSize;\n variant?: ControlVariant;\n radius?: ControlRadius;\n disabled?: boolean;\n invalid?: boolean;\n /** Success / valid visual state. */\n valid?: boolean;\n /** Controlled focus ring. Omit to auto-track via focus-within. */\n focused?: boolean;\n /** Whether the floating label is raised (usually focused || has value). */\n active?: boolean;\n /** Rotates a chevron marked `.orynn-select__chevron`. */\n open?: boolean;\n /** Floating label node (usually a `<label class=\"orynn-box__label\">`). */\n floatingLabel?: ReactNode;\n left?: ReactNode;\n right?: ReactNode;\n /** Adds `.orynn-box--textarea` sizing. */\n textarea?: boolean;\n}\n\nexport interface FieldBoxProps\n extends FieldBoxOwnProps,\n Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n children: ReactNode;\n}\n\nexport const FieldBox = /* @__PURE__ */ forwardRef<HTMLDivElement, FieldBoxProps>(\n function FieldBox(props, ref) {\n const {\n size = \"md\",\n variant = \"outline\",\n radius,\n disabled,\n invalid,\n valid,\n focused,\n active,\n open,\n floatingLabel,\n left,\n right,\n textarea,\n className,\n children,\n onFocus,\n onBlur,\n ...rest\n } = props;\n\n const [focusWithin, setFocusWithin] = useState(false);\n const isFocused = focused ?? focusWithin;\n\n const handleFocus = (e: FocusEvent<HTMLDivElement>) => {\n if (focused === undefined) setFocusWithin(true);\n onFocus?.(e);\n };\n const handleBlur = (e: FocusEvent<HTMLDivElement>) => {\n if (focused === undefined && !e.currentTarget.contains(e.relatedTarget as Node)) {\n setFocusWithin(false);\n }\n onBlur?.(e);\n };\n\n return (\n <div\n ref={ref}\n className={cx(\n \"orynn-box\",\n floatingLabel != null && \"orynn-box--floating\",\n textarea && \"orynn-box--textarea\",\n className,\n )}\n data-size={size}\n data-variant={variant}\n data-radius={radius}\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n data-valid={valid || undefined}\n data-focused={isFocused || undefined}\n data-active={active || isFocused || undefined}\n data-open={open || undefined}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n >\n {left != null && <span className=\"orynn-box__adornment\">{left}</span>}\n {children}\n {floatingLabel}\n {right != null && <span className=\"orynn-box__adornment\">{right}</span>}\n </div>\n );\n },\n);\n","import {\n type ReactNode,\n type RefObject,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cx } from \"./cx\";\n\nconst useIsoLayoutEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\nexport interface PopoverProps {\n open: boolean;\n /** The element the popover is anchored to (usually the control frame). */\n anchorRef: RefObject<HTMLElement | null>;\n onClose: () => void;\n children: ReactNode;\n /** Match the anchor's width. Default true. */\n matchWidth?: boolean;\n /** Gap between anchor and popover, px. Default 6. */\n offset?: number;\n /** Extra class on the `.orynn-popover` element. */\n className?: string;\n /** Ref forwarded to the popover element (for outside-click checks by the caller). */\n popoverRef?: { current: HTMLDivElement | null };\n /** Called on outside pointerdown / Escape (in addition to onClose). */\n role?: string;\n id?: string;\n}\n\ninterface Pos {\n left: number;\n top: number;\n width: number;\n placement: \"bottom\" | \"top\";\n maxHeight: number;\n}\n\nexport function Popover({\n open,\n anchorRef,\n onClose,\n children,\n matchWidth = true,\n offset = 6,\n className,\n popoverRef,\n role,\n id,\n}: PopoverProps) {\n const innerRef = useRef<HTMLDivElement | null>(null);\n const setRef = (el: HTMLDivElement | null) => {\n innerRef.current = el;\n if (popoverRef) popoverRef.current = el;\n };\n const [pos, setPos] = useState<Pos | null>(null);\n\n useIsoLayoutEffect(() => {\n if (!open) return;\n const anchor = anchorRef.current;\n if (!anchor) return;\n\n const update = () => {\n const r = anchor.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom - offset;\n const above = r.top - offset;\n const wanted = innerRef.current?.scrollHeight ?? 280;\n const placeTop = below < Math.min(wanted, 240) && above > below;\n setPos({\n left: r.left,\n top: placeTop ? r.top - offset : r.bottom + offset,\n width: r.width,\n placement: placeTop ? \"top\" : \"bottom\",\n maxHeight: Math.max(140, (placeTop ? above : below) - 4),\n });\n };\n\n update();\n const ro = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(update) : undefined;\n ro?.observe(anchor);\n window.addEventListener(\"scroll\", update, true);\n window.addEventListener(\"resize\", update);\n return () => {\n ro?.disconnect();\n window.removeEventListener(\"scroll\", update, true);\n window.removeEventListener(\"resize\", update);\n };\n }, [open, anchorRef, offset]);\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const t = e.target as Node;\n if (innerRef.current?.contains(t) || anchorRef.current?.contains(t)) return;\n onClose();\n };\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n onClose();\n }\n };\n document.addEventListener(\"pointerdown\", onPointerDown, true);\n document.addEventListener(\"keydown\", onKey, true);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown, true);\n document.removeEventListener(\"keydown\", onKey, true);\n };\n }, [open, anchorRef, onClose]);\n\n if (!open || typeof document === \"undefined\" || !pos) return null;\n\n return createPortal(\n <div\n ref={setRef}\n id={id}\n role={role}\n className={cx(\"orynn-popover\", className)}\n style={{\n left: pos.left,\n top: pos.top,\n width: matchWidth ? pos.width : undefined,\n minWidth: pos.width,\n maxHeight: pos.maxHeight,\n transform: pos.placement === \"top\" ? \"translateY(-100%)\" : undefined,\n }}\n >\n {children}\n </div>,\n document.body,\n );\n}\n","export const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\n\nexport const isSameDay = (a: Date | null, b: Date | null) =>\n !!a &&\n !!b &&\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nexport const addDays = (d: Date, n: number) => {\n const r = new Date(d);\n r.setDate(r.getDate() + n);\n return r;\n};\n\nexport const addMonths = (d: Date, n: number) => {\n const r = new Date(d.getFullYear(), d.getMonth() + n, 1);\n const day = Math.min(d.getDate(), daysInMonth(r.getFullYear(), r.getMonth()));\n r.setDate(day);\n return r;\n};\n\nexport const daysInMonth = (year: number, month: number) => new Date(year, month + 1, 0).getDate();\n\nexport const clampDate = (d: Date, min?: Date, max?: Date) => {\n if (min && d < startOfDay(min)) return startOfDay(min);\n if (max && d > startOfDay(max)) return startOfDay(max);\n return d;\n};\n\nconst pad = (n: number, len = 2) => String(n).padStart(len, \"0\");\n\n/** Formats with `yyyy MM M dd d MMMM MMM` tokens. */\nexport function formatDate(d: Date, fmt: string, locale?: string): string {\n const monthLong = new Intl.DateTimeFormat(locale, { month: \"long\" }).format(d);\n const monthShort = new Intl.DateTimeFormat(locale, { month: \"short\" }).format(d);\n return fmt\n .replace(/yyyy/g, String(d.getFullYear()))\n .replace(/MMMM/g, monthLong)\n .replace(/MMM/g, monthShort)\n .replace(/MM/g, pad(d.getMonth() + 1))\n .replace(/dd/g, pad(d.getDate()))\n .replace(/\\bM\\b/g, String(d.getMonth() + 1))\n .replace(/\\bd\\b/g, String(d.getDate()));\n}\n\n/** Lenient parse: pulls the first 1–2 / 4 digit groups in token order. */\nexport function parseDate(input: string, fmt: string): Date | null {\n const nums = input.match(/\\d+/g);\n if (!nums) return null;\n const order = (fmt.match(/yyyy|MM|dd|M|d/g) ?? [\"yyyy\", \"MM\", \"dd\"]).map((t) => t[0]);\n let y: number | undefined;\n let m: number | undefined;\n let dd: number | undefined;\n order.forEach((t, i) => {\n const n = Number(nums[i]);\n if (Number.isNaN(n)) return;\n if (t === \"y\") y = n < 100 ? 2000 + n : n;\n else if (t === \"M\") m = n - 1;\n else if (t === \"d\") dd = n;\n });\n if (y == null || m == null || dd == null) return null;\n const d = new Date(y, m, dd);\n return Number.isNaN(d.getTime()) ? null : d;\n}\n\nexport function toDate(v: Date | string | null | undefined): Date | null {\n if (v == null) return null;\n if (v instanceof Date) return Number.isNaN(v.getTime()) ? null : startOfDay(v);\n const d = new Date(v);\n return Number.isNaN(d.getTime()) ? null : startOfDay(d);\n}\n\n/** Grid of 6 weeks (42 cells) starting on `firstDayOfWeek`. */\nexport function monthMatrix(viewYear: number, viewMonth: number, firstDayOfWeek: number): Date[] {\n const first = new Date(viewYear, viewMonth, 1);\n const offset = (first.getDay() - firstDayOfWeek + 7) % 7;\n const start = addDays(first, -offset);\n return Array.from({ length: 42 }, (_, i) => addDays(start, i));\n}\n\nexport function weekdayLabels(firstDayOfWeek: number, locale?: string): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n // 2023-01-01 is a Sunday\n return Array.from({ length: 7 }, (_, i) =>\n fmt.format(new Date(2023, 0, 1 + ((firstDayOfWeek + i) % 7))),\n );\n}\n\nexport function isoWeek(d: Date): number {\n const date = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n const dayNum = (date.getUTCDay() + 6) % 7;\n date.setUTCDate(date.getUTCDate() - dayNum + 3);\n const firstThursday = new Date(Date.UTC(date.getUTCFullYear(), 0, 4));\n const diff = date.getTime() - firstThursday.getTime();\n return 1 + Math.round(diff / (7 * 24 * 3600 * 1000));\n}\n","import { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../../internal/icons\";\nimport {\n addDays,\n addMonths,\n clampDate,\n isSameDay,\n isoWeek,\n monthMatrix,\n startOfDay,\n weekdayLabels,\n} from \"./date-utils\";\n\nexport interface CalendarProps {\n value: Date | null;\n onSelect: (d: Date) => void;\n minDate?: Date;\n maxDate?: Date;\n isDisabled?: (d: Date) => boolean;\n firstDayOfWeek?: number;\n locale?: string;\n showWeekNumbers?: boolean;\n showToday?: boolean;\n showClear?: boolean;\n onClear?: () => void;\n /** Focus the grid on mount. */\n autoFocus?: boolean;\n}\n\nexport function Calendar({\n value,\n onSelect,\n minDate,\n maxDate,\n isDisabled,\n firstDayOfWeek = 0,\n locale,\n showWeekNumbers,\n showToday,\n showClear,\n onClear,\n autoFocus,\n}: CalendarProps) {\n const today = startOfDay(new Date());\n const initial = value ?? clampDate(today, minDate, maxDate);\n const [view, setView] = useState({ y: initial.getFullYear(), m: initial.getMonth() });\n const [focused, setFocused] = useState<Date>(initial);\n const gridRef = useRef<HTMLTableElement | null>(null);\n\n useEffect(() => {\n if (value) {\n setView({ y: value.getFullYear(), m: value.getMonth() });\n setFocused(value);\n }\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) {\n gridRef.current?.querySelector<HTMLButtonElement>('[data-focused=\"true\"]')?.focus();\n }\n }, [autoFocus]);\n\n const cells = monthMatrix(view.y, view.m, firstDayOfWeek);\n const weekdays = weekdayLabels(firstDayOfWeek, locale);\n const monthName = new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(\n new Date(view.y, view.m, 1),\n );\n\n const outOfRange = (d: Date) =>\n (minDate != null && d < startOfDay(minDate)) ||\n (maxDate != null && d > startOfDay(maxDate)) ||\n Boolean(isDisabled?.(d));\n\n const goto = (d: Date) => {\n const c = clampDate(d, minDate, maxDate);\n setFocused(c);\n setView({ y: c.getFullYear(), m: c.getMonth() });\n requestAnimationFrame(() => {\n gridRef.current?.querySelector<HTMLButtonElement>('[data-focused=\"true\"]')?.focus();\n });\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n const k = e.key;\n let next: Date | null = null;\n if (k === \"ArrowLeft\") next = addDays(focused, -1);\n else if (k === \"ArrowRight\") next = addDays(focused, 1);\n else if (k === \"ArrowUp\") next = addDays(focused, -7);\n else if (k === \"ArrowDown\") next = addDays(focused, 7);\n else if (k === \"Home\") next = addDays(focused, -((focused.getDay() - firstDayOfWeek + 7) % 7));\n else if (k === \"End\")\n next = addDays(focused, 6 - ((focused.getDay() - firstDayOfWeek + 7) % 7));\n else if (k === \"PageUp\") next = addMonths(focused, e.shiftKey ? -12 : -1);\n else if (k === \"PageDown\") next = addMonths(focused, e.shiftKey ? 12 : 1);\n else if (k === \"Enter\" || k === \" \") {\n e.preventDefault();\n if (!outOfRange(focused)) onSelect(focused);\n return;\n } else return;\n e.preventDefault();\n goto(next);\n };\n\n const years: number[] = [];\n const minY = minDate ? minDate.getFullYear() : view.y - 10;\n const maxY = maxDate ? maxDate.getFullYear() : view.y + 10;\n for (let y = minY; y <= maxY; y += 1) years.push(y);\n\n return (\n <div className=\"orynn-calendar\">\n <div className=\"orynn-calendar__header\">\n <button\n type=\"button\"\n className=\"orynn-calendar__nav\"\n aria-label=\"Previous month\"\n onClick={() => setView((v) => ({ y: v.m === 0 ? v.y - 1 : v.y, m: (v.m + 11) % 12 }))}\n >\n <ChevronLeftIcon />\n </button>\n <div className=\"orynn-calendar__title\">\n <select\n className=\"orynn-calendar__select\"\n aria-label=\"Month\"\n value={view.m}\n onChange={(e) => setView((v) => ({ ...v, m: Number(e.target.value) }))}\n >\n {Array.from({ length: 12 }, (_, i) => (\n <option key={i} value={i}>\n {new Intl.DateTimeFormat(locale, { month: \"long\" }).format(new Date(2023, i, 1))}\n </option>\n ))}\n </select>\n <select\n className=\"orynn-calendar__select\"\n aria-label=\"Year\"\n value={view.y}\n onChange={(e) => setView((v) => ({ ...v, y: Number(e.target.value) }))}\n >\n {years.map((y) => (\n <option key={y} value={y}>\n {y}\n </option>\n ))}\n </select>\n </div>\n <button\n type=\"button\"\n className=\"orynn-calendar__nav\"\n aria-label=\"Next month\"\n onClick={() => setView((v) => ({ y: v.m === 11 ? v.y + 1 : v.y, m: (v.m + 1) % 12 }))}\n >\n <ChevronRightIcon />\n </button>\n </div>{\" \"}\n <table\n ref={gridRef}\n className=\"orynn-calendar__grid\"\n role=\"grid\"\n aria-label={monthName}\n onKeyDown={onKeyDown}\n >\n <thead>\n <tr>\n {showWeekNumbers && <th aria-hidden=\"true\" />}\n {weekdays.map((w) => (\n <th key={w} scope=\"col\">\n {w}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: 6 }, (_, week) => {\n const row = cells.slice(week * 7, week * 7 + 7);\n const firstOfRow = row[0] as Date;\n return (\n <tr key={firstOfRow.toISOString()}>\n {showWeekNumbers && (\n <td className=\"orynn-calendar__weeknum\">{isoWeek(firstOfRow)}</td>\n )}\n {row.map((d) => {\n const inMonth = d.getMonth() === view.m;\n const disabled = outOfRange(d);\n const selected = isSameDay(d, value);\n const isFocused = isSameDay(d, focused);\n return (\n <td key={d.toISOString()} role=\"gridcell\" aria-selected={selected}>\n <button\n type=\"button\"\n className=\"orynn-calendar__day\"\n tabIndex={isFocused ? 0 : -1}\n data-focused={isFocused || undefined}\n data-outside={!inMonth || undefined}\n data-today={isSameDay(d, today) || undefined}\n data-selected={selected || undefined}\n disabled={disabled}\n aria-label={new Intl.DateTimeFormat(locale, { dateStyle: \"full\" }).format(\n d,\n )}\n onClick={() => {\n setFocused(d);\n onSelect(d);\n }}\n >\n {d.getDate()}\n </button>\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n {(showToday || showClear) && (\n <div className=\"orynn-calendar__footer\">\n {showToday ? (\n <button\n type=\"button\"\n className=\"orynn-calendar__action\"\n disabled={outOfRange(today)}\n onClick={() => onSelect(today)}\n >\n Today\n </button>\n ) : (\n <span />\n )}\n {showClear && (\n <button type=\"button\" className=\"orynn-calendar__action\" onClick={onClear}>\n Clear\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { type KeyboardEvent, forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { Popover } from \"../../internal/Popover\";\nimport { CalendarIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\nimport { Calendar } from \"./Calendar\";\nimport { formatDate, isSameDay, parseDate, startOfDay, toDate } from \"./date-utils\";\n\nexport interface DatePickerProps\n extends Omit<BaseControlProps, \"startContent\" | \"endContent\" | \"loading\"> {\n value?: Date | string | null;\n defaultValue?: Date | string | null;\n onChange?: (value: Date | null) => void;\n /** Display / parse pattern (`yyyy MM dd M d MMM MMMM`). Default `\"yyyy-MM-dd\"`. */\n format?: string;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[] | ((date: Date) => boolean);\n firstDayOfWeek?: number;\n locale?: string;\n showWeekNumbers?: boolean;\n showToday?: boolean;\n showClear?: boolean;\n /** Render the calendar always, without a text field. */\n inline?: boolean;\n /** Allow typing a date into the field. Default true. */\n allowInput?: boolean;\n closeOnSelect?: boolean;\n placeholder?: string;\n}\n\nexport const DatePicker = /* @__PURE__ */ forwardRef<HTMLInputElement, DatePickerProps>(\n function DatePicker(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n clearable,\n onClear,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue,\n onChange,\n format = \"yyyy-MM-dd\",\n minDate,\n maxDate,\n disabledDates,\n firstDayOfWeek = 0,\n locale,\n showWeekNumbers,\n showToday = true,\n showClear,\n inline = false,\n allowInput = true,\n closeOnSelect = true,\n placeholder,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const panelId = `${id}-cal`;\n\n const isControlled = valueProp !== undefined;\n const [inner, setInner] = useState<Date | null>(() => toDate(defaultValue));\n const value = isControlled ? toDate(valueProp) : inner;\n\n const [open, setOpen] = useState(false);\n const [gridFocus, setGridFocus] = useState(false);\n const [text, setText] = useState(() => (value ? formatDate(value, format, locale) : \"\"));\n const boxRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n setText(value ? formatDate(value, format, locale) : \"\");\n }, [value, format, locale]);\n\n const isDisabledDate = (d: Date) => {\n if (Array.isArray(disabledDates))\n return disabledDates.some((x) => isSameDay(startOfDay(x), d));\n return Boolean(disabledDates?.(d));\n };\n\n const commit = (d: Date | null) => {\n if (!isControlled) setInner(d);\n onChange?.(d);\n };\n\n const select = (d: Date) => {\n if (isDisabledDate(d)) return;\n commit(startOfDay(d));\n if (closeOnSelect) {\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) return;\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setOpen(true);\n setGridFocus(true);\n } else if (e.key === \"Escape\" && open) {\n e.preventDefault();\n setOpen(false);\n } else if (e.key === \"Enter\") {\n const parsed = parseDate(text, format);\n if (parsed && !isDisabledDate(startOfDay(parsed))) select(parsed);\n }\n };\n\n const cal = (\n <Calendar\n value={value}\n onSelect={select}\n minDate={minDate}\n maxDate={maxDate}\n isDisabled={isDisabledDate}\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n showWeekNumbers={showWeekNumbers}\n showToday={showToday}\n showClear={showClear}\n onClear={() => {\n commit(null);\n setOpen(false);\n }}\n autoFocus={(open && gridFocus) || inline}\n />\n );\n\n if (inline) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {() => (\n <div className=\"orynn-popover\" style={{ position: \"static\" }}>\n {cal}\n </div>\n )}\n </Field>\n );\n }\n\n const hasValue = value != null;\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <>\n <FieldBox\n ref={boxRef}\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n open={open}\n active={hasValue || text.length > 0}\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n right={\n <>\n {clearable && hasValue && !disabled && !readOnly && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={() => {\n commit(null);\n onClear?.();\n }}\n >\n <XIcon />\n </button>\n )}\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Open calendar\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={disabled}\n onClick={() => {\n if (disabled || readOnly) return;\n setGridFocus(true);\n setOpen((o) => !o);\n }}\n >\n <CalendarIcon />\n </button>\n </>\n }\n >\n <input\n ref={(n) => {\n inputRef.current = n;\n if (typeof ref === \"function\") ref(n);\n else if (ref)\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = n;\n }}\n id={id}\n name={name}\n className=\"orynn-box__field\"\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"off\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={panelId}\n aria-haspopup=\"dialog\"\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n value={text}\n disabled={disabled}\n readOnly={!allowInput || readOnly}\n required={required}\n placeholder={floatingLabel ? undefined : (placeholder ?? format.toLowerCase())}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKeyDown}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n const parsed = parseDate(text, format);\n if (parsed && !isDisabledDate(startOfDay(parsed))) {\n commit(startOfDay(parsed));\n setText(formatDate(startOfDay(parsed), format, locale));\n } else {\n setText(value ? formatDate(value, format, locale) : \"\");\n }\n }}\n />\n </FieldBox>\n\n <Popover\n open={open}\n anchorRef={boxRef}\n onClose={() => {\n setOpen(false);\n setGridFocus(false);\n }}\n matchWidth={false}\n id={panelId}\n role=\"dialog\"\n >\n {cal}\n </Popover>\n </>\n )}\n </Field>\n );\n },\n);\n","import {\n type KeyboardEvent,\n type ReactNode,\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { Popover } from \"../../internal/Popover\";\nimport { CheckIcon, ChevronDownIcon, SpinnerIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport type { DropdownOption } from \"../../types/config\";\nimport { Field } from \"../Field/Field\";\n\nexport type { DropdownOption };\n\ninterface OptionState {\n selected: boolean;\n active: boolean;\n disabled: boolean;\n /** Query the option matched, for highlighting. */\n query: string;\n}\n\nexport interface DropdownProps extends Omit<BaseControlProps, \"startContent\" | \"endContent\"> {\n options: DropdownOption[];\n value?: string | string[] | null;\n defaultValue?: string | string[] | null;\n onChange?: (value: string | string[] | null) => void;\n multiple?: boolean;\n /** Type in the control to filter options. */\n searchable?: boolean;\n filterMode?: \"contains\" | \"startsWith\";\n filterFn?: (option: DropdownOption, query: string) => boolean;\n /** Bold the matched substring in option labels. Default true when searchable. */\n highlightMatch?: boolean;\n renderOption?: (option: DropdownOption, state: OptionState) => ReactNode;\n renderValue?: (selected: DropdownOption[]) => ReactNode;\n placeholder?: string;\n emptyMessage?: ReactNode;\n /** Close the panel after a pick. Default true for single, false for multiple. */\n closeOnSelect?: boolean;\n /** Cap the chips shown before \"+N\". */\n maxSelectedLabels?: number;\n /** Fall back to a native `<select>` (single, no search). */\n native?: boolean;\n startContent?: ReactNode;\n}\n\nconst toArray = (v: string | string[] | null | undefined): string[] =>\n v == null ? [] : Array.isArray(v) ? v : [v];\n\nfunction Highlight({ text, query }: { text: string; query: string }) {\n if (!query) return <>{text}</>;\n const i = text.toLowerCase().indexOf(query.toLowerCase());\n if (i < 0) return <>{text}</>;\n return (\n <>\n {text.slice(0, i)}\n <mark>{text.slice(i, i + query.length)}</mark>\n {text.slice(i + query.length)}\n </>\n );\n}\n\nexport const Dropdown = /* @__PURE__ */ forwardRef<HTMLInputElement, DropdownProps>(\n function Dropdown(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n clearable,\n onClear,\n loading,\n id: idProp,\n name,\n className,\n options,\n value: valueProp,\n defaultValue,\n onChange,\n multiple = false,\n searchable = false,\n filterMode = \"contains\",\n filterFn,\n highlightMatch,\n renderOption,\n renderValue,\n placeholder,\n emptyMessage = \"No results\",\n closeOnSelect = !multiple,\n maxSelectedLabels,\n native = false,\n startContent,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const listId = `${id}-listbox`;\n\n const isControlled = valueProp !== undefined;\n const [inner, setInner] = useState<string[]>(() => toArray(defaultValue));\n const selectedValues = isControlled ? toArray(valueProp) : inner;\n\n const commit = (next: string[]) => {\n if (!isControlled) setInner(next);\n onChange?.(multiple ? next : (next[0] ?? null));\n };\n\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n const boxRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const byValue = useMemo(() => new Map(options.map((o) => [o.value, o])), [options]);\n const selectedOptions = selectedValues\n .map((v) => byValue.get(v))\n .filter(Boolean) as DropdownOption[];\n\n const filtered = useMemo(() => {\n if (!searchable || !query) return options;\n const q = query.toLowerCase();\n const match =\n filterFn ??\n ((o: DropdownOption) =>\n filterMode === \"startsWith\"\n ? o.label.toLowerCase().startsWith(q)\n : o.label.toLowerCase().includes(q));\n return options.filter((o) => match(o, query));\n }, [options, searchable, query, filterMode, filterFn]);\n\n // flatten with group headers for rendering + keep an index of selectable rows\n const rows = useMemo(() => {\n const out: Array<\n | { type: \"group\"; label: string }\n | { type: \"option\"; option: DropdownOption; optionIndex: number }\n > = [];\n let seenGroup: string | undefined;\n let optionIndex = 0;\n for (const o of filtered) {\n if (o.group && o.group !== seenGroup) {\n seenGroup = o.group;\n out.push({ type: \"group\", label: o.group });\n }\n out.push({ type: \"option\", option: o, optionIndex });\n optionIndex += 1;\n }\n return out;\n }, [filtered]);\n\n const selectableOptions = filtered;\n useEffect(() => {\n setActiveIndex((i) => Math.min(Math.max(0, i), Math.max(0, selectableOptions.length - 1)));\n }, [selectableOptions.length]);\n\n useEffect(() => {\n if (!open) setQuery(\"\");\n }, [open]);\n\n const firstRelevantIndex = () => {\n const sel = selectableOptions.findIndex((o) => selectedValues.includes(o.value));\n return sel >= 0 ? sel : 0;\n };\n\n useEffect(() => {\n if (!open) return;\n const el = listRef.current?.querySelector<HTMLElement>('[data-active=\"true\"]');\n el?.scrollIntoView?.({ block: \"nearest\" });\n }, [activeIndex, open]);\n\n const openPanel = () => {\n if (disabled || readOnly || open) return;\n setActiveIndex(firstRelevantIndex());\n setOpen(true);\n };\n\n const pick = (opt: DropdownOption) => {\n if (opt.disabled) return;\n if (multiple) {\n const has = selectedValues.includes(opt.value);\n commit(\n has ? selectedValues.filter((v) => v !== opt.value) : [...selectedValues, opt.value],\n );\n setQuery(\"\");\n } else {\n commit([opt.value]);\n }\n if (closeOnSelect) {\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n\n const clearAll = () => {\n commit([]);\n onClear?.();\n setQuery(\"\");\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) return;\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n if (!open) {\n openPanel();\n setActiveIndex(firstRelevantIndex());\n } else {\n setActiveIndex((i) => Math.min(selectableOptions.length - 1, i + 1));\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!open) {\n openPanel();\n setActiveIndex(firstRelevantIndex());\n } else {\n setActiveIndex((i) => Math.max(0, i - 1));\n }\n break;\n case \"Home\":\n if (open) {\n e.preventDefault();\n setActiveIndex(0);\n }\n break;\n case \"End\":\n if (open) {\n e.preventDefault();\n setActiveIndex(selectableOptions.length - 1);\n }\n break;\n case \"Enter\":\n if (open && selectableOptions[activeIndex]) {\n e.preventDefault();\n pick(selectableOptions[activeIndex]);\n }\n break;\n case \"Escape\":\n if (open) {\n e.preventDefault();\n setOpen(false);\n }\n break;\n case \" \":\n if (!searchable) {\n e.preventDefault();\n if (!open) openPanel();\n else if (selectableOptions[activeIndex]) pick(selectableOptions[activeIndex]);\n }\n break;\n case \"Backspace\":\n if (multiple && query === \"\" && selectedValues.length > 0) {\n commit(selectedValues.slice(0, -1));\n }\n break;\n case \"Tab\":\n setOpen(false);\n break;\n }\n };\n\n const hasValue = selectedValues.length > 0;\n const doHighlight = highlightMatch ?? searchable;\n\n // -------- native fallback --------\n if (native && !multiple && !searchable) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {({ describedById, invalid }) => (\n <select\n id={id}\n name={name}\n className=\"orynn-dropdown\"\n value={selectedValues[0] ?? \"\"}\n disabled={disabled}\n required={required}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={(e) => commit(e.target.value ? [e.target.value] : [])}\n >\n {placeholder != null && (\n <option value=\"\" disabled={required}>\n {placeholder}\n </option>\n )}\n {options.map((o) => (\n <option key={o.value} value={o.value} disabled={o.disabled}>\n {o.label}\n </option>\n ))}\n </select>\n )}\n </Field>\n );\n }\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <>\n <FieldBox\n ref={boxRef}\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n open={open}\n active={hasValue}\n onClick={() => {\n inputRef.current?.focus();\n openPanel();\n }}\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n right={\n <>\n {loading && <SpinnerIcon />}\n {clearable && hasValue && !disabled && !readOnly && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n clearAll();\n }}\n >\n <XIcon />\n </button>\n )}\n {valid && !loading && <CheckIcon className=\"orynn-icon-success\" />}\n <ChevronDownIcon className=\"orynn-select__chevron\" />\n </>\n }\n >\n <div className=\"orynn-select__value\">\n {startContent}\n {multiple && selectedOptions.length > 0 && (\n <span className=\"orynn-select__chips\">\n {(maxSelectedLabels\n ? selectedOptions.slice(0, maxSelectedLabels)\n : selectedOptions\n ).map((o) => (\n <span key={o.value} className=\"orynn-select__chip\">\n <span>{o.label}</span>\n <button\n type=\"button\"\n aria-label={`Remove ${o.label}`}\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n commit(selectedValues.filter((v) => v !== o.value));\n }}\n >\n <XIcon />\n </button>\n </span>\n ))}\n {maxSelectedLabels && selectedOptions.length > maxSelectedLabels && (\n <span className=\"orynn-select__chip\">\n <span>+{selectedOptions.length - maxSelectedLabels}</span>\n </span>\n )}\n </span>\n )}\n {!multiple && hasValue && query === \"\" && (\n <span className=\"orynn-select__single\">\n {renderValue ? renderValue(selectedOptions) : selectedOptions[0]?.label}\n </span>\n )}\n {!hasValue && !searchable && query === \"\" && (\n <span className=\"orynn-select__value--placeholder orynn-select__single\">\n {floatingLabel ? \"\" : placeholder}\n </span>\n )}\n <input\n {...(ref ? { ref: setRefs(ref, inputRef) } : { ref: inputRef })}\n id={id}\n name={name}\n className=\"orynn-select__search\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listId}\n aria-autocomplete={searchable ? \"list\" : \"none\"}\n aria-activedescendant={\n open && selectableOptions[activeIndex]\n ? `${id}-opt-${selectableOptions[activeIndex].value}`\n : undefined\n }\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n autoComplete=\"off\"\n readOnly={!searchable || readOnly}\n disabled={disabled}\n placeholder={\n !hasValue && (searchable || !floatingLabel) ? placeholder : undefined\n }\n value={query}\n size={1}\n onChange={(e) => {\n setQuery(e.target.value);\n if (!open) setOpen(true);\n }}\n onKeyDown={onKeyDown}\n onFocus={openPanel}\n />\n </div>\n </FieldBox>\n\n <Popover\n open={open}\n anchorRef={boxRef}\n onClose={() => setOpen(false)}\n popoverRef={listRef}\n >\n <div\n className=\"orynn-listbox\"\n id={listId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n >\n {selectableOptions.length === 0 ? (\n <div className=\"orynn-listbox__empty\">{emptyMessage}</div>\n ) : (\n rows.map((row) =>\n row.type === \"group\" ? (\n <div key={`g-${row.label}`} className=\"orynn-listbox__group\">\n {row.label}\n </div>\n ) : (\n <div\n key={row.option.value}\n id={`${id}-opt-${row.option.value}`}\n role=\"option\"\n aria-selected={selectedValues.includes(row.option.value)}\n aria-disabled={row.option.disabled || undefined}\n className=\"orynn-option\"\n data-active={row.optionIndex === activeIndex || undefined}\n data-selected={selectedValues.includes(row.option.value) || undefined}\n data-disabled={row.option.disabled || undefined}\n onMouseEnter={() => setActiveIndex(row.optionIndex)}\n onClick={() => pick(row.option)}\n >\n {renderOption ? (\n renderOption(row.option, {\n selected: selectedValues.includes(row.option.value),\n active: row.optionIndex === activeIndex,\n disabled: Boolean(row.option.disabled),\n query,\n })\n ) : (\n <>\n {row.option.icon}\n <span className=\"orynn-option__body\">\n <span className=\"orynn-option__label\">\n {doHighlight ? (\n <Highlight text={row.option.label} query={query} />\n ) : (\n row.option.label\n )}\n </span>\n {row.option.description != null && (\n <span className=\"orynn-option__desc\">{row.option.description}</span>\n )}\n </span>\n {selectedValues.includes(row.option.value) && (\n <CheckIcon className=\"orynn-option__check\" />\n )}\n </>\n )}\n </div>\n ),\n )\n )}\n </div>\n </Popover>\n </>\n )}\n </Field>\n );\n },\n);\n\nfunction setRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const r of refs) {\n if (typeof r === \"function\") r(node);\n else if (r && typeof r === \"object\") (r as React.MutableRefObject<T | null>).current = node;\n }\n };\n}\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n forwardRef,\n useId,\n useState,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { CheckIcon, EyeIcon, EyeOffIcon, SpinnerIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ntype NativeInput = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"type\" | \"size\" | \"prefix\"\n>;\n\nexport interface InputProps extends BaseControlProps, NativeInput {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n /** Fired on Enter. */\n onEnter?: (value: string) => void;\n type?: \"text\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"url\";\n /** Static text glued to the start (e.g. `https://`). */\n prefix?: ReactNode;\n /** Static text glued to the end (e.g. `.com`). */\n suffix?: ReactNode;\n /** Show a show/hide toggle (implied for `type=\"password\"`). */\n passwordToggle?: boolean;\n /** Show a live character counter. Pairs well with `maxLength`. */\n showCount?: boolean;\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(\n function Input(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n startContent,\n endContent,\n clearable,\n onClear,\n loading,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue,\n onChange,\n onEnter,\n onKeyDown,\n type = \"text\",\n prefix,\n suffix,\n passwordToggle,\n showCount,\n maxLength,\n placeholder,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const [value, setValue] = useControllableState<string>({\n value: valueProp,\n defaultValue: defaultValue ?? \"\",\n onChange: undefined,\n });\n const [reveal, setReveal] = useState(false);\n\n const showToggle = (passwordToggle ?? type === \"password\") && !disabled && !readOnly;\n const effectiveType = type === \"password\" && reveal ? \"text\" : type;\n const hasValue = value.length > 0;\n const showClear = clearable && hasValue && !disabled && !readOnly;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n onChange?.(e.target.value, e);\n };\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") onEnter?.(value);\n onKeyDown?.(e);\n };\n const clear = () => {\n setValue(\"\");\n onClear?.();\n };\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <FieldBox\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n active={hasValue}\n left={\n startContent != null || prefix != null ? (\n <>\n {startContent}\n {prefix != null && <span className=\"orynn-box__adornment--affix\">{prefix}</span>}\n </>\n ) : undefined\n }\n right={\n <>\n {suffix != null && <span className=\"orynn-box__adornment--affix\">{suffix}</span>}\n {showCount && (\n <span className=\"orynn-box__adornment--affix\">\n {value.length}\n {maxLength ? `/${maxLength}` : \"\"}\n </span>\n )}\n {showClear && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={clear}\n >\n <XIcon />\n </button>\n )}\n {showToggle && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label={reveal ? \"Hide\" : \"Show\"}\n aria-pressed={reveal}\n tabIndex={-1}\n onClick={() => setReveal((v) => !v)}\n >\n {reveal ? <EyeOffIcon /> : <EyeIcon />}\n </button>\n )}\n {loading && <SpinnerIcon />}\n {endContent}\n {valid && !loading && <CheckIcon className=\"orynn-icon-success\" />}\n </>\n }\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n >\n <input\n {...rest}\n ref={ref}\n id={id}\n name={name}\n className=\"orynn-box__field\"\n type={effectiveType}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n maxLength={maxLength}\n placeholder={floatingLabel ? undefined : placeholder}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n />\n </FieldBox>\n )}\n </Field>\n );\n },\n);\n","import {\n type InputHTMLAttributes,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { MinusIcon, PlusIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ntype NativeNumberInput = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"type\" | \"min\" | \"max\" | \"step\" | \"size\" | \"prefix\"\n>;\n\nexport interface NumberFieldProps extends BaseControlProps, NativeNumberInput {\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n min?: number;\n max?: number;\n step?: number;\n /** Larger step for Shift+Arrow / PageUp-Down. Default `step * 10`. */\n shiftStep?: number;\n /** Decimal places to keep. */\n precision?: number;\n /** Stepper buttons. Default `\"stacked\"`. */\n buttons?: \"stacked\" | \"horizontal\" | false;\n /** Group thousands (`1,000`). */\n grouping?: boolean;\n /** BCP-47 locale for formatting. */\n locale?: string;\n /** ISO currency code — renders as currency. */\n currency?: string;\n /** Text before the number. */\n prefix?: string;\n /** Text after the number (e.g. `%`, `kg`). */\n suffix?: string;\n /** Clamp to `[min, max]` on blur. Default true. */\n clampOnBlur?: boolean;\n /** Step with the mouse wheel while focused. Default false. */\n allowMouseWheel?: boolean;\n}\n\nconst clamp = (n: number, min?: number, max?: number) =>\n Math.min(max ?? Number.POSITIVE_INFINITY, Math.max(min ?? Number.NEGATIVE_INFINITY, n));\n\nconst round = (n: number, p?: number) => (p == null ? n : Math.round(n * 10 ** p) / 10 ** p);\n\nexport const NumberField = /* @__PURE__ */ forwardRef<HTMLInputElement, NumberFieldProps>(\n function NumberField(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n startContent,\n endContent,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue = null,\n onChange,\n min,\n max,\n step = 1,\n shiftStep,\n precision,\n buttons = \"stacked\",\n grouping,\n locale,\n currency,\n prefix,\n suffix,\n clampOnBlur = true,\n allowMouseWheel,\n placeholder,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const [value, setValue] = useControllableState<number | null>({\n value: valueProp,\n defaultValue,\n onChange: undefined,\n });\n\n const fmt = useMemo(\n () =>\n new Intl.NumberFormat(locale, {\n ...(currency ? { style: \"currency\" as const, currency } : {}),\n useGrouping: grouping ?? Boolean(currency),\n maximumFractionDigits: precision ?? (currency ? 2 : 20),\n minimumFractionDigits: currency ? 2 : 0,\n }),\n [locale, currency, grouping, precision],\n );\n\n const seps = useMemo(() => {\n const parts = new Intl.NumberFormat(locale).formatToParts(11111.1);\n return {\n group: parts.find((p) => p.type === \"group\")?.value ?? \",\",\n decimal: parts.find((p) => p.type === \"decimal\")?.value ?? \".\",\n };\n }, [locale]);\n\n const display = useCallback(\n (n: number | null) =>\n n == null || Number.isNaN(n) ? \"\" : `${prefix ?? \"\"}${fmt.format(n)}${suffix ?? \"\"}`,\n [fmt, prefix, suffix],\n );\n\n const parse = useCallback(\n (raw: string): number | null => {\n let s = raw;\n if (prefix) s = s.split(prefix).join(\"\");\n if (suffix) s = s.split(suffix).join(\"\");\n s = s.split(seps.group).join(\"\").split(seps.decimal).join(\".\");\n s = s.replace(/[^\\d.\\-]/g, \"\");\n if (s === \"\" || s === \"-\" || s === \".\") return null;\n const first = s.indexOf(\".\");\n if (first !== -1) s = s.slice(0, first + 1) + s.slice(first + 1).replace(/\\./g, \"\");\n const n = Number(s);\n return Number.isNaN(n) ? null : n;\n },\n [prefix, suffix, seps],\n );\n\n const [text, setText] = useState(() => display(value));\n const [editing, setEditing] = useState(false);\n useEffect(() => {\n if (!editing) setText(display(value));\n }, [value, editing, display]);\n\n const commit = (n: number | null) => {\n setValue(n);\n onChange?.(n);\n };\n\n /** Commit AND reflect in the field text (steppers, wheel, blur). */\n const setNumber = (n: number | null) => {\n commit(n);\n setText(display(n));\n };\n\n const bump = (dir: 1 | -1, big = false) => {\n const delta = (big ? (shiftStep ?? step * 10) : step) * dir;\n const base = value ?? (dir > 0 ? (min ?? 0) : (max ?? 0));\n setNumber(round(clamp(base + delta, min, max), precision));\n };\n\n const innerRef = useRef<HTMLInputElement | null>(null);\n useEffect(() => {\n const el = innerRef.current;\n if (!el || !allowMouseWheel) return;\n const onWheel = (e: WheelEvent) => {\n if (document.activeElement !== el) return;\n e.preventDefault();\n bump(e.deltaY < 0 ? 1 : -1, e.shiftKey);\n };\n el.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => el.removeEventListener(\"wheel\", onWheel);\n });\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) return;\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n bump(1, e.shiftKey);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n bump(-1, e.shiftKey);\n } else if (e.key === \"PageUp\") {\n e.preventDefault();\n bump(1, true);\n } else if (e.key === \"PageDown\") {\n e.preventDefault();\n bump(-1, true);\n } else if (e.key === \"Home\" && min != null) {\n e.preventDefault();\n setNumber(min);\n } else if (e.key === \"End\" && max != null) {\n e.preventDefault();\n setNumber(max);\n }\n };\n\n const holdTimer = useRef<ReturnType<typeof setInterval>>();\n const startHold = (dir: 1 | -1) => {\n bump(dir);\n let count = 0;\n holdTimer.current = setInterval(() => {\n count += 1;\n bump(dir, count > 6);\n }, 110);\n };\n const stopHold = () => clearInterval(holdTimer.current);\n useEffect(() => () => clearInterval(holdTimer.current), []);\n\n const StepButtons = buttons && (\n <div\n className={`orynn-number__buttons${buttons === \"horizontal\" ? \" orynn-number__buttons--horizontal\" : \"\"}`}\n >\n <button\n type=\"button\"\n className=\"orynn-number__btn\"\n aria-label=\"Increment\"\n tabIndex={-1}\n disabled={disabled || readOnly || (max != null && (value ?? 0) >= max)}\n onPointerDown={() => startHold(1)}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n >\n <PlusIcon />\n </button>\n <button\n type=\"button\"\n className=\"orynn-number__btn\"\n aria-label=\"Decrement\"\n tabIndex={-1}\n disabled={disabled || readOnly || (min != null && (value ?? 0) <= min)}\n onPointerDown={() => startHold(-1)}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n >\n <MinusIcon />\n </button>\n </div>\n );\n\n const hasValue = value != null;\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <FieldBox\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n active={hasValue}\n left={startContent}\n right={\n <>\n {endContent}\n {StepButtons}\n </>\n }\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n >\n <input\n {...rest}\n ref={(n) => {\n innerRef.current = n;\n if (typeof ref === \"function\") ref(n);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = n;\n }}\n id={id}\n name={name}\n className=\"orynn-box__field\"\n type=\"text\"\n inputMode=\"decimal\"\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n value={text}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n placeholder={floatingLabel ? undefined : placeholder}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onFocus={() => setEditing(true)}\n onChange={(e) => {\n setText(e.target.value);\n commit(parse(e.target.value));\n }}\n onKeyDown={onKeyDown}\n onBlur={() => {\n setEditing(false);\n const parsed = parse(text);\n const final =\n parsed == null\n ? null\n : round(clampOnBlur ? clamp(parsed, min, max) : parsed, precision);\n if (final !== value) commit(final);\n setText(display(final));\n }}\n />\n </FieldBox>\n )}\n </Field>\n );\n },\n);\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n type ReactNode,\n createContext,\n forwardRef,\n useContext,\n useId,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { cx } from \"../../internal/cx\";\nimport type { ControlSize, Feedback } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ninterface RadioGroupContextValue {\n name: string;\n value: string | null;\n select: (value: string) => void;\n disabled?: boolean;\n size?: ControlSize;\n variant?: \"default\" | \"card\";\n}\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nconst sizePx: Record<ControlSize, string> = { sm: \"0.95rem\", md: \"1.125rem\", lg: \"1.35rem\" };\n\ntype NativeRadio = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\" | \"size\" | \"value\"\n>;\n\nexport interface RadioProps extends NativeRadio {\n value: string;\n label?: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n size?: ControlSize;\n card?: boolean;\n labelPlacement?: \"end\" | \"start\";\n className?: string;\n}\n\nexport const Radio = /* @__PURE__ */ forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const group = useContext(RadioGroupContext);\n const {\n value,\n label,\n description,\n disabled: disabledProp,\n size: sizeProp,\n card: cardProp,\n labelPlacement = \"end\",\n className,\n id: idProp,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const checked = group ? group.value === value : undefined;\n const disabled = disabledProp || group?.disabled || false;\n const size = sizeProp ?? group?.size ?? \"md\";\n const card = cardProp ?? group?.variant === \"card\";\n\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) group?.select(value);\n };\n\n return (\n <label\n className={cx(\n \"orynn-choice\",\n card && \"orynn-choice--card\",\n labelPlacement === \"start\" && \"orynn-choice--start\",\n className,\n )}\n data-disabled={disabled || undefined}\n style={{ \"--orynn-check-size\": sizePx[size] } as React.CSSProperties}\n >\n <input\n {...rest}\n ref={ref}\n type=\"radio\"\n className=\"orynn-choice__native\"\n id={id}\n name={group?.name}\n value={value}\n checked={group ? checked : undefined}\n disabled={disabled}\n onChange={onChange}\n />\n <span className=\"orynn-choice__control orynn-choice__control--radio\" aria-hidden=\"true\">\n <span className=\"orynn-choice__mark orynn-choice__mark--dot\" />\n </span>\n {(label != null || description != null) && (\n <span className=\"orynn-choice__text\">\n {label != null && <span className=\"orynn-choice__label\">{label}</span>}\n {description != null && <span className=\"orynn-choice__desc\">{description}</span>}\n </span>\n )}\n </label>\n );\n },\n);\n\nexport interface RadioOption {\n label: ReactNode;\n value: string;\n description?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n label?: ReactNode;\n description?: ReactNode;\n error?: Feedback;\n success?: string | boolean;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n size?: ControlSize;\n variant?: \"default\" | \"card\";\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string) => void;\n orientation?: \"vertical\" | \"horizontal\";\n options?: RadioOption[];\n children?: ReactNode;\n className?: string;\n id?: string;\n}\n\nexport function RadioGroup(props: RadioGroupProps) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n name: nameProp,\n size,\n variant = \"default\",\n value: valueProp,\n defaultValue = null,\n onChange,\n orientation = \"vertical\",\n options,\n children,\n className,\n id: idProp,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const name = nameProp ?? id;\n const [value, setValue] = useControllableState<string | null>({\n value: valueProp,\n defaultValue,\n onChange: undefined,\n });\n\n const select = (v: string) => {\n setValue(v);\n onChange?.(v);\n };\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {() => (\n <RadioGroupContext.Provider value={{ name, value, select, disabled, size, variant }}>\n <div\n role=\"radiogroup\"\n aria-labelledby={label != null ? `${id}-label` : undefined}\n aria-required={required || undefined}\n className=\"orynn-choice-group\"\n data-orientation={orientation}\n >\n {options\n ? options.map((o) => (\n <Radio\n key={o.value}\n value={o.value}\n label={o.label}\n description={o.description}\n disabled={o.disabled}\n />\n ))\n : children}\n </div>\n </RadioGroupContext.Provider>\n )}\n </Field>\n );\n}\n","import {\n type ChangeEvent,\n type TextareaHTMLAttributes,\n forwardRef,\n useCallback,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ntype NativeTextarea = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"rows\" | \"cols\"\n>;\n\nexport interface TextareaProps\n extends Omit<BaseControlProps, \"startContent\" | \"endContent\" | \"loading\">,\n NativeTextarea {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, event: ChangeEvent<HTMLTextAreaElement>) => void;\n /** Grow with content between `minRows` and `maxRows`. */\n autoResize?: boolean;\n minRows?: number;\n maxRows?: number;\n /** Native resize handle. Default `\"vertical\"` (`\"none\"` when `autoResize`). */\n resize?: \"none\" | \"vertical\" | \"both\";\n showCount?: boolean;\n}\n\nexport const Textarea = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n clearable,\n onClear,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue,\n onChange,\n autoResize,\n minRows = 3,\n maxRows = 10,\n resize,\n showCount,\n maxLength,\n placeholder,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const [value, setValue] = useControllableState<string>({\n value: valueProp,\n defaultValue: defaultValue ?? \"\",\n onChange: undefined,\n });\n\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement);\n\n const resizeToFit = useCallback(() => {\n const el = innerRef.current;\n if (!el || !autoResize) return;\n el.style.height = \"auto\";\n const cs = getComputedStyle(el);\n const line = Number.parseFloat(cs.lineHeight) || 20;\n const pad = Number.parseFloat(cs.paddingTop) + Number.parseFloat(cs.paddingBottom);\n const min = line * minRows + pad;\n const max = line * maxRows + pad;\n el.style.height = `${Math.min(Math.max(el.scrollHeight, min), max)}px`;\n el.style.overflowY = el.scrollHeight > max ? \"auto\" : \"hidden\";\n }, [autoResize, minRows, maxRows]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-fit when value changes\n useLayoutEffect(resizeToFit, [value, resizeToFit]);\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setValue(e.target.value);\n onChange?.(e.target.value, e);\n };\n\n const hasValue = value.length > 0;\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <FieldBox\n textarea\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n active={hasValue}\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n right={\n clearable && hasValue && !disabled && !readOnly ? (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={() => {\n setValue(\"\");\n onClear?.();\n }}\n >\n ✕\n </button>\n ) : undefined\n }\n >\n <textarea\n {...rest}\n ref={innerRef}\n id={id}\n name={name}\n className=\"orynn-textarea\"\n data-resize={resize ?? (autoResize ? \"none\" : \"vertical\")}\n rows={minRows}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n maxLength={maxLength}\n placeholder={floatingLabel ? undefined : placeholder}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={handleChange}\n />\n {showCount && (\n <span className=\"orynn-box__footer\">\n {value.length}\n {maxLength ? `/${maxLength}` : \"\"}\n </span>\n )}\n </FieldBox>\n )}\n </Field>\n );\n },\n);\n","/**\n * Development-only helpers. `__DEV__` is statically replaceable by bundlers, so\n * `invariant` / `warnOnce` bodies tree-shake out of production builds.\n */\nexport const __DEV__: boolean =\n typeof process !== \"undefined\" && process.env?.NODE_ENV !== \"production\";\n\n/** Throws in development when `condition` is falsy. No-op in production. */\nexport function invariant(condition: unknown, message: string): asserts condition {\n if (condition) return;\n if (__DEV__) {\n throw new Error(`[orynn] ${message}`);\n }\n}\n\nconst warned = new Set<string>();\n\n/** Logs a warning once per unique message. Silent in production. */\nexport function warnOnce(message: string): void {\n if (!__DEV__ || warned.has(message)) return;\n warned.add(message);\n console.warn(`[orynn] ${message}`);\n}\n\n/** Test-only: clear the warn-once cache between cases. */\nexport function resetWarnings(): void {\n warned.clear();\n}\n","import { __DEV__, warnOnce } from \"../../internal/dev\";\nimport type { FieldRegistration, FieldRegistry } from \"../../types/control\";\n\nclass Registry implements FieldRegistry {\n #entries = new Map<string, FieldRegistration>();\n\n register(type: string, registration: FieldRegistration): void {\n if (__DEV__ && this.#entries.has(type)) {\n warnOnce(`Field type \"${type}\" is being re-registered; the previous definition is replaced.`);\n }\n this.#entries.set(type, registration);\n }\n\n get(type: string): FieldRegistration | undefined {\n return this.#entries.get(type);\n }\n\n has(type: string): boolean {\n return this.#entries.has(type);\n }\n\n types(): string[] {\n return [...this.#entries.keys()];\n }\n}\n\n/**\n * Create an isolated field registry. Use this to give a `<Fieldset>` its own set\n * of field types without touching the module-global {@link defaultRegistry}\n * (recommended on the server, where mutating a shared registry per request would\n * leak between requests).\n *\n * @experimental The registry API may change before 1.0.\n */\nexport function createRegistry(): FieldRegistry {\n return new Registry();\n}\n\n/**\n * The module-global registry used by `<Fieldset>` when no `registry` prop is\n * passed. Seeded with the built-in `input` and `dropdown` fields.\n *\n * @experimental\n */\nexport const defaultRegistry: FieldRegistry = /* @__PURE__ */ createRegistry();\n\n/**\n * Register a field type on the {@link defaultRegistry}. Call this once at\n * application start-up, not per render or per request.\n *\n * @experimental\n */\nexport function registerField(type: string, registration: FieldRegistration): void {\n defaultRegistry.register(type, registration);\n}\n","import type { ColumnSpec } from \"../types/config\";\n\n/** V1 default: 3 columns on desktop, 2 on tablet, 1 on mobile. */\nexport const DEFAULT_COLUMNS: ColumnSpec = { desktop: 3, tablet: 2, mobile: 1 };\n\nconst clampCount = (n: unknown, fallback: number): number =>\n typeof n === \"number\" && Number.isFinite(n) && n >= 1 ? Math.floor(n) : fallback;\n\n/** Merge a partial column spec onto the defaults. */\nexport function resolveColumns(partial?: Partial<ColumnSpec>): ColumnSpec {\n return {\n desktop: clampCount(partial?.desktop, DEFAULT_COLUMNS.desktop),\n tablet: clampCount(partial?.tablet, DEFAULT_COLUMNS.tablet),\n mobile: clampCount(partial?.mobile, DEFAULT_COLUMNS.mobile),\n };\n}\n\n/** Clamp a field's column span so it never exceeds the row's column count. */\nexport function clampSpan(span: unknown, columnCount: number): number {\n const n = clampCount(span, 1);\n return Math.min(n, Math.max(columnCount, 1));\n}\n","import { invariant } from \"../../internal/dev\";\nimport { resolveColumns } from \"../../layout/resolve-columns\";\nimport type { ColumnSpec, FieldConfig, FieldsetConfig } from \"../../types/config\";\nimport type { FieldRegistry } from \"../../types/control\";\n\n/** A validated `FieldsetConfig` with every default resolved. */\nexport interface NormalizedFieldsetConfig {\n fields: FieldConfig[];\n columns: ColumnSpec;\n /** CSS length for the grid gap, or `undefined` to use the token default. */\n gap: string | undefined;\n legend: string | undefined;\n id: string | undefined;\n}\n\nfunction normalizeGap(gap: FieldsetConfig[\"gap\"]): string | undefined {\n if (gap == null) return undefined;\n return typeof gap === \"number\" ? `${gap}px` : gap;\n}\n\n/**\n * Validate a `FieldsetConfig` and resolve its defaults. Structural problems\n * throw in development with an actionable message; in production the checks are\n * stripped and normalization is defensive.\n *\n * Pass `registry` (as `<Fieldset>` does) to also validate each field's `type`\n * and run type-specific config checks.\n */\nexport function normalizeConfig(\n config: FieldsetConfig,\n registry?: FieldRegistry,\n): NormalizedFieldsetConfig {\n invariant(\n config != null && typeof config === \"object\" && Array.isArray(config.fields),\n \"`config` must be an object with a `fields` array.\",\n );\n\n const seen = new Set<string>();\n\n for (const field of config.fields) {\n invariant(\n field != null && typeof field === \"object\",\n \"Every entry in `config.fields` must be an object.\",\n );\n invariant(\n typeof field.name === \"string\" && field.name.length > 0,\n \"Every field needs a non-empty string `name`.\",\n );\n invariant(!seen.has(field.name), `Duplicate field name \"${field.name}\" in config.fields.`);\n seen.add(field.name);\n invariant(\n typeof field.type === \"string\" && field.type.length > 0,\n `Field \"${field.name}\" is missing a \"type\".`,\n );\n\n if (registry) {\n invariant(\n registry.has(field.type),\n `Unknown field type \"${field.type}\" on field \"${field.name}\". ` +\n `Registered types: ${registry.types().join(\", \") || \"(none)\"}.`,\n );\n const typeError = registry.get(field.type)?.validateConfig?.(field);\n invariant(typeError == null, `Field \"${field.name}\" (${field.type}): ${typeError}`);\n }\n }\n\n return {\n fields: config.fields,\n columns: resolveColumns(config.columns),\n gap: normalizeGap(config.gap),\n legend: config.legend,\n id: config.id,\n };\n}\n","/** Formats the default message for a built-in rule token. */\ntype MessageFormatter = (ctx: { param: unknown; label: string }) => string;\n\nconst plural = (n: unknown, word: string) => `${n} ${word}${n === 1 ? \"\" : \"s\"}`;\n\n/** Default message templates for the built-in rules. */\nexport const defaultMessages: Record<string, MessageFormatter> = {\n required: ({ label }) => `${label} is required`,\n minLength: ({ param, label }) => `${label} must be at least ${plural(param, \"character\")}`,\n maxLength: ({ param, label }) => `${label} must be at most ${plural(param, \"character\")}`,\n};\n\nconst FALLBACK_LABEL = \"This field\";\n\n/**\n * Resolve the message for a failed rule.\n *\n * Precedence: a per-field override (`validation.messages[token]`) wins; otherwise\n * a built-in template is used; otherwise the token itself is the message (custom\n * rules return a ready-to-show string).\n */\nexport function resolveMessage(\n token: string,\n param: unknown,\n label: string | undefined,\n overrides: Partial<Record<string, string>> | undefined,\n): string {\n const override = overrides?.[token];\n if (override != null) return override;\n\n const formatter = defaultMessages[token];\n if (formatter) return formatter({ param, label: label ?? FALLBACK_LABEL });\n\n return token;\n}\n","import type { RuleFn } from \"../../types/validation\";\n\nconst isEmpty = (value: unknown): boolean =>\n value == null || value === \"\" || (Array.isArray(value) && value.length === 0);\n\nconst asLength = (value: unknown): number =>\n typeof value === \"string\" || Array.isArray(value) ? value.length : String(value ?? \"\").length;\n\n/**\n * Built-in rules. Each returns a token (rule name) on failure or `null` on\n * success; the resolver turns the token into a user-facing message.\n *\n * `minLength` deliberately ignores empty values so `required` owns that error.\n */\nexport const builtInRules: { required: RuleFn; minLength: RuleFn; maxLength: RuleFn } = {\n required: (value, param) => {\n if (param === false) return null;\n return isEmpty(value) ? \"required\" : null;\n },\n minLength: (value, param) => {\n if (typeof param !== \"number\" || isEmpty(value)) return null;\n return asLength(value) < param ? \"minLength\" : null;\n },\n maxLength: (value, param) => {\n if (typeof param !== \"number\" || isEmpty(value)) return null;\n return asLength(value) > param ? \"maxLength\" : null;\n },\n};\n\nconst registry = new Map<string, RuleFn>(Object.entries(builtInRules));\n\n/**\n * Register a validation rule for the built-in resolver. A field opts in by\n * adding a key of the same name to its `validation` config.\n *\n * @experimental The rule API may change before 1.0.\n */\nexport function registerRule(name: string, fn: RuleFn): void {\n registry.set(name, fn);\n}\n\nexport function getRule(name: string): RuleFn | undefined {\n return registry.get(name);\n}\n\nexport function ruleNames(): string[] {\n return [...registry.keys()];\n}\n","import { __DEV__, warnOnce } from \"../../internal/dev\";\nimport type { FieldsetConfig } from \"../../types/config\";\nimport type {\n FieldError,\n ValidationContext,\n ValidationResolver,\n ValidationResult,\n} from \"../../types/validation\";\nimport { resolveMessage } from \"./messages\";\nimport { getRule } from \"./rules\";\n\n/** A synchronous resolver — the built-in resolver's precise return type. */\nexport type SyncResolver = (\n values: Record<string, unknown>,\n config: FieldsetConfig,\n context: ValidationContext,\n) => ValidationResult;\n\n/**\n * The default, rule-based {@link ValidationResolver}. For every field with a\n * `validation` block, each key (other than `messages`) is looked up in the rule\n * registry and run against the field's current value. All fields are validated\n * on every call; callers decide which errors to surface.\n *\n * Synchronous today. Async, schema-based, and cross-field resolvers plug in at\n * the same seam without an API change.\n */\nexport function createRuleResolver(): SyncResolver {\n return (values, config): ValidationResult => {\n const result: ValidationResult = {};\n\n for (const field of config.fields) {\n const validation = field.validation;\n if (!validation) continue;\n\n const value = values[field.name];\n const errors: FieldError[] = [];\n\n for (const key of Object.keys(validation)) {\n if (key === \"messages\") continue;\n\n const param = (validation as Record<string, unknown>)[key];\n if (param === undefined || param === false) continue;\n\n const rule = getRule(key);\n if (!rule) {\n if (__DEV__) {\n warnOnce(`No validator registered for rule \"${key}\" (field \"${field.name}\").`);\n }\n continue;\n }\n\n const token = rule(value, param, values);\n if (token == null) continue;\n\n errors.push({\n rule: key,\n message: resolveMessage(token, param, field.label, validation.messages),\n });\n }\n\n if (errors.length > 0) result[field.name] = errors;\n }\n\n return result;\n };\n}\n\n/** Shared default instance. */\nexport const defaultResolver: ValidationResolver = /* @__PURE__ */ createRuleResolver();\n","import type { FieldStatus } from \"../../types/state\";\nimport type { FieldError, ValidationResult } from \"../../types/validation\";\n\n/** Internal state: everything the fieldset tracks except `values`. */\nexport interface MetaState {\n touched: Record<string, boolean>;\n errors: ValidationResult;\n validating: boolean;\n /** True once any validation run has completed — distinguishes \"idle\" from \"valid\". */\n everValidated: boolean;\n}\n\nexport const initialMeta: MetaState = {\n touched: {},\n errors: {},\n validating: false,\n everValidated: false,\n};\n\nexport type MetaAction =\n | { type: \"touch\"; name: string }\n | { type: \"touchAll\"; names: string[] }\n | { type: \"validation:start\" }\n | { type: \"validation:field\"; name: string; errors: FieldError[] }\n | { type: \"validation:all\"; result: ValidationResult }\n | { type: \"reset\" };\n\nexport function metaReducer(state: MetaState, action: MetaAction): MetaState {\n switch (action.type) {\n case \"touch\": {\n if (state.touched[action.name]) return state;\n return { ...state, touched: { ...state.touched, [action.name]: true } };\n }\n case \"touchAll\": {\n const touched = { ...state.touched };\n for (const name of action.names) touched[name] = true;\n return { ...state, touched };\n }\n case \"validation:start\":\n return { ...state, validating: true };\n case \"validation:field\": {\n const errors = { ...state.errors };\n if (action.errors.length > 0) errors[action.name] = action.errors;\n else delete errors[action.name];\n return { ...state, errors, validating: false, everValidated: true };\n }\n case \"validation:all\":\n return { ...state, errors: action.result, validating: false, everValidated: true };\n case \"reset\":\n return { ...initialMeta };\n default:\n return state;\n }\n}\n\n/** Derive the form-level status roll-up. */\nexport function deriveStatus(meta: MetaState): FieldStatus {\n if (meta.validating) return \"validating\";\n if (!meta.everValidated) return \"idle\";\n return Object.keys(meta.errors).length > 0 ? \"invalid\" : \"valid\";\n}\n\n/** Shallow per-field dirty map: current value differs from initial. */\nexport function computeDirty(\n values: Record<string, unknown>,\n initial: Record<string, unknown>,\n): Record<string, boolean> {\n const dirty: Record<string, boolean> = {};\n for (const key of Object.keys(values)) {\n if (!Object.is(values[key], initial[key])) dirty[key] = true;\n }\n return dirty;\n}\n","import { useCallback, useMemo, useReducer, useRef } from \"react\";\nimport type { FormEvent } from \"react\";\nimport type { FieldsetConfig } from \"../../types/config\";\nimport type { FieldRegistry } from \"../../types/control\";\nimport type { FieldStatus, FieldsetState } from \"../../types/state\";\nimport type {\n FieldError,\n ValidationResolver,\n ValidationResult,\n ValidationTrigger,\n} from \"../../types/validation\";\nimport { type NormalizedFieldsetConfig, normalizeConfig } from \"../config/normalize\";\nimport { defaultResolver } from \"../validation/resolver\";\nimport { computeDirty, deriveStatus, initialMeta, metaReducer } from \"./reducer\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\ntype Values = Record<string, unknown>;\n\n/** Shared empty errors array so unchanged field slices keep a stable identity. */\nconst NO_ERRORS: readonly FieldError[] = Object.freeze([]);\n\nexport interface UseFieldsetStateOptions<TValues extends Values = Values> {\n /** Controlled values. Omit and pass `defaultValue` for uncontrolled. */\n value?: TValues;\n defaultValue?: Partial<TValues>;\n onChange?: (values: TValues) => void;\n /** Called after a full validation pass (`validate()` / submit), not per blur. */\n onValidationChange?: (result: ValidationResult) => void;\n resolver?: ValidationResolver;\n registry?: FieldRegistry;\n /** `\"blur\"` (default) also always validates on submit. */\n validateOn?: ValidationTrigger;\n}\n\n/** Everything a renderer needs for one field. Handlers are referentially stable. */\nexport interface FieldSlice {\n name: string;\n value: unknown;\n errors: FieldError[];\n touched: boolean;\n dirty: boolean;\n setValue: (value: unknown) => void;\n markTouched: () => void;\n}\n\nexport interface UseFieldsetStateReturn<TValues extends Values = Values> {\n config: NormalizedFieldsetConfig;\n state: FieldsetState;\n values: TValues;\n errors: ValidationResult;\n touched: Record<string, boolean>;\n dirty: Record<string, boolean>;\n status: FieldStatus;\n isValid: boolean;\n setFieldValue: (name: string, value: unknown) => void;\n setValues: (values: TValues) => void;\n reset: (next?: Partial<TValues>) => void;\n validate: () => Promise<ValidationResult>;\n handleSubmit: (\n onValid: (values: TValues) => void,\n onInvalid?: (result: ValidationResult) => void,\n ) => (event?: FormEvent) => void;\n getFieldProps: (name: string) => FieldSlice;\n}\n\nfunction computeInitialValues(\n config: NormalizedFieldsetConfig,\n registry: FieldRegistry | undefined,\n provided: Values | undefined,\n): Values {\n const out: Values = {};\n for (const field of config.fields) {\n if (provided && Object.prototype.hasOwnProperty.call(provided, field.name)) {\n out[field.name] = provided[field.name];\n } else if (field.defaultValue !== undefined) {\n out[field.name] = field.defaultValue;\n } else {\n out[field.name] = registry?.get(field.type)?.defaultValue ?? \"\";\n }\n }\n return out;\n}\n\ninterface RunScope {\n field?: string;\n trigger: ValidationTrigger;\n values?: Values;\n}\n\n/**\n * The form engine behind `<Fieldset>`, usable directly when you want to own the\n * markup. Manages values (controlled or uncontrolled), touched/dirty tracking,\n * and validation through a pluggable resolver.\n */\nexport function useFieldsetState<TValues extends Values = Values>(\n config: FieldsetConfig,\n options: UseFieldsetStateOptions<TValues> = {},\n): UseFieldsetStateReturn<TValues> {\n const {\n value,\n defaultValue,\n onChange,\n onValidationChange,\n resolver = defaultResolver,\n registry,\n validateOn = \"blur\",\n } = options;\n\n const normalized = useMemo(() => normalizeConfig(config, registry), [config, registry]);\n\n const initialRef = useRef<Values | null>(null);\n if (initialRef.current === null) {\n initialRef.current = computeInitialValues(\n normalized,\n registry,\n (value ?? defaultValue) as Values | undefined,\n );\n }\n\n const [rawValues, setRawValues] = useControllableState<Values>({\n value: value as Values | undefined,\n defaultValue: initialRef.current,\n onChange: onChange as ((v: Values) => void) | undefined,\n });\n\n const values = useMemo(() => ({ ...initialRef.current, ...rawValues }) as TValues, [rawValues]);\n\n const [meta, dispatch] = useReducer(metaReducer, initialMeta);\n\n const valuesRef = useLatestRef<Values>(values);\n const resolverRef = useLatestRef(resolver);\n const configRef = useLatestRef(config);\n const normalizedRef = useLatestRef(normalized);\n const registryRef = useLatestRef(registry);\n const validateOnRef = useLatestRef(validateOn);\n const onValidationChangeRef = useLatestRef(onValidationChange);\n const runIdRef = useRef(0);\n\n const runValidation = useCallback(async (scope: RunScope): Promise<ValidationResult> => {\n const runId = ++runIdRef.current;\n const input = scope.values ?? valuesRef.current;\n dispatch({ type: \"validation:start\" });\n\n const result = await resolverRef.current(input, configRef.current, {\n trigger: scope.trigger,\n ...(scope.field ? { changedField: scope.field } : {}),\n });\n\n if (runId !== runIdRef.current) return result; // superseded\n\n if (scope.field) {\n dispatch({ type: \"validation:field\", name: scope.field, errors: result[scope.field] ?? [] });\n } else {\n dispatch({ type: \"validation:all\", result });\n onValidationChangeRef.current?.(result);\n }\n return result;\n // refs only — safe to keep stable\n }, []);\n\n const setFieldValue = useCallback(\n (name: string, next: unknown) => {\n setRawValues((prev) => ({ ...prev, [name]: next }));\n if (validateOnRef.current === \"change\") {\n void runValidation({\n field: name,\n trigger: \"change\",\n values: { ...valuesRef.current, [name]: next },\n });\n }\n },\n [setRawValues, runValidation],\n );\n\n const setValues = useCallback((next: TValues) => setRawValues(next as Values), [setRawValues]);\n\n const markTouched = useCallback(\n (name: string) => {\n dispatch({ type: \"touch\", name });\n if (validateOnRef.current === \"blur\") {\n void runValidation({ field: name, trigger: \"blur\" });\n }\n },\n [runValidation],\n );\n\n const validate = useCallback(() => runValidation({ trigger: \"submit\" }), [runValidation]);\n\n const handleSubmit = useCallback(\n (onValid: (values: TValues) => void, onInvalid?: (result: ValidationResult) => void) =>\n async (event?: FormEvent) => {\n event?.preventDefault?.();\n dispatch({\n type: \"touchAll\",\n names: normalizedRef.current.fields.map((f) => f.name),\n });\n const result = await runValidation({ trigger: \"submit\" });\n if (Object.keys(result).length === 0) onValid(valuesRef.current as TValues);\n else onInvalid?.(result);\n },\n [runValidation],\n );\n\n const reset = useCallback(\n (next?: Partial<TValues>) => {\n const fresh = computeInitialValues(\n normalizedRef.current,\n registryRef.current,\n next as Values | undefined,\n );\n initialRef.current = fresh;\n setRawValues(fresh);\n dispatch({ type: \"reset\" });\n runIdRef.current++;\n },\n [setRawValues],\n );\n\n // Stable per-field handler identities so memoized rows don't re-render.\n const handlerCacheRef = useRef(\n new Map<string, { setValue: (v: unknown) => void; markTouched: () => void }>(),\n );\n const getHandlers = useCallback(\n (name: string) => {\n const cache = handlerCacheRef.current;\n let entry = cache.get(name);\n if (!entry) {\n entry = {\n setValue: (v: unknown) => setFieldValue(name, v),\n markTouched: () => markTouched(name),\n };\n cache.set(name, entry);\n }\n return entry;\n },\n [setFieldValue, markTouched],\n );\n\n const dirty = useMemo(() => computeDirty(values, initialRef.current ?? {}), [values]);\n const status = deriveStatus(meta);\n const isValid = Object.keys(meta.errors).length === 0;\n\n const getFieldProps = useCallback(\n (name: string): FieldSlice => {\n const handlers = getHandlers(name);\n return {\n name,\n value: (values as Values)[name],\n errors: meta.errors[name] ?? (NO_ERRORS as FieldError[]),\n touched: meta.touched[name] ?? false,\n dirty: dirty[name] ?? false,\n setValue: handlers.setValue,\n markTouched: handlers.markTouched,\n };\n },\n [values, meta.errors, meta.touched, dirty, getHandlers],\n );\n\n const state: FieldsetState = useMemo(\n () => ({\n values: values as Values,\n touched: meta.touched,\n dirty,\n errors: meta.errors,\n status,\n }),\n [values, meta.touched, dirty, meta.errors, status],\n );\n\n return {\n config: normalized,\n state,\n values,\n errors: meta.errors,\n touched: meta.touched,\n dirty,\n status,\n isValid,\n setFieldValue,\n setValues,\n reset,\n validate,\n handleSubmit,\n getFieldProps,\n };\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport { cx } from \"../internal/cx\";\nimport type { ColumnSpec } from \"../types/config\";\nimport { clampSpan } from \"./resolve-columns\";\n\n/** CSS custom properties are set inline; the stylesheet consumes them. */\ntype CssVars = CSSProperties & Record<`--${string}`, string | number>;\n\nexport interface FieldGridProps {\n columns: ColumnSpec;\n /** CSS length for the gap; falls back to the `--orynn-grid-gap` token. */\n gap?: string | undefined;\n className?: string | undefined;\n children: ReactNode;\n}\n\n/**\n * Responsive grid. Column counts per breakpoint are passed as CSS variables and\n * applied by the stylesheet through container queries, so the grid responds to\n * its own width rather than the viewport.\n */\nexport function FieldGrid({ columns, gap, className, children }: FieldGridProps) {\n const style: CssVars = {\n \"--orynn-cols-desktop\": columns.desktop,\n \"--orynn-cols-tablet\": columns.tablet,\n \"--orynn-cols-mobile\": columns.mobile,\n ...(gap ? { \"--orynn-grid-gap\": gap } : {}),\n };\n\n return (\n <div className={cx(\"orynn-grid\", className)} style={style}>\n <div className=\"orynn-grid__track\">{children}</div>\n </div>\n );\n}\n\nexport interface FieldGridItemProps {\n /** Per-breakpoint column span; missing breakpoints default to 1. */\n span?: Partial<ColumnSpec> | undefined;\n columns: ColumnSpec;\n children: ReactNode;\n}\n\n/** One cell of a {@link FieldGrid}, optionally spanning multiple columns. */\nexport function FieldGridItem({ span, columns, children }: FieldGridItemProps) {\n if (!span) return <>{children}</>;\n\n const style: CssVars = {\n \"--orynn-span-desktop\": clampSpan(span.desktop, columns.desktop),\n \"--orynn-span-tablet\": clampSpan(span.tablet, columns.tablet),\n \"--orynn-span-mobile\": clampSpan(span.mobile, columns.mobile),\n };\n\n return (\n <div className=\"orynn-grid__item\" style={style}>\n {children}\n </div>\n );\n}\n","import { memo } from \"react\";\nimport { Field } from \"../controls/Field/Field\";\nimport type { FieldSlice } from \"../core/state/use-fieldset-state\";\nimport { invariant } from \"../internal/dev\";\nimport type { FieldConfig } from \"../types/config\";\nimport type { FieldRegistry } from \"../types/control\";\n\nconst noop = () => {};\n\nexport interface FieldRendererProps {\n field: FieldConfig;\n registry: FieldRegistry;\n slice: FieldSlice;\n disabled?: boolean;\n}\n\nfunction FieldRendererImpl({ field, registry, slice, disabled }: FieldRendererProps) {\n const registration = registry.get(field.type);\n invariant(\n registration,\n `No control registered for field type \"${field.type}\" (field \"${field.name}\").`,\n );\n if (!registration) return null;\n\n const Control = registration.component;\n const required = field.validation?.required === true;\n const isDisabled = disabled === true || field.disabled === true;\n\n const value = registration.parseValue ? registration.parseValue(slice.value) : slice.value;\n // The hook decides *when* a field is validated (per `validateOn`); if it has\n // produced errors for this field, show them.\n const messages = slice.errors.map((e) => e.message);\n\n const handleChange = (next: unknown) => {\n slice.setValue(registration.formatValue ? registration.formatValue(next) : next);\n };\n\n return (\n <Field\n label={field.label}\n description={field.description}\n error={messages}\n required={required}\n disabled={isDisabled}\n >\n {({ id, describedById, invalid }) => (\n <Control\n id={id}\n name={field.name}\n value={value}\n onChange={handleChange}\n onBlur={slice.markTouched}\n onFocus={noop}\n disabled={isDisabled}\n readOnly={field.readOnly === true}\n required={required}\n invalid={invalid}\n describedById={describedById}\n config={field}\n />\n )}\n </Field>\n );\n}\n\n/**\n * Resolves a field config to its registered control and wraps it in `<Field>`.\n * Memoized on the parts of the slice that affect output so that changing one\n * field in a large fieldset does not re-render the others.\n */\nexport const FieldRenderer = /* @__PURE__ */ memo(\n FieldRendererImpl,\n (prev, next) =>\n prev.field === next.field &&\n prev.registry === next.registry &&\n prev.disabled === next.disabled &&\n prev.slice.value === next.slice.value &&\n prev.slice.touched === next.slice.touched &&\n prev.slice.errors === next.slice.errors &&\n prev.slice.setValue === next.slice.setValue &&\n prev.slice.markTouched === next.slice.markTouched,\n);\n","import type { DropdownFieldConfig, InputFieldConfig } from \"../types/config\";\nimport type { ControlComponent, FieldRegistry } from \"../types/control\";\n\nconst toStringValue = (value: unknown): string =>\n typeof value === \"string\" ? value : value == null ? \"\" : String(value);\n\n/** Raw `<input>` bound to the {@link ControlProps} contract. `<Field>` wraps it. */\nconst InputControl: ControlComponent<string> = ({\n id,\n name,\n value,\n onChange,\n onBlur,\n onFocus,\n disabled,\n readOnly,\n required,\n invalid,\n describedById,\n config,\n}) => {\n const field = config as InputFieldConfig;\n return (\n <input\n id={id}\n name={name}\n className=\"orynn-input\"\n type={field.inputType ?? \"text\"}\n value={toStringValue(value)}\n placeholder={field.placeholder}\n required={required}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={(event) => onChange(event.target.value, event)}\n onBlur={onBlur}\n onFocus={onFocus}\n {...field.props}\n />\n );\n};\n\n/** Raw `<select>` bound to the {@link ControlProps} contract. */\nconst DropdownControl: ControlComponent<string> = ({\n id,\n name,\n value,\n onChange,\n onBlur,\n onFocus,\n disabled,\n required,\n invalid,\n describedById,\n config,\n}) => {\n const field = config as DropdownFieldConfig;\n return (\n <select\n id={id}\n name={name}\n className=\"orynn-dropdown\"\n value={toStringValue(value)}\n required={required}\n disabled={disabled}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={(event) => onChange(event.target.value, event)}\n onBlur={onBlur}\n onFocus={onFocus}\n {...field.props}\n >\n {field.placeholder != null && (\n <option value=\"\" disabled={required}>\n {field.placeholder}\n </option>\n )}\n {field.options.map((option) => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </select>\n );\n};\n\n/**\n * Seed a registry with the V1 built-in field types. Idempotent: existing\n * registrations (e.g. a consumer override) are left untouched.\n */\nexport function registerBuiltins(registry: FieldRegistry): void {\n if (!registry.has(\"input\")) {\n registry.register(\"input\", { component: InputControl, defaultValue: \"\" });\n }\n if (!registry.has(\"dropdown\")) {\n registry.register(\"dropdown\", {\n component: DropdownControl,\n defaultValue: \"\",\n validateConfig: (config) =>\n Array.isArray((config as Partial<DropdownFieldConfig>).options)\n ? null\n : \"a dropdown field requires an `options` array\",\n });\n }\n}\n\nlet seeded = false;\n\n/**\n * Register the built-ins on the module-global registry exactly once, lazily.\n * Called from `useFieldsetState` / `<Fieldset>` rather than at module load so\n * that importing a standalone control never pulls the built-ins (and the\n * validation engine) into the bundle.\n */\nexport function ensureBuiltins(defaultRegistry: FieldRegistry): void {\n if (seeded) return;\n seeded = true;\n registerBuiltins(defaultRegistry);\n}\n","import { defaultRegistry } from \"../core/registry/registry\";\nimport { type UseFieldsetStateOptions, useFieldsetState } from \"../core/state/use-fieldset-state\";\nimport { cx } from \"../internal/cx\";\nimport { FieldGrid, FieldGridItem } from \"../layout/FieldGrid\";\nimport type { FieldsetProps } from \"../types/props\";\nimport { FieldRenderer } from \"./FieldRenderer\";\nimport { ensureBuiltins } from \"./register-builtins\";\n\n/**\n * Renders a form (or a form section) from a `FieldsetConfig`. Controlled when\n * `value` is passed, uncontrolled otherwise. Renders a native `<fieldset>` — so\n * `disabled` cascades to every control — and does not render its own `<form>`;\n * wrap it in one and use `useFieldsetState().handleSubmit` for submission.\n */\nexport function Fieldset<TValues extends Record<string, unknown> = Record<string, unknown>>(\n props: FieldsetProps<TValues>,\n) {\n const {\n config,\n value,\n defaultValue,\n onChange,\n onValidationChange,\n resolver,\n registry,\n validateOn,\n disabled,\n className,\n id,\n } = props;\n\n ensureBuiltins(defaultRegistry);\n const activeRegistry = registry ?? defaultRegistry;\n\n const options: UseFieldsetStateOptions<TValues> = {\n registry: activeRegistry,\n ...(value !== undefined ? { value } : {}),\n ...(defaultValue !== undefined ? { defaultValue } : {}),\n ...(onChange ? { onChange } : {}),\n ...(onValidationChange ? { onValidationChange } : {}),\n ...(resolver ? { resolver } : {}),\n ...(validateOn ? { validateOn } : {}),\n };\n\n const fs = useFieldsetState<TValues>(config, options);\n const { columns, gap, legend, fields, id: configId } = fs.config;\n\n return (\n <fieldset\n className={cx(\"orynn-fieldset\", className)}\n id={id ?? configId}\n disabled={disabled || undefined}\n >\n {legend != null && <legend className=\"orynn-fieldset__legend\">{legend}</legend>}\n <FieldGrid columns={columns} gap={gap}>\n {fields.map((field) => (\n <FieldGridItem key={field.name} span={field.layout} columns={columns}>\n <FieldRenderer\n field={field}\n registry={activeRegistry}\n slice={fs.getFieldProps(field.name)}\n disabled={disabled === true}\n />\n </FieldGridItem>\n ))}\n </FieldGrid>\n </fieldset>\n );\n}\n","import type { CSSProperties } from \"react\";\n\n/** Built-in colour presets. Each maps to `[data-orynn-theme=\"…\"]` in the stylesheet. */\nexport type OrynnPreset = \"default\" | \"slate\" | \"teal\" | \"violet\" | \"rose\" | \"emerald\";\n\n/** Vertical rhythm / sizing. Maps to `[data-orynn-density=\"…\"]`. */\nexport type OrynnDensity = \"compact\" | \"comfortable\" | \"spacious\";\n\nexport type OrynnRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"pill\" | (string & {}) | number;\n\n/** Any `--orynn-*` custom property. */\nexport type OrynnVarOverrides = Partial<Record<`--orynn-${string}`, string | number>>;\n\nexport interface OrynnThemeConfig {\n /** Colour preset. Defaults to `\"default\"` (indigo). */\n preset?: OrynnPreset;\n density?: OrynnDensity;\n /** Highlight / accent colour. Any CSS colour — overrides the preset's accent. */\n accent?: string;\n /** Foreground colour to pair with a custom `accent` (auto-picked from luminance if omitted). */\n accentContrast?: string;\n /** `--orynn-font-family`. */\n font?: string;\n /** Base font size, e.g. `\"15px\"` or `\"0.95rem\"`. */\n fontSize?: string | number;\n /** Corner radius applied to controls. Keyword, CSS length, or px number. */\n radius?: OrynnRadius;\n /** Default control width. `\"100%\"` by default; e.g. `\"20rem\"` or `320`. */\n controlWidth?: string | number;\n /** Focus-ring colour. */\n ring?: string;\n /** Escape hatch: any `--orynn-*` variables verbatim. */\n vars?: OrynnVarOverrides;\n}\n\n/** `theme` prop accepts a preset name shorthand or a full config. */\nexport type OrynnThemeInput = OrynnPreset | OrynnThemeConfig;\n\nconst RADIUS_KEYWORDS = new Set([\"none\", \"sm\", \"md\", \"lg\", \"pill\"]);\nconst len = (v: string | number) => (typeof v === \"number\" ? `${v}px` : v);\n\n/** Relative luminance → pick black/white text for a custom accent. */\nfunction contrastFor(color: string): string {\n const m = /^#?([\\da-f]{3}|[\\da-f]{6})$/i.exec(color.trim());\n if (!m?.[1]) return \"#ffffff\";\n const hex = m[1].length === 3 ? m[1].replace(/./g, \"$&$&\") : m[1];\n const n = Number.parseInt(hex, 16);\n const toLin = (v: number) => {\n const c = v / 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n };\n const lum =\n 0.2126 * toLin((n >> 16) & 255) + 0.7152 * toLin((n >> 8) & 255) + 0.0722 * toLin(n & 255);\n return lum > 0.42 ? \"#0b0d12\" : \"#ffffff\";\n}\n\nexport function normalizeTheme(input: OrynnThemeInput | undefined): OrynnThemeConfig {\n return typeof input === \"string\" ? { preset: input } : (input ?? {});\n}\n\n/** Build the inline CSS-variable style object for a theme config. */\nexport function resolveThemeVars(config: OrynnThemeConfig): CSSProperties {\n const vars: Record<string, string> = {};\n\n if (config.accent) {\n vars[\"--orynn-color-accent\"] = config.accent;\n vars[\"--orynn-color-accent-hover\"] = `color-mix(in srgb, ${config.accent} 86%, #000)`;\n vars[\"--orynn-color-accent-contrast\"] = config.accentContrast ?? contrastFor(config.accent);\n }\n if (config.ring) vars[\"--orynn-color-focus-ring\"] = config.ring;\n if (config.font) vars[\"--orynn-font-family\"] = config.font;\n if (config.fontSize != null) vars[\"--orynn-font-size\"] = len(config.fontSize);\n if (config.controlWidth != null) vars[\"--orynn-control-width\"] = len(config.controlWidth);\n if (config.radius != null) {\n const r = config.radius;\n if (r === \"md\") vars[\"--orynn-radius\"] = \"10px\";\n else if (typeof r === \"string\" && RADIUS_KEYWORDS.has(r))\n vars[\"--orynn-radius\"] = `var(--orynn-radius-${r})`;\n else vars[\"--orynn-radius\"] = len(r as string | number);\n }\n\n Object.assign(vars, config.vars ?? {});\n return vars as CSSProperties;\n}\n","import { type ReactNode, createContext, useContext, useMemo } from \"react\";\nimport { cx } from \"../internal/cx\";\nimport {\n type OrynnDensity,\n type OrynnPreset,\n type OrynnThemeConfig,\n type OrynnThemeInput,\n normalizeTheme,\n resolveThemeVars,\n} from \"./theme\";\n\ninterface OrynnContextValue {\n preset: OrynnPreset;\n density: OrynnDensity;\n config: OrynnThemeConfig;\n}\n\nconst OrynnContext = createContext<OrynnContextValue>({\n preset: \"default\",\n density: \"comfortable\",\n config: {},\n});\n\nexport interface OrynnProviderProps {\n /** Preset name (`\"teal\"`) or a full config object. */\n theme?: OrynnThemeInput;\n /** Render a `<div>` (default) or a different element / no wrapper (`\"contents\"`). */\n as?: \"div\" | \"span\" | \"contents\";\n className?: string;\n children: ReactNode;\n}\n\n/**\n * Scopes an Orynn theme to its subtree by setting `data-orynn-theme`,\n * `data-orynn-density` and any custom `--orynn-*` variables on a wrapper element.\n * Purely CSS custom properties — no runtime styling engine. Nesting is supported;\n * an inner provider overrides only what it sets.\n */\nexport function OrynnProvider({ theme, as = \"div\", className, children }: OrynnProviderProps) {\n const config = useMemo(() => normalizeTheme(theme), [theme]);\n const preset = config.preset ?? \"default\";\n const density = config.density ?? \"comfortable\";\n const style = useMemo(() => resolveThemeVars(config), [config]);\n\n const ctx = useMemo<OrynnContextValue>(\n () => ({ preset, density, config }),\n [preset, density, config],\n );\n\n const dataProps = {\n \"data-orynn-theme\": preset === \"default\" ? undefined : preset,\n \"data-orynn-density\": density === \"comfortable\" ? undefined : density,\n };\n\n return (\n <OrynnContext.Provider value={ctx}>\n {as === \"contents\" ? (\n <div style={{ display: \"contents\" }} {...dataProps}>\n {children}\n </div>\n ) : as === \"span\" ? (\n <span className={cx(\"orynn-root\", className)} style={style} {...dataProps}>\n {children}\n </span>\n ) : (\n <div className={cx(\"orynn-root\", className)} style={style} {...dataProps}>\n {children}\n </div>\n )}\n </OrynnContext.Provider>\n );\n}\n\n/** Read the nearest Orynn theme config. */\nexport function useOrynnTheme(): OrynnContextValue {\n return useContext(OrynnContext);\n}\n","import type { FieldsetConfig } from \"./config\";\n\n/**\n * Per-field validation config. V1 ships `required` / `minLength` / `maxLength`.\n * Future rule keys (regex, email, min, max, validate, ...) are added here without\n * a breaking change.\n */\nexport interface FieldValidation {\n required?: boolean;\n minLength?: number;\n maxLength?: number;\n /** Per-rule message overrides, e.g. `{ required: \"Name is required\" }`. */\n messages?: Partial<Record<string, string>>;\n}\n\n/** A single validation failure. Shape is frozen — new fields must stay optional. */\nexport interface FieldError {\n /** Rule that failed: `\"required\"`, `\"minLength\"`, `\"custom\"`, `\"async\"`, ... */\n rule: string;\n message: string;\n /** Reserved for cross-field / nested errors. Unused in V1. */\n path?: string;\n}\n\n/**\n * Validation output. Key = field name. The reserved key `\"$form\"` holds\n * form-level / cross-field errors.\n */\nexport type ValidationResult = Record<string, FieldError[]>;\n\n/** Reserved key in {@link ValidationResult} for form-level errors. */\nexport const FORM_ERROR_KEY = \"$form\" as const;\n\n/** What triggered a validation run. */\nexport type ValidationTrigger = \"change\" | \"blur\" | \"submit\";\n\nexport interface ValidationContext {\n /** Field whose change/blur triggered this run, if any. */\n changedField?: string;\n trigger: ValidationTrigger;\n}\n\n/**\n * The single seam through which all validation flows. V1's default resolver is\n * rule-based and synchronous; the `Promise` return type keeps async, schema, and\n * cross-field validation additive.\n */\nexport type ValidationResolver = (\n values: Record<string, unknown>,\n config: FieldsetConfig,\n context: ValidationContext,\n) => ValidationResult | Promise<ValidationResult>;\n\n/**\n * A single rule implementation. Returns an error message string on failure, or\n * `null` on success. `allValues` is passed so cross-field rules need no\n * signature change later.\n */\nexport type RuleFn = (\n value: unknown,\n param: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n"]}
1
+ {"version":3,"sources":["../src/internal/cx.ts","../src/internal/icons.tsx","../src/controls/Checkbox/Checkbox.tsx","../src/core/state/use-latest-ref.ts","../src/core/state/use-controllable-state.ts","../src/controls/Field/Field.tsx","../src/controls/Checkbox/CheckboxGroup.tsx","../src/internal/FieldBox.tsx","../src/theme/theme.ts","../src/theme/OrynnProvider.tsx","../src/internal/Popover.tsx","../src/controls/DatePicker/date-utils.ts","../src/controls/DatePicker/calendar-range.ts","../src/controls/DatePicker/Calendar.tsx","../src/controls/DatePicker/time-utils.ts","../src/controls/DatePicker/DatePicker.tsx","../src/controls/Dropdown/Dropdown.tsx","../src/controls/Input/Input.tsx","../src/controls/NumberField/NumberField.tsx","../src/controls/Radio/Radio.tsx","../src/controls/Textarea/Textarea.tsx","../src/internal/dev.ts","../src/core/registry/registry.ts","../src/layout/resolve-columns.ts","../src/core/config/normalize.ts","../src/core/config/conditions.ts","../src/core/validation/messages.ts","../src/core/validation/rules.ts","../src/core/validation/resolver.ts","../src/core/state/reducer.ts","../src/core/state/use-fieldset-state.ts","../src/layout/FieldGrid.tsx","../src/fieldset/FieldRenderer.tsx","../src/fieldset/FieldsetView.tsx","../src/fieldset/register-builtins.tsx","../src/fieldset/Fieldset.tsx","../src/fieldset/Form.tsx","../src/primitives/shared/classes.ts","../src/primitives/Button/Button.tsx","../src/primitives/Label/Label.tsx","../src/primitives/Card/Card.tsx","../src/primitives/Badge/Badge.tsx","../src/primitives/Alert/Alert.tsx","../src/primitives/Separator/Separator.tsx","../src/primitives/Table/Table.tsx","../src/primitives/Switch/Switch.tsx","../src/primitives/Tabs/Tabs.tsx","../src/primitives/Dialog/Dialog.tsx","../src/primitives/Popover/Popover.tsx","../src/primitives/Tooltip/Tooltip.tsx","../src/primitives/DropdownMenu/DropdownMenu.tsx","../src/types/validation.ts","../src/core/validation/standard-schema.ts"],"names":["Checkbox","jsxs","jsx","useRef","useId","useCallback","forwardRef","FieldBox","useState","createContext","useMemo","useEffect","useContext","len","previewRange","DatePicker","base","Fragment","Dropdown","Input","NumberField","sizePx","Radio","Textarea","pad","useLayoutEffect","registry","toDate","defaultRegistry","Button","Label","LabelPrimitive","Card","Slot","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","Badge","Alert","AlertTitle","AlertDescription","Separator","SeparatorPrimitive","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","Switch","SwitchPrimitive","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","DialogPrimitive","DialogContent","DialogTitle","DialogDescription","Popover","PopoverPrimitive","PopoverContent","TooltipPrimitive","TooltipContent","MenuPrimitive","DropdownMenuContent","DropdownMenuItem","DropdownMenuCheckboxItem","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuSubTrigger","DropdownMenuSubContent"],"mappings":"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","file":"index.js","sourcesContent":["/** Join truthy class names with a space. */\nexport function cx(...names: Array<string | false | null | undefined>): string {\n return names.filter(Boolean).join(\" \");\n}\n","import type { SVGProps } from \"react\";\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nconst base = (props: IconProps): IconProps => ({\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n \"aria-hidden\": true,\n focusable: false,\n ...props,\n});\n\nexport const CheckIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n);\n\nexport const MinusIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M5 12h14\" />\n </svg>\n);\n\nexport const PlusIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n);\n\nexport const ChevronDownIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport const ChevronUpIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m6 15 6-6 6 6\" />\n </svg>\n);\n\nexport const ChevronLeftIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n);\n\nexport const ChevronRightIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n);\n\nexport const XIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n);\n\nexport const SearchIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n\nexport const SpinnerIcon = (p: IconProps) => (\n <svg {...base({ className: \"orynn-spin\", ...p })}>\n <path d=\"M21 12a9 9 0 1 1-6.2-8.6\" />\n </svg>\n);\n\nexport const EyeIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n);\n\nexport const EyeOffIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <path d=\"M10.7 5.1A9.9 9.9 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-3.4 4.2M6.6 6.6A17 17 0 0 0 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6\" />\n <path d=\"M9.9 9.9a3 3 0 0 0 4.2 4.2M2 2l20 20\" />\n </svg>\n);\n\nexport const CalendarIcon = (p: IconProps) => (\n <svg {...base(p)}>\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" />\n </svg>\n);\n\nexport const CircleIcon = (p: IconProps) => (\n <svg {...base({ strokeWidth: 0, fill: \"currentColor\", ...p })}>\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </svg>\n);\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n type ReactNode,\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useId,\n useRef,\n} from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CheckIcon, MinusIcon } from \"../../internal/icons\";\nimport type { ControlSize } from \"../../types/common\";\n\nexport interface CheckboxGroupContextValue {\n name?: string;\n value: string[];\n toggle: (value: string, next: boolean) => void;\n disabled?: boolean;\n size?: ControlSize;\n isDisabledToUncheck: (value: string) => boolean;\n isDisabledToCheck: (value: string) => boolean;\n}\n\nexport const CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null);\n\ntype NativeCheckbox = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\" | \"size\" | \"value\"\n>;\n\nexport interface CheckboxProps extends NativeCheckbox {\n label?: ReactNode;\n description?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;\n /** Value used when inside a `<CheckboxGroup>`. */\n value?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n invalid?: boolean;\n size?: ControlSize;\n /** `\"filled\"` (default) paints the box on check; `\"outline\"` keeps it hollow. */\n variant?: \"filled\" | \"outline\";\n /** Put the label before the box. */\n labelPlacement?: \"end\" | \"start\";\n /** Bordered selectable card. */\n card?: boolean;\n /** Custom checked / indeterminate glyphs. */\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n className?: string;\n}\n\nconst sizePx: Record<ControlSize, string> = {\n sm: \"0.875rem\", // 14px\n md: \"1rem\", // 16px — shadcn size-4\n lg: \"1.125rem\", // 18px\n};\n\nexport const Checkbox = /* @__PURE__ */ forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(props, ref) {\n const group = useContext(CheckboxGroupContext);\n const {\n label,\n description,\n checked: checkedProp,\n defaultChecked,\n indeterminate = false,\n onChange,\n value,\n disabled: disabledProp,\n readOnly,\n required,\n invalid,\n size: sizeProp,\n variant = \"filled\",\n labelPlacement = \"end\",\n card,\n icon,\n indeterminateIcon,\n className,\n id: idProp,\n name: nameProp,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n const inGroup = group != null && value != null;\n const groupChecked = inGroup ? group.value.includes(value) : undefined;\n const isControlled = checkedProp !== undefined || groupChecked !== undefined;\n const checked = checkedProp ?? groupChecked ?? undefined;\n\n const size = sizeProp ?? group?.size ?? \"md\";\n const disabled =\n disabledProp ||\n group?.disabled ||\n (inGroup && checked === true && group.isDisabledToUncheck(value)) ||\n (inGroup && checked !== true && group.isDisabledToCheck(value)) ||\n false;\n\n useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n const next = e.target.checked;\n onChange?.(next, e);\n if (inGroup) group.toggle(value, next);\n };\n\n return (\n <label\n className={cx(\n \"orynn-choice\",\n card && \"orynn-choice--card\",\n variant === \"outline\" && \"orynn-choice--outline\",\n labelPlacement === \"start\" && \"orynn-choice--start\",\n className,\n )}\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n style={{ \"--orynn-check-size\": sizePx[size] } as React.CSSProperties}\n >\n <input\n {...rest}\n ref={(n) => {\n innerRef.current = n;\n if (typeof ref === \"function\") ref(n);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = n;\n }}\n type=\"checkbox\"\n className=\"orynn-choice__native\"\n id={id}\n name={nameProp ?? group?.name}\n value={value}\n checked={isControlled ? Boolean(checked) : undefined}\n defaultChecked={isControlled ? undefined : defaultChecked}\n disabled={disabled}\n required={required}\n aria-invalid={invalid || undefined}\n onChange={handleChange}\n />\n <span className=\"orynn-choice__control orynn-choice__control--checkbox\" aria-hidden=\"true\">\n <span className=\"orynn-choice__mark orynn-choice__mark--check\">\n {icon ?? <CheckIcon />}\n </span>\n <span className=\"orynn-choice__mark orynn-choice__mark--dash\">\n {indeterminateIcon ?? <MinusIcon />}\n </span>\n </span>\n {(label != null || description != null) && (\n <span className=\"orynn-choice__text\">\n {label != null && <span className=\"orynn-choice__label\">{label}</span>}\n {description != null && <span className=\"orynn-choice__desc\">{description}</span>}\n </span>\n )}\n </label>\n );\n },\n);\n","import { useRef } from \"react\";\n\n/** A ref whose `.current` always holds the latest value passed on render. */\nexport function useLatestRef<T>(value: T) {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n","import { useCallback, useState } from \"react\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\n/**\n * The single place the controlled / uncontrolled fork lives. When `value` is\n * provided the component is controlled and internal state is bypassed; otherwise\n * `defaultValue` seeds local state. `onChange` fires on every committed change in\n * both modes.\n */\nexport function useControllableState<T>({\n value,\n defaultValue,\n onChange,\n}: {\n value: T | undefined;\n defaultValue: T;\n onChange: ((value: T) => void) | undefined;\n}): readonly [T, (next: T | ((prev: T) => T)) => void] {\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState<T>(defaultValue);\n\n const current = isControlled ? (value as T) : uncontrolled;\n const currentRef = useLatestRef(current);\n const onChangeRef = useLatestRef(onChange);\n const isControlledRef = useLatestRef(isControlled);\n\n const setValue = useCallback((next: T | ((prev: T) => T)) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(currentRef.current) : next;\n if (Object.is(resolved, currentRef.current)) return;\n if (!isControlledRef.current) setUncontrolled(resolved);\n onChangeRef.current?.(resolved);\n }, []);\n\n return [current, setValue] as const;\n}\n","import { useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport type { ErrorProp, FieldProps, FieldRenderContext } from \"../../types/props\";\n\nfunction toMessages(error: ErrorProp): string[] {\n if (error == null) return [];\n return (Array.isArray(error) ? error : [error]).filter((m): m is string => Boolean(m));\n}\n\nfunction joinIds(...ids: Array<string | undefined>): string | undefined {\n const list = ids.filter((id): id is string => Boolean(id));\n return list.length > 0 ? list.join(\" \") : undefined;\n}\n\n/**\n * Layout + accessibility wrapper for a single control. Renders the label,\n * optional description, and an error/success region, and wires the ARIA\n * relationships (`htmlFor`, `aria-describedby`, `aria-invalid`, `aria-required`).\n *\n * ```tsx\n * <Field label=\"Name\" error={error}>\n * {({ id, describedById, invalid }) => (\n * <input id={id} aria-describedby={describedById} aria-invalid={invalid} />\n * )}\n * </Field>\n * ```\n */\nexport function Field(props: FieldProps) {\n const { label, description, error, success, required, disabled, hideLabel, className, children } =\n props;\n\n const reactId = useId();\n const id = props.id ?? reactId;\n\n const messages = toMessages(error);\n const invalid = messages.length > 0;\n const successMsg = !invalid && typeof success === \"string\" && success ? success : undefined;\n const valid = !invalid && (success === true || Boolean(successMsg));\n\n const descriptionId = description != null ? `${id}-description` : undefined;\n const errorId = invalid ? `${id}-error` : undefined;\n const successId = successMsg ? `${id}-success` : undefined;\n const describedById = joinIds(descriptionId, errorId, successId);\n\n const ctx: FieldRenderContext = { id, describedById, invalid, valid, required, disabled };\n\n return (\n <div\n className={cx(\"orynn-field\", className)}\n data-invalid={invalid || undefined}\n data-valid={valid || undefined}\n data-disabled={disabled || undefined}\n data-required={required || undefined}\n >\n {label != null && !hideLabel && (\n <label className=\"orynn-field__label\" htmlFor={id} id={`${id}-label`}>\n {label}\n </label>\n )}\n\n {description != null && (\n <p className=\"orynn-field__description\" id={descriptionId}>\n {description}\n </p>\n )}\n\n <div className=\"orynn-field__control\">\n {typeof children === \"function\" ? children(ctx) : children}\n </div>\n\n {invalid && (\n <p className=\"orynn-field__error\" id={errorId} role=\"alert\">\n {messages.length === 1 ? messages[0] : messages.map((m) => <span key={m}>{m}</span>)}\n </p>\n )}\n {successMsg && (\n <p className=\"orynn-field__success\" id={successId}>\n {successMsg}\n </p>\n )}\n </div>\n );\n}\n","import { type ReactNode, useCallback, useId, useMemo } from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { cx } from \"../../internal/cx\";\nimport type { ControlSize, Feedback } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\nimport { Checkbox, CheckboxGroupContext, type CheckboxGroupContextValue } from \"./Checkbox\";\n\nexport interface CheckboxOption {\n label: ReactNode;\n value: string;\n description?: ReactNode;\n /** Leading icon shown before the label. */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps {\n label?: ReactNode;\n description?: ReactNode;\n error?: Feedback;\n success?: string | boolean;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n size?: ControlSize;\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n orientation?: \"vertical\" | \"horizontal\";\n /** Lay the options out in an N-column grid. */\n columns?: number;\n /** Minimum selections (blocks unchecking below it). */\n min?: number;\n /** Maximum selections (blocks checking above it). */\n max?: number;\n /** Show a \"select all\" checkbox above the options. */\n showSelectAll?: boolean;\n selectAllLabel?: ReactNode;\n /** Convenience: render items from data instead of children. */\n options?: CheckboxOption[];\n children?: ReactNode;\n className?: string;\n id?: string;\n}\n\nexport function CheckboxGroup(props: CheckboxGroupProps) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n name: nameProp,\n size,\n value: valueProp,\n defaultValue,\n onChange,\n orientation = \"vertical\",\n columns,\n min,\n max,\n showSelectAll = false,\n selectAllLabel = \"Select all\",\n options,\n children,\n className,\n id: idProp,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const name = nameProp ?? id;\n const [value, setValue] = useControllableState<string[]>({\n value: valueProp,\n defaultValue: defaultValue ?? [],\n onChange: undefined,\n });\n\n const toggle = useCallback(\n (v: string, next: boolean) => {\n const set = new Set(value);\n if (next) set.add(v);\n else set.delete(v);\n const arr = [...set];\n setValue(arr);\n onChange?.(arr);\n },\n [value, setValue, onChange],\n );\n\n const selectableValues = (options ?? []).filter((o) => !o.disabled).map((o) => o.value);\n const allSelected =\n selectableValues.length > 0 && selectableValues.every((v) => value.includes(v));\n const someSelected = selectableValues.some((v) => value.includes(v));\n const toggleAll = () => {\n if (allSelected) {\n setValue([]);\n onChange?.([]);\n } else {\n const next = max != null ? selectableValues.slice(0, max) : selectableValues;\n setValue(next);\n onChange?.(next);\n }\n };\n\n const ctx = useMemo<CheckboxGroupContextValue>(\n () => ({\n name,\n value,\n toggle,\n disabled,\n size,\n isDisabledToUncheck: () => min != null && value.length <= min,\n isDisabledToCheck: (v) => max != null && value.length >= max && !value.includes(v),\n }),\n [name, value, toggle, disabled, size, min, max],\n );\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {() => (\n <CheckboxGroupContext.Provider value={ctx}>\n <div\n role=\"group\"\n aria-labelledby={label != null ? `${id}-label` : undefined}\n className={cx(\"orynn-choice-group\")}\n data-orientation={columns ? undefined : orientation}\n data-columns={columns ? \"\" : undefined}\n style={\n columns ? ({ \"--orynn-choice-columns\": columns } as React.CSSProperties) : undefined\n }\n >\n {showSelectAll && selectableValues.length > 0 && (\n <div className=\"orynn-choice-group__selectall\">\n <Checkbox\n checked={allSelected}\n indeterminate={!allSelected && someSelected}\n disabled={disabled}\n label={selectAllLabel}\n onChange={toggleAll}\n />\n </div>\n )}\n {options\n ? options.map((o) => (\n <Checkbox\n key={o.value}\n value={o.value}\n label={\n o.icon != null ? (\n <>\n <span className=\"orynn-choice__icon\">{o.icon}</span>\n {o.label}\n </>\n ) : (\n o.label\n )\n }\n description={o.description}\n disabled={o.disabled}\n />\n ))\n : children}\n </div>\n </CheckboxGroupContext.Provider>\n )}\n </Field>\n );\n}\n","import { type FocusEvent, type HTMLAttributes, type ReactNode, forwardRef, useState } from \"react\";\nimport { cx } from \"./cx\";\n\nexport type ControlSize = \"sm\" | \"md\" | \"lg\";\nexport type ControlVariant = \"outline\" | \"filled\" | \"flushed\" | \"unstyled\";\nexport type ControlRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"pill\";\n\nexport interface FieldBoxOwnProps {\n size?: ControlSize;\n variant?: ControlVariant;\n radius?: ControlRadius;\n disabled?: boolean;\n invalid?: boolean;\n /** Success / valid visual state. */\n valid?: boolean;\n /** Controlled focus ring. Omit to auto-track via focus-within. */\n focused?: boolean;\n /** Whether the floating label is raised (usually focused || has value). */\n active?: boolean;\n /** Rotates a chevron marked `.orynn-select__chevron`. */\n open?: boolean;\n /** Floating label node (usually a `<label class=\"orynn-box__label\">`). */\n floatingLabel?: ReactNode;\n left?: ReactNode;\n right?: ReactNode;\n /** Segment glued to the start, *outside* the border (e.g. `https://`). */\n addonBefore?: ReactNode;\n /** Segment glued to the end, *outside* the border (e.g. `.com`). */\n addonAfter?: ReactNode;\n /** Adds `.orynn-box--textarea` sizing. */\n textarea?: boolean;\n}\n\nexport interface FieldBoxProps\n extends FieldBoxOwnProps,\n Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n children: ReactNode;\n}\n\nexport const FieldBox = /* @__PURE__ */ forwardRef<HTMLDivElement, FieldBoxProps>(\n function FieldBox(props, ref) {\n const {\n size = \"md\",\n variant = \"outline\",\n radius,\n disabled,\n invalid,\n valid,\n focused,\n active,\n open,\n floatingLabel,\n left,\n right,\n addonBefore,\n addonAfter,\n textarea,\n className,\n children,\n onFocus,\n onBlur,\n ...rest\n } = props;\n\n const [focusWithin, setFocusWithin] = useState(false);\n const isFocused = focused ?? focusWithin;\n\n const handleFocus = (e: FocusEvent<HTMLDivElement>) => {\n if (focused === undefined) setFocusWithin(true);\n onFocus?.(e);\n };\n const handleBlur = (e: FocusEvent<HTMLDivElement>) => {\n if (focused === undefined && !e.currentTarget.contains(e.relatedTarget as Node)) {\n setFocusWithin(false);\n }\n onBlur?.(e);\n };\n\n const hasAddon = addonBefore != null || addonAfter != null;\n\n const box = (\n <div\n ref={ref}\n className={cx(\n \"orynn-box\",\n floatingLabel != null && \"orynn-box--floating\",\n textarea && \"orynn-box--textarea\",\n className,\n )}\n data-size={size}\n data-variant={variant}\n data-radius={radius}\n data-disabled={disabled || undefined}\n data-invalid={invalid || undefined}\n data-valid={valid || undefined}\n data-focused={isFocused || undefined}\n data-active={active || isFocused || undefined}\n data-open={open || undefined}\n data-addon-before={addonBefore != null || undefined}\n data-addon-after={addonAfter != null || undefined}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...rest}\n >\n {left != null && <span className=\"orynn-box__adornment\">{left}</span>}\n {children}\n {floatingLabel}\n {right != null && <span className=\"orynn-box__adornment\">{right}</span>}\n </div>\n );\n\n if (!hasAddon) return box;\n\n return (\n <div className=\"orynn-box__group\" data-size={size} data-disabled={disabled || undefined}>\n {addonBefore != null && (\n <span className=\"orynn-box__addon\" data-side=\"before\">\n {addonBefore}\n </span>\n )}\n {box}\n {addonAfter != null && (\n <span className=\"orynn-box__addon\" data-side=\"after\">\n {addonAfter}\n </span>\n )}\n </div>\n );\n },\n);\n","import type { CSSProperties } from \"react\";\n\n/** Built-in colour presets. Each maps to `[data-orynn-theme=\"…\"]` in the stylesheet\n * and now recolours only the primary/ring — backgrounds stay neutral (shadcn style). */\nexport type OrynnPreset = \"default\" | \"slate\" | \"teal\" | \"violet\" | \"rose\" | \"emerald\";\n\n/** Vertical rhythm / sizing. Maps to `[data-orynn-density=\"…\"]`. */\nexport type OrynnDensity = \"compact\" | \"comfortable\" | \"spacious\";\n\nexport type OrynnRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"pill\" | (string & {}) | number;\n\n/** Any `--orynn-*` custom property. */\nexport type OrynnVarOverrides = Partial<Record<`--orynn-${string}`, string | number>>;\n\nexport interface OrynnThemeConfig {\n /** Colour preset. Defaults to `\"default\"` (neutral). */\n preset?: OrynnPreset;\n density?: OrynnDensity;\n /** `\"dark\"` swaps the base palette to the dark token set (also sets the `.dark` class). */\n colorScheme?: \"light\" | \"dark\";\n /** The solid action colour (`--orynn-color-primary`). Any CSS colour. */\n primary?: string;\n /** Foreground to pair with a custom `primary`. Auto-derived from the lightness\n * of `primary` when omitted (understands hex, `oklch()`, `hsl()`). */\n primaryForeground?: string;\n /** @deprecated alias for `primary`. */\n accent?: string;\n /** @deprecated alias for `primaryForeground`. */\n accentContrast?: string;\n /** `--orynn-font-family`. */\n font?: string;\n /** Base font size, e.g. `\"15px\"` or `\"0.95rem\"`. */\n fontSize?: string | number;\n /** Corner radius base (`--orynn-radius`). Keyword, CSS length, or px number. */\n radius?: OrynnRadius;\n /** Default control width. `\"100%\"` by default. */\n controlWidth?: string | number;\n /** Cap on control width. `\"450px\"` by default; number = px; `\"none\"` to uncap. */\n controlMaxWidth?: string | number;\n /** Focus-ring colour (`--orynn-color-ring`). */\n ring?: string;\n /** Escape hatch: any `--orynn-*` variables verbatim. */\n vars?: OrynnVarOverrides;\n}\n\n/** `theme` prop accepts a preset name shorthand or a full config. */\nexport type OrynnThemeInput = OrynnPreset | OrynnThemeConfig;\n\nconst len = (v: string | number) => (typeof v === \"number\" ? `${v}px` : v);\n\n/** Keyword → literal radius base. Literals (not `var(--orynn-radius-*)`) because\n * the `-sm/-md/-lg/-xl` scale is now `calc()`-derived from `--orynn-radius`. */\nconst RADIUS_KEYWORDS: Record<string, string> = {\n none: \"0px\",\n sm: \"0.375rem\",\n md: \"0.5rem\",\n lg: \"0.625rem\",\n xl: \"0.875rem\",\n pill: \"9999px\",\n};\n\nconst DARK_FG = \"#0b0d12\";\nconst LIGHT_FG = \"#ffffff\";\n\n/** Pick a near-black or white foreground for a custom `primary`, from its\n * lightness. Handles hex, `oklch(L …)` and `hsl(h s% l%)`; anything else → white. */\nfunction contrastFor(color: string): string {\n const c = color.trim().toLowerCase();\n\n const hex = /^#?([\\da-f]{3}|[\\da-f]{6})$/.exec(c)?.[1];\n if (hex) {\n const full = hex.length === 3 ? hex.replace(/./g, \"$&$&\") : hex;\n const n = Number.parseInt(full, 16);\n const toLin = (v: number) => {\n const x = v / 255;\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n };\n const lum =\n 0.2126 * toLin((n >> 16) & 255) + 0.7152 * toLin((n >> 8) & 255) + 0.0722 * toLin(n & 255);\n return lum > 0.42 ? DARK_FG : LIGHT_FG;\n }\n\n const okl = /^oklch\\(\\s*([\\d.]+)(%?)/.exec(c);\n if (okl) {\n const l = Number.parseFloat(okl[1] as string) / (okl[2] ? 100 : 1);\n return l >= 0.62 ? DARK_FG : LIGHT_FG;\n }\n\n const hsl = /^hsla?\\(\\s*[\\d.]+(?:deg)?\\s*[, ]\\s*[\\d.]+%\\s*[, ]\\s*([\\d.]+)%/.exec(c)?.[1];\n if (hsl) return Number.parseFloat(hsl) >= 60 ? DARK_FG : LIGHT_FG;\n\n if (c === \"white\") return DARK_FG;\n if (c === \"black\") return LIGHT_FG;\n return LIGHT_FG;\n}\n\nexport function normalizeTheme(input: OrynnThemeInput | undefined): OrynnThemeConfig {\n return typeof input === \"string\" ? { preset: input } : (input ?? {});\n}\n\n/** Build the inline CSS-variable style object for a theme config. */\nexport function resolveThemeVars(config: OrynnThemeConfig): CSSProperties {\n const vars: Record<string, string> = {};\n\n const primary = config.primary ?? config.accent;\n if (primary) {\n const p = primary;\n vars[\"--orynn-color-primary\"] = p;\n vars[\"--orynn-color-primary-foreground\"] =\n config.primaryForeground ?? config.accentContrast ?? contrastFor(p);\n // A coloured-primary theme wants a matching ring unless one is set explicitly.\n if (!config.ring) vars[\"--orynn-color-ring\"] = p;\n }\n if (config.ring) vars[\"--orynn-color-ring\"] = config.ring;\n if (config.font) vars[\"--orynn-font-family\"] = config.font;\n if (config.fontSize != null) vars[\"--orynn-font-size\"] = len(config.fontSize);\n if (config.controlWidth != null) {\n vars[\"--orynn-control-width\"] = len(config.controlWidth);\n vars[\"--orynn-control-max-width\"] = \"none\";\n }\n if (config.controlMaxWidth != null)\n vars[\"--orynn-control-max-width\"] = len(config.controlMaxWidth);\n if (config.radius != null) {\n const r = config.radius;\n vars[\"--orynn-radius\"] =\n typeof r === \"string\" && r in RADIUS_KEYWORDS\n ? (RADIUS_KEYWORDS[r] as string)\n : len(r as string | number);\n }\n\n Object.assign(vars, config.vars ?? {});\n return vars as CSSProperties;\n}\n","import { type ReactNode, createContext, useContext, useEffect, useMemo, useState } from \"react\";\nimport { cx } from \"../internal/cx\";\nimport {\n type OrynnDensity,\n type OrynnPreset,\n type OrynnThemeConfig,\n type OrynnThemeInput,\n normalizeTheme,\n resolveThemeVars,\n} from \"./theme\";\n\ninterface OrynnContextValue {\n preset: OrynnPreset;\n density: OrynnDensity;\n config: OrynnThemeConfig;\n /**\n * A themed `<div class=\"orynn-portal\">` appended to `document.body` (or `null`\n * before the mount effect / on the server). Radix `*.Portal`s and the internal\n * `<Popover>` render into it so portalled content inherits this provider's\n * theme even though it sits outside the provider's DOM subtree.\n */\n portalContainer: HTMLElement | null;\n}\n\nconst OrynnContext = createContext<OrynnContextValue>({\n preset: \"default\",\n density: \"comfortable\",\n config: {},\n portalContainer: null,\n});\n\nexport interface OrynnProviderProps {\n /** Preset name (`\"teal\"`) or a full config object. */\n theme?: OrynnThemeInput;\n /** Render a `<div>` (default) or a different element / no wrapper (`\"contents\"`). */\n as?: \"div\" | \"span\" | \"contents\";\n className?: string;\n children: ReactNode;\n}\n\nfunction syncThemeEl(\n el: HTMLElement,\n preset: OrynnPreset,\n density: OrynnDensity,\n config: OrynnThemeConfig,\n style: Record<string, unknown>,\n) {\n const attr = (name: string, value: string | null) =>\n value == null ? el.removeAttribute(name) : el.setAttribute(name, value);\n attr(\"data-orynn-theme\", preset === \"default\" ? null : preset);\n attr(\"data-orynn-density\", density === \"comfortable\" ? null : density);\n attr(\"data-orynn-color-scheme\", config.colorScheme ?? null);\n el.classList.toggle(\"dark\", config.colorScheme === \"dark\");\n el.removeAttribute(\"style\");\n for (const [k, v] of Object.entries(style)) {\n if (v != null) el.style.setProperty(k, String(v));\n }\n}\n\n/**\n * Scopes an Orynn theme to its subtree by setting `data-orynn-theme`,\n * `data-orynn-density`, a `.dark` class and any custom `--orynn-*` variables on a\n * wrapper element. Purely CSS custom properties — no runtime styling engine.\n * Nesting is supported; an inner provider overrides only what it sets. Also\n * mounts a matching `<div class=\"orynn-portal\">` on `document.body` so portalled\n * overlays (Dialog, Popover, Tooltip, menus) render with the same theme.\n */\nexport function OrynnProvider({ theme, as = \"div\", className, children }: OrynnProviderProps) {\n const config = useMemo(() => normalizeTheme(theme), [theme]);\n const preset = config.preset ?? \"default\";\n const density = config.density ?? \"comfortable\";\n const style = useMemo(() => resolveThemeVars(config), [config]);\n\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n\n // Create / tear down the portal host once.\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const el = document.createElement(\"div\");\n el.className = \"orynn-portal\";\n document.body.appendChild(el);\n setPortalContainer(el);\n return () => {\n el.remove();\n setPortalContainer(null);\n };\n }, []);\n\n // Keep the portal host's theme attributes / vars in sync with the config.\n useEffect(() => {\n if (portalContainer)\n syncThemeEl(portalContainer, preset, density, config, style as Record<string, unknown>);\n }, [portalContainer, preset, density, config, style]);\n\n const ctx = useMemo<OrynnContextValue>(\n () => ({ preset, density, config, portalContainer }),\n [preset, density, config, portalContainer],\n );\n\n const dataProps = {\n \"data-orynn-theme\": preset === \"default\" ? undefined : preset,\n \"data-orynn-density\": density === \"comfortable\" ? undefined : density,\n \"data-orynn-color-scheme\": config.colorScheme,\n };\n // Also stamp `.dark` so consumers' shadcn-style `.dark`-scoped rules apply.\n const darkClass = config.colorScheme === \"dark\" ? \"dark\" : undefined;\n\n return (\n <OrynnContext.Provider value={ctx}>\n {as === \"contents\" ? (\n <div className={darkClass} style={{ display: \"contents\", ...style }} {...dataProps}>\n {children}\n </div>\n ) : as === \"span\" ? (\n <span className={cx(\"orynn-root\", className, darkClass)} style={style} {...dataProps}>\n {children}\n </span>\n ) : (\n <div className={cx(\"orynn-root\", className, darkClass)} style={style} {...dataProps}>\n {children}\n </div>\n )}\n </OrynnContext.Provider>\n );\n}\n\n/** Read the nearest Orynn theme config. */\nexport function useOrynnTheme(): OrynnContextValue {\n return useContext(OrynnContext);\n}\n\n/**\n * The DOM node Radix portals / the internal `<Popover>` should render into so\n * portalled content stays themed. Falls back to `document.body` when there is no\n * `<OrynnProvider>` (the theme then lives on `:root` / `html` and body inherits\n * it anyway). `null` only on the server.\n */\nexport function usePortalContainer(): HTMLElement | null {\n const { portalContainer } = useContext(OrynnContext);\n if (portalContainer) return portalContainer;\n return typeof document === \"undefined\" ? null : document.body;\n}\n","import {\n type ReactNode,\n type RefObject,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../theme/OrynnProvider\";\nimport { cx } from \"./cx\";\n\nconst useIsoLayoutEffect = typeof window === \"undefined\" ? useEffect : useLayoutEffect;\n\nexport interface PopoverProps {\n open: boolean;\n /** The element the popover is anchored to (usually the control frame). */\n anchorRef: RefObject<HTMLElement | null>;\n onClose: () => void;\n children: ReactNode;\n /** Match the anchor's width. Default true. */\n matchWidth?: boolean;\n /** Gap between anchor and popover, px. Default 6. */\n offset?: number;\n /** Cap the auto-computed max height, px. */\n maxHeight?: number;\n /** Extra class on the `.orynn-popover` element. */\n className?: string;\n /** Ref forwarded to the popover element (for outside-click checks by the caller). */\n popoverRef?: { current: HTMLDivElement | null };\n /** Called on outside pointerdown / Escape (in addition to onClose). */\n role?: string;\n id?: string;\n}\n\ninterface Pos {\n left: number;\n top: number;\n width: number;\n placement: \"bottom\" | \"top\";\n maxHeight: number;\n}\n\nexport function Popover({\n open,\n anchorRef,\n onClose,\n children,\n matchWidth = true,\n offset = 6,\n maxHeight,\n className,\n popoverRef,\n role,\n id,\n}: PopoverProps) {\n const innerRef = useRef<HTMLDivElement | null>(null);\n const setRef = (el: HTMLDivElement | null) => {\n innerRef.current = el;\n if (popoverRef) popoverRef.current = el;\n };\n const [pos, setPos] = useState<Pos | null>(null);\n\n // Portalled into the provider's themed `.orynn-portal` host (falls back to\n // <body>), so the panel inherits the active theme through the cascade — no\n // per-instance re-projection needed.\n const container = usePortalContainer();\n\n useIsoLayoutEffect(() => {\n if (!open) return;\n const anchor = anchorRef.current;\n if (!anchor) return;\n\n const update = () => {\n const r = anchor.getBoundingClientRect();\n const vh = window.innerHeight;\n const below = vh - r.bottom - offset;\n const above = r.top - offset;\n const wanted = innerRef.current?.scrollHeight ?? 280;\n const placeTop = below < Math.min(wanted, 240) && above > below;\n const avail = Math.max(140, (placeTop ? above : below) - 4);\n setPos({\n left: r.left,\n top: placeTop ? r.top - offset : r.bottom + offset,\n width: r.width,\n placement: placeTop ? \"top\" : \"bottom\",\n maxHeight: maxHeight != null ? Math.min(maxHeight, avail) : avail,\n });\n };\n\n update();\n const ro = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(update) : undefined;\n ro?.observe(anchor);\n window.addEventListener(\"scroll\", update, true);\n window.addEventListener(\"resize\", update);\n return () => {\n ro?.disconnect();\n window.removeEventListener(\"scroll\", update, true);\n window.removeEventListener(\"resize\", update);\n };\n }, [open, anchorRef, offset, maxHeight]);\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const t = e.target as Node;\n if (innerRef.current?.contains(t) || anchorRef.current?.contains(t)) return;\n onClose();\n };\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n onClose();\n }\n };\n document.addEventListener(\"pointerdown\", onPointerDown, true);\n document.addEventListener(\"keydown\", onKey, true);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown, true);\n document.removeEventListener(\"keydown\", onKey, true);\n };\n }, [open, anchorRef, onClose]);\n\n if (!open || !pos || !container) return null;\n\n return createPortal(\n <div\n ref={setRef}\n id={id}\n role={role}\n className={cx(\"orynn-popover\", className)}\n style={{\n left: pos.left,\n top: pos.top,\n width: matchWidth ? pos.width : undefined,\n minWidth: pos.width,\n maxHeight: pos.maxHeight,\n transform: pos.placement === \"top\" ? \"translateY(-100%)\" : undefined,\n }}\n >\n {children}\n </div>,\n container,\n );\n}\n","export const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\n\nexport const startOfMonth = (d: Date) => new Date(d.getFullYear(), d.getMonth(), 1);\n\nexport const startOfYear = (d: Date) => new Date(d.getFullYear(), 0, 1);\n\nexport const endOfMonth = (d: Date) => new Date(d.getFullYear(), d.getMonth() + 1, 0);\n\nexport const isSameDay = (a: Date | null, b: Date | null) =>\n !!a &&\n !!b &&\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nexport const isSameMonth = (a: Date | null, b: Date | null) =>\n !!a && !!b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameYear = (a: Date | null, b: Date | null) =>\n !!a && !!b && a.getFullYear() === b.getFullYear();\n\nexport const addDays = (d: Date, n: number) => {\n const r = new Date(d);\n r.setDate(r.getDate() + n);\n return r;\n};\n\nexport const addMonths = (d: Date, n: number) => {\n const r = new Date(d.getFullYear(), d.getMonth() + n, 1);\n const day = Math.min(d.getDate(), daysInMonth(r.getFullYear(), r.getMonth()));\n r.setDate(day);\n return r;\n};\n\nexport const addYears = (d: Date, n: number) => addMonths(d, n * 12);\n\nexport const daysInMonth = (year: number, month: number) => new Date(year, month + 1, 0).getDate();\n\nexport const clampDate = (d: Date, min?: Date, max?: Date) => {\n if (min && d < startOfDay(min)) return startOfDay(min);\n if (max && d > startOfDay(max)) return startOfDay(max);\n return d;\n};\n\n/** Whole days from `a` to `b` (b − a), ignoring the time component. */\nexport const daysBetween = (a: Date, b: Date) =>\n Math.round((startOfDay(b).getTime() - startOfDay(a).getTime()) / 86_400_000);\n\nconst pad = (n: number, len = 2) => String(n).padStart(len, \"0\");\n\nconst FORMAT_TOKENS =\n /(?<![A-Za-z])(yyyy|yy|MMMM|MMM|MM|M|dd|d|EEEE|EEE|HH|H|hh|h|mm|m|ss|s|aa|a|A)(?![A-Za-z])/g;\n\n/**\n * Formats a date. `fmt` is either a token string (`yyyy MM M dd d MMMM MMM EEE\n * EEEE HH H hh h mm m ss s a A`) or an `Intl.DateTimeFormatOptions` object, in\n * which case the platform `Intl.DateTimeFormat` does the work.\n */\nexport function formatDate(\n d: Date,\n fmt: string | Intl.DateTimeFormatOptions = \"yyyy-MM-dd\",\n locale?: string,\n): string {\n if (typeof fmt !== \"string\") return new Intl.DateTimeFormat(locale, fmt).format(d);\n const h12 = d.getHours() % 12 || 12;\n const map: Record<string, string> = {\n yyyy: String(d.getFullYear()),\n yy: pad(d.getFullYear() % 100),\n MMMM: new Intl.DateTimeFormat(locale, { month: \"long\" }).format(d),\n MMM: new Intl.DateTimeFormat(locale, { month: \"short\" }).format(d),\n MM: pad(d.getMonth() + 1),\n M: String(d.getMonth() + 1),\n dd: pad(d.getDate()),\n d: String(d.getDate()),\n EEEE: new Intl.DateTimeFormat(locale, { weekday: \"long\" }).format(d),\n EEE: new Intl.DateTimeFormat(locale, { weekday: \"short\" }).format(d),\n HH: pad(d.getHours()),\n H: String(d.getHours()),\n hh: pad(h12),\n h: String(h12),\n mm: pad(d.getMinutes()),\n m: String(d.getMinutes()),\n ss: pad(d.getSeconds()),\n s: String(d.getSeconds()),\n aa: d.getHours() < 12 ? \"am\" : \"pm\",\n a: d.getHours() < 12 ? \"am\" : \"pm\",\n A: d.getHours() < 12 ? \"AM\" : \"PM\",\n };\n return fmt.replace(FORMAT_TOKENS, (t) => map[t] ?? t);\n}\n\n/** Try to resolve a written-out month name (`March`, `Mar`, localized) to 0–11. */\nfunction matchMonthName(input: string, locale?: string): { month: number; rest: string } | null {\n for (let m = 0; m < 12; m += 1) {\n for (const style of [\"long\", \"short\"] as const) {\n const name = new Intl.DateTimeFormat(locale, { month: style }).format(new Date(2021, m, 1));\n const i = input.toLowerCase().indexOf(name.toLowerCase());\n if (i !== -1) return { month: m, rest: input.slice(0, i) + input.slice(i + name.length) };\n }\n }\n return null;\n}\n\n/**\n * Lenient parse: pulls digit groups in `fmt` token order (date + optional\n * time), recognises written month names, and honours a trailing am/pm.\n */\nexport function parseDate(\n input: string,\n fmt: string | Intl.DateTimeFormatOptions = \"yyyy-MM-dd\",\n locale?: string,\n): Date | null {\n const pattern = typeof fmt === \"string\" ? fmt : \"yyyy-MM-dd\";\n let text = input;\n\n let monthFromName: number | undefined;\n if (/MMM/.test(pattern)) {\n const hit = matchMonthName(text, locale);\n if (hit) {\n monthFromName = hit.month;\n text = hit.rest;\n }\n }\n\n const nums = text.match(/\\d+/g);\n if (!nums && monthFromName === undefined) return null;\n\n const order = (\n pattern.match(/yyyy|yy|MM|dd|HH|hh|mm|ss|M|d|H|h|m|s/g) ?? [\"yyyy\", \"MM\", \"dd\"]\n ).map((t) => (t.length === 2 ? t.charAt(0) + t.charAt(0) : t));\n\n let y: number | undefined;\n let mo: number | undefined = monthFromName;\n let day: number | undefined;\n let hh = 0;\n let mm = 0;\n let ss = 0;\n let ni = 0;\n for (const tok of order) {\n if ((tok === \"MM\" || tok === \"M\") && monthFromName !== undefined) continue;\n const n = Number((nums ?? [])[ni]);\n ni += 1;\n if (Number.isNaN(n)) continue;\n if (tok === \"yyyy\" || tok === \"yy\") y = n < 100 ? 2000 + n : n;\n else if (tok === \"MM\" || tok === \"M\") mo = n - 1;\n else if (tok === \"dd\" || tok === \"d\") day = n;\n else if (tok === \"HH\" || tok === \"H\" || tok === \"hh\" || tok === \"h\") hh = n;\n else if (tok === \"mm\" || tok === \"m\") mm = n;\n else if (tok === \"ss\" || tok === \"s\") ss = n;\n }\n\n if (/pm/i.test(input) && hh < 12) hh += 12;\n if (/am/i.test(input) && hh === 12) hh = 0;\n\n if (y == null && day == null && mo == null) return null;\n const d = new Date(y ?? new Date().getFullYear(), mo ?? 0, day ?? 1, hh, mm, ss);\n return Number.isNaN(d.getTime()) ? null : d;\n}\n\nexport function toDate(v: Date | string | null | undefined): Date | null {\n if (v == null) return null;\n if (v instanceof Date) return Number.isNaN(v.getTime()) ? null : startOfDay(v);\n const d = new Date(v);\n return Number.isNaN(d.getTime()) ? null : startOfDay(d);\n}\n\n/**\n * Grid of whole weeks starting on `firstDayOfWeek`. Six weeks (42 cells) when\n * `fixedWeeks`, otherwise trimmed to the weeks the month actually touches.\n */\nexport function monthMatrix(\n viewYear: number,\n viewMonth: number,\n firstDayOfWeek: number,\n fixedWeeks = true,\n): Date[] {\n const first = new Date(viewYear, viewMonth, 1);\n const offset = (first.getDay() - firstDayOfWeek + 7) % 7;\n const start = addDays(first, -offset);\n if (fixedWeeks) return Array.from({ length: 42 }, (_, i) => addDays(start, i));\n const last = new Date(viewYear, viewMonth + 1, 0);\n const used = Math.ceil((offset + last.getDate()) / 7);\n return Array.from({ length: used * 7 }, (_, i) => addDays(start, i));\n}\n\nexport function weekdayLabels(firstDayOfWeek: number, locale?: string): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n // 2023-01-01 is a Sunday\n return Array.from({ length: 7 }, (_, i) =>\n fmt.format(new Date(2023, 0, 1 + ((firstDayOfWeek + i) % 7))),\n );\n}\n\n/** The 12 short month names for the given locale, index 0 = January. */\nexport function monthLabels(locale?: string): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { month: \"short\" });\n return Array.from({ length: 12 }, (_, i) => fmt.format(new Date(2021, i, 1)));\n}\n\n/** The 12 rows of a decade grid: the 10 years of the decade + 1 lead + 1 trail. */\nexport function decadeGrid(year: number): { start: number; years: number[] } {\n const start = Math.floor(year / 10) * 10;\n return { start, years: Array.from({ length: 12 }, (_, i) => start - 1 + i) };\n}\n\nexport function isoWeek(d: Date): number {\n const date = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n const dayNum = (date.getUTCDay() + 6) % 7;\n date.setUTCDate(date.getUTCDate() - dayNum + 3);\n const firstThursday = new Date(Date.UTC(date.getUTCFullYear(), 0, 4));\n const diff = date.getTime() - firstThursday.getTime();\n return 1 + Math.round(diff / (7 * 24 * 3600 * 1000));\n}\n","import { daysBetween, isSameDay, startOfDay } from \"./date-utils\";\n\n/** A `{ start, end }` selection. Either side may be `null` while picking. */\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport const emptyRange: DateRange = { start: null, end: null };\n\n/** A range with both ends chosen. */\nexport interface CompleteRange {\n start: Date;\n end: Date;\n}\n\n/** Order the two ends so `start <= end`. */\nexport function normalizeRange(r: DateRange): DateRange {\n if (r.start && r.end && startOfDay(r.start) > startOfDay(r.end)) {\n return { start: r.end, end: r.start };\n }\n return r;\n}\n\nexport function isRangeComplete(r: DateRange | null | undefined): r is CompleteRange {\n return !!r && !!r.start && !!r.end;\n}\n\n/** `d` sits strictly between the two ends (exclusive of the ends themselves). */\nexport function isWithinRange(d: Date, r: DateRange | null | undefined): boolean {\n if (!isRangeComplete(r)) return false;\n const t = startOfDay(d).getTime();\n return t > startOfDay(r.start).getTime() && t < startOfDay(r.end).getTime();\n}\n\nexport const isRangeStart = (d: Date, r: DateRange | null | undefined) =>\n !!r && isSameDay(d, r.start);\nexport const isRangeEnd = (d: Date, r: DateRange | null | undefined) => !!r && isSameDay(d, r.end);\n\n/** During a range pick (start chosen, hovering for the end): the tentative span. */\nexport function previewRange(anchor: Date | null, hover: Date | null): DateRange | null {\n if (!anchor || !hover) return null;\n return normalizeRange({ start: anchor, end: hover });\n}\n\n/** Inclusive day count of a complete range (a single day = 1). */\nexport function rangeLengthDays(r: DateRange): number {\n if (!isRangeComplete(r)) return 0;\n return Math.abs(daysBetween(r.start, r.end)) + 1;\n}\n\n/**\n * Next range state after clicking `d`. First click sets `start` (clears `end`);\n * second click sets `end` and normalizes; a click while both are set restarts.\n */\nexport function nextRange(current: DateRange, d: Date): DateRange {\n if (!current.start || (current.start && current.end)) return { start: startOfDay(d), end: null };\n return normalizeRange({ start: current.start, end: startOfDay(d) });\n}\n","import { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../../internal/icons\";\nimport { type DateRange, isRangeEnd, isRangeStart, isWithinRange } from \"./calendar-range\";\nimport {\n addDays,\n addMonths,\n clampDate,\n decadeGrid,\n isSameDay,\n isoWeek,\n monthMatrix,\n startOfDay,\n weekdayLabels,\n} from \"./date-utils\";\n\nexport type CalendarView = \"day\" | \"month\" | \"year\";\nexport type CalendarPrecision = \"day\" | \"month\" | \"year\";\nexport type CalendarMode = \"single\" | \"multiple\" | \"range\";\n\nexport interface CalendarProps {\n value: Date | null;\n onSelect: (d: Date) => void;\n /** Selection model. Affects only how day cells are decorated. Default `\"single\"`. */\n mode?: CalendarMode;\n /** Highlighted days in `multiple` mode. */\n selectedDates?: Date[];\n /** Committed range in `range` mode. */\n range?: DateRange | null;\n /** Tentative range shown while hovering for the second end. */\n previewRange?: DateRange | null;\n onHoverDate?: (d: Date | null) => void;\n minDate?: Date;\n maxDate?: Date;\n isDisabled?: (d: Date) => boolean;\n firstDayOfWeek?: number;\n locale?: string;\n showWeekNumbers?: boolean;\n showToday?: boolean;\n showClear?: boolean;\n onClear?: () => void;\n /** Focus the grid on mount. */\n autoFocus?: boolean;\n /** Controlled inner view (`day` grid / `month` grid / `year` grid). */\n view?: CalendarView;\n /** Uncontrolled starting view. Defaults to `precision` (or `\"day\"`). */\n defaultView?: CalendarView;\n onViewChange?: (view: CalendarView) => void;\n /**\n * How far the picker drills. `\"month\"` selects a whole month (day 1) and never\n * shows the day grid; `\"year\"` selects Jan 1. Defaults to `\"day\"`.\n */\n precision?: CalendarPrecision;\n /** Always render six week rows (matches the classic layout). Default true. */\n fixedWeeks?: boolean;\n /** Month to show first when there's no value yet. */\n defaultMonth?: Date;\n /** Side-by-side month panels in the day view. Default 1. */\n numberOfMonths?: number;\n}\n\nexport function Calendar({\n value,\n onSelect,\n mode = \"single\",\n selectedDates,\n range,\n previewRange,\n onHoverDate,\n minDate,\n maxDate,\n isDisabled,\n firstDayOfWeek = 0,\n locale,\n showWeekNumbers,\n showToday,\n showClear,\n onClear,\n autoFocus,\n view: viewProp,\n defaultView,\n onViewChange,\n precision = \"day\",\n fixedWeeks = true,\n defaultMonth,\n numberOfMonths = 1,\n}: CalendarProps) {\n const panels = Math.max(1, Math.floor(numberOfMonths));\n const today = startOfDay(new Date());\n const anchor =\n value ??\n (mode === \"range\" ? (range?.start ?? range?.end ?? null) : null) ??\n (mode === \"multiple\" ? (selectedDates?.[0] ?? null) : null) ??\n defaultMonth ??\n null;\n const initial = anchor ?? clampDate(today, minDate, maxDate);\n const [nav, setNav] = useState({ y: initial.getFullYear(), m: initial.getMonth() });\n const [focused, setFocused] = useState<Date>(initial);\n\n const [innerView, setInnerView] = useState<CalendarView>(\n defaultView ?? (precision === \"day\" ? \"day\" : precision),\n );\n const view = viewProp ?? innerView;\n const setView = (v: CalendarView) => {\n if (viewProp === undefined) setInnerView(v);\n onViewChange?.(v);\n };\n\n const gridRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (value) {\n setNav({ y: value.getFullYear(), m: value.getMonth() });\n setFocused(value);\n }\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) {\n gridRef.current?.querySelector<HTMLButtonElement>('[data-focused=\"true\"]')?.focus();\n }\n }, [autoFocus]);\n\n const outOfRange = (d: Date) =>\n (minDate != null && d < startOfDay(minDate)) ||\n (maxDate != null && d > startOfDay(maxDate)) ||\n Boolean(isDisabled?.(d));\n\n const monthOutOfRange = (y: number, m: number) => {\n const first = new Date(y, m, 1);\n const last = new Date(y, m + 1, 0);\n return (\n (maxDate != null && first > startOfDay(maxDate)) ||\n (minDate != null && last < startOfDay(minDate))\n );\n };\n const yearOutOfRange = (y: number) =>\n (maxDate != null && new Date(y, 0, 1) > startOfDay(maxDate)) ||\n (minDate != null && new Date(y, 11, 31) < startOfDay(minDate));\n\n const focusGrid = () => {\n requestAnimationFrame(() => {\n gridRef.current?.querySelector<HTMLButtonElement>('[data-focused=\"true\"]')?.focus();\n });\n };\n /** The month index (y*12+m) span currently on screen in the day view. */\n const navIndex = nav.y * 12 + nav.m;\n const goto = (d: Date) => {\n const c = clampDate(d, minDate, maxDate);\n setFocused(c);\n const ci = c.getFullYear() * 12 + c.getMonth();\n if (ci < navIndex || ci > navIndex + panels - 1) {\n setNav({ y: c.getFullYear(), m: c.getMonth() });\n }\n focusGrid();\n };\n\n // --- header ------------------------------------------------------------\n const canDrillUp = view !== \"year\";\n const dayTitle = () => {\n const first = new Date(nav.y, nav.m, 1);\n if (panels <= 1) {\n return new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(first);\n }\n const last = new Date(nav.y, nav.m + panels - 1, 1);\n const f = new Intl.DateTimeFormat(locale, { month: \"short\" }).format(first);\n const l = new Intl.DateTimeFormat(locale, { month: \"short\", year: \"numeric\" }).format(last);\n return first.getFullYear() === last.getFullYear()\n ? `${f} – ${l}`\n : `${f} ${first.getFullYear()} – ${l}`;\n };\n const titleText =\n view === \"day\"\n ? dayTitle()\n : view === \"month\"\n ? String(nav.y)\n : (() => {\n const g = decadeGrid(nav.y);\n return `${g.start} – ${g.start + 9}`;\n })();\n\n const step = (dir: 1 | -1) => {\n if (view === \"day\") setNav((v) => ({ ...addMonthNav(v, dir) }));\n else if (view === \"month\") setNav((v) => ({ ...v, y: v.y + dir }));\n else setNav((v) => ({ ...v, y: v.y + dir * 10 }));\n };\n\n const header = (\n <div className=\"orynn-calendar__header\">\n <button\n type=\"button\"\n className=\"orynn-calendar__nav\"\n aria-label={\n view === \"day\" ? \"Previous month\" : view === \"month\" ? \"Previous year\" : \"Previous decade\"\n }\n onClick={() => step(-1)}\n >\n <ChevronLeftIcon />\n </button>\n <button\n type=\"button\"\n className=\"orynn-calendar__title\"\n aria-live=\"polite\"\n disabled={!canDrillUp}\n onClick={() => {\n if (!canDrillUp) return;\n setView(view === \"day\" ? \"month\" : \"year\");\n }}\n >\n {titleText}\n </button>\n <button\n type=\"button\"\n className=\"orynn-calendar__nav\"\n aria-label={view === \"day\" ? \"Next month\" : view === \"month\" ? \"Next year\" : \"Next decade\"}\n onClick={() => step(1)}\n >\n <ChevronRightIcon />\n </button>\n </div>\n );\n\n // --- day grid --------------------------------------------------------\n const dayGrid = (monthOffset = 0) => {\n const panelMonth = new Date(nav.y, nav.m + monthOffset, 1);\n const py = panelMonth.getFullYear();\n const pm = panelMonth.getMonth();\n const cells = monthMatrix(py, pm, firstDayOfWeek, fixedWeeks);\n const weeks = cells.length / 7;\n const weekdays = weekdayLabels(firstDayOfWeek, locale);\n const monthName = new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(\n panelMonth,\n );\n\n const onKeyDown = (e: KeyboardEvent) => {\n const k = e.key;\n let next: Date | null = null;\n if (k === \"ArrowLeft\") next = addDays(focused, -1);\n else if (k === \"ArrowRight\") next = addDays(focused, 1);\n else if (k === \"ArrowUp\") next = addDays(focused, -7);\n else if (k === \"ArrowDown\") next = addDays(focused, 7);\n else if (k === \"Home\")\n next = addDays(focused, -((focused.getDay() - firstDayOfWeek + 7) % 7));\n else if (k === \"End\")\n next = addDays(focused, 6 - ((focused.getDay() - firstDayOfWeek + 7) % 7));\n else if (k === \"PageUp\") next = addMonths(focused, e.shiftKey ? -12 : -1);\n else if (k === \"PageDown\") next = addMonths(focused, e.shiftKey ? 12 : 1);\n else if (k === \"Enter\" || k === \" \") {\n e.preventDefault();\n if (!outOfRange(focused)) onSelect(focused);\n return;\n } else return;\n e.preventDefault();\n goto(next);\n };\n\n return (\n <table\n key={`${py}-${pm}`}\n className=\"orynn-calendar__grid\"\n role=\"grid\"\n aria-label={monthName}\n onKeyDown={onKeyDown}\n >\n <thead>\n <tr>\n {showWeekNumbers && <th aria-hidden=\"true\" />}\n {weekdays.map((w) => (\n <th key={w} scope=\"col\">\n {w}\n </th>\n ))}\n </tr>\n </thead>\n <tbody onMouseLeave={onHoverDate ? () => onHoverDate(null) : undefined}>\n {Array.from({ length: weeks }, (_, week) => {\n const row = cells.slice(week * 7, week * 7 + 7);\n const firstOfRow = row[0] as Date;\n return (\n <tr key={firstOfRow.toISOString()}>\n {showWeekNumbers && (\n <td className=\"orynn-calendar__weeknum\">{isoWeek(firstOfRow)}</td>\n )}\n {row.map((d) => {\n const inMonth = d.getMonth() === pm;\n const disabled = outOfRange(d);\n const isFocused = isSameDay(d, focused);\n\n let selected: boolean;\n let rangeStart = false;\n let rangeEnd = false;\n let inRange = false;\n if (mode === \"multiple\") {\n selected = (selectedDates ?? []).some((x) => isSameDay(x, d));\n } else if (mode === \"range\") {\n rangeStart =\n isRangeStart(d, range) || (!!previewRange && isRangeStart(d, previewRange));\n rangeEnd =\n isRangeEnd(d, range) || (!!previewRange && isRangeEnd(d, previewRange));\n inRange =\n isWithinRange(d, range) || (!!previewRange && isWithinRange(d, previewRange));\n selected = rangeStart || rangeEnd;\n } else {\n selected = isSameDay(d, value);\n }\n\n return (\n <td key={d.toISOString()} role=\"gridcell\" aria-selected={selected}>\n <button\n type=\"button\"\n className=\"orynn-calendar__day\"\n tabIndex={isFocused ? 0 : -1}\n data-focused={isFocused || undefined}\n data-outside={!inMonth || undefined}\n data-today={isSameDay(d, today) || undefined}\n data-selected={selected || undefined}\n data-range-start={rangeStart || undefined}\n data-range-end={rangeEnd || undefined}\n data-in-range={inRange || undefined}\n disabled={disabled}\n aria-label={new Intl.DateTimeFormat(locale, { dateStyle: \"full\" }).format(\n d,\n )}\n onMouseEnter={onHoverDate ? () => onHoverDate(d) : undefined}\n onFocus={onHoverDate ? () => onHoverDate(d) : undefined}\n onClick={() => {\n setFocused(d);\n onSelect(d);\n }}\n >\n {d.getDate()}\n </button>\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n };\n\n // --- month grid -----------------------------------------------------\n const monthGrid = () => {\n const names = Array.from({ length: 12 }, (_, i) =>\n new Intl.DateTimeFormat(locale, { month: \"short\" }).format(new Date(2021, i, 1)),\n );\n const onKeyDown = (e: KeyboardEvent) => {\n let m = nav.m;\n if (e.key === \"ArrowLeft\") m -= 1;\n else if (e.key === \"ArrowRight\") m += 1;\n else if (e.key === \"ArrowUp\") m -= 3;\n else if (e.key === \"ArrowDown\") m += 3;\n else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n pickMonth(nav.m);\n return;\n } else return;\n e.preventDefault();\n const d = addMonths(new Date(nav.y, nav.m, 1), m - nav.m);\n setNav({ y: d.getFullYear(), m: d.getMonth() });\n focusGrid();\n };\n return (\n <div\n className=\"orynn-calendar__pickgrid\"\n role=\"grid\"\n aria-label={`Months of ${nav.y}`}\n onKeyDown={onKeyDown}\n >\n {[0, 3, 6, 9].map((rowStart) => (\n <div key={rowStart} role=\"row\" className=\"orynn-calendar__pickrow\">\n {names.slice(rowStart, rowStart + 3).map((name, j) => {\n const i = rowStart + j;\n const isFocused = i === nav.m;\n const selected =\n value != null && value.getFullYear() === nav.y && value.getMonth() === i;\n return (\n <button\n key={name}\n type=\"button\"\n className=\"orynn-calendar__cell\"\n tabIndex={isFocused ? 0 : -1}\n data-focused={isFocused || undefined}\n data-selected={selected || undefined}\n disabled={monthOutOfRange(nav.y, i)}\n onClick={() => pickMonth(i)}\n >\n {name}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n );\n };\n\n const pickMonth = (m: number) => {\n if (monthOutOfRange(nav.y, m)) return;\n setNav((v) => ({ ...v, m }));\n if (precision === \"month\") {\n onSelect(new Date(nav.y, m, 1));\n } else {\n setView(\"day\");\n setFocused(clampDate(new Date(nav.y, m, 1), minDate, maxDate));\n focusGrid();\n }\n };\n\n // --- year grid -----------------------------------------------------\n const yearGrid = () => {\n const g = decadeGrid(nav.y);\n const onKeyDown = (e: KeyboardEvent) => {\n let y = nav.y;\n if (e.key === \"ArrowLeft\") y -= 1;\n else if (e.key === \"ArrowRight\") y += 1;\n else if (e.key === \"ArrowUp\") y -= 3;\n else if (e.key === \"ArrowDown\") y += 3;\n else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n pickYear(nav.y);\n return;\n } else return;\n e.preventDefault();\n setNav((v) => ({ ...v, y }));\n focusGrid();\n };\n return (\n <div\n className=\"orynn-calendar__pickgrid\"\n role=\"grid\"\n aria-label={`Years ${g.start}–${g.start + 9}`}\n onKeyDown={onKeyDown}\n >\n {[0, 3, 6, 9].map((rowStart) => (\n <div key={rowStart} role=\"row\" className=\"orynn-calendar__pickrow\">\n {g.years.slice(rowStart, rowStart + 3).map((y) => {\n const isFocused = y === nav.y;\n const selected = value != null && value.getFullYear() === y;\n return (\n <button\n key={y}\n type=\"button\"\n className=\"orynn-calendar__cell\"\n tabIndex={isFocused ? 0 : -1}\n data-focused={isFocused || undefined}\n data-outside={y < g.start || y > g.start + 9 || undefined}\n data-selected={selected || undefined}\n disabled={yearOutOfRange(y)}\n onClick={() => pickYear(y)}\n >\n {y}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n );\n };\n\n const pickYear = (y: number) => {\n if (yearOutOfRange(y)) return;\n setNav((v) => ({ ...v, y }));\n if (precision === \"year\") {\n onSelect(new Date(y, 0, 1));\n } else {\n setView(\"month\");\n focusGrid();\n }\n };\n\n const dayView =\n panels <= 1 ? (\n dayGrid()\n ) : (\n <div className=\"orynn-calendar__panels\">\n {Array.from({ length: panels }, (_, i) => dayGrid(i))}\n </div>\n );\n\n return (\n <div\n className=\"orynn-calendar\"\n ref={gridRef}\n data-view={view}\n data-months={panels > 1 ? panels : undefined}\n >\n {header} {view === \"day\" ? dayView : view === \"month\" ? monthGrid() : yearGrid()}\n {(showToday || showClear) && (\n <div className=\"orynn-calendar__footer\">\n {showToday ? (\n <button\n type=\"button\"\n className=\"orynn-calendar__action\"\n disabled={outOfRange(today)}\n onClick={() => onSelect(today)}\n >\n Today\n </button>\n ) : (\n <span />\n )}\n {showClear && (\n <button type=\"button\" className=\"orynn-calendar__action\" onClick={onClear}>\n Clear\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n\n/** Advance the {y,m} nav cursor by whole months, wrapping the year. */\nfunction addMonthNav(v: { y: number; m: number }, dir: number) {\n const total = v.y * 12 + v.m + dir;\n return { y: Math.floor(total / 12), m: ((total % 12) + 12) % 12 };\n}\n","/** Time helpers for `<DatePicker showTime />`. Pure, dependency-free. */\n\nexport interface TimeParts {\n h: number;\n m: number;\n s: number;\n}\n\nexport const timeParts = (d: Date): TimeParts => ({\n h: d.getHours(),\n m: d.getMinutes(),\n s: d.getSeconds(),\n});\n\n/** Copy `time`'s clock onto `date`'s calendar day. */\nexport function withTime(date: Date, time: TimeParts): Date {\n const r = new Date(date);\n r.setHours(time.h, time.m, time.s, 0);\n return r;\n}\n\n/** Round a minutes value to the nearest `step` (minutes), wrapping at 60. */\nexport function roundMinutesToStep(minutes: number, step: number): number {\n if (step <= 1) return minutes;\n const r = Math.round(minutes / step) * step;\n return r >= 60 ? 60 - step : r;\n}\n\n/** The selectable minute marks for a step, e.g. step 15 -> [0, 15, 30, 45]. */\nexport function minuteOptions(step: number): number[] {\n const s = Math.max(1, Math.min(30, Math.floor(step)));\n const out: number[] = [];\n for (let m = 0; m < 60; m += s) out.push(m);\n return out;\n}\n\nexport const hourOptions = (hour12: boolean): number[] =>\n hour12 ? Array.from({ length: 12 }, (_, i) => i + 1) : Array.from({ length: 24 }, (_, i) => i);\n\nexport const pad2 = (n: number) => String(n).padStart(2, \"0\");\n","import { type KeyboardEvent, forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { Popover } from \"../../internal/Popover\";\nimport { CalendarIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\nimport { Calendar, type CalendarMode, type CalendarPrecision, type CalendarView } from \"./Calendar\";\nimport {\n type DateRange,\n previewRange as computePreviewRange,\n isRangeComplete,\n nextRange,\n} from \"./calendar-range\";\nimport { formatDate, isSameDay, parseDate, startOfDay, toDate } from \"./date-utils\";\nimport { minuteOptions, pad2, timeParts, withTime } from \"./time-utils\";\n\n/** `{ start, end }` selection returned by `onChange` in `mode=\"range\"`. */\nexport type DatePickerRange = DateRange;\n\ntype LooseDate = Date | string | null;\ntype LooseRange = { start?: LooseDate; end?: LooseDate } | null;\n\n/** Union of every `onChange` payload shape (single / range / multiple). */\nexport type DatePickerChange = Date | null | DatePickerRange | Date[];\n\n/** A one-click shortcut in the picker's side rail (Today, Last 7 days, …). */\nexport interface DatePickerPreset {\n label: string;\n /** Static value, in the same shape as the picker's `mode`. */\n value?: Date | DatePickerRange | Date[];\n /** Computed on click — wins over `value`. */\n getValue?: () => Date | DatePickerRange | Date[];\n}\n\n/** Props shared by every `mode`. */\nexport interface DatePickerCommonProps\n extends Omit<BaseControlProps, \"startContent\" | \"endContent\" | \"loading\"> {\n /**\n * Display / parse pattern (`yyyy MM dd M d MMM MMMM HH mm a`) or an\n * `Intl.DateTimeFormatOptions` object. Default `\"yyyy-MM-dd\"`.\n */\n format?: string | Intl.DateTimeFormatOptions;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[] | ((date: Date) => boolean);\n /** Predicate form of `disabledDates` (react-aria naming). */\n isDateUnavailable?: (date: Date) => boolean;\n firstDayOfWeek?: number;\n locale?: string;\n showWeekNumbers?: boolean;\n showToday?: boolean;\n showClear?: boolean;\n /** Starting inner view of the calendar. Defaults to `precision`. */\n defaultView?: CalendarView;\n /**\n * How far the picker drills: `\"day\"` (default), `\"month\"` (select a whole\n * month), or `\"year\"`.\n */\n precision?: CalendarPrecision;\n /** Always render six week rows. Default true. */\n fixedWeeks?: boolean;\n /** Side-by-side month panels. Default 1. */\n numberOfMonths?: number;\n /** Show an hour / minute picker beside the calendar (`single` mode). */\n showTime?: boolean;\n /** Minute granularity for the time picker. Default 5. */\n timeStep?: number;\n /** Month to show first when there's no value yet. */\n defaultMonth?: Date;\n /** One-click shortcuts rendered in a side rail. */\n presets?: DatePickerPreset[];\n /** Render the calendar always, without a text field. */\n inline?: boolean;\n /** Allow typing a date into the field (`single` mode only). Default true. */\n allowInput?: boolean;\n closeOnSelect?: boolean;\n /** Controlled open state of the popover. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n}\n\nexport interface DatePickerSingleProps extends DatePickerCommonProps {\n mode?: \"single\";\n value?: Date | string | null;\n defaultValue?: Date | string | null;\n onChange?: (value: Date | null) => void;\n}\n\nexport interface DatePickerRangeProps extends DatePickerCommonProps {\n mode: \"range\";\n value?: LooseRange;\n defaultValue?: LooseRange;\n onChange?: (value: DatePickerRange) => void;\n}\n\nexport interface DatePickerMultipleProps extends DatePickerCommonProps {\n mode: \"multiple\";\n value?: Array<Date | string> | null;\n defaultValue?: Array<Date | string> | null;\n onChange?: (value: Date[]) => void;\n}\n\nexport type DatePickerProps =\n | DatePickerSingleProps\n | DatePickerRangeProps\n | DatePickerMultipleProps;\n\ntype AnyDatePickerProps = DatePickerCommonProps & {\n mode?: CalendarMode;\n value?: LooseDate | LooseRange | Array<Date | string>;\n defaultValue?: LooseDate | LooseRange | Array<Date | string>;\n onChange?: (value: DatePickerChange) => void;\n};\n\nconst normDates = (v: unknown): Date[] =>\n Array.isArray(v) ? (v.map((x) => toDate(x as LooseDate)).filter(Boolean) as Date[]) : [];\n\nconst normRange = (v: unknown): DateRange => {\n const r = (v ?? {}) as { start?: LooseDate; end?: LooseDate };\n return { start: toDate(r.start ?? null), end: toDate(r.end ?? null) };\n};\n\nexport const DatePicker = /* @__PURE__ */ forwardRef<HTMLInputElement, DatePickerProps>(\n function DatePicker(propsIn, ref) {\n const props = propsIn as AnyDatePickerProps;\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n clearable,\n onClear,\n id: idProp,\n name,\n className,\n mode = \"single\",\n value: valueProp,\n defaultValue,\n onChange,\n format = \"yyyy-MM-dd\",\n minDate,\n maxDate,\n disabledDates,\n isDateUnavailable,\n firstDayOfWeek = 0,\n locale,\n showWeekNumbers,\n showToday = true,\n showClear,\n defaultView,\n precision = \"day\",\n fixedWeeks = true,\n numberOfMonths,\n showTime = false,\n timeStep = 5,\n defaultMonth,\n presets,\n inline = false,\n allowInput = true,\n closeOnSelect: closeOnSelectProp,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placeholder,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const panelId = `${id}-cal`;\n\n const withTimePicker = showTime && mode === \"single\";\n const closeOnSelect = closeOnSelectProp ?? !withTimePicker;\n // When time is on and the caller kept the bare date default, widen it.\n const fmt: string | Intl.DateTimeFormatOptions =\n withTimePicker && format === \"yyyy-MM-dd\" ? \"yyyy-MM-dd HH:mm\" : format;\n\n // --- value (per-mode) ------------------------------------------------\n const isControlled = valueProp !== undefined;\n const [innerRaw, setInnerRaw] = useState<unknown>(() => defaultValue ?? null);\n const raw = isControlled ? valueProp : innerRaw;\n\n const toDateKeepTime = (v: LooseDate): Date | null => {\n if (v == null) return null;\n const d = new Date(v);\n return Number.isNaN(d.getTime()) ? null : d;\n };\n const curDate =\n mode === \"single\"\n ? withTimePicker\n ? toDateKeepTime(raw as LooseDate)\n : toDate(raw as LooseDate)\n : null;\n const curRange = mode === \"range\" ? normRange(raw) : { start: null, end: null };\n const curDates = mode === \"multiple\" ? normDates(raw) : [];\n\n const commit = (next: DatePickerChange) => {\n if (!isControlled) {\n setInnerRaw(next);\n }\n onChange?.(next);\n };\n\n // --- open state ----------------------------------------------------\n const openIsControlled = openProp !== undefined;\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const open = openIsControlled ? openProp : innerOpen;\n const setOpen = (next: boolean) => {\n if (!openIsControlled) setInnerOpen(next);\n onOpenChange?.(next);\n };\n\n const [gridFocus, setGridFocus] = useState(false);\n const [hoverDate, setHoverDate] = useState<Date | null>(null);\n\n const displayText = (): string => {\n if (mode === \"single\") return curDate ? formatDate(curDate, fmt, locale) : \"\";\n if (mode === \"multiple\") {\n if (curDates.length === 0) return \"\";\n if (curDates.length === 1) return formatDate(curDates[0] as Date, fmt, locale);\n return `${curDates.length} selected`;\n }\n if (!curRange.start && !curRange.end) return \"\";\n const s = curRange.start ? formatDate(curRange.start, fmt, locale) : \"…\";\n const e = curRange.end ? formatDate(curRange.end, fmt, locale) : \"…\";\n return `${s} – ${e}`;\n };\n\n const [text, setText] = useState(displayText);\n const boxRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n // Set right before we programmatically refocus the input after a pick, so the\n // input's onFocus doesn't immediately reopen the calendar we just closed.\n const skipFocusOpen = useRef(false);\n\n const valueKey = [\n mode,\n typeof fmt === \"string\" ? fmt : JSON.stringify(fmt),\n locale ?? \"\",\n curDate?.getTime() ?? \"\",\n curRange.start?.getTime() ?? \"\",\n curRange.end?.getTime() ?? \"\",\n curDates.map((d) => d.getTime()).join(\",\"),\n ].join(\"|\");\n // biome-ignore lint/correctness/useExhaustiveDependencies: valueKey folds every input of displayText()\n useEffect(() => {\n setText(displayText());\n }, [valueKey]);\n\n const isDisabledDate = (d: Date) => {\n if (isDateUnavailable?.(d)) return true;\n if (Array.isArray(disabledDates))\n return disabledDates.some((x) => isSameDay(startOfDay(x), d));\n return Boolean(disabledDates?.(d));\n };\n\n const closeAndRefocus = () => {\n setOpen(false);\n setGridFocus(false);\n skipFocusOpen.current = true;\n inputRef.current?.focus();\n };\n\n const select = (d: Date) => {\n if (isDisabledDate(d)) return;\n const day = startOfDay(d);\n if (mode === \"single\") {\n const picked = withTimePicker\n ? withTime(day, curDate ? timeParts(curDate) : { h: 0, m: 0, s: 0 })\n : day;\n commit(picked);\n if (closeOnSelect) closeAndRefocus();\n return;\n }\n if (mode === \"multiple\") {\n const has = curDates.some((x) => isSameDay(x, day));\n commit(has ? curDates.filter((x) => !isSameDay(x, day)) : [...curDates, day]);\n return;\n }\n // range\n const next = nextRange(curRange, day);\n commit(next);\n if (isRangeComplete(next) && closeOnSelect) closeAndRefocus();\n };\n\n const clearValue = () => {\n if (mode === \"single\") commit(null);\n else if (mode === \"multiple\") commit([]);\n else commit({ start: null, end: null });\n onClear?.();\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) return;\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setOpen(true);\n setGridFocus(true);\n } else if (e.key === \"Escape\" && open) {\n e.preventDefault();\n setOpen(false);\n } else if (e.key === \"Enter\" && mode === \"single\") {\n const parsed = parseDate(text, fmt, locale);\n if (parsed && !isDisabledDate(startOfDay(parsed))) select(parsed);\n }\n };\n\n const preview =\n mode === \"range\" && curRange.start && !curRange.end\n ? computePreviewRange(curRange.start, hoverDate)\n : null;\n\n const applyPreset = (p: DatePickerPreset) => {\n const resolved = p.getValue ? p.getValue() : p.value;\n if (resolved == null) return;\n commit(resolved as DatePickerChange);\n if (closeOnSelect && !inline) closeAndRefocus();\n };\n\n const setTimeField = (part: \"h\" | \"m\", n: number) => {\n const base = curDate ?? startOfDay(new Date());\n const t = timeParts(base);\n commit(withTime(base, { ...t, [part]: n, s: 0 }));\n };\n\n const timeColumn = withTimePicker ? (\n <div className=\"orynn-datepicker__time\">\n <span className=\"orynn-datepicker__time-label\">Time</span>\n <div className=\"orynn-datepicker__time-fields\">\n <select\n aria-label=\"Hour\"\n className=\"orynn-datepicker__time-select\"\n value={curDate ? curDate.getHours() : 0}\n onChange={(e) => setTimeField(\"h\", Number(e.target.value))}\n >\n {Array.from({ length: 24 }, (_, h) => (\n <option key={h} value={h}>\n {pad2(h)}\n </option>\n ))}\n </select>\n <span aria-hidden=\"true\">:</span>\n <select\n aria-label=\"Minute\"\n className=\"orynn-datepicker__time-select\"\n value={curDate ? curDate.getMinutes() - (curDate.getMinutes() % timeStep) : 0}\n onChange={(e) => setTimeField(\"m\", Number(e.target.value))}\n >\n {minuteOptions(timeStep).map((m) => (\n <option key={m} value={m}>\n {pad2(m)}\n </option>\n ))}\n </select>\n </div>\n </div>\n ) : null;\n\n const calendar = (\n <Calendar\n value={curDate}\n onSelect={select}\n mode={mode}\n selectedDates={mode === \"multiple\" ? curDates : undefined}\n range={mode === \"range\" ? curRange : undefined}\n previewRange={preview}\n onHoverDate={mode === \"range\" ? setHoverDate : undefined}\n minDate={minDate}\n maxDate={maxDate}\n isDisabled={isDisabledDate}\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n showWeekNumbers={showWeekNumbers}\n showToday={showToday && mode === \"single\"}\n showClear={showClear}\n defaultView={defaultView}\n precision={precision}\n fixedWeeks={fixedWeeks}\n numberOfMonths={numberOfMonths}\n defaultMonth={defaultMonth}\n onClear={() => {\n clearValue();\n setOpen(false);\n }}\n autoFocus={(open && gridFocus) || inline}\n />\n );\n\n const body = timeColumn ? (\n <div className=\"orynn-datepicker__withtime\">\n {calendar}\n {timeColumn}\n </div>\n ) : (\n calendar\n );\n\n const cal =\n presets && presets.length > 0 ? (\n <div className=\"orynn-datepicker__panel\">\n <div className=\"orynn-datepicker__presets\">\n {presets.map((p) => (\n <button\n key={p.label}\n type=\"button\"\n className=\"orynn-datepicker__preset\"\n onClick={() => applyPreset(p)}\n >\n {p.label}\n </button>\n ))}\n </div>\n {body}\n </div>\n ) : (\n body\n );\n\n if (inline) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {() => (\n <div className=\"orynn-popover\" style={{ position: \"static\" }}>\n {cal}\n </div>\n )}\n </Field>\n );\n }\n\n const hasValue =\n mode === \"single\"\n ? curDate != null\n : mode === \"multiple\"\n ? curDates.length > 0\n : Boolean(curRange.start || curRange.end);\n const typingAllowed = mode === \"single\" && allowInput && !readOnly;\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <>\n <FieldBox\n ref={boxRef}\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n open={open}\n active={hasValue || text.length > 0}\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n right={\n <>\n {clearable && hasValue && !disabled && !readOnly && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={clearValue}\n >\n <XIcon />\n </button>\n )}\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Open calendar\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={disabled}\n onClick={() => {\n if (disabled || readOnly) return;\n setGridFocus(true);\n setOpen(!open);\n }}\n >\n <CalendarIcon />\n </button>\n </>\n }\n >\n <input\n ref={(n) => {\n inputRef.current = n;\n if (typeof ref === \"function\") ref(n);\n else if (ref)\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = n;\n }}\n id={id}\n name={name}\n className=\"orynn-box__field\"\n type=\"text\"\n inputMode={typingAllowed ? \"numeric\" : undefined}\n autoComplete=\"off\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={panelId}\n aria-haspopup=\"dialog\"\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n value={text}\n disabled={disabled}\n readOnly={!typingAllowed}\n required={required}\n placeholder={\n floatingLabel\n ? undefined\n : (placeholder ?? (typeof fmt === \"string\" ? fmt.toLowerCase() : undefined))\n }\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKeyDown}\n onFocus={() => {\n if (skipFocusOpen.current) {\n skipFocusOpen.current = false;\n return;\n }\n setOpen(true);\n }}\n onBlur={() => {\n if (mode !== \"single\") return;\n const parsed = parseDate(text, fmt, locale);\n if (parsed && !isDisabledDate(startOfDay(parsed))) {\n commit(startOfDay(parsed));\n setText(formatDate(startOfDay(parsed), fmt, locale));\n } else {\n setText(curDate ? formatDate(curDate, fmt, locale) : \"\");\n }\n }}\n />\n </FieldBox>\n\n <Popover\n open={open}\n anchorRef={boxRef}\n onClose={() => {\n setOpen(false);\n setGridFocus(false);\n }}\n matchWidth={false}\n id={panelId}\n role=\"dialog\"\n >\n {cal}\n </Popover>\n </>\n )}\n </Field>\n );\n },\n);\n","import {\n type KeyboardEvent,\n type ReactNode,\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { Popover } from \"../../internal/Popover\";\nimport { CheckIcon, ChevronDownIcon, SpinnerIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport type { DropdownOption } from \"../../types/config\";\nimport { Field } from \"../Field/Field\";\n\nexport type { DropdownOption };\n\n/** Options may also be passed pre-grouped. */\nexport interface DropdownOptionGroup {\n group: string;\n items: DropdownOption[];\n}\n\ninterface OptionState {\n selected: boolean;\n active: boolean;\n disabled: boolean;\n /** Query the option matched, for highlighting. */\n query: string;\n}\n\n/** Synthetic value for the \"create new option\" row. */\nconst CREATE_VALUE = \"\u0000orynn-create\";\n\nexport interface DropdownProps extends Omit<BaseControlProps, \"startContent\" | \"endContent\"> {\n options: DropdownOption[] | DropdownOptionGroup[];\n value?: string | string[] | null;\n defaultValue?: string | string[] | null;\n onChange?: (value: string | string[] | null) => void;\n multiple?: boolean;\n /** Type in the control to filter options. */\n searchable?: boolean;\n filterMode?: \"contains\" | \"startsWith\";\n filterFn?: (option: DropdownOption, query: string) => boolean;\n /** Bold the matched substring in option labels. Default true when searchable. */\n highlightMatch?: boolean;\n renderOption?: (option: DropdownOption, state: OptionState) => ReactNode;\n renderValue?: (selected: DropdownOption[]) => ReactNode;\n renderGroupLabel?: (label: string) => ReactNode;\n placeholder?: string;\n emptyMessage?: ReactNode;\n /** Shown in place of `emptyMessage` while `loading` and there are no options. */\n loadingMessage?: ReactNode;\n /** Close the panel after a pick. Default true for single, false for multiple. */\n closeOnSelect?: boolean;\n /** Cap the chips shown before \"+N\". */\n maxSelectedLabels?: number;\n /** Multiple: cap how many options can be selected. */\n maxValues?: number;\n /** Multiple: drop already-selected options from the list. */\n hidePickedOptions?: boolean;\n /** Multiple: show a \"Select all / Clear\" action row. */\n showSelectAll?: boolean;\n /** Fall back to a native `<select>` (single, no search). */\n native?: boolean;\n startContent?: ReactNode;\n /** Allow creating an option from the current query (needs `searchable`). */\n creatable?: boolean;\n onCreate?: (inputValue: string) => void;\n /** Gate the create row. Default: non-empty query with no exact label match. */\n isValidNewOption?: (inputValue: string, options: DropdownOption[]) => boolean;\n formatCreateLabel?: (inputValue: string) => ReactNode;\n createPosition?: \"first\" | \"last\";\n /** Fires (debounced) as the query changes; disables local filtering. */\n onSearch?: (query: string) => void;\n searchDebounce?: number;\n /** Controlled panel open state. */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Cap the listbox height, px. */\n maxHeight?: number;\n}\n\nconst toArray = (v: string | string[] | null | undefined): string[] =>\n v == null ? [] : Array.isArray(v) ? v : [v];\n\nconst isGrouped = (o: DropdownOption[] | DropdownOptionGroup[]): o is DropdownOptionGroup[] => {\n const first = o[0] as DropdownOptionGroup | DropdownOption | undefined;\n return first != null && \"items\" in first && Array.isArray((first as DropdownOptionGroup).items);\n};\n\nconst flattenOptions = (o: DropdownOption[] | DropdownOptionGroup[]): DropdownOption[] =>\n isGrouped(o)\n ? o.flatMap((g) => g.items.map((it) => ({ ...it, group: it.group ?? g.group })))\n : (o as DropdownOption[]);\n\nfunction Highlight({ text, query }: { text: string; query: string }) {\n if (!query) return <>{text}</>;\n const i = text.toLowerCase().indexOf(query.toLowerCase());\n if (i < 0) return <>{text}</>;\n return (\n <>\n {text.slice(0, i)}\n <mark>{text.slice(i, i + query.length)}</mark>\n {text.slice(i + query.length)}\n </>\n );\n}\n\nexport const Dropdown = /* @__PURE__ */ forwardRef<HTMLInputElement, DropdownProps>(\n function Dropdown(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n clearable,\n onClear,\n loading,\n id: idProp,\n name,\n className,\n options,\n value: valueProp,\n defaultValue,\n onChange,\n multiple = false,\n searchable = false,\n filterMode = \"contains\",\n filterFn,\n highlightMatch,\n renderOption,\n renderValue,\n renderGroupLabel,\n placeholder,\n emptyMessage = \"No results\",\n loadingMessage = \"Loading…\",\n closeOnSelect = !multiple,\n maxSelectedLabels,\n maxValues,\n hidePickedOptions = false,\n showSelectAll = false,\n native = false,\n startContent,\n creatable = false,\n onCreate,\n isValidNewOption,\n formatCreateLabel,\n createPosition = \"last\",\n onSearch,\n searchDebounce = 0,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n maxHeight,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const listId = `${id}-listbox`;\n\n const baseOptions = useMemo(() => flattenOptions(options), [options]);\n // Options invented via `creatable` that aren't (yet) in `options`.\n const [createdOptions, setCreatedOptions] = useState<DropdownOption[]>([]);\n const allOptions = useMemo(\n () => [...baseOptions, ...createdOptions],\n [baseOptions, createdOptions],\n );\n\n const [selectedValues, setSelectedValues] = useControllableState<string[]>({\n value: valueProp === undefined ? undefined : toArray(valueProp),\n defaultValue: toArray(defaultValue),\n onChange: undefined,\n });\n\n const commit = (next: string[]) => {\n setSelectedValues(next);\n onChange?.(multiple ? next : (next[0] ?? null));\n };\n\n const openIsControlled = openProp !== undefined;\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const open = openIsControlled ? openProp : innerOpen;\n const setOpen = (next: boolean) => {\n if (!openIsControlled) setInnerOpen(next);\n onOpenChange?.(next);\n };\n\n const [query, setQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n const boxRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const byValue = useMemo(() => new Map(allOptions.map((o) => [o.value, o])), [allOptions]);\n const selectedOptions = selectedValues\n .map((v) => byValue.get(v) ?? { label: v, value: v })\n .filter(Boolean) as DropdownOption[];\n\n // debounced async search — server owns the option list when `onSearch` is set\n useEffect(() => {\n if (!onSearch) return;\n const t = setTimeout(() => onSearch(query), searchDebounce);\n return () => clearTimeout(t);\n }, [query, onSearch, searchDebounce]);\n\n const filtered = useMemo(() => {\n let list = allOptions;\n if (searchable && query && !onSearch) {\n const q = query.toLowerCase();\n const match =\n filterFn ??\n ((o: DropdownOption) =>\n filterMode === \"startsWith\"\n ? o.label.toLowerCase().startsWith(q)\n : o.label.toLowerCase().includes(q));\n list = list.filter((o) => match(o, query));\n }\n if (multiple && hidePickedOptions) {\n list = list.filter((o) => !selectedValues.includes(o.value));\n }\n return list;\n }, [\n allOptions,\n searchable,\n query,\n onSearch,\n filterMode,\n filterFn,\n multiple,\n hidePickedOptions,\n selectedValues,\n ]);\n\n const showCreateRow =\n creatable &&\n searchable &&\n query.trim().length > 0 &&\n (isValidNewOption\n ? isValidNewOption(query.trim(), allOptions)\n : !allOptions.some((o) => o.label.toLowerCase() === query.trim().toLowerCase()));\n\n const createRow: DropdownOption = { value: CREATE_VALUE, label: query.trim() };\n const selectableOptions: DropdownOption[] = showCreateRow\n ? createPosition === \"first\"\n ? [createRow, ...filtered]\n : [...filtered, createRow]\n : filtered;\n\n // flatten with group headers for rendering + keep an index of selectable rows\n const rows = useMemo(() => {\n const out: Array<\n | { type: \"group\"; label: string }\n | { type: \"option\"; option: DropdownOption; optionIndex: number }\n > = [];\n let seenGroup: string | undefined;\n selectableOptions.forEach((o, optionIndex) => {\n if (o.value !== CREATE_VALUE && o.group && o.group !== seenGroup) {\n seenGroup = o.group;\n out.push({ type: \"group\", label: o.group });\n }\n out.push({ type: \"option\", option: o, optionIndex });\n });\n return out;\n }, [selectableOptions]);\n\n useEffect(() => {\n setActiveIndex((i) => Math.min(Math.max(0, i), Math.max(0, selectableOptions.length - 1)));\n }, [selectableOptions.length]);\n\n useEffect(() => {\n if (!open) setQuery(\"\");\n }, [open]);\n\n const firstRelevantIndex = () => {\n const sel = selectableOptions.findIndex((o) => selectedValues.includes(o.value));\n return sel >= 0 ? sel : 0;\n };\n\n useEffect(() => {\n if (!open) return;\n const el = listRef.current?.querySelector<HTMLElement>('[data-active=\"true\"]');\n el?.scrollIntoView?.({ block: \"nearest\" });\n }, [activeIndex, open]);\n\n const openPanel = () => {\n if (disabled || readOnly || open) return;\n setActiveIndex(firstRelevantIndex());\n setOpen(true);\n };\n\n const handleCreate = (raw: string) => {\n const input = raw.trim();\n if (!input) return;\n onCreate?.(input);\n setCreatedOptions((prev) =>\n prev.some((o) => o.value === input) || baseOptions.some((o) => o.value === input)\n ? prev\n : [...prev, { label: input, value: input }],\n );\n if (multiple) {\n if (maxValues != null && selectedValues.length >= maxValues) return;\n commit([...selectedValues, input]);\n } else {\n commit([input]);\n }\n setQuery(\"\");\n if (closeOnSelect) {\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n\n const pick = (opt: DropdownOption) => {\n if (opt.value === CREATE_VALUE) {\n handleCreate(opt.label);\n return;\n }\n if (opt.disabled) return;\n if (multiple) {\n const has = selectedValues.includes(opt.value);\n if (!has && maxValues != null && selectedValues.length >= maxValues) return;\n commit(\n has ? selectedValues.filter((v) => v !== opt.value) : [...selectedValues, opt.value],\n );\n setQuery(\"\");\n } else {\n commit([opt.value]);\n }\n if (closeOnSelect) {\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n\n const clearAll = () => {\n commit([]);\n onClear?.();\n setQuery(\"\");\n };\n\n // \"Select all\" acts on the currently-listed, non-disabled options\n const selectAllTargets = filtered.filter((o) => !o.disabled).map((o) => o.value);\n const allSelected =\n selectAllTargets.length > 0 && selectAllTargets.every((v) => selectedValues.includes(v));\n const toggleSelectAll = () => {\n if (allSelected) {\n commit(selectedValues.filter((v) => !selectAllTargets.includes(v)));\n } else {\n const merged = Array.from(new Set([...selectedValues, ...selectAllTargets]));\n commit(maxValues != null ? merged.slice(0, maxValues) : merged);\n }\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) return;\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n if (!open) {\n openPanel();\n setActiveIndex(firstRelevantIndex());\n } else {\n setActiveIndex((i) => Math.min(selectableOptions.length - 1, i + 1));\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!open) {\n openPanel();\n setActiveIndex(firstRelevantIndex());\n } else {\n setActiveIndex((i) => Math.max(0, i - 1));\n }\n break;\n case \"Home\":\n if (open) {\n e.preventDefault();\n setActiveIndex(0);\n }\n break;\n case \"End\":\n if (open) {\n e.preventDefault();\n setActiveIndex(selectableOptions.length - 1);\n }\n break;\n case \"Enter\":\n if (open && selectableOptions[activeIndex]) {\n e.preventDefault();\n pick(selectableOptions[activeIndex]);\n }\n break;\n case \"Escape\":\n if (open) {\n e.preventDefault();\n setOpen(false);\n }\n break;\n case \" \":\n if (!searchable) {\n e.preventDefault();\n if (!open) openPanel();\n else if (selectableOptions[activeIndex]) pick(selectableOptions[activeIndex]);\n }\n break;\n case \"Backspace\":\n if (multiple && query === \"\" && selectedValues.length > 0) {\n commit(selectedValues.slice(0, -1));\n }\n break;\n case \"Tab\":\n setOpen(false);\n break;\n }\n };\n\n const hasValue = selectedValues.length > 0;\n const doHighlight = highlightMatch ?? searchable;\n const isLoadingEmpty = Boolean(loading) && selectableOptions.length === 0;\n\n // -------- native fallback --------\n if (native && !multiple && !searchable) {\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {({ describedById, invalid }) => (\n <select\n id={id}\n name={name}\n className=\"orynn-dropdown\"\n value={selectedValues[0] ?? \"\"}\n disabled={disabled}\n required={required}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={(e) => commit(e.target.value ? [e.target.value] : [])}\n >\n {placeholder != null && (\n <option value=\"\" disabled={required}>\n {placeholder}\n </option>\n )}\n {baseOptions.map((o) => (\n <option key={o.value} value={o.value} disabled={o.disabled}>\n {o.label}\n </option>\n ))}\n </select>\n )}\n </Field>\n );\n }\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <>\n <FieldBox\n ref={boxRef}\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n open={open}\n active={hasValue}\n onClick={() => {\n inputRef.current?.focus();\n openPanel();\n }}\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n right={\n <>\n {loading && <SpinnerIcon />}\n {clearable && hasValue && !disabled && !readOnly && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n clearAll();\n }}\n >\n <XIcon />\n </button>\n )}\n {valid && !loading && <CheckIcon className=\"orynn-icon-success\" />}\n <ChevronDownIcon className=\"orynn-select__chevron\" />\n </>\n }\n >\n <div className=\"orynn-select__value\">\n {startContent}\n {multiple && selectedOptions.length > 0 && (\n <span className=\"orynn-select__chips\">\n {(maxSelectedLabels\n ? selectedOptions.slice(0, maxSelectedLabels)\n : selectedOptions\n ).map((o) => (\n <span key={o.value} className=\"orynn-select__chip\">\n <span>{o.label}</span>\n <button\n type=\"button\"\n aria-label={`Remove ${o.label}`}\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n commit(selectedValues.filter((v) => v !== o.value));\n }}\n >\n <XIcon />\n </button>\n </span>\n ))}\n {maxSelectedLabels && selectedOptions.length > maxSelectedLabels && (\n <span className=\"orynn-select__chip\">\n <span>+{selectedOptions.length - maxSelectedLabels}</span>\n </span>\n )}\n </span>\n )}\n {!multiple && hasValue && query === \"\" && (\n <span className=\"orynn-select__single\">\n {renderValue ? renderValue(selectedOptions) : selectedOptions[0]?.label}\n </span>\n )}\n {!hasValue && !searchable && query === \"\" && (\n <span className=\"orynn-select__value--placeholder orynn-select__single\">\n {floatingLabel ? \"\" : placeholder}\n </span>\n )}\n <input\n {...(ref ? { ref: setRefs(ref, inputRef) } : { ref: inputRef })}\n id={id}\n className=\"orynn-select__search\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listId}\n aria-autocomplete={searchable ? \"list\" : \"none\"}\n aria-activedescendant={\n open && selectableOptions[activeIndex]\n ? `${id}-opt-${selectableOptions[activeIndex].value}`\n : undefined\n }\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n autoComplete=\"off\"\n readOnly={!searchable || readOnly}\n disabled={disabled}\n placeholder={\n // only the search input shows the placeholder; when not\n // searchable the sibling span owns it (avoids a double render)\n !hasValue && searchable ? placeholder : undefined\n }\n value={query}\n size={1}\n onChange={(e) => {\n setQuery(e.target.value);\n if (!open) setOpen(true);\n }}\n onKeyDown={onKeyDown}\n onFocus={openPanel}\n />\n {/* real value(s) for uncontrolled form submission */}\n {name != null &&\n (multiple ? (\n selectedValues.map((v) => <input key={v} type=\"hidden\" name={name} value={v} />)\n ) : (\n <input type=\"hidden\" name={name} value={selectedValues[0] ?? \"\"} />\n ))}\n </div>\n </FieldBox>\n\n <Popover\n open={open}\n anchorRef={boxRef}\n onClose={() => setOpen(false)}\n popoverRef={listRef}\n maxHeight={maxHeight}\n >\n <div\n className=\"orynn-listbox\"\n id={listId}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n >\n {multiple && showSelectAll && selectAllTargets.length > 0 && (\n <button type=\"button\" className=\"orynn-listbox__action\" onClick={toggleSelectAll}>\n {allSelected ? \"Clear all\" : \"Select all\"}\n </button>\n )}\n {isLoadingEmpty ? (\n <div className=\"orynn-listbox__empty\">{loadingMessage}</div>\n ) : selectableOptions.length === 0 ? (\n <div className=\"orynn-listbox__empty\">{emptyMessage}</div>\n ) : (\n rows.map((row) =>\n row.type === \"group\" ? (\n <div key={`g-${row.label}`} className=\"orynn-listbox__group\">\n {renderGroupLabel ? renderGroupLabel(row.label) : row.label}\n </div>\n ) : row.option.value === CREATE_VALUE ? (\n <div\n key={CREATE_VALUE}\n id={`${id}-opt-${CREATE_VALUE}`}\n role=\"option\"\n aria-selected={false}\n className=\"orynn-option orynn-option--create\"\n data-active={row.optionIndex === activeIndex || undefined}\n onMouseEnter={() => setActiveIndex(row.optionIndex)}\n onClick={() => pick(row.option)}\n >\n <span className=\"orynn-option__body\">\n <span className=\"orynn-option__label\">\n {formatCreateLabel\n ? formatCreateLabel(row.option.label)\n : `Create \"${row.option.label}\"`}\n </span>\n </span>\n </div>\n ) : (\n <div\n key={row.option.value}\n id={`${id}-opt-${row.option.value}`}\n role=\"option\"\n aria-selected={selectedValues.includes(row.option.value)}\n aria-disabled={row.option.disabled || undefined}\n className=\"orynn-option\"\n data-active={row.optionIndex === activeIndex || undefined}\n data-selected={selectedValues.includes(row.option.value) || undefined}\n data-disabled={row.option.disabled || undefined}\n onMouseEnter={() => setActiveIndex(row.optionIndex)}\n onClick={() => pick(row.option)}\n >\n {renderOption ? (\n renderOption(row.option, {\n selected: selectedValues.includes(row.option.value),\n active: row.optionIndex === activeIndex,\n disabled: Boolean(row.option.disabled),\n query,\n })\n ) : (\n <>\n {row.option.icon}\n <span className=\"orynn-option__body\">\n <span className=\"orynn-option__label\">\n {doHighlight ? (\n <Highlight text={row.option.label} query={query} />\n ) : (\n row.option.label\n )}\n </span>\n {row.option.description != null && (\n <span className=\"orynn-option__desc\">{row.option.description}</span>\n )}\n </span>\n {selectedValues.includes(row.option.value) && (\n <CheckIcon className=\"orynn-option__check\" />\n )}\n </>\n )}\n </div>\n ),\n )\n )}\n </div>\n </Popover>\n </>\n )}\n </Field>\n );\n },\n);\n\nfunction setRefs<T>(...refs: Array<React.Ref<T> | undefined>) {\n return (node: T | null) => {\n for (const r of refs) {\n if (typeof r === \"function\") r(node);\n else if (r && typeof r === \"object\") (r as React.MutableRefObject<T | null>).current = node;\n }\n };\n}\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { CheckIcon, EyeIcon, EyeOffIcon, SpinnerIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ntype NativeInput = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"type\" | \"size\" | \"prefix\"\n>;\n\n/** `showCount` config: `true`, or an object with a cap + a custom formatter. */\nexport type ShowCount =\n | boolean\n | {\n max?: number;\n formatter?: (count: number, max?: number) => ReactNode;\n };\n\nexport interface InputProps extends BaseControlProps, NativeInput {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, event: ChangeEvent<HTMLInputElement>) => void;\n /** Fired on Enter. */\n onEnter?: (value: string) => void;\n type?: \"text\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"url\";\n /** Static text glued to the start (e.g. `https://`). */\n prefix?: ReactNode;\n /** Static text glued to the end (e.g. `.com`). */\n suffix?: ReactNode;\n /** Segment attached before the field, outside the border. */\n addonBefore?: ReactNode;\n /** Segment attached after the field, outside the border. */\n addonAfter?: ReactNode;\n /** Show a show/hide toggle (implied for `type=\"password\"`). */\n passwordToggle?: boolean;\n /** Controlled reveal state for a password field. */\n passwordVisible?: boolean;\n onPasswordVisibleChange?: (visible: boolean) => void;\n /** Custom toggle icon; gets the current reveal state. */\n visibilityToggleIcon?: (revealed: boolean) => ReactNode;\n /** Show a live character counter. Pass an object for a cap / custom render. */\n showCount?: ShowCount;\n /** Debounce `onChange` by this many ms (drive uncontrolled to avoid lag). */\n debounce?: number;\n}\n\nexport const Input = /* @__PURE__ */ forwardRef<HTMLInputElement, InputProps>(\n function Input(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n startContent,\n endContent,\n clearable,\n onClear,\n loading,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue,\n onChange,\n onEnter,\n onKeyDown,\n type = \"text\",\n prefix,\n suffix,\n addonBefore,\n addonAfter,\n passwordToggle,\n passwordVisible,\n onPasswordVisibleChange,\n visibilityToggleIcon,\n showCount,\n debounce,\n maxLength,\n placeholder,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const [value, setValue] = useControllableState<string>({\n value: valueProp,\n defaultValue: defaultValue ?? \"\",\n onChange: undefined,\n });\n\n const revealIsControlled = passwordVisible !== undefined;\n const [innerReveal, setInnerReveal] = useState(false);\n const reveal = revealIsControlled ? passwordVisible : innerReveal;\n const setReveal = (next: boolean) => {\n if (!revealIsControlled) setInnerReveal(next);\n onPasswordVisibleChange?.(next);\n };\n\n const debounceTimer = useRef<ReturnType<typeof setTimeout>>();\n useEffect(() => () => clearTimeout(debounceTimer.current), []);\n const emitChange = (v: string, e: ChangeEvent<HTMLInputElement>) => {\n if (debounce && debounce > 0) {\n clearTimeout(debounceTimer.current);\n debounceTimer.current = setTimeout(() => onChange?.(v, e), debounce);\n } else {\n onChange?.(v, e);\n }\n };\n\n const showToggle = (passwordToggle ?? type === \"password\") && !disabled && !readOnly;\n const effectiveType = type === \"password\" && reveal ? \"text\" : type;\n const hasValue = value.length > 0;\n const showClear = clearable && hasValue && !disabled && !readOnly;\n\n const countMax =\n showCount && typeof showCount === \"object\" ? (showCount.max ?? maxLength) : maxLength;\n const countNode =\n showCount && typeof showCount === \"object\" && showCount.formatter\n ? showCount.formatter(value.length, countMax)\n : `${value.length}${countMax ? `/${countMax}` : \"\"}`;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n emitChange(e.target.value, e);\n };\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") onEnter?.(value);\n onKeyDown?.(e);\n };\n const clear = () => {\n setValue(\"\");\n onClear?.();\n };\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <FieldBox\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n active={hasValue}\n addonBefore={addonBefore}\n addonAfter={addonAfter}\n left={\n startContent != null || prefix != null ? (\n <>\n {startContent}\n {prefix != null && <span className=\"orynn-box__adornment--affix\">{prefix}</span>}\n </>\n ) : undefined\n }\n right={\n <>\n {suffix != null && <span className=\"orynn-box__adornment--affix\">{suffix}</span>}\n {showCount && <span className=\"orynn-box__adornment--affix\">{countNode}</span>}\n {showClear && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={clear}\n >\n <XIcon />\n </button>\n )}\n {showToggle && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label={reveal ? \"Hide\" : \"Show\"}\n aria-pressed={reveal}\n tabIndex={-1}\n onClick={() => setReveal(!reveal)}\n >\n {visibilityToggleIcon ? (\n visibilityToggleIcon(reveal)\n ) : reveal ? (\n <EyeOffIcon />\n ) : (\n <EyeIcon />\n )}\n </button>\n )}\n {loading && <SpinnerIcon />}\n {endContent}\n {valid && !loading && <CheckIcon className=\"orynn-icon-success\" />}\n </>\n }\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n >\n <input\n {...rest}\n ref={ref}\n id={id}\n name={name}\n className=\"orynn-box__field\"\n type={effectiveType}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n maxLength={maxLength}\n placeholder={floatingLabel ? undefined : placeholder}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n />\n </FieldBox>\n )}\n </Field>\n );\n },\n);\n","import {\n type InputHTMLAttributes,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { ChevronDownIcon, ChevronUpIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ntype NativeNumberInput = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n | \"value\"\n | \"defaultValue\"\n | \"onChange\"\n | \"type\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"size\"\n | \"prefix\"\n | \"style\"\n>;\n\nexport type ClampBehavior = \"strict\" | \"blur\" | \"none\";\n\nexport interface NumberFieldProps extends BaseControlProps, NativeNumberInput {\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n /** Fires alongside `onChange` with the formatted string too. */\n onValueChange?: (payload: { value: number | null; formatted: string }) => void;\n min?: number;\n max?: number;\n step?: number;\n /** Larger step for Shift+Arrow / PageUp-Down. Default `step * 10`. */\n shiftStep?: number;\n /** Smaller step for Alt+Arrow. Default `step / 10`. */\n smallStep?: number;\n /** Decimal places to keep. Alias: `decimalScale`. */\n precision?: number;\n decimalScale?: number;\n /** Pad to `decimalScale` with trailing zeros. */\n fixedDecimalScale?: boolean;\n /** Stepper buttons. Default `\"stacked\"`. */\n buttons?: \"stacked\" | \"horizontal\" | false;\n /** Alias for `buttons={false}`. */\n hideControls?: boolean;\n /** Group thousands (`1,000`). */\n grouping?: boolean;\n /** Override the locale's thousands separator. */\n thousandSeparator?: string;\n /** Override the locale's decimal separator. */\n decimalSeparator?: string;\n /** BCP-47 locale for formatting. */\n locale?: string;\n /** Number style. `currency` needs `currency`; `unit` needs `unit`. */\n style?: \"decimal\" | \"currency\" | \"percent\" | \"unit\";\n /** ISO currency code (implies `style=\"currency\"`). */\n currency?: string;\n /** Intl unit identifier for `style=\"unit\"` (e.g. `\"kilogram\"`). */\n unit?: string;\n /** Raw `Intl.NumberFormatOptions` — wins over the individual knobs. */\n formatOptions?: Intl.NumberFormatOptions;\n /** Fully custom display. */\n format?: (value: number) => string;\n /** Fully custom parse. */\n parse?: (text: string) => number | null;\n /** Text before the number. */\n prefix?: string;\n /** Text after the number (e.g. `%`, `kg`). */\n suffix?: string;\n /** Allow values below zero. Default true. */\n allowNegative?: boolean;\n /** `\"strict\"` (never leaves range) · `\"blur\"` (default) · `\"none\"`. */\n clampBehavior?: ClampBehavior;\n /** Deprecated alias — `false` maps to `clampBehavior=\"none\"`. */\n clampOnBlur?: boolean;\n /** Value committed for an empty field. Default `null`. */\n emptyValue?: number | null;\n /** Step with the mouse wheel while focused. Default false. */\n allowMouseWheel?: boolean;\n /** Inverse of `allowMouseWheel`. */\n isWheelDisabled?: boolean;\n /** Delay before hold-to-repeat kicks in, ms. Default 300. */\n stepHoldDelay?: number;\n /** Interval between repeats while held, ms. Default 60. */\n stepHoldInterval?: number;\n}\n\nconst clamp = (n: number, min?: number, max?: number) =>\n Math.min(max ?? Number.POSITIVE_INFINITY, Math.max(min ?? Number.NEGATIVE_INFINITY, n));\n\nconst round = (n: number, p?: number) => (p == null ? n : Math.round(n * 10 ** p) / 10 ** p);\n\nconst SENTINEL_GROUP = \"[[g]]\";\nconst SENTINEL_DECIMAL = \"[[d]]\";\n\n/**\n * Swap an Intl-formatted string's group / decimal chars for custom ones,\n * two-phase (via sentinels) so a fresh group char isn't re-read as a decimal.\n */\nfunction swapSeparators(\n out: string,\n seps: { group: string; decimal: string },\n thousandSeparator?: string,\n decimalSeparator?: string,\n): string {\n return out\n .split(seps.group)\n .join(SENTINEL_GROUP)\n .split(seps.decimal)\n .join(SENTINEL_DECIMAL)\n .split(SENTINEL_GROUP)\n .join(thousandSeparator ?? seps.group)\n .split(SENTINEL_DECIMAL)\n .join(decimalSeparator ?? seps.decimal);\n}\n\nexport const NumberField = /* @__PURE__ */ forwardRef<HTMLInputElement, NumberFieldProps>(\n function NumberField(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n startContent,\n endContent,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue = null,\n onChange,\n onValueChange,\n min,\n max,\n step = 1,\n shiftStep,\n smallStep,\n precision,\n decimalScale,\n fixedDecimalScale,\n buttons = \"stacked\",\n hideControls,\n grouping,\n thousandSeparator,\n decimalSeparator,\n locale,\n style,\n currency,\n unit,\n formatOptions,\n format: formatFn,\n parse: parseFn,\n prefix,\n suffix,\n allowNegative = true,\n clampBehavior,\n clampOnBlur,\n emptyValue = null,\n allowMouseWheel,\n isWheelDisabled,\n stepHoldDelay = 300,\n stepHoldInterval = 60,\n placeholder,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const [value, setValue] = useControllableState<number | null>({\n value: valueProp,\n defaultValue,\n onChange: undefined,\n });\n\n const resolvedStyle = style ?? (currency ? \"currency\" : \"decimal\");\n const scale = decimalScale ?? precision;\n const clampMode: ClampBehavior = clampBehavior ?? (clampOnBlur === false ? \"none\" : \"blur\");\n const effMin = allowNegative ? min : Math.max(0, min ?? 0);\n const showButtons = hideControls ? false : buttons;\n const wheelEnabled = isWheelDisabled != null ? !isWheelDisabled : Boolean(allowMouseWheel);\n\n const fmt = useMemo(() => {\n if (formatOptions) return new Intl.NumberFormat(locale, formatOptions);\n const opts: Intl.NumberFormatOptions = {\n useGrouping: grouping ?? (thousandSeparator != null || resolvedStyle === \"currency\"),\n };\n if (resolvedStyle === \"currency\") {\n opts.style = \"currency\";\n opts.currency = currency ?? \"USD\";\n } else if (resolvedStyle === \"percent\") {\n opts.style = \"percent\";\n } else if (resolvedStyle === \"unit\" && unit) {\n opts.style = \"unit\";\n opts.unit = unit;\n }\n if (scale != null) {\n opts.maximumFractionDigits = scale;\n if (fixedDecimalScale) opts.minimumFractionDigits = scale;\n } else {\n opts.maximumFractionDigits = resolvedStyle === \"currency\" ? 2 : 20;\n opts.minimumFractionDigits = resolvedStyle === \"currency\" ? 2 : 0;\n }\n return new Intl.NumberFormat(locale, opts);\n }, [\n locale,\n formatOptions,\n grouping,\n thousandSeparator,\n resolvedStyle,\n currency,\n unit,\n scale,\n fixedDecimalScale,\n ]);\n\n const seps = useMemo(() => {\n const parts = new Intl.NumberFormat(locale).formatToParts(11111.1);\n return {\n group: parts.find((p) => p.type === \"group\")?.value ?? \",\",\n decimal: parts.find((p) => p.type === \"decimal\")?.value ?? \".\",\n };\n }, [locale]);\n\n const display = useCallback(\n (n: number | null) => {\n if (n == null || Number.isNaN(n)) return \"\";\n if (formatFn) return formatFn(n);\n let out = fmt.format(n);\n if (thousandSeparator != null || decimalSeparator != null) {\n out = swapSeparators(out, seps, thousandSeparator, decimalSeparator);\n }\n return `${prefix ?? \"\"}${out}${suffix ?? \"\"}`;\n },\n [fmt, formatFn, prefix, suffix, seps, thousandSeparator, decimalSeparator],\n );\n\n const parse = useCallback(\n (raw: string): number | null => {\n if (parseFn) return parseFn(raw);\n let s = raw;\n if (prefix) s = s.split(prefix).join(\"\");\n if (suffix) s = s.split(suffix).join(\"\");\n const grp = thousandSeparator ?? seps.group;\n const dec = decimalSeparator ?? seps.decimal;\n s = s.split(grp).join(\"\").split(dec).join(\".\");\n s = s.replace(/[^\\d.\\-]/g, \"\");\n if (!allowNegative) s = s.replace(/-/g, \"\");\n if (s === \"\" || s === \"-\" || s === \".\") return null;\n const first = s.indexOf(\".\");\n if (first !== -1) s = s.slice(0, first + 1) + s.slice(first + 1).replace(/\\./g, \"\");\n let n = Number(s);\n if (Number.isNaN(n)) return null;\n if (resolvedStyle === \"percent\" && !formatFn) n = n / 100;\n return n;\n },\n [\n parseFn,\n prefix,\n suffix,\n seps,\n thousandSeparator,\n decimalSeparator,\n allowNegative,\n resolvedStyle,\n formatFn,\n ],\n );\n\n const [text, setText] = useState(() => display(value));\n const [editing, setEditing] = useState(false);\n useEffect(() => {\n if (!editing) setText(display(value));\n }, [value, editing, display]);\n\n const commit = (n: number | null) => {\n setValue(n);\n onChange?.(n);\n onValueChange?.({ value: n, formatted: display(n) });\n };\n\n /** Commit AND reflect in the field text (steppers, wheel, blur). */\n const setNumber = (n: number | null) => {\n commit(n);\n setText(display(n));\n };\n\n const bump = (dir: 1 | -1, mode: \"s\" | \"n\" | \"l\" = \"n\") => {\n const amount =\n mode === \"l\" ? (shiftStep ?? step * 10) : mode === \"s\" ? (smallStep ?? step / 10) : step;\n const base = value ?? (dir > 0 ? (effMin ?? 0) : (max ?? 0));\n let next = round(base + amount * dir, scale);\n if (clampMode !== \"none\") next = clamp(next, effMin, max);\n else if (!allowNegative && next < 0) next = 0;\n setNumber(next);\n };\n\n const innerRef = useRef<HTMLInputElement | null>(null);\n useEffect(() => {\n const el = innerRef.current;\n if (!el || !wheelEnabled) return;\n const onWheel = (e: WheelEvent) => {\n if (document.activeElement !== el) return;\n e.preventDefault();\n bump(e.deltaY < 0 ? 1 : -1, e.shiftKey ? \"l\" : e.altKey ? \"s\" : \"n\");\n };\n el.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => el.removeEventListener(\"wheel\", onWheel);\n });\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || readOnly) return;\n const mode = e.shiftKey ? \"l\" : e.altKey ? \"s\" : \"n\";\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n bump(1, mode);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n bump(-1, mode);\n } else if (e.key === \"PageUp\") {\n e.preventDefault();\n bump(1, \"l\");\n } else if (e.key === \"PageDown\") {\n e.preventDefault();\n bump(-1, \"l\");\n } else if (e.key === \"Home\" && effMin != null) {\n e.preventDefault();\n setNumber(effMin);\n } else if (e.key === \"End\" && max != null) {\n e.preventDefault();\n setNumber(max);\n }\n };\n\n const holdTimer = useRef<ReturnType<typeof setInterval>>();\n const holdDelay = useRef<ReturnType<typeof setTimeout>>();\n const startHold = (dir: 1 | -1) => {\n bump(dir);\n let count = 0;\n holdDelay.current = setTimeout(() => {\n holdTimer.current = setInterval(() => {\n count += 1;\n bump(dir, count > 6 ? \"l\" : \"n\");\n }, stepHoldInterval);\n }, stepHoldDelay);\n };\n const stopHold = () => {\n clearTimeout(holdDelay.current);\n clearInterval(holdTimer.current);\n };\n useEffect(() => stopHold, []);\n\n const StepButtons = showButtons && (\n <div\n className={`orynn-number__buttons${showButtons === \"horizontal\" ? \" orynn-number__buttons--horizontal\" : \"\"}`}\n >\n <button\n type=\"button\"\n className=\"orynn-number__btn\"\n aria-label=\"Increment\"\n tabIndex={-1}\n disabled={disabled || readOnly || (max != null && (value ?? 0) >= max)}\n onPointerDown={() => startHold(1)}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n >\n <ChevronUpIcon className=\"orynn-number__caret\" />\n </button>\n <button\n type=\"button\"\n className=\"orynn-number__btn\"\n aria-label=\"Decrement\"\n tabIndex={-1}\n disabled={disabled || readOnly || (effMin != null && (value ?? 0) <= effMin)}\n onPointerDown={() => startHold(-1)}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n >\n <ChevronDownIcon className=\"orynn-number__caret\" />\n </button>\n </div>\n );\n\n const hasValue = value != null;\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <FieldBox\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n active={hasValue}\n left={startContent}\n right={\n <>\n {endContent}\n {StepButtons}\n </>\n }\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n >\n <input\n {...rest}\n ref={(n) => {\n innerRef.current = n;\n if (typeof ref === \"function\") ref(n);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = n;\n }}\n id={id}\n name={name}\n className=\"orynn-box__field\"\n type=\"text\"\n inputMode=\"decimal\"\n role=\"spinbutton\"\n aria-valuenow={value ?? undefined}\n aria-valuemin={effMin}\n aria-valuemax={max}\n value={text}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n placeholder={floatingLabel ? undefined : placeholder}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onFocus={() => setEditing(true)}\n onChange={(e) => {\n setText(e.target.value);\n const parsed = parse(e.target.value);\n commit(\n parsed == null\n ? null\n : clampMode === \"strict\"\n ? clamp(parsed, effMin, max)\n : parsed,\n );\n }}\n onKeyDown={onKeyDown}\n onBlur={() => {\n setEditing(false);\n const parsed = parse(text);\n const final =\n parsed == null\n ? emptyValue\n : round(clampMode !== \"none\" ? clamp(parsed, effMin, max) : parsed, scale);\n if (final !== value) commit(final);\n setText(display(final));\n }}\n />\n </FieldBox>\n )}\n </Field>\n );\n },\n);\n","import {\n type ChangeEvent,\n type InputHTMLAttributes,\n type ReactNode,\n createContext,\n forwardRef,\n useContext,\n useId,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { cx } from \"../../internal/cx\";\nimport type { ControlSize, Feedback } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\n\ninterface RadioGroupContextValue {\n name: string;\n value: string | null;\n select: (value: string) => void;\n disabled?: boolean;\n size?: ControlSize;\n variant?: \"default\" | \"card\";\n}\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nconst sizePx: Record<ControlSize, string> = { sm: \"0.875rem\", md: \"1rem\", lg: \"1.125rem\" };\n\ntype NativeRadio = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"checked\" | \"defaultChecked\" | \"onChange\" | \"size\" | \"value\"\n>;\n\nexport interface RadioProps extends NativeRadio {\n value: string;\n label?: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n size?: ControlSize;\n card?: boolean;\n labelPlacement?: \"end\" | \"start\";\n className?: string;\n}\n\nexport const Radio = /* @__PURE__ */ forwardRef<HTMLInputElement, RadioProps>(\n function Radio(props, ref) {\n const group = useContext(RadioGroupContext);\n const {\n value,\n label,\n description,\n disabled: disabledProp,\n size: sizeProp,\n card: cardProp,\n labelPlacement = \"end\",\n className,\n id: idProp,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const checked = group ? group.value === value : undefined;\n const disabled = disabledProp || group?.disabled || false;\n const size = sizeProp ?? group?.size ?? \"md\";\n const card = cardProp ?? group?.variant === \"card\";\n\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) group?.select(value);\n };\n\n return (\n <label\n className={cx(\n \"orynn-choice\",\n card && \"orynn-choice--card\",\n labelPlacement === \"start\" && \"orynn-choice--start\",\n className,\n )}\n data-disabled={disabled || undefined}\n style={{ \"--orynn-check-size\": sizePx[size] } as React.CSSProperties}\n >\n <input\n {...rest}\n ref={ref}\n type=\"radio\"\n className=\"orynn-choice__native\"\n id={id}\n name={group?.name}\n value={value}\n checked={group ? checked : undefined}\n disabled={disabled}\n onChange={onChange}\n />\n <span className=\"orynn-choice__control orynn-choice__control--radio\" aria-hidden=\"true\">\n <span className=\"orynn-choice__mark orynn-choice__mark--dot\" />\n </span>\n {(label != null || description != null) && (\n <span className=\"orynn-choice__text\">\n {label != null && <span className=\"orynn-choice__label\">{label}</span>}\n {description != null && <span className=\"orynn-choice__desc\">{description}</span>}\n </span>\n )}\n </label>\n );\n },\n);\n\nexport interface RadioOption {\n label: ReactNode;\n value: string;\n description?: ReactNode;\n /** Leading icon shown before the label. */\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n label?: ReactNode;\n description?: ReactNode;\n error?: Feedback;\n success?: string | boolean;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n size?: ControlSize;\n variant?: \"default\" | \"card\";\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string) => void;\n orientation?: \"vertical\" | \"horizontal\";\n /** Lay the options out in an N-column grid. */\n columns?: number;\n options?: RadioOption[];\n children?: ReactNode;\n className?: string;\n id?: string;\n}\n\nexport function RadioGroup(props: RadioGroupProps) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n name: nameProp,\n size,\n variant = \"default\",\n value: valueProp,\n defaultValue = null,\n onChange,\n orientation = \"vertical\",\n columns,\n options,\n children,\n className,\n id: idProp,\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const name = nameProp ?? id;\n const [value, setValue] = useControllableState<string | null>({\n value: valueProp,\n defaultValue,\n onChange: undefined,\n });\n\n const select = (v: string) => {\n setValue(v);\n onChange?.(v);\n };\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n id={id}\n className={className}\n >\n {() => (\n <RadioGroupContext.Provider value={{ name, value, select, disabled, size, variant }}>\n <div\n role=\"radiogroup\"\n aria-labelledby={label != null ? `${id}-label` : undefined}\n aria-required={required || undefined}\n className=\"orynn-choice-group\"\n data-orientation={columns ? undefined : orientation}\n data-columns={columns ? \"\" : undefined}\n style={\n columns ? ({ \"--orynn-choice-columns\": columns } as React.CSSProperties) : undefined\n }\n >\n {options\n ? options.map((o) => (\n <Radio\n key={o.value}\n value={o.value}\n label={\n o.icon != null ? (\n <>\n <span className=\"orynn-choice__icon\">{o.icon}</span>\n {o.label}\n </>\n ) : (\n o.label\n )\n }\n description={o.description}\n disabled={o.disabled}\n />\n ))\n : children}\n </div>\n </RadioGroupContext.Provider>\n )}\n </Field>\n );\n}\n","import {\n type ChangeEvent,\n type KeyboardEvent,\n type TextareaHTMLAttributes,\n forwardRef,\n useCallback,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useControllableState } from \"../../core/state/use-controllable-state\";\nimport { FieldBox } from \"../../internal/FieldBox\";\nimport { SpinnerIcon, XIcon } from \"../../internal/icons\";\nimport type { BaseControlProps } from \"../../types/common\";\nimport { Field } from \"../Field/Field\";\nimport type { ShowCount } from \"../Input/Input\";\n\ntype NativeTextarea = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"rows\" | \"cols\"\n>;\n\nexport interface TextareaProps extends Omit<BaseControlProps, \"startContent\">, NativeTextarea {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, event: ChangeEvent<HTMLTextAreaElement>) => void;\n /** Fired on Enter (without Shift). */\n onEnter?: (value: string) => void;\n /** Enter (no Shift) fires `onEnter` and suppresses the newline. */\n submitOnEnter?: boolean;\n /** Grow with content between `minRows` and `maxRows`. */\n autoResize?: boolean;\n minRows?: number;\n maxRows?: number;\n /** Native resize handle. Default `\"vertical\"` (`\"none\"` when `autoResize`). */\n resize?: \"none\" | \"vertical\" | \"both\";\n /** Live counter — `true`, or `{ max?, formatter?(count, max) }`. */\n showCount?: ShowCount;\n}\n\nexport const Textarea = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea(props, ref) {\n const {\n label,\n description,\n error,\n success,\n required,\n disabled,\n readOnly,\n size,\n variant,\n radius,\n floatingLabel,\n clearable,\n onClear,\n loading,\n endContent,\n id: idProp,\n name,\n className,\n value: valueProp,\n defaultValue,\n onChange,\n onEnter,\n submitOnEnter,\n onKeyDown,\n autoResize,\n minRows = 3,\n maxRows = 10,\n resize,\n showCount,\n maxLength,\n placeholder,\n ...rest\n } = props;\n\n const reactId = useId();\n const id = idProp ?? reactId;\n const [value, setValue] = useControllableState<string>({\n value: valueProp,\n defaultValue: defaultValue ?? \"\",\n onChange: undefined,\n });\n\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement);\n\n const resizeToFit = useCallback(() => {\n const el = innerRef.current;\n if (!el || !autoResize) return;\n el.style.height = \"auto\";\n const cs = getComputedStyle(el);\n const line = Number.parseFloat(cs.lineHeight) || 20;\n const pad = Number.parseFloat(cs.paddingTop) + Number.parseFloat(cs.paddingBottom);\n const min = line * minRows + pad;\n const max = line * maxRows + pad;\n el.style.height = `${Math.min(Math.max(el.scrollHeight, min), max)}px`;\n el.style.overflowY = el.scrollHeight > max ? \"auto\" : \"hidden\";\n }, [autoResize, minRows, maxRows]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-fit when value changes\n useLayoutEffect(resizeToFit, [value, resizeToFit]);\n\n const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setValue(e.target.value);\n onChange?.(e.target.value, e);\n };\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && (onEnter || submitOnEnter)) {\n if (submitOnEnter) e.preventDefault();\n onEnter?.(value);\n }\n onKeyDown?.(e);\n };\n\n const hasValue = value.length > 0;\n const countMax =\n showCount && typeof showCount === \"object\" ? (showCount.max ?? maxLength) : maxLength;\n const countNode =\n showCount && typeof showCount === \"object\" && showCount.formatter\n ? showCount.formatter(value.length, countMax)\n : `${value.length}${countMax ? `/${countMax}` : \"\"}`;\n\n return (\n <Field\n label={label}\n description={description}\n error={error}\n success={success}\n required={required}\n disabled={disabled}\n hideLabel={floatingLabel}\n id={id}\n className={className}\n >\n {({ describedById, invalid, valid }) => (\n <FieldBox\n textarea\n size={size}\n variant={variant}\n radius={radius}\n disabled={disabled}\n invalid={invalid}\n valid={valid}\n active={hasValue}\n floatingLabel={\n floatingLabel ? (\n <label className=\"orynn-box__label\" htmlFor={id}>\n {label}\n </label>\n ) : undefined\n }\n right={\n (clearable && hasValue) || loading || endContent != null ? (\n <>\n {clearable && hasValue && !disabled && !readOnly && (\n <button\n type=\"button\"\n className=\"orynn-box__iconbtn\"\n aria-label=\"Clear\"\n tabIndex={-1}\n onClick={() => {\n setValue(\"\");\n onClear?.();\n }}\n >\n <XIcon />\n </button>\n )}\n {loading && <SpinnerIcon />}\n {endContent}\n </>\n ) : undefined\n }\n >\n <textarea\n {...rest}\n ref={innerRef}\n id={id}\n name={name}\n className=\"orynn-textarea\"\n data-resize={resize ?? (autoResize ? \"none\" : \"vertical\")}\n rows={minRows}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n maxLength={maxLength}\n placeholder={floatingLabel ? undefined : placeholder}\n aria-invalid={invalid || undefined}\n aria-describedby={describedById}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n />\n {showCount && <span className=\"orynn-box__footer\">{countNode}</span>}\n </FieldBox>\n )}\n </Field>\n );\n },\n);\n","/**\n * Development-only helpers. `__DEV__` is statically replaceable by bundlers, so\n * `invariant` / `warnOnce` bodies tree-shake out of production builds.\n */\nexport const __DEV__: boolean =\n typeof process !== \"undefined\" && process.env?.NODE_ENV !== \"production\";\n\n/** Throws in development when `condition` is falsy. No-op in production. */\nexport function invariant(condition: unknown, message: string): asserts condition {\n if (condition) return;\n if (__DEV__) {\n throw new Error(`[orynn] ${message}`);\n }\n}\n\nconst warned = new Set<string>();\n\n/** Logs a warning once per unique message. Silent in production. */\nexport function warnOnce(message: string): void {\n if (!__DEV__ || warned.has(message)) return;\n warned.add(message);\n console.warn(`[orynn] ${message}`);\n}\n\n/** Test-only: clear the warn-once cache between cases. */\nexport function resetWarnings(): void {\n warned.clear();\n}\n","import { __DEV__, warnOnce } from \"../../internal/dev\";\nimport type { FieldRegistration, FieldRegistry } from \"../../types/control\";\n\nclass Registry implements FieldRegistry {\n #entries = new Map<string, FieldRegistration>();\n\n register(type: string, registration: FieldRegistration): void {\n if (__DEV__ && this.#entries.has(type)) {\n warnOnce(`Field type \"${type}\" is being re-registered; the previous definition is replaced.`);\n }\n this.#entries.set(type, registration);\n }\n\n get(type: string): FieldRegistration | undefined {\n return this.#entries.get(type);\n }\n\n has(type: string): boolean {\n return this.#entries.has(type);\n }\n\n types(): string[] {\n return [...this.#entries.keys()];\n }\n}\n\n/**\n * Create an isolated field registry. Use this to give a `<Fieldset>` its own set\n * of field types without touching the module-global {@link defaultRegistry}\n * (recommended on the server, where mutating a shared registry per request would\n * leak between requests).\n *\n * @experimental The registry API may change before 1.0.\n */\nexport function createRegistry(): FieldRegistry {\n return new Registry();\n}\n\n/**\n * The module-global registry used by `<Fieldset>` when no `registry` prop is\n * passed. Seeded with the built-in `input` and `dropdown` fields.\n *\n * @experimental\n */\nexport const defaultRegistry: FieldRegistry = /* @__PURE__ */ createRegistry();\n\n/**\n * Register a field type on the {@link defaultRegistry}. Call this once at\n * application start-up, not per render or per request.\n *\n * @experimental\n */\nexport function registerField(type: string, registration: FieldRegistration): void {\n defaultRegistry.register(type, registration);\n}\n","import type { ColumnSpec } from \"../types/config\";\n\n/** Default: 3 columns when wide, 2 at medium widths, 1 when narrow. */\nexport const DEFAULT_COLUMNS: ColumnSpec = { desktop: 3, tablet: 2, mobile: 1 };\n\n/** Fallback minimum comfortable width for one column, in px (`12rem`). */\nexport const DEFAULT_MIN_COL = 192;\n\nexport type ColumnTier = \"desktop\" | \"tablet\" | \"mobile\";\n\nconst clampCount = (n: unknown, fallback: number): number =>\n typeof n === \"number\" && Number.isFinite(n) && n >= 1 ? Math.floor(n) : fallback;\n\n/**\n * Resolve the `columns` config into a full {@link ColumnSpec}.\n *\n * - a **number** `n` → `{ desktop: n, tablet: n, mobile: n }`, which the grid\n * treats as \"use up to `n` columns, fluidly, down to 1\".\n * - a **partial object** → merged onto {@link DEFAULT_COLUMNS}; the grid snaps\n * to exactly those counts at wide / medium / narrow widths.\n */\nexport function resolveColumns(input?: Partial<ColumnSpec> | number): ColumnSpec {\n if (typeof input === \"number\") {\n const n = clampCount(input, DEFAULT_COLUMNS.desktop);\n return { desktop: n, tablet: n, mobile: n };\n }\n return {\n desktop: clampCount(input?.desktop, DEFAULT_COLUMNS.desktop),\n tablet: clampCount(input?.tablet, DEFAULT_COLUMNS.tablet),\n mobile: clampCount(input?.mobile, DEFAULT_COLUMNS.mobile),\n };\n}\n\nexport interface GridResolution {\n /** Active column count for the current width. */\n count: number;\n /** Which configured tier is active — used to pick a field's `layout` span. */\n tier: ColumnTier;\n}\n\n/**\n * Pick the column count for a given container width. Thresholds scale with the\n * configured counts (`n` columns need roughly `n * minColWidth`), so a 2-column\n * form goes multi-column far sooner than a 6-column one.\n */\nexport function resolveGrid(\n width: number,\n cols: ColumnSpec,\n minColWidth: number = DEFAULT_MIN_COL,\n): GridResolution {\n const { desktop: d, tablet: t, mobile: m } = cols;\n if (!width || !Number.isFinite(width) || width <= 0) {\n return { count: d, tier: \"desktop\" };\n }\n\n const per = minColWidth > 0 ? minColWidth : DEFAULT_MIN_COL;\n const maxFit = Math.max(1, Math.floor(width / per));\n\n // \"auto\" mode (all tiers equal): flow between 1 and `d` as room allows.\n if (d === t && t === m) {\n const count = Math.min(d, maxFit);\n return { count, tier: count >= d ? \"desktop\" : count > 1 ? \"tablet\" : \"mobile\" };\n }\n\n // explicit stops: largest configured count that still fits, floored at mobile.\n if (maxFit >= d) return { count: d, tier: \"desktop\" };\n if (t < d && maxFit >= t) return { count: t, tier: \"tablet\" };\n if (maxFit >= m) return { count: m, tier: \"mobile\" };\n return { count: Math.min(m, maxFit), tier: \"mobile\" };\n}\n\n/** Clamp a field's column span so it never exceeds the active column count. */\nexport function clampSpan(span: unknown, columnCount: number): number {\n const n = clampCount(span, 1);\n return Math.min(n, Math.max(columnCount, 1));\n}\n\n/** Pick a field's span for the active tier, falling back across tiers. */\nexport function pickSpan(layout: Partial<ColumnSpec> | undefined, tier: ColumnTier): number {\n if (!layout) return 1;\n const v = layout[tier] ?? layout.desktop ?? layout.tablet ?? layout.mobile;\n return typeof v === \"number\" && Number.isFinite(v) && v >= 1 ? Math.floor(v) : 1;\n}\n","import { invariant } from \"../../internal/dev\";\nimport { DEFAULT_MIN_COL, resolveColumns } from \"../../layout/resolve-columns\";\nimport type { ColumnSpec, FieldConfig, FieldsetConfig } from \"../../types/config\";\nimport type { FieldRegistry } from \"../../types/control\";\n\n/** A validated `FieldsetConfig` with every default resolved. */\nexport interface NormalizedFieldsetConfig {\n fields: FieldConfig[];\n columns: ColumnSpec;\n /** Minimum comfortable width for one column, in px. */\n minColWidth: number;\n /** CSS length for the grid gap, or `undefined` to use the token default. */\n gap: string | undefined;\n legend: string | undefined;\n id: string | undefined;\n}\n\nfunction normalizeGap(gap: FieldsetConfig[\"gap\"]): string | undefined {\n if (gap == null) return undefined;\n return typeof gap === \"number\" ? `${gap}px` : gap;\n}\n\n/** Resolve a CSS length (number = px, `\"14rem\"`, `\"220px\"`, …) to px. */\nfunction normalizeMinColWidth(value: FieldsetConfig[\"minColumnWidth\"]): number {\n if (typeof value === \"number\") return value > 0 ? value : DEFAULT_MIN_COL;\n if (typeof value === \"string\") {\n const n = Number.parseFloat(value);\n if (!Number.isFinite(n) || n <= 0) return DEFAULT_MIN_COL;\n if (/rem|em/i.test(value)) {\n const root =\n typeof document !== \"undefined\"\n ? Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16\n : 16;\n return n * root;\n }\n return n; // px or unitless\n }\n return DEFAULT_MIN_COL;\n}\n\n/**\n * Validate a `FieldsetConfig` and resolve its defaults. Structural problems\n * throw in development with an actionable message; in production the checks are\n * stripped and normalization is defensive.\n *\n * Pass `registry` (as `<Fieldset>` does) to also validate each field's `type`\n * and run type-specific config checks.\n */\nexport function normalizeConfig(\n config: FieldsetConfig,\n registry?: FieldRegistry,\n): NormalizedFieldsetConfig {\n invariant(\n config != null && typeof config === \"object\" && Array.isArray(config.fields),\n \"`config` must be an object with a `fields` array.\",\n );\n\n const seen = new Set<string>();\n\n for (const field of config.fields) {\n invariant(\n field != null && typeof field === \"object\",\n \"Every entry in `config.fields` must be an object.\",\n );\n invariant(\n typeof field.name === \"string\" && field.name.length > 0,\n \"Every field needs a non-empty string `name`.\",\n );\n invariant(!seen.has(field.name), `Duplicate field name \"${field.name}\" in config.fields.`);\n seen.add(field.name);\n invariant(\n typeof field.type === \"string\" && field.type.length > 0,\n `Field \"${field.name}\" is missing a \"type\".`,\n );\n\n if (registry) {\n invariant(\n registry.has(field.type),\n `Unknown field type \"${field.type}\" on field \"${field.name}\". ` +\n `Registered types: ${registry.types().join(\", \") || \"(none)\"}.`,\n );\n const typeError = registry.get(field.type)?.validateConfig?.(field);\n invariant(typeError == null, `Field \"${field.name}\" (${field.type}): ${typeError}`);\n }\n }\n\n return {\n fields: config.fields,\n columns: resolveColumns(config.columns),\n minColWidth: normalizeMinColWidth(config.minColumnWidth),\n gap: normalizeGap(config.gap),\n legend: config.legend,\n id: config.id,\n };\n}\n","import type { FieldCondition } from \"../../types/config\";\n\n/** Evaluate a field's `when` condition against the current values. */\nexport function evalCondition(\n when: FieldCondition | undefined,\n values: Record<string, unknown>,\n): boolean {\n if (when == null) return true;\n if (typeof when === \"function\") return Boolean(when(values));\n\n const actual = values[when.field];\n if (\"eq\" in when) return actual === when.eq;\n if (\"ne\" in when) return actual !== when.ne;\n if (\"in\" in when) return Array.isArray(when.in) && when.in.includes(actual);\n if (\"notIn\" in when) return Array.isArray(when.notIn) && !when.notIn.includes(actual);\n if (\"truthy\" in when) return Boolean(actual) === Boolean(when.truthy);\n // bare `{ field }` → truthy check\n return Boolean(actual);\n}\n","/** Formats the default message for a built-in rule token. */\ntype MessageFormatter = (ctx: { param: unknown; label: string }) => string;\n\nconst plural = (n: unknown, word: string) => `${n} ${word}${n === 1 ? \"\" : \"s\"}`;\nconst dateStr = (p: unknown) => {\n const d = p instanceof Date ? p : new Date(String(p));\n return Number.isNaN(d.getTime()) ? String(p) : d.toLocaleDateString();\n};\n\n/** Default message templates for the built-in rules. */\nexport const defaultMessages: Record<string, MessageFormatter> = {\n required: ({ label }) => `${label} is required`,\n minLength: ({ param, label }) => `${label} must be at least ${plural(param, \"character\")}`,\n maxLength: ({ param, label }) => `${label} must be at most ${plural(param, \"character\")}`,\n minItems: ({ param, label }) => `Select at least ${plural(param, \"option\")} for ${label}`,\n maxItems: ({ param, label }) => `Select at most ${plural(param, \"option\")} for ${label}`,\n min: ({ param, label }) => `${label} must be at least ${param}`,\n max: ({ param, label }) => `${label} must be at most ${param}`,\n integer: ({ label }) => `${label} must be a whole number`,\n minDate: ({ param, label }) => `${label} must be on or after ${dateStr(param)}`,\n maxDate: ({ param, label }) => `${label} must be on or before ${dateStr(param)}`,\n minRangeDays: ({ param, label }) => `${label} must span at least ${plural(param, \"day\")}`,\n maxRangeDays: ({ param, label }) => `${label} must span at most ${plural(param, \"day\")}`,\n email: ({ label }) => `${label} must be a valid email address`,\n url: ({ label }) => `${label} must be a valid URL`,\n pattern: ({ label }) => `${label} is not in the expected format`,\n oneOf: ({ label }) => `${label} is not an allowed value`,\n equals: ({ label }) => `${label} does not match`,\n validate: ({ label }) => `${label} is invalid`,\n schema: ({ label }) => `${label} is invalid`,\n};\n\nconst FALLBACK_LABEL = \"This field\";\n\n/**\n * Resolve the message for a failed rule.\n *\n * Precedence: a per-field override (`validation.messages[token]`) wins; otherwise\n * a built-in template is used; otherwise the token itself is the message (custom\n * rules and `validate` return a ready-to-show string).\n */\nexport function resolveMessage(\n token: string,\n param: unknown,\n label: string | undefined,\n overrides: Partial<Record<string, string>> | undefined,\n): string {\n const override = overrides?.[token];\n if (override != null) return override;\n\n const formatter = defaultMessages[token];\n if (formatter) return formatter({ param, label: label ?? FALLBACK_LABEL });\n\n return token;\n}\n","import type { RuleFn } from \"../../types/validation\";\n\nconst isEmpty = (value: unknown): boolean =>\n value == null || value === \"\" || (Array.isArray(value) && value.length === 0);\n\nconst asLength = (value: unknown): number =>\n typeof value === \"string\" || Array.isArray(value) ? value.length : String(value ?? \"\").length;\n\nconst toNumber = (value: unknown): number | null => {\n if (typeof value === \"number\") return Number.isNaN(value) ? null : value;\n if (typeof value === \"string\" && value.trim() !== \"\") {\n const n = Number(value);\n return Number.isNaN(n) ? null : n;\n }\n return null;\n};\n\nconst toTime = (value: unknown): number | null => {\n if (value == null || value === \"\") return null;\n const d = value instanceof Date ? value : new Date(value as string);\n const t = d.getTime();\n return Number.isNaN(t) ? null : t;\n};\n\n/** A `{ start, end }` range value → whole-day span, or null when incomplete. */\nconst rangeSpanDays = (value: unknown): number | null => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const { start, end } = value as { start?: unknown; end?: unknown };\n const s = toTime(start);\n const e = toTime(end);\n if (s == null || e == null) return null;\n return Math.abs(Math.round((e - s) / 86_400_000)) + 1;\n};\n\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst URL_RE = /^(https?:\\/\\/)[^\\s.]+\\.\\S{2,}$/i;\n\nfunction toRegExp(param: unknown): RegExp | null {\n if (param instanceof RegExp) return param;\n if (typeof param === \"string\") {\n try {\n return new RegExp(param);\n } catch {\n return null;\n }\n }\n if (param && typeof param === \"object\" && \"value\" in param) {\n const { value, flags } = param as { value: string | RegExp; flags?: string };\n if (value instanceof RegExp) return value;\n try {\n return new RegExp(value, flags);\n } catch {\n return null;\n }\n }\n return null;\n}\n\n/**\n * Built-in rules. Each returns a token (rule name) on failure or `null` on\n * success; the resolver turns the token into a user-facing message. Rules other\n * than `required` skip empty values so `required` owns that error.\n *\n * `validate` is special: its param is a function `(value, allValues) => string |\n * boolean | null | Promise<…>`; a string is the message, `false` a generic\n * failure, `true` / `null` a pass.\n */\nexport const builtInRules: Record<string, RuleFn> = {\n required: (value, param) => {\n if (param === false) return null;\n return isEmpty(value) ? \"required\" : null;\n },\n minLength: (value, param) => {\n if (typeof param !== \"number\" || isEmpty(value)) return null;\n return asLength(value) < param ? \"minLength\" : null;\n },\n maxLength: (value, param) => {\n if (typeof param !== \"number\" || isEmpty(value)) return null;\n return asLength(value) > param ? \"maxLength\" : null;\n },\n minItems: (value, param) => {\n if (typeof param !== \"number\" || !Array.isArray(value)) return null;\n return value.length < param ? \"minItems\" : null;\n },\n maxItems: (value, param) => {\n if (typeof param !== \"number\" || !Array.isArray(value)) return null;\n return value.length > param ? \"maxItems\" : null;\n },\n email: (value, param) => {\n if (param === false || isEmpty(value)) return null;\n return EMAIL_RE.test(String(value)) ? null : \"email\";\n },\n url: (value, param) => {\n if (param === false || isEmpty(value)) return null;\n return URL_RE.test(String(value)) ? null : \"url\";\n },\n pattern: (value, param) => {\n if (isEmpty(value)) return null;\n const re = toRegExp(param);\n if (!re) return null;\n return re.test(String(value)) ? null : \"pattern\";\n },\n integer: (value, param) => {\n if (param === false || isEmpty(value)) return null;\n const n = toNumber(value);\n return n != null && Number.isInteger(n) ? null : \"integer\";\n },\n min: (value, param) => {\n if (typeof param !== \"number\" || isEmpty(value)) return null;\n const n = toNumber(value);\n return n != null && n < param ? \"min\" : null;\n },\n max: (value, param) => {\n if (typeof param !== \"number\" || isEmpty(value)) return null;\n const n = toNumber(value);\n return n != null && n > param ? \"max\" : null;\n },\n minDate: (value, param) => {\n if (isEmpty(value)) return null;\n const v = toTime(value);\n const p = toTime(param);\n return v != null && p != null && v < p ? \"minDate\" : null;\n },\n maxDate: (value, param) => {\n if (isEmpty(value)) return null;\n const v = toTime(value);\n const p = toTime(param);\n return v != null && p != null && v > p ? \"maxDate\" : null;\n },\n minRangeDays: (value, param) => {\n if (typeof param !== \"number\") return null;\n const span = rangeSpanDays(value);\n return span != null && span < param ? \"minRangeDays\" : null;\n },\n maxRangeDays: (value, param) => {\n if (typeof param !== \"number\") return null;\n const span = rangeSpanDays(value);\n return span != null && span > param ? \"maxRangeDays\" : null;\n },\n oneOf: (value, param) => {\n if (isEmpty(value) || !Array.isArray(param)) return null;\n return param.includes(value) ? null : \"oneOf\";\n },\n equals: (value, param, allValues) => {\n if (isEmpty(value)) return null;\n const target =\n param && typeof param === \"object\" && \"field\" in param\n ? allValues[(param as { field: string }).field]\n : param;\n // biome-ignore lint/suspicious/noDoubleEquals: intentional loose compare for form values\n return value == target ? null : \"equals\";\n },\n validate: (value, param, allValues) => {\n if (typeof param !== \"function\") return null;\n const out = (param as (v: unknown, all: Record<string, unknown>) => unknown)(value, allValues);\n if (out instanceof Promise) {\n return out.then((r) =>\n typeof r === \"string\" ? r : r === false ? \"validate\" : null,\n ) as unknown as string | null;\n }\n return typeof out === \"string\" ? out : out === false ? \"validate\" : null;\n },\n};\n\nconst registry = new Map<string, RuleFn>(Object.entries(builtInRules));\n\n/**\n * Register a validation rule for the built-in resolver. A field opts in by\n * adding a key of the same name to its `validation` config.\n *\n * @experimental The rule API may change before 1.0.\n */\nexport function registerRule(name: string, fn: RuleFn): void {\n registry.set(name, fn);\n}\n\nexport function getRule(name: string): RuleFn | undefined {\n return registry.get(name);\n}\n\nexport function ruleNames(): string[] {\n return [...registry.keys()];\n}\n","import { __DEV__, warnOnce } from \"../../internal/dev\";\nimport type { FieldsetConfig } from \"../../types/config\";\nimport type {\n FieldError,\n ValidationContext,\n ValidationResolver,\n ValidationResult,\n} from \"../../types/validation\";\nimport { evalCondition } from \"../config/conditions\";\nimport { resolveMessage } from \"./messages\";\nimport { getRule } from \"./rules\";\n\n/** A synchronous resolver — the built-in resolver's return type when no rule is async. */\nexport type SyncResolver = (\n values: Record<string, unknown>,\n config: FieldsetConfig,\n context: ValidationContext,\n) => ValidationResult;\n\ninterface Pending {\n field: string;\n rule: string;\n param: unknown;\n label: string | undefined;\n overrides: Record<string, string> | undefined;\n token: string | null | Promise<string | null>;\n}\n\n/**\n * The default, rule-based {@link ValidationResolver}. For every visible field\n * with a `validation` block, each key (other than `messages`) is looked up in\n * the rule registry and run against the field's current value. Fields whose\n * `when` condition is false are skipped. Returns synchronously unless a rule\n * (e.g. `validate`) resolves asynchronously.\n */\nexport function createRuleResolver(): ValidationResolver {\n return (values, config): ValidationResult | Promise<ValidationResult> => {\n const pending: Pending[] = [];\n\n for (const field of config.fields) {\n const validation = field.validation;\n if (!validation) continue;\n if (!evalCondition(field.when, values)) continue;\n\n const value = values[field.name];\n\n for (const key of Object.keys(validation)) {\n if (key === \"messages\") continue;\n\n const param = (validation as Record<string, unknown>)[key];\n if (param === undefined || param === false) continue;\n\n const rule = getRule(key);\n if (!rule) {\n if (__DEV__) {\n warnOnce(`No validator registered for rule \"${key}\" (field \"${field.name}\").`);\n }\n continue;\n }\n\n pending.push({\n field: field.name,\n rule: key,\n param,\n label: field.label,\n overrides: validation.messages as Record<string, string> | undefined,\n token: rule(value, param, values),\n });\n }\n }\n\n const collect = (settled: Array<string | null>): ValidationResult => {\n const result: ValidationResult = {};\n pending.forEach((p, i) => {\n const token = settled[i];\n if (token == null) return;\n const bucket = result[p.field] ?? [];\n bucket.push({\n rule: p.rule,\n message: resolveMessage(token, p.param, p.label, p.overrides),\n });\n result[p.field] = bucket;\n });\n return result;\n };\n\n if (pending.some((p) => p.token instanceof Promise)) {\n return Promise.all(pending.map((p) => Promise.resolve(p.token))).then(collect);\n }\n return collect(pending.map((p) => p.token as string | null));\n };\n}\n\n/** Shared default instance. */\nexport const defaultResolver: ValidationResolver = /* @__PURE__ */ createRuleResolver();\n\n// re-export for convenience\nexport type { FieldError };\n","import type { FieldStatus } from \"../../types/state\";\nimport type { FieldError, ValidationResult } from \"../../types/validation\";\n\n/** Internal state: everything the fieldset tracks except `values`. */\nexport interface MetaState {\n touched: Record<string, boolean>;\n errors: ValidationResult;\n validating: boolean;\n /** True once any validation run has completed — distinguishes \"idle\" from \"valid\". */\n everValidated: boolean;\n}\n\nexport const initialMeta: MetaState = {\n touched: {},\n errors: {},\n validating: false,\n everValidated: false,\n};\n\nexport type MetaAction =\n | { type: \"touch\"; name: string }\n | { type: \"touchAll\"; names: string[] }\n | { type: \"validation:start\" }\n | { type: \"validation:field\"; name: string; errors: FieldError[] }\n | { type: \"validation:all\"; result: ValidationResult }\n | { type: \"reset\" };\n\nexport function metaReducer(state: MetaState, action: MetaAction): MetaState {\n switch (action.type) {\n case \"touch\": {\n if (state.touched[action.name]) return state;\n return { ...state, touched: { ...state.touched, [action.name]: true } };\n }\n case \"touchAll\": {\n const touched = { ...state.touched };\n for (const name of action.names) touched[name] = true;\n return { ...state, touched };\n }\n case \"validation:start\":\n return { ...state, validating: true };\n case \"validation:field\": {\n const errors = { ...state.errors };\n if (action.errors.length > 0) errors[action.name] = action.errors;\n else delete errors[action.name];\n return { ...state, errors, validating: false, everValidated: true };\n }\n case \"validation:all\":\n return { ...state, errors: action.result, validating: false, everValidated: true };\n case \"reset\":\n return { ...initialMeta };\n default:\n return state;\n }\n}\n\n/** Derive the form-level status roll-up. */\nexport function deriveStatus(meta: MetaState): FieldStatus {\n if (meta.validating) return \"validating\";\n if (!meta.everValidated) return \"idle\";\n return Object.keys(meta.errors).length > 0 ? \"invalid\" : \"valid\";\n}\n\n/** Shallow per-field dirty map: current value differs from initial. */\nexport function computeDirty(\n values: Record<string, unknown>,\n initial: Record<string, unknown>,\n): Record<string, boolean> {\n const dirty: Record<string, boolean> = {};\n for (const key of Object.keys(values)) {\n if (!Object.is(values[key], initial[key])) dirty[key] = true;\n }\n return dirty;\n}\n","import { useCallback, useMemo, useReducer, useRef } from \"react\";\nimport type { FormEvent } from \"react\";\nimport type { FieldsetConfig } from \"../../types/config\";\nimport type { FieldRegistry } from \"../../types/control\";\nimport type { FieldStatus, FieldsetState } from \"../../types/state\";\nimport type {\n FieldError,\n ValidationResolver,\n ValidationResult,\n ValidationTrigger,\n} from \"../../types/validation\";\nimport { type NormalizedFieldsetConfig, normalizeConfig } from \"../config/normalize\";\nimport { defaultResolver } from \"../validation/resolver\";\nimport { computeDirty, deriveStatus, initialMeta, metaReducer } from \"./reducer\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { useLatestRef } from \"./use-latest-ref\";\n\ntype Values = Record<string, unknown>;\n\n/** Shared empty errors array so unchanged field slices keep a stable identity. */\nconst NO_ERRORS: readonly FieldError[] = Object.freeze([]);\n\nexport interface UseFieldsetStateOptions<TValues extends Values = Values> {\n /** Controlled values. Omit and pass `defaultValue` for uncontrolled. */\n value?: TValues;\n defaultValue?: Partial<TValues>;\n onChange?: (values: TValues) => void;\n /** Called after a full validation pass (`validate()` / submit), not per blur. */\n onValidationChange?: (result: ValidationResult) => void;\n resolver?: ValidationResolver;\n registry?: FieldRegistry;\n /** `\"blur\"` (default) also always validates on submit. */\n validateOn?: ValidationTrigger;\n}\n\n/** Everything a renderer needs for one field. Handlers are referentially stable. */\nexport interface FieldSlice {\n name: string;\n value: unknown;\n errors: FieldError[];\n touched: boolean;\n dirty: boolean;\n setValue: (value: unknown) => void;\n markTouched: () => void;\n}\n\nexport interface UseFieldsetStateReturn<TValues extends Values = Values> {\n config: NormalizedFieldsetConfig;\n state: FieldsetState;\n values: TValues;\n errors: ValidationResult;\n touched: Record<string, boolean>;\n dirty: Record<string, boolean>;\n status: FieldStatus;\n isValid: boolean;\n setFieldValue: (name: string, value: unknown) => void;\n setValues: (values: TValues) => void;\n reset: (next?: Partial<TValues>) => void;\n validate: () => Promise<ValidationResult>;\n handleSubmit: (\n onValid: (values: TValues) => void,\n onInvalid?: (result: ValidationResult) => void,\n ) => (event?: FormEvent) => void;\n getFieldProps: (name: string) => FieldSlice;\n}\n\nfunction computeInitialValues(\n config: NormalizedFieldsetConfig,\n registry: FieldRegistry | undefined,\n provided: Values | undefined,\n): Values {\n const out: Values = {};\n for (const field of config.fields) {\n if (provided && Object.prototype.hasOwnProperty.call(provided, field.name)) {\n out[field.name] = provided[field.name];\n } else if (field.defaultValue !== undefined) {\n out[field.name] = field.defaultValue;\n } else {\n out[field.name] = registry?.get(field.type)?.defaultValue ?? \"\";\n }\n }\n return out;\n}\n\ninterface RunScope {\n field?: string;\n trigger: ValidationTrigger;\n values?: Values;\n}\n\n/**\n * The form engine behind `<Fieldset>`, usable directly when you want to own the\n * markup. Manages values (controlled or uncontrolled), touched/dirty tracking,\n * and validation through a pluggable resolver.\n */\nexport function useFieldsetState<TValues extends Values = Values>(\n config: FieldsetConfig,\n options: UseFieldsetStateOptions<TValues> = {},\n): UseFieldsetStateReturn<TValues> {\n const {\n value,\n defaultValue,\n onChange,\n onValidationChange,\n resolver = defaultResolver,\n registry,\n validateOn = \"blur\",\n } = options;\n\n const normalized = useMemo(() => normalizeConfig(config, registry), [config, registry]);\n\n const initialRef = useRef<Values | null>(null);\n if (initialRef.current === null) {\n initialRef.current = computeInitialValues(\n normalized,\n registry,\n (value ?? defaultValue) as Values | undefined,\n );\n }\n\n const [rawValues, setRawValues] = useControllableState<Values>({\n value: value as Values | undefined,\n defaultValue: initialRef.current,\n onChange: onChange as ((v: Values) => void) | undefined,\n });\n\n const values = useMemo(() => ({ ...initialRef.current, ...rawValues }) as TValues, [rawValues]);\n\n const [meta, dispatch] = useReducer(metaReducer, initialMeta);\n\n const valuesRef = useLatestRef<Values>(values);\n const resolverRef = useLatestRef(resolver);\n const configRef = useLatestRef(config);\n const normalizedRef = useLatestRef(normalized);\n const registryRef = useLatestRef(registry);\n const validateOnRef = useLatestRef(validateOn);\n const onValidationChangeRef = useLatestRef(onValidationChange);\n const runIdRef = useRef(0);\n\n const runValidation = useCallback(async (scope: RunScope): Promise<ValidationResult> => {\n const runId = ++runIdRef.current;\n const input = scope.values ?? valuesRef.current;\n dispatch({ type: \"validation:start\" });\n\n const result = await resolverRef.current(input, configRef.current, {\n trigger: scope.trigger,\n ...(scope.field ? { changedField: scope.field } : {}),\n });\n\n if (runId !== runIdRef.current) return result; // superseded\n\n if (scope.field) {\n dispatch({ type: \"validation:field\", name: scope.field, errors: result[scope.field] ?? [] });\n } else {\n dispatch({ type: \"validation:all\", result });\n onValidationChangeRef.current?.(result);\n }\n return result;\n // refs only — safe to keep stable\n }, []);\n\n const setFieldValue = useCallback(\n (name: string, next: unknown) => {\n setRawValues((prev) => ({ ...prev, [name]: next }));\n if (validateOnRef.current === \"change\") {\n void runValidation({\n field: name,\n trigger: \"change\",\n values: { ...valuesRef.current, [name]: next },\n });\n }\n },\n [setRawValues, runValidation],\n );\n\n const setValues = useCallback((next: TValues) => setRawValues(next as Values), [setRawValues]);\n\n const markTouched = useCallback(\n (name: string) => {\n dispatch({ type: \"touch\", name });\n if (validateOnRef.current === \"blur\") {\n void runValidation({ field: name, trigger: \"blur\" });\n }\n },\n [runValidation],\n );\n\n const validate = useCallback(() => runValidation({ trigger: \"submit\" }), [runValidation]);\n\n const handleSubmit = useCallback(\n (onValid: (values: TValues) => void, onInvalid?: (result: ValidationResult) => void) =>\n async (event?: FormEvent) => {\n event?.preventDefault?.();\n dispatch({\n type: \"touchAll\",\n names: normalizedRef.current.fields.map((f) => f.name),\n });\n const result = await runValidation({ trigger: \"submit\" });\n if (Object.keys(result).length === 0) onValid(valuesRef.current as TValues);\n else onInvalid?.(result);\n },\n [runValidation],\n );\n\n const reset = useCallback(\n (next?: Partial<TValues>) => {\n const fresh = computeInitialValues(\n normalizedRef.current,\n registryRef.current,\n next as Values | undefined,\n );\n initialRef.current = fresh;\n setRawValues(fresh);\n dispatch({ type: \"reset\" });\n runIdRef.current++;\n },\n [setRawValues],\n );\n\n // Stable per-field handler identities so memoized rows don't re-render.\n const handlerCacheRef = useRef(\n new Map<string, { setValue: (v: unknown) => void; markTouched: () => void }>(),\n );\n const getHandlers = useCallback(\n (name: string) => {\n const cache = handlerCacheRef.current;\n let entry = cache.get(name);\n if (!entry) {\n entry = {\n setValue: (v: unknown) => setFieldValue(name, v),\n markTouched: () => markTouched(name),\n };\n cache.set(name, entry);\n }\n return entry;\n },\n [setFieldValue, markTouched],\n );\n\n const dirty = useMemo(() => computeDirty(values, initialRef.current ?? {}), [values]);\n const status = deriveStatus(meta);\n const isValid = Object.keys(meta.errors).length === 0;\n\n const getFieldProps = useCallback(\n (name: string): FieldSlice => {\n const handlers = getHandlers(name);\n return {\n name,\n value: (values as Values)[name],\n errors: meta.errors[name] ?? (NO_ERRORS as FieldError[]),\n touched: meta.touched[name] ?? false,\n dirty: dirty[name] ?? false,\n setValue: handlers.setValue,\n markTouched: handlers.markTouched,\n };\n },\n [values, meta.errors, meta.touched, dirty, getHandlers],\n );\n\n const state: FieldsetState = useMemo(\n () => ({\n values: values as Values,\n touched: meta.touched,\n dirty,\n errors: meta.errors,\n status,\n }),\n [values, meta.touched, dirty, meta.errors, status],\n );\n\n return {\n config: normalized,\n state,\n values,\n errors: meta.errors,\n touched: meta.touched,\n dirty,\n status,\n isValid,\n setFieldValue,\n setValues,\n reset,\n validate,\n handleSubmit,\n getFieldProps,\n };\n}\n","import {\n type CSSProperties,\n type ReactNode,\n createContext,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { cx } from \"../internal/cx\";\nimport type { ColumnSpec } from \"../types/config\";\nimport {\n DEFAULT_MIN_COL,\n type GridResolution,\n clampSpan,\n pickSpan,\n resolveGrid,\n} from \"./resolve-columns\";\n\nconst useBrowserLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n/** CSS custom properties are set inline; the stylesheet consumes them. */\ntype CssVars = CSSProperties & Record<`--${string}`, string | number>;\n\nconst GridContext = createContext<GridResolution>({ count: 1, tier: \"desktop\" });\n\nexport interface FieldGridProps {\n columns: ColumnSpec;\n /** Minimum comfortable width for one column, in px. */\n minColWidth?: number | undefined;\n /** CSS length for the gap; falls back to the `--orynn-grid-gap` token. */\n gap?: string | undefined;\n className?: string | undefined;\n children: ReactNode;\n}\n\n/**\n * Responsive grid that measures its own width and picks a column count from the\n * `columns` config. Thresholds scale with the requested counts, and the count\n * updates live when the config or the available width changes.\n */\nexport function FieldGrid({ columns, minColWidth, gap, className, children }: FieldGridProps) {\n const ref = useRef<HTMLDivElement>(null);\n const per = minColWidth && minColWidth > 0 ? minColWidth : DEFAULT_MIN_COL;\n const { desktop, tablet, mobile } = columns;\n const [grid, setGrid] = useState<GridResolution>(() => resolveGrid(0, columns, per));\n\n useBrowserLayoutEffect(() => {\n const el = ref.current;\n if (!el) return;\n const cols = { desktop, tablet, mobile };\n\n const apply = (width: number) => {\n const next = resolveGrid(width, cols, per);\n setGrid((cur) => (cur.count === next.count && cur.tier === next.tier ? cur : next));\n };\n\n apply(el.getBoundingClientRect().width);\n\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const box = entry.contentBoxSize?.[0];\n apply(box ? box.inlineSize : entry.contentRect.width);\n }\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [desktop, tablet, mobile, per]);\n\n const style: CssVars = {\n \"--orynn-cols\": grid.count,\n ...(gap ? { \"--orynn-grid-gap\": gap } : {}),\n };\n\n return (\n <div ref={ref} className={cx(\"orynn-grid\", className)} style={style}>\n <GridContext.Provider value={grid}>\n <div className=\"orynn-grid__track\">{children}</div>\n </GridContext.Provider>\n </div>\n );\n}\n\nexport interface FieldGridItemProps {\n /** Per-tier column span; falls back across tiers, then to 1. */\n span?: Partial<ColumnSpec> | undefined;\n children: ReactNode;\n}\n\n/** One cell of a {@link FieldGrid}, optionally spanning multiple columns. */\nexport function FieldGridItem({ span, children }: FieldGridItemProps) {\n const { count, tier } = useContext(GridContext);\n const effective = span ? clampSpan(pickSpan(span, tier), count) : 1;\n\n if (effective <= 1) return <>{children}</>;\n\n return (\n <div className=\"orynn-grid__item\" style={{ \"--orynn-span\": effective } as CssVars}>\n {children}\n </div>\n );\n}\n","import { memo, useId } from \"react\";\nimport { Field } from \"../controls/Field/Field\";\nimport type { FieldSlice } from \"../core/state/use-fieldset-state\";\nimport { invariant } from \"../internal/dev\";\nimport type { FieldConfig } from \"../types/config\";\nimport type { FieldRegistry } from \"../types/control\";\n\nconst noop = () => {};\n\nexport interface FieldRendererProps {\n field: FieldConfig;\n registry: FieldRegistry;\n slice: FieldSlice;\n disabled?: boolean;\n}\n\nfunction FieldRendererImpl({ field, registry, slice, disabled }: FieldRendererProps) {\n const registration = registry.get(field.type);\n invariant(\n registration,\n `No control registered for field type \"${field.type}\" (field \"${field.name}\").`,\n );\n const fallbackId = useId();\n if (!registration) return null;\n\n const Control = registration.component;\n const required = field.validation?.required === true;\n const isDisabled = disabled === true || field.disabled === true;\n\n const value = registration.parseValue ? registration.parseValue(slice.value) : slice.value;\n const messages = slice.errors.map((e) => e.message);\n\n const handleChange = (next: unknown) => {\n slice.setValue(registration.formatValue ? registration.formatValue(next) : next);\n };\n\n // Self-contained components render their own <Field>; pass label / errors.\n // The wrapper catches focusout bubbling from whatever inner element the\n // control uses, so `validateOn=\"blur\"` works for every field type without\n // each adapter having to thread an onBlur through.\n if (registration.selfContained) {\n return (\n <div\n style={{ display: \"contents\" }}\n onBlur={(e) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node | null)) slice.markTouched();\n }}\n >\n <Control\n id={fallbackId}\n name={field.name}\n value={value}\n onChange={handleChange}\n onBlur={slice.markTouched}\n onFocus={noop}\n disabled={isDisabled}\n readOnly={field.readOnly === true}\n required={required}\n invalid={messages.length > 0}\n label={field.label}\n description={field.description}\n errors={messages}\n config={field}\n />\n </div>\n );\n }\n\n return (\n <Field\n label={field.label}\n description={field.description}\n error={messages}\n required={required}\n disabled={isDisabled}\n >\n {({ id, describedById, invalid }) => (\n <Control\n id={id}\n name={field.name}\n value={value}\n onChange={handleChange}\n onBlur={slice.markTouched}\n onFocus={noop}\n disabled={isDisabled}\n readOnly={field.readOnly === true}\n required={required}\n invalid={invalid}\n describedById={describedById}\n config={field}\n />\n )}\n </Field>\n );\n}\n\n/**\n * Resolves a field config to its registered control. Wraps non-self-contained\n * controls in `<Field>`. Memoized on the parts of the slice that affect output\n * so that changing one field in a large fieldset does not re-render the others.\n */\nexport const FieldRenderer = /* @__PURE__ */ memo(\n FieldRendererImpl,\n (prev, next) =>\n prev.field === next.field &&\n prev.registry === next.registry &&\n prev.disabled === next.disabled &&\n prev.slice.value === next.slice.value &&\n prev.slice.touched === next.slice.touched &&\n prev.slice.errors === next.slice.errors &&\n prev.slice.setValue === next.slice.setValue &&\n prev.slice.markTouched === next.slice.markTouched,\n);\n","import { evalCondition } from \"../core/config/conditions\";\nimport { defaultRegistry } from \"../core/registry/registry\";\nimport type { UseFieldsetStateReturn } from \"../core/state/use-fieldset-state\";\nimport { cx } from \"../internal/cx\";\nimport { FieldGrid, FieldGridItem } from \"../layout/FieldGrid\";\nimport type { FieldRegistry } from \"../types/control\";\nimport { FieldRenderer } from \"./FieldRenderer\";\n\nexport interface FieldsetViewProps {\n /** The return of `useFieldsetState`. */\n state: UseFieldsetStateReturn;\n registry?: FieldRegistry;\n disabled?: boolean;\n className?: string;\n id?: string;\n}\n\n/**\n * Presentational half of `<Fieldset>` — renders the grid of fields from an\n * existing `useFieldsetState` instance. Used by `<Fieldset>` and `<Form>` so\n * they never run the state hook twice.\n */\nexport function FieldsetView({ state, registry, disabled, className, id }: FieldsetViewProps) {\n const activeRegistry = registry ?? defaultRegistry;\n const { columns, minColWidth, gap, legend, fields, id: configId } = state.config;\n const visible = fields.filter((f) => evalCondition(f.when, state.values));\n\n return (\n <fieldset\n className={cx(\"orynn-fieldset\", className)}\n id={id ?? configId}\n disabled={disabled || undefined}\n >\n {legend != null && <legend className=\"orynn-fieldset__legend\">{legend}</legend>}\n <FieldGrid columns={columns} minColWidth={minColWidth} gap={gap}>\n {visible.map((field) => (\n <FieldGridItem key={field.name} span={field.layout}>\n <FieldRenderer\n field={field}\n registry={activeRegistry}\n slice={state.getFieldProps(field.name)}\n disabled={disabled === true}\n />\n </FieldGridItem>\n ))}\n </FieldGrid>\n </fieldset>\n );\n}\n","import { Checkbox } from \"../controls/Checkbox/Checkbox\";\nimport { CheckboxGroup } from \"../controls/Checkbox/CheckboxGroup\";\nimport { DatePicker } from \"../controls/DatePicker/DatePicker\";\nimport { Dropdown } from \"../controls/Dropdown/Dropdown\";\nimport { Input } from \"../controls/Input/Input\";\nimport { NumberField } from \"../controls/NumberField/NumberField\";\nimport { RadioGroup } from \"../controls/Radio/Radio\";\nimport { Textarea } from \"../controls/Textarea/Textarea\";\nimport type {\n CheckboxFieldConfig,\n CheckboxGroupFieldConfig,\n DateFieldConfig,\n DropdownFieldConfig,\n InputFieldConfig,\n NumberFieldConfig,\n RadioFieldConfig,\n TextareaFieldConfig,\n} from \"../types/config\";\nimport type {\n ControlComponent,\n ControlProps,\n FieldRegistration,\n FieldRegistry,\n} from \"../types/control\";\n\n// biome-ignore lint/suspicious/noExplicitAny: adapters bridge heterogeneous value types\ntype P = ControlProps<any>;\n\nconst str = (v: unknown) => (typeof v === \"string\" ? v : v == null ? \"\" : String(v));\nconst toISO = (d: Date) =>\n `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}-${String(d.getDate()).padStart(2, \"0\")}`;\n\n/** Common props every self-contained adapter forwards. */\nfunction shell(p: P) {\n const c = p.config as {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"outline\" | \"filled\" | \"flushed\" | \"unstyled\";\n floatingLabel?: boolean;\n };\n return {\n id: p.id,\n name: p.name,\n label: p.label,\n description: p.description,\n error: p.errors,\n required: p.required,\n disabled: p.disabled,\n readOnly: p.readOnly,\n size: c.size,\n variant: c.variant,\n floatingLabel: c.floatingLabel,\n };\n}\n\nconst InputControl: ControlComponent = (p: P) => {\n const c = p.config as InputFieldConfig;\n return (\n <Input\n {...shell(p)}\n type={c.inputType ?? \"text\"}\n prefix={c.prefix}\n suffix={c.suffix}\n addonBefore={c.addonBefore}\n addonAfter={c.addonAfter}\n clearable={c.clearable}\n maxLength={c.maxLength}\n showCount={c.showCount}\n debounce={c.debounce}\n inputMode={c.inputMode}\n pattern={c.pattern}\n placeholder={c.placeholder}\n value={str(p.value)}\n onChange={(v) => p.onChange(v)}\n {...c.props}\n />\n );\n};\n\nconst TextareaControl: ControlComponent = (p: P) => {\n const c = p.config as TextareaFieldConfig;\n return (\n <Textarea\n {...shell(p)}\n minRows={c.rows}\n maxRows={c.maxRows}\n autoResize={c.autoResize}\n resize={c.resize}\n submitOnEnter={c.submitOnEnter}\n maxLength={c.maxLength}\n showCount={c.showCount}\n placeholder={c.placeholder}\n value={str(p.value)}\n onChange={(v) => p.onChange(v)}\n {...c.props}\n />\n );\n};\n\nconst NumberFieldControl: ControlComponent = (p: P) => {\n const c = p.config as NumberFieldConfig;\n return (\n <NumberField\n {...shell(p)}\n min={c.min}\n max={c.max}\n step={c.step}\n precision={c.precision}\n decimalScale={c.decimalScale}\n currency={c.currency}\n style={c.style}\n locale={c.locale}\n prefix={c.prefix}\n suffix={c.suffix}\n thousandSeparator={c.thousandSeparator}\n allowNegative={c.allowNegative}\n clampBehavior={c.clampBehavior}\n hideControls={c.hideControls}\n placeholder={c.placeholder}\n value={typeof p.value === \"number\" ? p.value : null}\n onChange={(v) => p.onChange(v)}\n {...c.props}\n />\n );\n};\n\nconst DropdownControl: ControlComponent = (p: P) => {\n const c = p.config as DropdownFieldConfig;\n const value = c.multiple\n ? Array.isArray(p.value)\n ? p.value\n : []\n : Array.isArray(p.value)\n ? (p.value[0] ?? \"\")\n : str(p.value);\n return (\n <Dropdown\n {...shell(p)}\n options={c.options}\n searchable={c.searchable}\n multiple={c.multiple}\n clearable={c.clearable}\n creatable={c.creatable}\n maxValues={c.maxValues}\n hidePickedOptions={c.hidePickedOptions}\n showSelectAll={c.showSelectAll}\n searchDebounce={c.searchDebounce}\n placeholder={c.placeholder}\n value={value}\n onChange={(v) => p.onChange(v ?? (c.multiple ? [] : \"\"))}\n {...c.props}\n />\n );\n};\n\nconst DateControl: ControlComponent = (p: P) => {\n const c = p.config as DateFieldConfig;\n const toDate = (x: string | Date | undefined) =>\n x == null ? undefined : x instanceof Date ? x : new Date(x);\n const mode = c.mode ?? \"single\";\n const common = {\n ...shell(p),\n format: c.format,\n precision: c.precision,\n minDate: toDate(c.minDate),\n maxDate: toDate(c.maxDate),\n showToday: c.showToday,\n clearable: c.clearable,\n placeholder: c.placeholder,\n presets: c.presets as never,\n ...c.props,\n };\n\n if (mode === \"range\") {\n const v = (p.value ?? {}) as { start?: string; end?: string };\n return (\n <DatePicker\n {...common}\n mode=\"range\"\n value={{ start: v.start ?? null, end: v.end ?? null }}\n onChange={(r) =>\n p.onChange({\n start: r.start ? toISO(r.start) : \"\",\n end: r.end ? toISO(r.end) : \"\",\n })\n }\n />\n );\n }\n if (mode === \"multiple\") {\n return (\n <DatePicker\n {...common}\n mode=\"multiple\"\n value={Array.isArray(p.value) ? (p.value as string[]) : []}\n onChange={(arr) => p.onChange(arr.map(toISO))}\n />\n );\n }\n return (\n <DatePicker\n {...common}\n value={typeof p.value === \"string\" && p.value ? p.value : null}\n onChange={(d) => p.onChange(d instanceof Date ? toISO(d) : \"\")}\n />\n );\n};\n\nconst CheckboxControl: ControlComponent = (p: P) => {\n const c = p.config as CheckboxFieldConfig;\n return (\n <div className=\"orynn-field\">\n <Checkbox\n id={p.id}\n name={p.name}\n label={c.checkboxLabel ?? c.label}\n description={c.description}\n checked={Boolean(p.value)}\n onChange={(v) => p.onChange(v)}\n disabled={p.disabled}\n required={p.required}\n invalid={(p.errors?.length ?? 0) > 0}\n {...c.props}\n />\n {p.errors?.[0] && (\n <p className=\"orynn-field__error\" role=\"alert\">\n {p.errors[0]}\n </p>\n )}\n </div>\n );\n};\n\nconst CheckboxGroupControl: ControlComponent = (p: P) => {\n const c = p.config as CheckboxGroupFieldConfig;\n return (\n <CheckboxGroup\n id={p.id}\n name={p.name}\n label={p.label}\n description={p.description}\n error={p.errors}\n required={p.required}\n disabled={p.disabled}\n options={c.options.map((o) => ({\n label: o.label,\n value: o.value,\n description: o.description,\n icon: o.icon,\n disabled: o.disabled,\n }))}\n orientation={c.orientation}\n columns={c.columns}\n showSelectAll={c.showSelectAll}\n min={c.min}\n max={c.max}\n value={Array.isArray(p.value) ? p.value : []}\n onChange={(v) => p.onChange(v)}\n {...c.props}\n />\n );\n};\n\nconst RadioControl: ControlComponent = (p: P) => {\n const c = p.config as RadioFieldConfig;\n return (\n <RadioGroup\n id={p.id}\n name={p.name}\n label={p.label}\n description={p.description}\n error={p.errors}\n required={p.required}\n disabled={p.disabled}\n options={c.options.map((o) => ({\n label: o.label,\n value: o.value,\n description: o.description,\n icon: o.icon,\n disabled: o.disabled,\n }))}\n orientation={c.orientation}\n columns={c.columns}\n variant={c.radioVariant}\n value={typeof p.value === \"string\" && p.value ? p.value : null}\n onChange={(v) => p.onChange(v)}\n {...c.props}\n />\n );\n};\n\nconst needsOptions = (config: unknown) =>\n Array.isArray((config as { options?: unknown }).options) ? null : \"requires an `options` array\";\n\n/** Seed a registry with the built-in field types. Idempotent. */\nexport function registerBuiltins(registry: FieldRegistry): void {\n const add = (\n type: string,\n component: ControlComponent,\n extra: Partial<FieldRegistration> = {},\n ) => {\n if (!registry.has(type)) {\n registry.register(type, { component, selfContained: true, defaultValue: \"\", ...extra });\n }\n };\n\n add(\"input\", InputControl);\n add(\"textarea\", TextareaControl);\n add(\"number\", NumberFieldControl, {\n parseValue: (raw) =>\n typeof raw === \"number\" ? raw : raw === \"\" || raw == null ? null : Number(raw),\n });\n add(\"dropdown\", DropdownControl, { validateConfig: needsOptions });\n add(\"date\", DateControl);\n add(\"checkbox\", CheckboxControl, { defaultValue: false });\n add(\"checkbox-group\", CheckboxGroupControl, { defaultValue: [], validateConfig: needsOptions });\n add(\"radio\", RadioControl, { validateConfig: needsOptions });\n}\n\nlet seeded = false;\n\n/**\n * Register the built-ins on the module-global registry exactly once, lazily —\n * so importing a standalone control never pulls the fieldset field types.\n */\nexport function ensureBuiltins(defaultRegistry: FieldRegistry): void {\n if (seeded) return;\n seeded = true;\n registerBuiltins(defaultRegistry);\n}\n","import { defaultRegistry } from \"../core/registry/registry\";\nimport { type UseFieldsetStateOptions, useFieldsetState } from \"../core/state/use-fieldset-state\";\nimport type { FieldsetProps } from \"../types/props\";\nimport { FieldsetView } from \"./FieldsetView\";\nimport { ensureBuiltins } from \"./register-builtins\";\n\n/**\n * Renders a form (or a form section) from a `FieldsetConfig`. Controlled when\n * `value` is passed, uncontrolled otherwise. Renders a native `<fieldset>` — so\n * `disabled` cascades to every control — and does not render its own `<form>`;\n * wrap it in one and use `useFieldsetState().handleSubmit`, or use `<Form>`.\n */\nexport function Fieldset<TValues extends Record<string, unknown> = Record<string, unknown>>(\n props: FieldsetProps<TValues>,\n) {\n const {\n config,\n value,\n defaultValue,\n onChange,\n onValidationChange,\n resolver,\n registry,\n validateOn,\n disabled,\n className,\n id,\n } = props;\n\n ensureBuiltins(defaultRegistry);\n const activeRegistry = registry ?? defaultRegistry;\n\n const options: UseFieldsetStateOptions<TValues> = {\n registry: activeRegistry,\n ...(value !== undefined ? { value } : {}),\n ...(defaultValue !== undefined ? { defaultValue } : {}),\n ...(onChange ? { onChange } : {}),\n ...(onValidationChange ? { onValidationChange } : {}),\n ...(resolver ? { resolver } : {}),\n ...(validateOn ? { validateOn } : {}),\n };\n\n const fs = useFieldsetState<TValues>(config, options);\n\n return (\n <FieldsetView\n state={fs as never}\n registry={activeRegistry}\n disabled={disabled === true}\n className={className}\n id={id}\n />\n );\n}\n","import type { FormHTMLAttributes, ReactNode } from \"react\";\nimport { defaultRegistry } from \"../core/registry/registry\";\nimport { type UseFieldsetStateReturn, useFieldsetState } from \"../core/state/use-fieldset-state\";\nimport { cx } from \"../internal/cx\";\nimport type { FieldsetConfig } from \"../types/config\";\nimport type { ValidationResolver, ValidationResult, ValidationTrigger } from \"../types/validation\";\nimport { FieldsetView } from \"./FieldsetView\";\nimport { ensureBuiltins } from \"./register-builtins\";\n\ntype Values = Record<string, unknown>;\n\nexport interface FormProps<TValues extends Values = Values>\n extends Omit<\n FormHTMLAttributes<HTMLFormElement>,\n \"onSubmit\" | \"onInvalid\" | \"children\" | \"onChange\" | \"defaultValue\"\n > {\n config: FieldsetConfig;\n value?: TValues;\n defaultValue?: Partial<TValues>;\n onChange?: (values: TValues) => void;\n /** Called with the values when the form passes validation. */\n onSubmit: (values: TValues, fs: UseFieldsetStateReturn<TValues>) => void;\n /** Called with the errors when submit is blocked. */\n onInvalid?: (errors: ValidationResult) => void;\n resolver?: ValidationResolver;\n validateOn?: ValidationTrigger;\n disabled?: boolean;\n /** Content after the fieldset — usually a submit button. Gets `fs`. */\n children?: ReactNode | ((fs: UseFieldsetStateReturn<TValues>) => ReactNode);\n}\n\n/**\n * A `<form>` that owns its state: renders `<Fieldset>` from `config`, and calls\n * `onSubmit(values)` only when validation passes. `children` (or a render\n * function receiving the `useFieldsetState` return) is where the submit button\n * goes.\n *\n * ```tsx\n * <Form config={config} onSubmit={(v) => save(v)}>\n * {(fs) => <button type=\"submit\" disabled={!fs.isValid}>Save</button>}\n * </Form>\n * ```\n */\nexport function Form<TValues extends Values = Values>(props: FormProps<TValues>) {\n const {\n config,\n value,\n defaultValue,\n onChange,\n onSubmit,\n onInvalid,\n resolver,\n validateOn,\n disabled,\n children,\n className,\n ...rest\n } = props;\n\n ensureBuiltins(defaultRegistry);\n\n const fs = useFieldsetState<TValues>(config, {\n registry: defaultRegistry,\n ...(value !== undefined ? { value } : {}),\n ...(defaultValue !== undefined ? { defaultValue } : {}),\n ...(onChange ? { onChange } : {}),\n ...(resolver ? { resolver } : {}),\n ...(validateOn ? { validateOn } : {}),\n });\n\n return (\n <form\n {...rest}\n className={cx(\"orynn-form\", className)}\n noValidate\n onSubmit={fs.handleSubmit(\n (values) => onSubmit(values, fs),\n (errors) => onInvalid?.(errors),\n )}\n >\n <FieldsetView state={fs as never} disabled={disabled} />\n {typeof children === \"function\" ? children(fs) : children}\n </form>\n );\n}\n","import { cx } from \"../../internal/cx\";\n\nexport type ButtonVariant = \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\";\nexport type ButtonSize = \"default\" | \"sm\" | \"lg\" | \"icon\";\nexport type BadgeVariant = \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n\nconst mod = (base: string, key: string, fallback: string) =>\n key === fallback ? undefined : `${base}--${key}`;\n\n/**\n * Class list for a shadcn-style button. Exported so a non-`<button>` element can\n * be styled as one: `<a className={buttonClasses(\"outline\")}>…</a>`.\n */\nexport function buttonClasses(\n variant: ButtonVariant = \"default\",\n size: ButtonSize = \"default\",\n): string {\n return cx(\n \"orynn-button\",\n mod(\"orynn-button\", variant, \"default\"),\n mod(\"orynn-button\", size, \"default\"),\n );\n}\n\n/** Class list for a badge — same idea as {@link buttonClasses}. */\nexport function badgeClasses(variant: BadgeVariant = \"default\"): string {\n return cx(\"orynn-badge\", mod(\"orynn-badge\", variant, \"default\"));\n}\n","import { Slot } from \"radix-ui\";\nimport { type ComponentProps, type ReactNode, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { SpinnerIcon } from \"../../internal/icons\";\nimport { type ButtonSize, type ButtonVariant, buttonClasses } from \"../shared/classes\";\n\nexport interface ButtonProps extends ComponentProps<\"button\"> {\n /** default · secondary · destructive · outline · ghost · link */\n variant?: ButtonVariant;\n /** default (h-9) · sm (h-8) · lg (h-10) · icon (square) */\n size?: ButtonSize;\n /** Render `children` as the button, merging button props/classes onto it. */\n asChild?: boolean;\n /** Show a spinner and disable the button. */\n loading?: boolean;\n /** Replaces the label while `loading`. */\n loadingText?: ReactNode;\n /** Icon before the label (ignored with `asChild`). */\n leftIcon?: ReactNode;\n /** Icon after the label (ignored with `asChild`). */\n rightIcon?: ReactNode;\n /** Stretch to the container width. */\n fullWidth?: boolean;\n}\n\nexport const Button = /* @__PURE__ */ forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n type,\n loading = false,\n loadingText,\n leftIcon,\n rightIcon,\n fullWidth = false,\n disabled,\n children,\n ...props\n },\n ref,\n) {\n const shared = {\n \"data-slot\": \"button\",\n \"data-variant\": variant,\n \"data-size\": size,\n \"data-loading\": loading || undefined,\n \"data-full-width\": fullWidth || undefined,\n className: cx(buttonClasses(variant, size), className),\n ...props,\n };\n\n if (asChild) {\n return (\n <Slot.Root ref={ref} aria-busy={loading || undefined} {...shared}>\n {children}\n </Slot.Root>\n );\n }\n\n return (\n <button\n ref={ref}\n type={type ?? \"button\"}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...shared}\n >\n {loading ? <SpinnerIcon className=\"orynn-button__spinner\" /> : leftIcon}\n {loading && loadingText != null ? loadingText : children}\n {!loading && rightIcon}\n </button>\n );\n});\n\nexport { buttonClasses, type ButtonVariant, type ButtonSize };\n","import { Label as LabelPrimitive } from \"radix-ui\";\nimport { type ComponentPropsWithoutRef, type ReactNode, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\n\nexport interface LabelProps extends ComponentPropsWithoutRef<typeof LabelPrimitive.Root> {\n /** Append a required asterisk. */\n required?: boolean;\n /** Append an \"(optional)\" hint (ignored when `required`). */\n optional?: boolean | ReactNode;\n}\n\nexport const Label = /* @__PURE__ */ forwardRef<HTMLLabelElement, LabelProps>(function Label(\n { className, required, optional, children, ...props },\n ref,\n) {\n return (\n <LabelPrimitive.Root\n ref={ref}\n data-slot=\"label\"\n className={cx(\"orynn-label\", className)}\n {...props}\n >\n {children}\n {required && (\n <span className=\"orynn-label__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n {!required && optional && (\n <span className=\"orynn-label__optional\">{optional === true ? \"(optional)\" : optional}</span>\n )}\n </LabelPrimitive.Root>\n );\n});\n","import { Slot } from \"radix-ui\";\nimport { type ComponentProps, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\n\ntype DivProps = ComponentProps<\"div\">;\n\nexport interface CardProps extends DivProps {\n /** Render `children` as the card element (e.g. an `<a>` or `<button>`). */\n asChild?: boolean;\n /** Hover / focus-visible affordance for a clickable card. */\n interactive?: boolean;\n}\n\nexport const Card = /* @__PURE__ */ forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, asChild = false, interactive = false, ...props },\n ref,\n) {\n const shared = {\n \"data-slot\": \"card\",\n \"data-interactive\": interactive || undefined,\n className: cx(\"orynn-card\", className),\n ...props,\n };\n return asChild ? <Slot.Root ref={ref} {...shared} /> : <div ref={ref} {...shared} />;\n});\n\nexport const CardHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, DivProps>(function CardHeader(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card-header\"\n className={cx(\"orynn-card__header\", className)}\n {...props}\n />\n );\n});\n\nexport const CardTitle = /* @__PURE__ */ forwardRef<HTMLDivElement, DivProps>(function CardTitle(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card-title\"\n className={cx(\"orynn-card__title\", className)}\n {...props}\n />\n );\n});\n\nexport const CardDescription = /* @__PURE__ */ forwardRef<HTMLDivElement, DivProps>(\n function CardDescription({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"card-description\"\n className={cx(\"orynn-card__description\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const CardAction = /* @__PURE__ */ forwardRef<HTMLDivElement, DivProps>(function CardAction(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card-action\"\n className={cx(\"orynn-card__action\", className)}\n {...props}\n />\n );\n});\n\nexport const CardContent = /* @__PURE__ */ forwardRef<HTMLDivElement, DivProps>(\n function CardContent({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"card-content\"\n className={cx(\"orynn-card__content\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const CardFooter = /* @__PURE__ */ forwardRef<HTMLDivElement, DivProps>(function CardFooter(\n { className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"card-footer\"\n className={cx(\"orynn-card__footer\", className)}\n {...props}\n />\n );\n});\n","import { Slot } from \"radix-ui\";\nimport { type ComponentProps, type MouseEvent, type ReactNode, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { XIcon } from \"../../internal/icons\";\nimport { type BadgeVariant, badgeClasses } from \"../shared/classes\";\n\nexport interface BadgeProps extends ComponentProps<\"span\"> {\n /** default · secondary · destructive · outline */\n variant?: BadgeVariant;\n /** `sm` or `md` (default). */\n size?: \"sm\" | \"md\";\n /** Leading status dot. */\n dot?: boolean;\n /** Leading icon (ignored with `asChild`). */\n icon?: ReactNode;\n /** Render a trailing ✕ that calls `onRemove`. */\n removable?: boolean;\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Render `children` as the badge element (drops the extras). */\n asChild?: boolean;\n}\n\nexport const Badge = /* @__PURE__ */ forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n {\n className,\n variant = \"default\",\n size = \"md\",\n dot = false,\n icon,\n removable = false,\n onRemove,\n asChild = false,\n children,\n ...props\n },\n ref,\n) {\n const shared = {\n \"data-slot\": \"badge\",\n \"data-variant\": variant,\n \"data-size\": size,\n className: cx(badgeClasses(variant), className),\n ...props,\n };\n\n if (asChild) {\n return (\n <Slot.Root ref={ref} {...shared}>\n {children}\n </Slot.Root>\n );\n }\n\n return (\n <span ref={ref} {...shared}>\n {dot && <span className=\"orynn-badge__dot\" aria-hidden=\"true\" />}\n {icon}\n {children}\n {removable && (\n <button\n type=\"button\"\n className=\"orynn-badge__remove\"\n aria-label=\"Remove\"\n onClick={onRemove}\n >\n <XIcon />\n </button>\n )}\n </span>\n );\n});\n\nexport { badgeClasses, type BadgeVariant };\n","import { type ComponentProps, type ReactNode, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { XIcon } from \"../../internal/icons\";\n\nexport type AlertVariant = \"default\" | \"destructive\" | \"success\" | \"warning\" | \"info\";\n\nexport interface AlertProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n /** default · destructive · success · warning · info */\n variant?: AlertVariant;\n /** Leading icon. */\n icon?: ReactNode;\n /** Shorthand for a leading `<AlertTitle>`. */\n title?: ReactNode;\n /** Render a top-right ✕ that calls `onDismiss`. */\n dismissible?: boolean;\n onDismiss?: () => void;\n}\n\nexport const Alert = /* @__PURE__ */ forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { className, variant = \"default\", icon, title, dismissible, onDismiss, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n data-slot=\"alert\"\n data-variant={variant}\n data-dismissible={dismissible || undefined}\n role=\"alert\"\n className={cx(\"orynn-alert\", variant !== \"default\" && `orynn-alert--${variant}`, className)}\n {...props}\n >\n {icon}\n {title != null && <AlertTitle>{title}</AlertTitle>}\n {children}\n {dismissible && (\n <button\n type=\"button\"\n className=\"orynn-alert__dismiss\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n >\n <XIcon />\n </button>\n )}\n </div>\n );\n});\n\nexport const AlertTitle = /* @__PURE__ */ forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function AlertTitle({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-title\"\n className={cx(\"orynn-alert__title\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const AlertDescription = /* @__PURE__ */ forwardRef<HTMLDivElement, ComponentProps<\"div\">>(\n function AlertDescription({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n data-slot=\"alert-description\"\n className={cx(\"orynn-alert__description\", className)}\n {...props}\n />\n );\n },\n);\n","import { Separator as SeparatorPrimitive } from \"radix-ui\";\nimport { type ComponentPropsWithoutRef, type ReactNode, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\n\nexport interface SeparatorProps extends ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {\n /** `solid` (default) or `dashed`. */\n variant?: \"solid\" | \"dashed\";\n /** Centered text inside the rule (horizontal only). */\n children?: ReactNode;\n}\n\nexport const Separator = /* @__PURE__ */ forwardRef<HTMLDivElement, SeparatorProps>(\n function Separator(\n {\n className,\n orientation = \"horizontal\",\n decorative = true,\n variant = \"solid\",\n children,\n ...props\n },\n ref,\n ) {\n if (children != null && orientation === \"horizontal\") {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n data-slot=\"separator\"\n data-orientation=\"horizontal\"\n data-variant={variant}\n className={cx(\"orynn-separator\", \"orynn-separator--labelled\", className)}\n {...props}\n >\n <span className=\"orynn-separator__label\">{children}</span>\n </div>\n );\n }\n return (\n <SeparatorPrimitive.Root\n ref={ref}\n data-slot=\"separator\"\n data-variant={variant}\n orientation={orientation}\n decorative={decorative}\n className={cx(\"orynn-separator\", className)}\n {...props}\n />\n );\n },\n);\n","import { type ComponentProps, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\n\nexport interface TableProps extends ComponentProps<\"table\"> {\n /** Cell padding. `md` (default) or `sm` (compact). `dense` is an alias for `sm`. */\n size?: \"sm\" | \"md\";\n dense?: boolean;\n}\n\nexport const Table = /* @__PURE__ */ forwardRef<HTMLTableElement, TableProps>(function Table(\n { className, size, dense, ...props },\n ref,\n) {\n return (\n <div data-slot=\"table-container\" className=\"orynn-table__wrap\">\n <table\n ref={ref}\n data-slot=\"table\"\n data-size={dense ? \"sm\" : size}\n className={cx(\"orynn-table\", className)}\n {...props}\n />\n </div>\n );\n});\n\nexport interface TableHeaderProps extends ComponentProps<\"thead\"> {\n /** Stick the header to the top of the scroll container. */\n sticky?: boolean;\n}\n\nexport const TableHeader = /* @__PURE__ */ forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n function TableHeader({ className, sticky, ...props }, ref) {\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n data-sticky={sticky || undefined}\n className={cx(\"orynn-table__header\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const TableBody = /* @__PURE__ */ forwardRef<\n HTMLTableSectionElement,\n ComponentProps<\"tbody\">\n>(function TableBody({ className, ...props }, ref) {\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n className={cx(\"orynn-table__body\", className)}\n {...props}\n />\n );\n});\n\nexport const TableFooter = /* @__PURE__ */ forwardRef<\n HTMLTableSectionElement,\n ComponentProps<\"tfoot\">\n>(function TableFooter({ className, ...props }, ref) {\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n className={cx(\"orynn-table__footer\", className)}\n {...props}\n />\n );\n});\n\nexport interface TableRowProps extends ComponentProps<\"tr\"> {\n /** Highlight the row (maps to `data-state=\"selected\"`). */\n selected?: boolean;\n}\n\nexport const TableRow = /* @__PURE__ */ forwardRef<HTMLTableRowElement, TableRowProps>(\n function TableRow({ className, selected, ...props }, ref) {\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n data-state={selected ? \"selected\" : undefined}\n className={cx(\"orynn-table__row\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const TableHead = /* @__PURE__ */ forwardRef<HTMLTableCellElement, ComponentProps<\"th\">>(\n function TableHead({ className, ...props }, ref) {\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n className={cx(\"orynn-table__head\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const TableCell = /* @__PURE__ */ forwardRef<HTMLTableCellElement, ComponentProps<\"td\">>(\n function TableCell({ className, ...props }, ref) {\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n className={cx(\"orynn-table__cell\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const TableCaption = /* @__PURE__ */ forwardRef<\n HTMLTableCaptionElement,\n ComponentProps<\"caption\">\n>(function TableCaption({ className, ...props }, ref) {\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n className={cx(\"orynn-table__caption\", className)}\n {...props}\n />\n );\n});\n","import { Switch as SwitchPrimitive } from \"radix-ui\";\nimport { type ComponentPropsWithoutRef, type ReactNode, forwardRef, useId } from \"react\";\nimport { cx } from \"../../internal/cx\";\n\nexport interface SwitchProps extends ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n /** `sm` · `default` · `lg`. */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Text beside the switch — wraps it in a `<label>` layout. */\n label?: ReactNode;\n /** Help text under the label. */\n description?: ReactNode;\n /** `end` (default) or `start`. */\n labelPlacement?: \"end\" | \"start\";\n /** Tiny text inside the track when on / off. */\n onLabel?: ReactNode;\n offLabel?: ReactNode;\n /** Icon rendered inside the thumb. */\n thumbIcon?: ReactNode;\n}\n\nexport const Switch = /* @__PURE__ */ forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n {\n className,\n size = \"default\",\n label,\n description,\n labelPlacement = \"end\",\n onLabel,\n offLabel,\n thumbIcon,\n id: idProp,\n ...props\n },\n ref,\n) {\n const reactId = useId();\n const id = idProp ?? reactId;\n\n const control = (\n <SwitchPrimitive.Root\n ref={ref}\n id={id}\n data-slot=\"switch\"\n data-size={size}\n className={cx(\"orynn-switch\", className)}\n {...props}\n >\n {offLabel != null && (\n <span className=\"orynn-switch__text orynn-switch__text--off\" aria-hidden=\"true\">\n {offLabel}\n </span>\n )}\n {onLabel != null && (\n <span className=\"orynn-switch__text orynn-switch__text--on\" aria-hidden=\"true\">\n {onLabel}\n </span>\n )}\n <SwitchPrimitive.Thumb data-slot=\"switch-thumb\" className=\"orynn-switch__thumb\">\n {thumbIcon}\n </SwitchPrimitive.Thumb>\n </SwitchPrimitive.Root>\n );\n\n if (label == null && description == null) return control;\n\n return (\n <label\n className=\"orynn-switch-field\"\n data-slot=\"switch-field\"\n data-placement={labelPlacement}\n htmlFor={id}\n >\n {control}\n <span className=\"orynn-switch-field__text\">\n <span className=\"orynn-switch-field__label\">{label}</span>\n {description != null && (\n <span className=\"orynn-switch-field__description\">{description}</span>\n )}\n </span>\n </label>\n );\n});\n","import { Tabs as TabsPrimitive } from \"radix-ui\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\n\nexport interface TabsProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /** `pill` (default, muted rounded bar) · `underline` · `enclosed` (folder tabs). */\n variant?: \"pill\" | \"underline\" | \"enclosed\";\n /** Trigger sizing. Default `md`. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Triggers stretch to fill the list width. */\n fitted?: boolean;\n}\n\nexport const Tabs = /* @__PURE__ */ forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { className, variant = \"pill\", size = \"md\", fitted = false, ...props },\n ref,\n) {\n return (\n <TabsPrimitive.Root\n ref={ref}\n data-slot=\"tabs\"\n data-variant={variant}\n data-size={size}\n data-fitted={fitted || undefined}\n className={cx(\"orynn-tabs\", className)}\n {...props}\n />\n );\n});\n\nexport const TabsList = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(function TabsList({ className, ...props }, ref) {\n return (\n <TabsPrimitive.List\n ref={ref}\n data-slot=\"tabs-list\"\n className={cx(\"orynn-tabs__list\", className)}\n {...props}\n />\n );\n});\n\nexport const TabsTrigger = /* @__PURE__ */ forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(function TabsTrigger({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n data-slot=\"tabs-trigger\"\n className={cx(\"orynn-tabs__trigger\", className)}\n {...props}\n />\n );\n});\n\nexport const TabsContent = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(function TabsContent({ className, ...props }, ref) {\n return (\n <TabsPrimitive.Content\n ref={ref}\n data-slot=\"tabs-content\"\n className={cx(\"orynn-tabs__content\", className)}\n {...props}\n />\n );\n});\n","import { Dialog as DialogPrimitive } from \"radix-ui\";\nimport { type ComponentProps, type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { XIcon } from \"../../internal/icons\";\nimport { usePortalContainer } from \"../../theme/OrynnProvider\";\n\nexport const Dialog = (props: ComponentProps<typeof DialogPrimitive.Root>) => (\n <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n);\nexport const DialogTrigger = (props: ComponentProps<typeof DialogPrimitive.Trigger>) => (\n <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n);\nexport const DialogClose = (props: ComponentProps<typeof DialogPrimitive.Close>) => (\n <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n);\nexport const DialogPortal = DialogPrimitive.Portal;\n\nexport interface DialogContentProps\n extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Render the built-in top-right close button. Default `true`. */\n showCloseButton?: boolean;\n /** Max width. Default `lg`. */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n /** Cap the height and scroll the body. */\n scrollable?: boolean;\n /** Override the portal container. */\n container?: Element | DocumentFragment | null;\n}\n\nexport const DialogContent = /* @__PURE__ */ forwardRef<HTMLDivElement, DialogContentProps>(\n function DialogContent(\n { className, children, showCloseButton = true, size = \"lg\", scrollable, container, ...props },\n ref,\n ) {\n const themed = usePortalContainer();\n return (\n <DialogPrimitive.Portal container={container ?? themed ?? undefined}>\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className=\"orynn-overlay orynn-dialog__overlay\"\n />\n <DialogPrimitive.Content\n ref={ref}\n data-slot=\"dialog-content\"\n data-size={size}\n data-scrollable={scrollable || undefined}\n className={cx(\"orynn-dialog__content\", className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"orynn-dialog__close\"\n aria-label=\"Close\"\n >\n <XIcon />\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n },\n);\n\nexport function DialogHeader({ className, ...props }: ComponentProps<\"div\">) {\n return (\n <div data-slot=\"dialog-header\" className={cx(\"orynn-dialog__header\", className)} {...props} />\n );\n}\n\nexport function DialogFooter({ className, ...props }: ComponentProps<\"div\">) {\n return (\n <div data-slot=\"dialog-footer\" className={cx(\"orynn-dialog__footer\", className)} {...props} />\n );\n}\n\nexport const DialogTitle = /* @__PURE__ */ forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(function DialogTitle({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Title\n ref={ref}\n data-slot=\"dialog-title\"\n className={cx(\"orynn-dialog__title\", className)}\n {...props}\n />\n );\n});\n\nexport const DialogDescription = /* @__PURE__ */ forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(function DialogDescription({ className, ...props }, ref) {\n return (\n <DialogPrimitive.Description\n ref={ref}\n data-slot=\"dialog-description\"\n className={cx(\"orynn-dialog__description\", className)}\n {...props}\n />\n );\n});\n","import { Popover as PopoverPrimitive } from \"radix-ui\";\nimport { type ComponentProps, type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { usePortalContainer } from \"../../theme/OrynnProvider\";\n\nexport const Popover = (props: ComponentProps<typeof PopoverPrimitive.Root>) => (\n <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n);\nexport const PopoverTrigger = (props: ComponentProps<typeof PopoverPrimitive.Trigger>) => (\n <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n);\nexport const PopoverAnchor = (props: ComponentProps<typeof PopoverPrimitive.Anchor>) => (\n <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n);\nexport const PopoverClose = PopoverPrimitive.Close;\nexport const PopoverArrow = (props: ComponentProps<typeof PopoverPrimitive.Arrow>) => (\n <PopoverPrimitive.Arrow data-slot=\"popover-arrow\" className=\"orynn-popover__arrow\" {...props} />\n);\n\nexport interface PopoverContentProps\n extends ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n /** Show a pointing arrow. */\n arrow?: boolean;\n /** Override the portal container. */\n container?: Element | DocumentFragment | null;\n}\n\nexport const PopoverContent = /* @__PURE__ */ forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(\n { className, align = \"center\", sideOffset = 4, arrow = false, container, children, ...props },\n ref,\n ) {\n const themed = usePortalContainer();\n return (\n <PopoverPrimitive.Portal container={container ?? themed ?? undefined}>\n <PopoverPrimitive.Content\n ref={ref}\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cx(\"orynn-content orynn-popover__content\", className)}\n {...props}\n >\n {children}\n {arrow && <PopoverArrow />}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n },\n);\n","import { Tooltip as TooltipPrimitive } from \"radix-ui\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { usePortalContainer } from \"../../theme/OrynnProvider\";\n\nexport function TooltipProvider({\n delayDuration = 0,\n ...props\n}: ComponentPropsWithoutRef<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nexport interface TooltipProps extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Root> {\n /** Hover delay before opening, ms. Default 0. */\n delayDuration?: number;\n /** Window after closing where the next tip opens instantly. */\n skipDelayDuration?: number;\n /** Don't keep the tip open while the pointer is over it. */\n disableHoverableContent?: boolean;\n /** Skip the auto-wrapped provider (a parent already renders one). */\n disableProvider?: boolean;\n}\n\nexport function Tooltip({\n delayDuration = 0,\n skipDelayDuration,\n disableHoverableContent,\n disableProvider = false,\n ...props\n}: TooltipProps) {\n const root = (\n <TooltipPrimitive.Root\n data-slot=\"tooltip\"\n delayDuration={delayDuration}\n disableHoverableContent={disableHoverableContent}\n {...props}\n />\n );\n if (disableProvider) return root;\n return (\n <TooltipProvider\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n disableHoverableContent={disableHoverableContent}\n >\n {root}\n </TooltipProvider>\n );\n}\n\nexport const TooltipTrigger = (\n props: ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger>,\n) => <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n\nexport interface TooltipContentProps\n extends ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {\n /** Show the pointing arrow. Default `true`. */\n arrow?: boolean;\n /** Arrow width in px (height is ~half). Default 11. */\n arrowSize?: number;\n /** Override the portal container. */\n container?: Element | DocumentFragment | null;\n}\n\nexport const TooltipContent = /* @__PURE__ */ forwardRef<HTMLDivElement, TooltipContentProps>(\n function TooltipContent(\n { className, sideOffset = 0, arrow = true, arrowSize = 11, container, children, ...props },\n ref,\n ) {\n const themed = usePortalContainer();\n return (\n <TooltipPrimitive.Portal container={container ?? themed ?? undefined}>\n <TooltipPrimitive.Content\n ref={ref}\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cx(\"orynn-content orynn-tooltip__content\", className)}\n {...props}\n >\n {children}\n {arrow && (\n <TooltipPrimitive.Arrow\n width={arrowSize}\n height={Math.round(arrowSize / 2.2)}\n className=\"orynn-tooltip__arrow\"\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n },\n);\n","import { DropdownMenu as MenuPrimitive } from \"radix-ui\";\nimport {\n type ComponentProps,\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { cx } from \"../../internal/cx\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"../../internal/icons\";\nimport { usePortalContainer } from \"../../theme/OrynnProvider\";\n\nexport const DropdownMenu = (props: ComponentProps<typeof MenuPrimitive.Root>) => (\n <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n);\nexport const DropdownMenuTrigger = (props: ComponentProps<typeof MenuPrimitive.Trigger>) => (\n <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n);\nexport const DropdownMenuGroup = MenuPrimitive.Group;\nexport const DropdownMenuPortal = MenuPrimitive.Portal;\nexport const DropdownMenuSub = MenuPrimitive.Sub;\nexport const DropdownMenuRadioGroup = MenuPrimitive.RadioGroup;\n\nexport interface DropdownMenuContentProps\n extends ComponentPropsWithoutRef<typeof MenuPrimitive.Content> {\n /** Override the portal container. */\n container?: Element | DocumentFragment | null;\n}\n\nexport const DropdownMenuContent = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n DropdownMenuContentProps\n>(function DropdownMenuContent({ className, sideOffset = 4, container, ...props }, ref) {\n const themed = usePortalContainer();\n return (\n <MenuPrimitive.Portal container={container ?? themed ?? undefined}>\n <MenuPrimitive.Content\n ref={ref}\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cx(\"orynn-content orynn-menu__content\", className)}\n {...props}\n />\n </MenuPrimitive.Portal>\n );\n});\n\nexport interface DropdownMenuItemProps extends ComponentPropsWithoutRef<typeof MenuPrimitive.Item> {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n /** Leading icon. */\n icon?: ReactNode;\n /** Trailing shortcut hint (rendered right-aligned). */\n shortcut?: ReactNode;\n}\n\nexport const DropdownMenuItem = /* @__PURE__ */ forwardRef<HTMLDivElement, DropdownMenuItemProps>(\n function DropdownMenuItem(\n { className, inset, variant = \"default\", icon, shortcut, children, ...props },\n ref,\n ) {\n return (\n <MenuPrimitive.Item\n ref={ref}\n data-slot=\"dropdown-menu-item\"\n data-inset={inset || undefined}\n data-variant={variant}\n className={cx(\"orynn-menu__item\", className)}\n {...props}\n >\n {icon}\n {children}\n {shortcut != null && <span className=\"orynn-menu__shortcut\">{shortcut}</span>}\n </MenuPrimitive.Item>\n );\n },\n);\n\nexport const DropdownMenuCheckboxItem = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>\n>(function DropdownMenuCheckboxItem({ className, children, checked, ...props }, ref) {\n return (\n <MenuPrimitive.CheckboxItem\n ref={ref}\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cx(\"orynn-menu__item\", \"orynn-menu__item--check\", className)}\n checked={checked}\n {...props}\n >\n <span className=\"orynn-menu__indicator\">\n <MenuPrimitive.ItemIndicator>\n <CheckIcon />\n </MenuPrimitive.ItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n});\n\nexport const DropdownMenuRadioItem = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>\n>(function DropdownMenuRadioItem({ className, children, ...props }, ref) {\n return (\n <MenuPrimitive.RadioItem\n ref={ref}\n data-slot=\"dropdown-menu-radio-item\"\n className={cx(\"orynn-menu__item\", \"orynn-menu__item--check\", className)}\n {...props}\n >\n <span className=\"orynn-menu__indicator\">\n <MenuPrimitive.ItemIndicator>\n <CircleIcon className=\"orynn-menu__dot\" />\n </MenuPrimitive.ItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n});\n\nexport interface DropdownMenuLabelProps\n extends ComponentPropsWithoutRef<typeof MenuPrimitive.Label> {\n inset?: boolean;\n}\n\nexport const DropdownMenuLabel = /* @__PURE__ */ forwardRef<HTMLDivElement, DropdownMenuLabelProps>(\n function DropdownMenuLabel({ className, inset, ...props }, ref) {\n return (\n <MenuPrimitive.Label\n ref={ref}\n data-slot=\"dropdown-menu-label\"\n data-inset={inset || undefined}\n className={cx(\"orynn-menu__label\", className)}\n {...props}\n />\n );\n },\n);\n\nexport const DropdownMenuSeparator = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n return (\n <MenuPrimitive.Separator\n ref={ref}\n data-slot=\"dropdown-menu-separator\"\n className={cx(\"orynn-menu__separator\", className)}\n {...props}\n />\n );\n});\n\nexport function DropdownMenuShortcut({ className, ...props }: ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cx(\"orynn-menu__shortcut\", className)}\n {...props}\n />\n );\n}\n\nexport interface DropdownMenuSubTriggerProps\n extends ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger> {\n inset?: boolean;\n}\n\nexport const DropdownMenuSubTrigger = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n DropdownMenuSubTriggerProps\n>(function DropdownMenuSubTrigger({ className, inset, children, ...props }, ref) {\n return (\n <MenuPrimitive.SubTrigger\n ref={ref}\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset || undefined}\n className={cx(\"orynn-menu__item\", \"orynn-menu__sub-trigger\", className)}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"orynn-menu__sub-chevron\" />\n </MenuPrimitive.SubTrigger>\n );\n});\n\nexport const DropdownMenuSubContent = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>\n>(function DropdownMenuSubContent({ className, ...props }, ref) {\n return (\n <MenuPrimitive.SubContent\n ref={ref}\n data-slot=\"dropdown-menu-sub-content\"\n className={cx(\"orynn-content\", \"orynn-menu__content\", \"orynn-menu__sub-content\", className)}\n {...props}\n />\n );\n});\n","import type { FieldsetConfig } from \"./config\";\n\n/** `pattern` accepts a RegExp, a source string, or `{ value, flags }`. */\nexport type PatternRule = RegExp | string | { value: string | RegExp; flags?: string };\n\n/** `equals` accepts a literal, or `{ field }` to compare against another field. */\nexport type EqualsRule = unknown | { field: string };\n\n/** Custom per-field validator. String = message, `false` = generic failure. */\nexport type CustomValidator = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | boolean | null | Promise<string | boolean | null>;\n\n/**\n * Per-field validation config. All keys are optional and additive.\n * Custom rules registered with `registerRule` add their own keys here via\n * module augmentation, or are accepted loosely.\n */\nexport interface FieldValidation {\n required?: boolean;\n /** String / array length. */\n minLength?: number;\n maxLength?: number;\n /** Array item count (checkbox groups, multi-selects). */\n minItems?: number;\n maxItems?: number;\n /** Numeric bounds (value coerced to number). */\n min?: number;\n max?: number;\n integer?: boolean;\n /** Date bounds (value + param coerced to a timestamp). */\n minDate?: string | Date;\n maxDate?: string | Date;\n /** Range-mode day-span bounds (inclusive; a single day counts as 1). */\n minRangeDays?: number;\n maxRangeDays?: number;\n email?: boolean;\n url?: boolean;\n pattern?: PatternRule;\n /** Value must be one of these. */\n oneOf?: unknown[];\n /** Equal to a literal, or to another field's value: `{ field: \"password\" }`. */\n equals?: EqualsRule;\n /** Custom validator — sync or async. */\n validate?: CustomValidator;\n /** Per-rule message overrides, e.g. `{ required: \"Name is required\" }`. */\n messages?: Partial<Record<string, string>>;\n /** Allow custom `registerRule` keys without a type error. */\n [rule: string]: unknown;\n}\n\n/** A single validation failure. Shape is frozen — new fields must stay optional. */\nexport interface FieldError {\n /** Rule that failed: `\"required\"`, `\"minLength\"`, `\"pattern\"`, `\"validate\"`, `\"schema\"`, ... */\n rule: string;\n message: string;\n /** Dotted path for cross-field / nested errors. */\n path?: string;\n}\n\n/**\n * Validation output. Key = field name. The reserved key `\"$form\"` holds\n * form-level / cross-field errors.\n */\nexport type ValidationResult = Record<string, FieldError[]>;\n\n/** Reserved key in {@link ValidationResult} for form-level errors. */\nexport const FORM_ERROR_KEY = \"$form\" as const;\n\n/** What triggered a validation run. */\nexport type ValidationTrigger = \"change\" | \"blur\" | \"submit\";\n\nexport interface ValidationContext {\n /** Field whose change/blur triggered this run, if any. */\n changedField?: string;\n trigger: ValidationTrigger;\n}\n\n/**\n * The single seam through which all validation flows. The default resolver is\n * rule-based; the `Promise` return keeps async, schema, and cross-field\n * validation additive.\n */\nexport type ValidationResolver = (\n values: Record<string, unknown>,\n config: FieldsetConfig,\n context: ValidationContext,\n) => ValidationResult | Promise<ValidationResult>;\n\n/**\n * A single rule implementation. Returns an error message string on failure, or\n * `null` on success — synchronously or as a Promise. `allValues` is passed so\n * cross-field rules need no signature change.\n */\nexport type RuleFn = (\n value: unknown,\n param: unknown,\n allValues: Record<string, unknown>,\n) => string | null | Promise<string | null>;\n","import {\n FORM_ERROR_KEY,\n type ValidationResolver,\n type ValidationResult,\n} from \"../../types/validation\";\n\n/**\n * Minimal shape of the [Standard Schema](https://standardschema.dev) `v1`\n * contract — implemented by Zod 3.24+, Valibot 1.0+, ArkType 2+, and others.\n * Inlined so Orynn needs no dependency.\n */\nexport interface StandardSchemaV1<Output = unknown> {\n readonly \"~standard\": {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (value: unknown) => StandardResult<Output> | Promise<StandardResult<Output>>;\n };\n}\n\ntype StandardResult<Output> =\n | { readonly value: Output; readonly issues?: undefined }\n | { readonly issues: ReadonlyArray<StandardIssue> };\n\ninterface StandardIssue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | { readonly key: PropertyKey }>;\n}\n\nfunction pathToField(path: StandardIssue[\"path\"]): { field: string; rest: string } {\n if (!path || path.length === 0) return { field: FORM_ERROR_KEY, rest: \"\" };\n const seg = (p: PropertyKey | { key: PropertyKey }) =>\n String(typeof p === \"object\" && p !== null && \"key\" in p ? p.key : p);\n const parts = path.map(seg);\n return { field: parts[0] ?? FORM_ERROR_KEY, rest: parts.slice(1).join(\".\") };\n}\n\n/**\n * Turn a Standard Schema (Zod / Valibot / ArkType / …) into an Orynn\n * {@link ValidationResolver}. Pass it to `<Fieldset resolver={…}>` or\n * `useFieldsetState({ resolver })`.\n *\n * ```ts\n * import { z } from \"zod\";\n * const schema = z.object({ email: z.string().email(), age: z.number().min(18) });\n * <Fieldset config={config} resolver={standardSchemaResolver(schema)} />\n * ```\n *\n * Issues are keyed by the first path segment (the field name); path-less issues\n * land under `\"$form\"`.\n */\nexport function standardSchemaResolver(schema: StandardSchemaV1): ValidationResolver {\n return (values) => {\n const out = schema[\"~standard\"].validate(values);\n const toResult = (r: Awaited<typeof out>): ValidationResult => {\n const result: ValidationResult = {};\n if (!(\"issues\" in r) || !r.issues) return result;\n for (const issue of r.issues) {\n const { field, rest } = pathToField(issue.path);\n const bucket = result[field] ?? [];\n bucket.push({ rule: \"schema\", message: issue.message, ...(rest ? { path: rest } : {}) });\n result[field] = bucket;\n }\n return result;\n };\n return out instanceof Promise ? out.then(toResult) : toResult(out);\n };\n}\n"]}