@rehagro/ui 0.1.3 → 1.0.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.d.mts +28 -1
- package/dist/index.d.ts +28 -1
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +47 -1
- package/dist/index.mjs.map +1 -1
- package/dist/native.d.mts +236 -0
- package/dist/native.d.ts +236 -0
- package/dist/native.js +496 -0
- package/dist/native.js.map +1 -0
- package/dist/native.mjs +488 -0
- package/dist/native.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +22 -7
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/provider/theme.ts","../src/icons/DeleteIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/InfoIcon.tsx","../src/icons/WarningIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastContext.tsx","../src/provider/RehagroProvider.tsx","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/TextInput/TextInput.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Select/Select.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Grid/Container.tsx","../src/components/Grid/GridContainer.tsx","../src/components/Grid/GridItem.tsx"],"names":["jsx","jsxs","Toast","useState","useRef","useCallback","forwardRef","Button","React","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","statusClasses","helperStatusClasses","CheckIcon","Select","variantClasses","Tooltip","useEffect","Container","GridContainer","GridItem"],"mappings":";;;;;;AAkDO,IAAM,SAAA,GAA2E;AAAA,EACtF,OAAA,EAAS,EAAE,GAAA,EAAK,cAAA,EAAgB,SAAS,IAAA,EAAK;AAAA,EAC9C,YAAA,EAAc,EAAE,GAAA,EAAK,oBAAA,EAAsB,SAAS,IAAA,EAAK;AAAA,EACzD,SAAA,EAAW,EAAE,GAAA,EAAK,gBAAA,EAAkB,SAAS,IAAA,EAAK;AAAA,EAClD,cAAA,EAAgB,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,IAAA,EAAK;AAAA,EAC7D,MAAA,EAAQ,EAAE,GAAA,EAAK,aAAA,EAAe,SAAS,IAAA,EAAK;AAAA,EAC5C,WAAA,EAAa,EAAE,GAAA,EAAK,mBAAA,EAAqB,SAAS,IAAA,EAAK;AAAA,EACvD,OAAA,EAAS,EAAE,GAAA,EAAK,cAAA,EAAgB,SAAS,IAAA,EAAK;AAAA,EAC9C,OAAA,EAAS,EAAE,GAAA,EAAK,cAAA,EAAgB,SAAS,IAAA,EAAK;AAAA,EAC9C,IAAA,EAAM,EAAE,GAAA,EAAK,WAAA,EAAa,SAAS,IAAA,EAAK;AAAA,EACxC,SAAA,EAAW,EAAE,GAAA,EAAK,iBAAA,EAAmB,SAAS,IAAA,EAAK;AAAA,EACnD,OAAA,EAAS,EAAE,GAAA,EAAK,cAAA,EAAgB,SAAS,IAAA,EAAK;AAAA,EAC9C,UAAA,EAAY,EAAE,GAAA,EAAK,iBAAA,EAAmB,SAAS,IAAA,EAAK;AAAA,EACpD,MAAA,EAAQ,EAAE,GAAA,EAAK,aAAA,EAAe,SAAS,IAAA,EAAK;AAAA,EAC5C,IAAA,EAAM,EAAE,GAAA,EAAK,WAAA,EAAa,SAAS,IAAA,EAAK;AAAA,EACxC,SAAA,EAAW,EAAE,GAAA,EAAK,iBAAA,EAAmB,SAAS,KAAA,EAAM;AAAA,EACpD,QAAA,EAAU,EAAE,GAAA,EAAK,gBAAA,EAAkB,SAAS,KAAA,EAAM;AAAA,EAClD,QAAA,EAAU,EAAE,GAAA,EAAK,gBAAA,EAAkB,SAAS,KAAA,EAAM;AAAA,EAClD,QAAA,EAAU,EAAE,GAAA,EAAK,gBAAA,EAAkB,SAAS,KAAA,EAAM;AAAA,EAClD,QAAA,EAAU,EAAE,GAAA,EAAK,gBAAA,EAAkB,SAAS,KAAA,EAAM;AAAA,EAClD,QAAA,EAAU,EAAE,GAAA,EAAK,gBAAA,EAAkB,SAAS,KAAA,EAAM;AAAA,EAClD,aAAA,EAAe,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,EAC7D,aAAA,EAAe,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,EAC7D,aAAA,EAAe,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,EAC7D,aAAA,EAAe,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,EAC7D,aAAA,EAAe,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,EAC7D,aAAA,EAAe,EAAE,GAAA,EAAK,sBAAA,EAAwB,SAAS,KAAA,EAAM;AAAA,EAC7D,SAAA,EAAW,EAAE,GAAA,EAAK,kBAAA,EAAoB,SAAS,KAAA,EAAM;AAAA,EACrD,SAAA,EAAW,EAAE,GAAA,EAAK,kBAAA,EAAoB,SAAS,KAAA,EAAM;AAAA,EACrD,SAAA,EAAW,EAAE,GAAA,EAAK,kBAAA,EAAoB,SAAS,KAAA;AACjD,CAAA;AC9EO,IAAM,UAAA,GAAa,CAAC,KAAA,qBACzB,IAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,SAAA,EAAU,CAAA;AAAA,sBAClB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,uCAAA,EAAwC,CAAA;AAAA,sBAChD,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oCAAA,EAAqC;AAAA;AAAA;AAC/C;ACjBK,IAAM,QAAA,GAAW,CAAC,KAAA,qBACvBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kDAAA,EAAmD;AAAA;AAC7D;ACfK,IAAM,UAAA,GAAa,CAAC,KAAA,qBACzBC,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAD,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,sBAC9BA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gBAAA,EAAiB;AAAA;AAAA;AAC3B;AChBK,IAAM,QAAA,GAAW,CAAC,KAAA,qBACvBC,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,UAAA,EAAW,CAAA;AAAA,sBACnBA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,UAAA,EAAW;AAAA;AAAA;AACrB;AChBK,IAAM,QAAA,GAAW,CAAC,KAAA,qBACvBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,yOAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF;ACfK,IAAM,WAAA,GAAc,CAAC,KAAA,qBAC1BA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,4OAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF;ACfK,IAAM,WAAA,GAAc,CAAC,KAAA,qBAC1BA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,wJAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF;ACfK,IAAM,SAAA,GAAY,CAAC,KAAA,qBACxBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,+MAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF;ACfK,IAAM,WAAA,GAAc,CAAC,KAAA,qBAC1BA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,sLAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF;ACfK,IAAM,SAAA,GAAY,CAAC,KAAA,qBACxBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,KAAA;AAAA,IACN,MAAA,EAAO,KAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IACX,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,8KAAA,EAA+K;AAAA;AACzL;AC2BF,IAAM,cAAA,GAAsD;AAAA,EAC1D,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAAS,WAAA;AAAA,EACT,KAAA,EAAO,SAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAMA,IAAM,eAAA,GAA4C;AAAA,EAChD,YAAA,EAAc,oDAAA;AAAA,EACd,YAAA,EAAc,mDAAA;AAAA,EACd,cAAA,EAAgB,6CAAA;AAAA,EAChB,eAAA,EAAiB,sDAAA;AAAA,EACjB,eAAA,EAAiB,yDAAA;AAAA,EACjB,iBAAA,EAAmB,6CAAA;AAAA,EACnB,eAAA,EAAiB,oEAAA;AAAA,EACjB,eAAA,EAAiB,sDAAA;AAAA,EACjB,iBAAA,EAAmB,6CAAA;AAAA,EACnB,aAAA,EAAe,mEAAA;AAAA,EACf,aAAA,EAAe,gDAAA;AAAA,EACf,eAAA,EAAiB,6CAAA;AAAA,EACjB,eAAA,EAAiB,oDAAA;AAAA,EACjB,eAAA,EAAiB,oDAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAEA,IAAM,UAAA,GAAuC;AAAA,EAC3C,YAAA,EAAc,eAAA;AAAA,EACd,YAAA,EAAc,kBAAA;AAAA,EACd,cAAA,EAAgB,kBAAA;AAAA,EAChB,eAAA,EAAiB,eAAA;AAAA,EACjB,eAAA,EAAiB,oBAAA;AAAA,EACjB,iBAAA,EAAmB,oBAAA;AAAA,EACnB,eAAA,EAAiB,eAAA;AAAA,EACjB,eAAA,EAAiB,mBAAA;AAAA,EACjB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,iBAAA;AAAA,EACf,eAAA,EAAiB,iBAAA;AAAA,EACjB,eAAA,EAAiB,eAAA;AAAA,EACjB,eAAA,EAAiB,kBAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAEA,IAAM,iBAAA,GAA8C;AAAA,EAClD,YAAA,EAAc,kBAAA;AAAA,EACd,YAAA,EAAc,kBAAA;AAAA,EACd,cAAA,EAAgB,oBAAA;AAAA,EAChB,eAAA,EAAiB,kBAAA;AAAA,EACjB,eAAA,EAAiB,oBAAA;AAAA,EACjB,iBAAA,EAAmB,oBAAA;AAAA,EACnB,eAAA,EAAiB,kBAAA;AAAA,EACjB,eAAA,EAAiB,mBAAA;AAAA,EACjB,iBAAA,EAAmB,oBAAA;AAAA,EACnB,aAAA,EAAe,kBAAA;AAAA,EACf,aAAA,EAAe,iBAAA;AAAA,EACf,eAAA,EAAiB,oBAAA;AAAA,EACjB,eAAA,EAAiB,kBAAA;AAAA,EACjB,eAAA,EAAiB,kBAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAEA,IAAM,UAAA,GAAuC;AAAA,EAC3C,YAAA,EAAc,mDAAA;AAAA,EACd,YAAA,EAAc,sDAAA;AAAA,EACd,cAAA,EAAgB,sDAAA;AAAA,EAChB,eAAA,EAAiB,mDAAA;AAAA,EACjB,eAAA,EAAiB,0DAAA;AAAA,EACjB,iBAAA,EAAmB,0DAAA;AAAA,EACnB,eAAA,EAAiB,mDAAA;AAAA,EACjB,eAAA,EAAiB,wDAAA;AAAA,EACjB,iBAAA,EAAmB,wDAAA;AAAA,EACnB,aAAA,EAAe,mDAAA;AAAA,EACf,aAAA,EAAe,oDAAA;AAAA,EACf,eAAA,EAAiB,oDAAA;AAAA,EACjB,eAAA,EAAiB,mDAAA;AAAA,EACjB,eAAA,EAAiB,sDAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAEA,IAAM,WAAA,GAAwC;AAAA,EAC5C,YAAA,EAAc,sCAAA;AAAA,EACd,YAAA,EAAc,yCAAA;AAAA,EACd,cAAA,EAAgB,uCAAA;AAAA,EAChB,eAAA,EAAiB,sCAAA;AAAA,EACjB,eAAA,EAAiB,6CAAA;AAAA,EACjB,iBAAA,EAAmB,uCAAA;AAAA,EACnB,eAAA,EAAiB,sCAAA;AAAA,EACjB,eAAA,EAAiB,2CAAA;AAAA,EACjB,iBAAA,EAAmB,uCAAA;AAAA,EACnB,aAAA,EAAe,sCAAA;AAAA,EACf,aAAA,EAAe,uCAAA;AAAA,EACf,eAAA,EAAiB,uCAAA;AAAA,EACjB,eAAA,EAAiB,sCAAA;AAAA,EACjB,eAAA,EAAiB,yCAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAIO,IAAM,KAAA,GAAQ,UAAA,CAAuC,SAASE,MAAAA,CACnE;AAAA,EACE,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,UAAA,GAAa,OAAA;AAAA,EACb,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAqB,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AACnD,EAAA,MAAM,IAAA,GAAO,eAAe,OAAO,CAAA;AAEnC,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,WAAA;AAAA,MACV,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW;AAAA,QACT,iCAAA;AAAA,QACA,wCAAA;AAAA,QACA,2BAAA;AAAA,QACA,gBAAgB,QAAQ,CAAA;AAAA,QACxB;AAAA,OACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,MACV,GAAG,IAAA;AAAA,MAGJ,QAAA,EAAA;AAAA,wBAAAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EAA6B,aAAA,EAAY,QACvD,QAAA,kBAAAA,GAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,CAAC,eAAA,EAAiB,UAAA,CAAW,QAAQ,CAAC,CAAA,CAC9C,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG;AAAA;AAAA,SACb,EACF,CAAA;AAAA,wBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8CAAA,EAAgD,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAElE,+BACCA,GAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW;AAAA,gBACT,sCAAA;AAAA,gBACA,kBAAkB,QAAQ;AAAA,eAC5B,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cAEV,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,wBACCA,GAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,SAAA,EAAW;AAAA,gBACT,mDAAA;AAAA,gBACA,gIAAA;AAAA,gBACA,WAAW,QAAQ;AAAA,eACrB,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cAEV,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,SAAA,EAEJ,CAAA;AAAA,QAGC,2BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAW,oBAAA;AAAA,YACX,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAW;AAAA,cACT,0CAAA;AAAA,cACA,sCAAA;AAAA,cACA,iHAAA;AAAA,cACA,YAAY,QAAQ;AAAA,aACtB,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,YAEX,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,eAAA,EAAgB;AAAA;AAAA;AACvC;AAAA;AAAA,GAEJ;AAEJ,CAAC;ACrOD,IAAM,eAAA,GAAkD;AAAA,EACtD,WAAA,EAAa,OAAA;AAAA,EACb,cAAA,EAAgB,OAAA;AAAA,EAChB,UAAA,EAAY,MAAA;AAAA,EACZ,aAAA,EAAe,MAAA;AAAA,EACf,YAAA,EAAc,KAAA;AAAA,EACd,eAAA,EAAiB;AACnB,CAAA;AAEA,IAAM,UAAA,GAAsC;AAAA,EAC1C,KAAA,EAAO,2BAAA;AAAA,EACP,IAAA,EAAM,0BAAA;AAAA,EACN,GAAA,EAAK,yBAAA;AAAA,EACL,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,UAAA,GAAsC;AAAA,EAC1C,KAAA,EAAO,4BAAA;AAAA,EACP,IAAA,EAAM,2BAAA;AAAA,EACN,GAAA,EAAK,0BAAA;AAAA,EACL,MAAA,EAAQ;AACV,CAAA;AAIA,IAAM,eAAA,GAAiD;AAAA,EACrD,WAAA,EAAa,kCAAA;AAAA,EACb,UAAA,EAAY,mCAAA;AAAA,EACZ,YAAA,EAAc,0DAAA;AAAA,EACd,cAAA,EAAgB,qCAAA;AAAA,EAChB,aAAA,EAAe,sCAAA;AAAA,EACf,eAAA,EAAiB;AACnB,CAAA;AAIA,IAAM,iBAAA,GAAoB,GAAA;AAW1B,SAAS,iBAAA,CAAkB;AAAA,EACzB,EAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,aAAA,GAAgB,OAA6C,IAAI,CAAA;AAGvE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAA,EAAc;AACnB,IAAA,aAAA,CAAc,OAAA,GAAU,WAAW,MAAM;AACvC,MAAA,QAAA,CAAS,EAAE,CAAA;AAAA,IACb,GAAG,iBAAiB,CAAA;AACpB,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,aAAA,CAAc,OAAA,EAAS,YAAA,CAAa,aAAA,CAAc,OAAO,CAAA;AAAA,IAC/D,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,EAAA,EAAI,YAAA,EAAc,QAAQ,CAAC,CAAA;AAE/B,EAAA,MAAM,kBAAA,GAAqB,YAAY,MAAM;AAC3C,IAAA,IAAI,CAAC,OAAA,EAAS,UAAA,CAAW,IAAI,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,EAAA,EAAI,gBAAgB,CAAC,CAAA;AAEzB,EAAA,MAAM,SAAA,GAAY,eACd,UAAA,CAAW,OAAO,IAClB,OAAA,GACE,EAAA,GACA,WAAW,OAAO,CAAA;AAExB,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,WAAW,cAAA,EAAgB,kBAAA,EACxC,QAAA,EAAA,QAAA,CAAS,WAAW,CAAA,EACvB,CAAA;AAEJ;AAIO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,EAAE,MAAA,EAAQ,aAAA,EAAe,UAAU,cAAA,EAAgB,MAAA,KAAW,eAAA,EAAgB;AACpF,EAAA,MAAM,OAAA,GAAU,gBAAgB,QAAQ,CAAA;AAExC,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEhC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,eAAA;AAAA,MACX,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW;AAAA,QACT,sBAAA;AAAA,QACA,8BAAA;AAAA,QACA,wBAAA;AAAA,QACA,gBAAgB,QAAQ;AAAA,OAC1B,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,MAEV,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXA,GAAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UAEC,IAAI,KAAA,CAAM,EAAA;AAAA,UACV,OAAA;AAAA,UACA,YAAA,EAAc,aAAA,CAAc,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA;AAAA,UACxC,QAAA,EAAU,MAAA;AAAA,UACV,gBAAA,EAAkB,cAAA;AAAA,UAEjB,WAAC,OAAA,qBACAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BACb,QAAA,kBAAAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,aAAa,KAAA,CAAM,WAAA;AAAA,cACnB,MAAM,KAAA,CAAM,IAAA;AAAA,cACZ,SAAS,KAAA,CAAM,OAAA;AAAA,cACf,YAAY,KAAA,CAAM,UAAA;AAAA,cAClB;AAAA;AAAA,WACF,EACF;AAAA,SAAA;AAAA,QAjBG,KAAA,CAAM;AAAA,OAoBd;AAAA;AAAA,GACH;AAEJ;AClFA,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAU1D,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIG,QAAAA,CAAsB,EAAE,CAAA;AACpD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAIA,QAAAA,iBAAsB,IAAI,KAAK,CAAA;AACzE,EAAA,MAAM,UAAA,GAAaC,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,MAAA,GAASC,WAAAA,CAAY,CAAC,EAAA,KAAe;AACzC,IAAA,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AACnD,IAAA,gBAAA,CAAiB,CAAC,IAAA,KAAS;AACzB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AACd,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,cAAA,GAAiBA,WAAAA,CAAY,CAAC,EAAA,KAAe;AACjD,IAAA,gBAAA,CAAiB,CAAC,SAAS,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,EAAE,CAAC,CAAA;AAAA,EAClD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,GAAA,GAAMA,WAAAA;AAAA,IACV,CAAC,IAAA,KAAgC;AAC/B,MAAA,MAAM,EAAA,GAAK,CAAA,SAAA,EAAY,EAAE,UAAA,CAAW,OAAO,CAAA,CAAA;AAC3C,MAAA,MAAM,KAAA,GAAmB,EAAE,GAAG,IAAA,EAAM,EAAA,EAAG;AAEvC,MAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,KAAK,CAAC,CAAA;AAEpC,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,QAAA,UAAA,CAAW,MAAM,cAAA,CAAe,EAAE,CAAA,EAAG,MAAM,QAAQ,CAAA;AAAA,MACrD;AAEA,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,cAAc;AAAA,GACjB;AAEA,EAAA,uBACEJ,IAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,cAAA,EAAgB,QAAO,EAC1F,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACDD,IAAC,cAAA,EAAA,EAAe;AAAA,GAAA,EAClB,CAAA;AAEJ;AAIO,SAAS,eAAA,GAAqC;AACnD,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,GAAA;AACT;AAIO,SAAS,QAAA,GAA+B;AAC7C,EAAA,MAAM,EAAE,GAAA,EAAK,cAAA,EAAe,GAAI,eAAA,EAAgB;AAEhD,EAAA,MAAM,WAAA,GAAcK,WAAAA;AAAA,IAClB,CAAC,OAAA,KACC,CAAC,KAAA,EAAe,OAAA,GAAwB,EAAC,KAAc;AACrD,MAAA,OAAO,GAAA,CAAI;AAAA,QACT,KAAA;AAAA,QACA,OAAA;AAAA,QACA,aAAa,OAAA,CAAQ,WAAA;AAAA,QACrB,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,UAAA,EAAY,QAAQ,UAAA,IAAc,OAAA;AAAA,QAClC,QAAA,EAAU,QAAQ,QAAA,IAAY;AAAA,OAC/B,CAAA;AAAA,IACH,CAAA;AAAA,IACF,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,KAAA,GAAQA,WAAAA;AAAA,IACZ,CAAC,KAAA,EAAe,OAAA,GAAqD,EAAC,KAAc;AAClF,MAAA,OAAO,GAAA,CAAI;AAAA,QACT,KAAA;AAAA,QACA,OAAA,EAAS,QAAQ,OAAA,IAAW,MAAA;AAAA,QAC5B,aAAa,OAAA,CAAQ,WAAA;AAAA,QACrB,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,UAAA,EAAY,QAAQ,UAAA,IAAc,OAAA;AAAA,QAClC,QAAA,EAAU,QAAQ,QAAA,IAAY;AAAA,OAC/B,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,KAAA,CAAM,IAAA,GAAO,YAAY,MAAM,CAAA;AAC/B,EAAA,KAAA,CAAM,OAAA,GAAU,YAAY,SAAS,CAAA;AACrC,EAAA,KAAA,CAAM,OAAA,GAAU,YAAY,SAAS,CAAA;AACrC,EAAA,KAAA,CAAM,KAAA,GAAQ,YAAY,OAAO,CAAA;AACjC,EAAA,KAAA,CAAM,OAAA,GAAU,YAAY,SAAS,CAAA;AACrC,EAAA,KAAA,CAAM,OAAA,GAAU,cAAA;AAEhB,EAAA,OAAO,EAAE,KAAA,EAAM;AACjB;ACvKA,SAAS,gBAAgB,GAAA,EAA4B;AACnD,EAAA,MAAM,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,EAAE,EAAE,IAAA,EAAK;AACpC,EAAA,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,EAAE,QAAA,CAAS,CAAA,CAAE,MAAM,CAAA,EAAG,OAAO,IAAA;AACvC,EAAA,MAAM,OAAO,CAAA,CAAE,MAAA,KAAW,CAAA,GAAI,CAAA,CAAE,MAAM,EAAE,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,CAAA,GAAI,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,GAAI,CAAA;AACvE,EAAA,MAAM,IAAI,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACvC,EAAA,MAAM,IAAI,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACvC,EAAA,MAAM,IAAI,QAAA,CAAS,IAAA,CAAK,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACvC,EAAA,IAAI,CAAC,GAAG,CAAA,EAAG,CAAC,EAAE,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,EAAG,OAAO,IAAA;AACzC,EAAA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,CAAA;AACvB;AAEA,SAAS,aAAa,KAAA,EAAoC;AACxD,EAAA,IAAI,CAAC,OAAO,OAAO,MAAA;AAGnB,EAAA,IAAI,MAAM,UAAA,CAAW,GAAG,GAAG,OAAO,eAAA,CAAgB,KAAK,CAAA,IAAK,MAAA;AAG5D,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,gDAAgD,CAAA;AACtE,EAAA,IAAI,CAAA,EAAG,OAAO,CAAA,EAAG,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAGrC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA;AACtC,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,MAAM,CAAC,CAAA,KAAM,CAAC,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,EAAG;AACtE,IAAA,OAAO,MAAM,IAAA,EAAK;AAAA,EACpB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,eAAA,CAAgB,EAAE,KAAA,EAAO,aAAA,EAAe,UAAS,EAAyB;AACxF,EAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,IAAI,CAAC,OAAO,OAAO,MAAA;AAEnB,IAAA,MAAM,OAA+B,EAAC;AAEtC,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACrD,MAAA,MAAM,KAAA,GAAQ,MAAM,GAAyB,CAAA;AAC7C,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,MAAM,OAAA,GAAU,aAAa,KAAK,CAAA;AAClC,QAAA,IAAI,OAAA,EAAS,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GAAI,OAAA;AAAA,MAClC,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,MACrB;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,uBACEL,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAU,KAAA,EACvB,QAAA,kBAAAA,GAAAA,CAAC,aAAA,EAAA,EAAc,QAAA,EAAU,aAAA,EAAgB,QAAA,EAAS,CAAA,EACpD,CAAA;AAEJ;ACtCA,IAAM,cAAA,GAAgD;AAAA,EACpD,KAAA,EACE,yGAAA;AAAA,EACF,OAAA,EACE,+FAAA;AAAA,EACF,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,WAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI,4BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,aAAA,GAA8C;AAAA,EAClD,IAAA,EAAM,iBAAA;AAAA,EACN,GAAA,EAAK,gBAAA;AAAA,EACL,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,MAAA,GAASM,UAAAA,CAA2C,SAASC,OAAAA,CACxE;AAAA,EACE,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,MAAA,GAAS,IAAA;AAAA,EACT,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAaC,OAAM,OAAA,CAAQ,MAAM,YAAY,OAAA,EAAS,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAE/E,EAAA,uBACEP,IAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,SAAA,EAAW;AAAA,QACT,2DAAA;AAAA,QACA,uCAAA;AAAA,QACA,sCAAA;AAAA,QACA,iHAAA;AAAA,QACA,eAAe,OAAO,CAAA;AAAA,QACtB,YAAY,IAAI,CAAA;AAAA,QAChB,cAAc,MAAM,CAAA;AAAA,QACpB,aAAa,4DAAA,GAA+D,EAAA;AAAA,QAC5E;AAAA,OACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,MACV,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,oBACCA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,+BAAA;AAAA,YACV,KAAA,EAAM,4BAAA;AAAA,YACN,IAAA,EAAK,MAAA;AAAA,YACL,OAAA,EAAQ,WAAA;AAAA,YACR,aAAA,EAAY,MAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,eAAA;AAAA,kBACV,EAAA,EAAG,IAAA;AAAA,kBACH,EAAA,EAAG,IAAA;AAAA,kBACH,CAAA,EAAE,IAAA;AAAA,kBACF,MAAA,EAAO,cAAA;AAAA,kBACP,WAAA,EAAY;AAAA;AAAA,eACd;AAAA,8BACAA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,eAAA;AAAA,kBACV,IAAA,EAAK,cAAA;AAAA,kBACL,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AAAA,SACF;AAAA,QAED,CAAC,OAAA,IAAW,QAAA,oBACXA,GAAAA,CAAC,UAAK,SAAA,EAAU,4BAAA,EAA6B,aAAA,EAAY,MAAA,EACtD,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,QAED,QAAA;AAAA,QACA,CAAC,OAAA,IAAW,SAAA,oBACXA,GAAAA,CAAC,UAAK,SAAA,EAAU,4BAAA,EAA6B,aAAA,EAAY,MAAA,EACtD,QAAA,EAAA,SAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;ACrGD,IAAM,mBAAA,GAAkF;AAAA,EACtF,KAAA,EAAO;AAAA,IACL,OAAA,EACE,yGAAA;AAAA,IACF,MAAA,EACE,qGAAA;AAAA,IACF,OAAA,EACE,yGAAA;AAAA,IACF,OAAA,EACE,yGAAA;AAAA,IACF,SAAA,EACE;AAAA,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EACE,+FAAA;AAAA,IACF,MAAA,EACE,4FAAA;AAAA,IACF,OAAA,EACE,+FAAA;AAAA,IACF,OAAA,EACE,+FAAA;AAAA,IACF,SAAA,EACE;AAAA,GACJ;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,gFAAA;AAAA,IACT,MAAA,EAAQ,8EAAA;AAAA,IACR,OAAA,EAAS,gFAAA;AAAA,IACT,OAAA,EAAS,gFAAA;AAAA,IACT,SAAA,EACE;AAAA;AAEN,CAAA;AAEA,IAAMS,YAAAA,GAA8C;AAAA,EAClD,EAAA,EAAI,0BAAA;AAAA,EACJ,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAMC,cAAAA,GAAkD;AAAA,EACtD,IAAA,EAAM,iBAAA;AAAA,EACN,GAAA,EAAK,gBAAA;AAAA,EACL,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,UAAA,GAAaJ,UAAAA,CAA+C,SAASK,WAAAA,CAChF;AAAA,EACE,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,MAAA,GAAS,MAAA;AAAA,EACT,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAE/B,EAAA,uBACEX,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,SAAA,EAAW;AAAA,QACT,kDAAA;AAAA,QACA,wBAAA;AAAA,QACA,sCAAA;AAAA,QACA,iHAAA;AAAA,QACA,mBAAA,CAAoB,OAAO,CAAA,CAAE,KAAK,CAAA;AAAA,QAClCS,aAAY,IAAI,CAAA;AAAA,QAChBC,eAAc,MAAM,CAAA;AAAA,QACpB,aAAa,4DAAA,GAA+D,EAAA;AAAA,QAC5E;AAAA,OACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,MACV,GAAG,IAAA;AAAA,MAEH,oCACCT,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,+BAAA;AAAA,UACV,KAAA,EAAM,4BAAA;AAAA,UACN,IAAA,EAAK,MAAA;AAAA,UACL,OAAA,EAAQ,WAAA;AAAA,UACR,aAAA,EAAY,MAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,eAAA;AAAA,gBACV,EAAA,EAAG,IAAA;AAAA,gBACH,EAAA,EAAG,IAAA;AAAA,gBACH,CAAA,EAAE,IAAA;AAAA,gBACF,MAAA,EAAO,cAAA;AAAA,gBACP,WAAA,EAAY;AAAA;AAAA,aACd;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,eAAA;AAAA,gBACV,IAAA,EAAK,cAAA;AAAA,gBACL,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AAAA,OACF,GAEA;AAAA;AAAA,GAEJ;AAEJ,CAAC;ACzGD,IAAM,aAAA,GAAiD;AAAA,EACrD,OAAA,EACE,iGAAA;AAAA,EACF,KAAA,EACE;AACJ,CAAA;AAEA,IAAMS,YAAAA,GAA6C;AAAA,EACjD,EAAA,EAAI,2CAAA;AAAA,EACJ,EAAA,EAAI,2CAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAMC,cAAAA,GAAiD;AAAA,EACrD,IAAA,EAAM,iBAAA;AAAA,EACN,GAAA,EAAK,gBAAA;AAAA,EACL,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,eAAA,GAAiD;AAAA,EACrD,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,mBAAA,GAAuD;AAAA,EAC3D,OAAA,EAAS,oBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,SAAA,GAAYJ,UAAAA;AAAA,EACvB,SAASM,UAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA,GAAS,SAAA;AAAA,IACT,IAAA,GAAO,IAAA;AAAA,IACP,MAAA,GAAS,IAAA;AAAA,IACT,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,gBAAA,GAAmB,EAAA;AAAA,IACnB,EAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,OAAA,GAAU,EAAA,IAAMJ,MAAAA,CAAM,KAAA,EAAM;AAElC,IAAA,uBACEP,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW;AAAA,UACT,2CAAA;AAAA,UACA;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QAGV,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCA,IAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,OAAA;AAAA,cACT,SAAA,EAAU,oCAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,gBACC,4BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA;AAAA,WAE9D;AAAA,0BAIFC,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW;AAAA,gBACT,kCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,cAAc,MAAM,CAAA;AAAA,gBACpBS,eAAc,MAAM,CAAA;AAAA,gBACpBD,aAAY,IAAI,CAAA;AAAA,gBAChB,WACI,sDAAA,GACA,EAAA;AAAA,gBACJ;AAAA,eACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gBAAA,QAAA,oBACCT,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW;AAAA,sBACT,+CAAA;AAAA,sBACA,gBAAgB,IAAI;AAAA,qBACtB,CAAE,KAAK,GAAG,CAAA;AAAA,oBACV,aAAA,EAAY,MAAA;AAAA,oBAEX,QAAA,EAAA;AAAA;AAAA,iBACH;AAAA,gCAGFA,GAAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,GAAA;AAAA,oBACA,EAAA,EAAI,OAAA;AAAA,oBACJ,QAAA;AAAA,oBACA,cAAA,EAAc,WAAW,OAAA,IAAW,MAAA;AAAA,oBACpC,kBAAA,EAAkB,UAAA,GAAa,CAAA,EAAG,OAAO,CAAA,OAAA,CAAA,GAAY,MAAA;AAAA,oBACrD,SAAA,EAAW;AAAA,sBACT,6CAAA;AAAA,sBACA,6CAAA;AAAA,sBACA,WAAW,uBAAA,GAA0B;AAAA,qBACvC,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,oBACV,GAAG;AAAA;AAAA,iBACN;AAAA,gBAEC,6BACCA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW;AAAA,sBACT,+CAAA;AAAA,sBACA,gBAAgB,IAAI;AAAA,qBACtB,CAAE,KAAK,GAAG,CAAA;AAAA,oBACV,aAAA,EAAY,MAAA;AAAA,oBAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,WAEJ;AAAA,UAGC,8BACCA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,GAAG,OAAO,CAAA,OAAA,CAAA;AAAA,cACd,SAAA,EAAW;AAAA,gBACT,6CAAA;AAAA,gBACA,oBAAoB,MAAM;AAAA,eAC5B,CAAE,KAAK,GAAG,CAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;ACrKA,IAAMS,YAAAA,GAA4C;AAAA,EAChD,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAMI,gBAAAA,GAAgD;AAAA,EACpD,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,mBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,gBAAA,GAAiD;AAAA,EACrD,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,SAAA,GAAY,CAAC,EAAE,SAAA,uBACnBb,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACN,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,qBAAA;AAAA,QACF,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB;AACF,CAAA;AAGF,IAAM,SAAA,GAAY,CAAC,EAAE,SAAA,uBACnBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACN,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,QAAA;AAAA,QACF,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc;AAAA;AAAA;AAChB;AACF,CAAA;AAGK,IAAM,QAAA,GAAWM,UAAAA;AAAA,EACtB,SAASQ,SAAAA,CACP;AAAA,IACE,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,QAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,EAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,QAAA,GAAWN,MAAAA,CAAM,MAAA,CAAyB,IAAI,CAAA;AACpD,IAAA,MAAM,OAAA,GAAU,EAAA,IAAMA,MAAAA,CAAM,KAAA,EAAM;AAElC,IAAAA,MAAAA,CAAM,mBAAA,CAAoB,GAAA,EAAK,MAAM,SAAS,OAA2B,CAAA;AAEzE,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,QAAA,CAAS,QAAQ,aAAA,GAAgB,aAAA;AAAA,MACnC;AAAA,IACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAA,MAAM,SAAA,GAAY,OAAA,IAAW,QAAA,CAAS,OAAA,EAAS,WAAW,cAAA,IAAkB,KAAA;AAC5E,IAAA,MAAM,WAAW,SAAA,IAAa,aAAA;AAE9B,IAAA,uBACEP,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,OAAA;AAAA,QACT,SAAA,EAAW;AAAA,UACT,qEAAA;AAAA,UACA,WAAW,qCAAA,GAAwC,mBAAA;AAAA,UACnD;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QAEX,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA;AAAA,gBACL,EAAA,EAAI,OAAA;AAAA,gBACJ,IAAA,EAAK,UAAA;AAAA,gBACL,QAAA;AAAA,gBACA,OAAA;AAAA,gBACA,cAAA;AAAA,gBACA,cAAA,EAAc,gBAAgB,OAAA,GAAU,MAAA;AAAA,gBACxC,QAAA;AAAA,gBACA,SAAA,EAAU,oBAAA;AAAA,gBACT,GAAG;AAAA;AAAA,aACN;AAAA,4BACAA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW;AAAA,kBACT,kDAAA;AAAA,kBACA,2CAAA;AAAA,kBACA,sCAAA;AAAA,kBACAS,aAAY,IAAI,CAAA;AAAA,kBAChB,WACI,iDAAA,GACA,mCAAA;AAAA,kBACJ,CAAC,QAAA,IAAY,CAAC,QAAA,GACV,yBAAA,GACA,EAAA;AAAA,kBACJ;AAAA,iBACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,gBACX,aAAA,EAAY,MAAA;AAAA,gBAEX,0CACCT,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAWa,iBAAgB,IAAI,CAAA,EAAG,CAAA,GAC3C,SAAA,mBACFb,GAAAA,CAAC,SAAA,EAAA,EAAU,WAAWa,gBAAAA,CAAgB,IAAI,GAAG,CAAA,GAC3C;AAAA;AAAA;AACN,WAAA,EACF,CAAA;AAAA,UAEC,yBACCb,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW;AAAA,gBACT,cAAA;AAAA,gBACA,iBAAiB,IAAI;AAAA,eACvB,CAAE,KAAK,GAAG,CAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AClGA,IAAMe,cAAAA,GAA8C;AAAA,EAClD,OAAA,EACE,iGAAA;AAAA,EACF,KAAA,EACE;AACJ,CAAA;AAEA,IAAMN,YAAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,6CAAA;AAAA,EACJ,EAAA,EAAI,6CAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAMC,cAAAA,GAA8C;AAAA,EAClD,IAAA,EAAM,iBAAA;AAAA,EACN,GAAA,EAAK,gBAAA;AAAA,EACL,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,qBAAA,GAAsD;AAAA,EAC1D,IAAA,EAAM,iBAAA;AAAA,EACN,GAAA,EAAK,gBAAA;AAAA,EACL,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,EAAA,EAAI,eAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEA,IAAMM,oBAAAA,GAAoD;AAAA,EACxD,OAAA,EAAS,oBAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,iBAAA,GAAgD;AAAA,EACpD,EAAA,EAAI,uCAAA;AAAA,EACJ,EAAA,EAAI,qCAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,WAAA,GAAc,CAAC,EAAE,SAAA,uBACrBhB,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACN,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,qIAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF,CAAA;AAGF,IAAMiB,UAAAA,GAAY,CAAC,EAAE,SAAA,uBACnBjB,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACN,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,kBAAAA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,qBAAA;AAAA,QACF,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe;AAAA;AAAA;AACjB;AACF,CAAA;AAGK,IAAM,MAAA,GAASM,UAAAA;AAAA,EACpB,SAASY,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,MAAM;AAAA,MACJ,OAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA,GAAc,QAAA;AAAA,MACd,MAAA,GAAS,SAAA;AAAA,MACT,IAAA,GAAO,IAAA;AAAA,MACP,MAAA,GAAS,IAAA;AAAA,MACT,UAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,SAAA,GAAY,EAAA;AAAA,MACZ,gBAAA,GAAmB,EAAA;AAAA,MACnB,QAAA,GAAW;AAAA,KACb,GAAI,KAAA;AAEJ,IAAA,MAAM,SAAA,GAAYV,OAAM,KAAA,EAAM;AAC9B,IAAA,MAAM,SAAA,GAAYA,OAAM,KAAA,EAAM;AAC9B,IAAA,MAAM,QAAA,GAAWA,OAAM,KAAA,EAAM;AAE7B,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,MAAAA,CAAM,SAAS,EAAE,CAAA;AAEvD,IAAA,MAAM,UAAA,GAAaA,MAAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AACpD,IAAA,MAAM,QAAA,GAAWA,MAAAA,CAAM,MAAA,CAA0B,IAAI,CAAA;AACrD,IAAA,MAAM,UAAA,GAAaA,MAAAA,CAAM,MAAA,CAAyB,IAAI,CAAA;AAEtD,IAAAA,MAAAA,CAAM,mBAAA,CAAoB,GAAA,EAAK,MAAM,SAAS,OAA4B,CAAA;AAG1E,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,MAAAA,CAAM,SAAmB,MAAM;AACvE,MAAA,IAAI,KAAA,CAAM,iBAAiB,MAAA,EAAW;AACpC,QAAA,OAAO,KAAA,CAAM,QAAQ,KAAA,CAAM,YAAY,IACnC,KAAA,CAAM,YAAA,GACN,CAAC,KAAA,CAAM,YAAY,CAAA;AAAA,MACzB;AACA,MAAA,OAAO,EAAC;AAAA,IACV,CAAC,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,MAAM,KAAA,KAAU,MAAA;AACrC,IAAA,MAAM,iBAA2B,YAAA,GAC7B,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GACvB,KAAA,CAAM,KAAA,GACN,KAAA,CAAM,UAAU,MAAA,GACd,CAAC,MAAM,KAAK,CAAA,GACZ,EAAC,GACL,aAAA;AAEJ,IAAA,MAAM,iBAAiB,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,QAAQ,CAAA;AAExD,IAAA,MAAM,YAAA,GAAe,CAAC,WAAA,KAAwB;AAC5C,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,IAAA,GAAO,cAAA,CAAe,QAAA,CAAS,WAAW,IAC5C,cAAA,CAAe,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,WAAW,CAAA,GAC9C,CAAC,GAAG,gBAAgB,WAAW,CAAA;AAEnC,QAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,IAAI,CAAA;AACxC,QAAC,KAAA,CAA8B,WAAW,IAAI,CAAA;AAAA,MAChD,CAAA,MAAO;AACL,QAAA,MAAM,IAAA,GAAO,CAAC,WAAW,CAAA;AACzB,QAAA,IAAI,CAAC,YAAA,EAAc,gBAAA,CAAiB,IAAI,CAAA;AACxC,QAAC,KAAA,CAA4B,WAAW,WAAW,CAAA;AACnD,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,MAC1B;AAAA,IACF,CAAA;AAGA,IAAA,MAAM,WAAA,GAAcA,MAAAA,CAAM,OAAA,CAAQ,MAAM;AACtC,MAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAExC,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,cAAA,CAAe,CAAC,CAAC,CAAA,EAAG,KAAA,IAAS,IAAA;AAAA,MACtE;AAEA,MAAA,MAAM,iBAAiB,cAAA,CACpB,GAAA,CAAI,CAAC,CAAA,KAAM,QAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,CAAC,CAAA,EAAG,KAAK,CAAA,CACpD,OAAO,OAAO,CAAA;AAEjB,MAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AACxC,MAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG,OAAO,eAAe,CAAC,CAAA;AACxD,MAAA,OAAO,CAAA,EAAG,eAAe,MAAM,CAAA,SAAA,CAAA;AAAA,IACjC,CAAA,EAAG,CAAC,cAAA,EAAgB,OAAA,EAAS,QAAQ,CAAC,CAAA;AAGtC,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,MAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAkB;AAC5C,QAAA,IAAI,UAAA,CAAW,WAAW,CAAC,UAAA,CAAW,QAAQ,QAAA,CAAS,CAAA,CAAE,MAAc,CAAA,EAAG;AACxE,UAAA,SAAA,CAAU,KAAK,CAAA;AAAA,QACjB;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,kBAAkB,CAAA;AAAA,IAC3E,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,MAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqB;AACzC,QAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,UAAA,SAAA,CAAU,KAAK,CAAA;AACf,UAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,QAC1B;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,YAAY,CAAA;AACjD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,YAAY,CAAA;AAAA,IACnE,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,MAAA,IAAU,WAAA,GAAc,CAAA,EAAG;AAChC,MAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AAC7C,MAAA,IAAI,OAAO,QAAA,EAAU,cAAA,KAAmB,UAAA,EAAY;AAClD,QAAA,QAAA,CAAS,cAAA,CAAe,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,MAC9C;AAAA,IACF,CAAA,EAAG,CAAC,WAAA,EAAa,MAAM,CAAC,CAAA;AAGxB,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAM,mBAAmB,OAAA,CAAQ,SAAA;AAAA,UAC/B,CAAC,MAAM,CAAC,CAAA,CAAE,YAAY,cAAA,CAAe,QAAA,CAAS,EAAE,KAAK;AAAA,SACvD;AACA,QAAA,cAAA,CAAe,gBAAA,IAAoB,CAAA,GAAI,gBAAA,GAAmB,CAAC,CAAA;AAAA,MAC7D,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,EAAE,CAAA;AAAA,MACnB;AAAA,IACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,MAAA,IAAI,QAAA,EAAU;AAEd,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,WAAA;AAAA,QACL,KAAK,MAAA,EAAQ;AACX,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,SAAA,CAAU,IAAI,CAAA;AACd,YAAA;AAAA,UACF;AACA,UAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACvB,YAAA,KAAA,IAAS,IAAI,IAAA,GAAO,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AAC9C,cAAA,IAAI,CAAC,OAAA,CAAQ,CAAC,CAAA,CAAE,UAAU,OAAO,CAAA;AAAA,YACnC;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA;AACD,UAAA;AAAA,QACF;AAAA,QACA,KAAK,SAAA;AAAA,QACL,KAAK,IAAA,EAAM;AACT,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,SAAA,CAAU,IAAI,CAAA;AACd,YAAA;AAAA,UACF;AACA,UAAA,cAAA,CAAe,CAAC,IAAA,KAAS;AACvB,YAAA,KAAA,IAAS,CAAA,GAAI,IAAA,GAAO,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAClC,cAAA,IAAI,CAAC,OAAA,CAAQ,CAAC,CAAA,CAAE,UAAU,OAAO,CAAA;AAAA,YACnC;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA;AACD,UAAA;AAAA,QACF;AAAA,QACA,KAAK,OAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,SAAA,CAAU,IAAI,CAAA;AAAA,UAChB,WAAW,WAAA,IAAe,CAAA,IAAK,CAAC,OAAA,CAAQ,WAAW,EAAE,QAAA,EAAU;AAC7D,YAAA,YAAA,CAAa,OAAA,CAAQ,WAAW,CAAA,CAAE,KAAK,CAAA;AAAA,UACzC;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA,EAAQ;AACX,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,MAAM,GAAA,GAAM,eAAe,MAAA,GAAS,CAAA,GAChC,QAAQ,OAAA,CAAQ,cAAA,CAAe,CAAC,CAAC,CAAA,GACjC,CAAA;AACJ,YAAA,cAAA,CAAe,GAAG,CAAA;AAAA,UACpB;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,MAAM,GAAA,GAAM,cAAA,CAAe,MAAA,GAAS,CAAA,GAChC,OAAA,CAAQ,OAAA,CAAQ,cAAA,CAAe,cAAA,CAAe,MAAA,GAAS,CAAC,CAAC,CAAA,GACzD,QAAQ,MAAA,GAAS,CAAA;AACrB,YAAA,cAAA,CAAe,GAAG,CAAA;AAAA,UACpB;AACA,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,IAAI,MAAA,YAAkB,KAAK,CAAA;AAC3B,UAAA;AAAA,QACF;AAEE;AACJ,IACF,CAAA;AAEA,IAAA,uBACEP,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAW;AAAA,UACT,uDAAA;AAAA,UACA;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QAGV,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCA,IAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,GAAG,SAAS,CAAA,MAAA,CAAA;AAAA,cAChB,SAAA,EAAU,oCAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,gBACC,4BACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA;AAAA,WAE9D;AAAA,0BAIFC,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,QAAA;AAAA,cACL,EAAA,EAAI,SAAA;AAAA,cACJ,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,UAAA;AAAA,cACL,eAAA,EAAe,MAAA;AAAA,cACf,eAAA,EAAc,SAAA;AAAA,cACd,eAAA,EAAe,SAAA;AAAA,cACf,iBAAA,EAAiB,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,cAChD,kBAAA,EAAkB,aAAa,QAAA,GAAW,MAAA;AAAA,cAC1C,cAAA,EAAc,WAAW,OAAA,IAAW,MAAA;AAAA,cACpC,iBAAe,QAAA,IAAY,MAAA;AAAA,cAC3B,QAAA;AAAA,cACA,OAAA,EAAS,MAAM,CAAC,QAAA,IAAY,UAAU,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,cAC/C,SAAA,EAAW,aAAA;AAAA,cACX,SAAA,EAAW;AAAA,gBACT,qDAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,wBAAA;AAAA,gBACAc,eAAc,MAAM,CAAA;AAAA,gBACpBL,eAAc,MAAM,CAAA;AAAA,gBACpBD,aAAY,IAAI,CAAA;AAAA,gBAChB,WACI,sDAAA,GACA,mBAAA;AAAA,gBACJ;AAAA,eACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAAT,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW;AAAA,sBACT,uBAAA;AAAA,sBACA,cAAc,cAAA,GAAiB;AAAA,qBACjC,CAAE,KAAK,GAAG,CAAA;AAAA,oBAET,QAAA,EAAA,WAAA,IAAe;AAAA;AAAA,iBAClB;AAAA,gCAEAA,GAAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW;AAAA,sBACT,sFAAA;AAAA,sBACA,SAAS,eAAA,GAAkB;AAAA,qBAC7B,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG;AAAA;AAAA;AACb;AAAA;AAAA,WACF;AAAA,UAGC,0BACCA,GAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,UAAA;AAAA,cACL,EAAA,EAAI,SAAA;AAAA,cACJ,IAAA,EAAK,SAAA;AAAA,cACL,iBAAA,EAAiB,KAAA,GAAQ,CAAA,EAAG,SAAS,CAAA,MAAA,CAAA,GAAW,SAAA;AAAA,cAChD,wBAAsB,QAAA,IAAY,MAAA;AAAA,cAClC,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAW;AAAA,gBACT,uCAAA;AAAA,gBACA,0CAAA;AAAA,gBACA,2CAAA;AAAA,gBACA,SAAA;AAAA,gBACA,sBAAsB,MAAM;AAAA,eAC9B,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cACX,KAAA,EAAO,EAAE,GAAA,EAAK,MAAA,EAAO;AAAA,cAEpB,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,KAAU;AAC9B,gBAAA,MAAM,UAAA,GAAa,cAAA,CAAe,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA;AACvD,gBAAA,MAAM,WAAW,KAAA,KAAU,WAAA;AAC3B,gBAAA,MAAM,aAAa,MAAA,CAAO,QAAA;AAE1B,gBAAA,uBACEC,IAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBAEC,EAAA,EAAI,CAAA,EAAG,SAAS,CAAA,QAAA,EAAW,KAAK,CAAA,CAAA;AAAA,oBAChC,IAAA,EAAK,QAAA;AAAA,oBACL,eAAA,EAAe,UAAA;AAAA,oBACf,iBAAe,UAAA,IAAc,MAAA;AAAA,oBAC7B,SAAS,MAAM;AACb,sBAAA,IAAI,CAAC,UAAA,EAAY,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA;AAAA,oBAC5C,CAAA;AAAA,oBACA,cAAc,MAAM;AAClB,sBAAA,IAAI,CAAC,UAAA,EAAY,cAAA,CAAe,KAAK,CAAA;AAAA,oBACvC,CAAA;AAAA,oBACA,SAAA,EAAW;AAAA,sBACT,qDAAA;AAAA,sBACA,sCAAA;AAAA,sBACA,kBAAkB,IAAI,CAAA;AAAA,sBACtB,aACI,qCAAA,GACA,mBAAA;AAAA,sBACJ,QAAA,IAAY,CAAC,UAAA,GACT,kBAAA,GACA,EAAA;AAAA,sBACJ,UAAA,IAAc,CAAC,QAAA,GACX,iBAAA,GACA;AAAA,qBACN,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,oBAEX,QAAA,EAAA;AAAA,sCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EACb,iBAAO,KAAA,EACV,CAAA;AAAA,sBAEC,2BACCA,GAAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAW;AAAA,4BACT,kDAAA;AAAA,4BACA,2BAAA;AAAA,4BACA,+DAAA;AAAA,4BACA,aACI,iDAAA,GACA;AAAA,2BACN,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,0BACX,aAAA,EAAY,MAAA;AAAA,0BAEX,wCACCA,GAAAA,CAACiB,UAAAA,EAAA,EAAU,WAAU,eAAA,EAAgB;AAAA;AAAA,0BAIzC,UAAA,oBACEjB,IAACiB,UAAAA,EAAA,EAAU,WAAU,+CAAA,EAAgD;AAAA;AAAA,mBAAA;AAAA,kBApDpE,MAAA,CAAO;AAAA,iBAuDd;AAAA,cAEJ,CAAC;AAAA;AAAA,WACH;AAAA,UAID,8BACCjB,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,QAAA;AAAA,cACJ,SAAA,EAAW;AAAA,gBACT,6CAAA;AAAA,gBACAgB,qBAAoB,MAAM;AAAA,eAC5B,CAAE,KAAK,GAAG,CAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;ACveA,IAAMG,eAAAA,GAAiD;AAAA,EACrD,KAAA,EAAO,oEAAA;AAAA,EACP,OAAA,EACE,2EAAA;AAAA,EACF,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,mBAAA,GAAsD;AAAA,EAC1D,KAAA,EAAO,gCAAA;AAAA,EACP,OAAA,EAAS,uCAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEA,IAAMV,YAAAA,GAA2C;AAAA,EAC/C,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,uBAAA,GAA4D;AAAA,EAChE,GAAA,EAAK,wDAAA;AAAA,EACL,WAAA,EAAa,kCAAA;AAAA,EACb,SAAA,EAAW,mCAAA;AAAA,EACX,MAAA,EAAQ,qDAAA;AAAA,EACR,cAAA,EAAgB,+BAAA;AAAA,EAChB,YAAA,EAAc,gCAAA;AAAA,EACd,IAAA,EAAM,sDAAA;AAAA,EACN,YAAA,EAAc,gCAAA;AAAA,EACd,UAAA,EAAY,mCAAA;AAAA,EACZ,KAAA,EAAO,qDAAA;AAAA,EACP,aAAA,EAAe,+BAAA;AAAA,EACf,WAAA,EAAa;AACf,CAAA;AAEA,IAAM,qBAAA,GAA0D;AAAA,EAC9D,GAAA,EAAK,6EAAA;AAAA,EACL,WAAA,EAAa,uDAAA;AAAA,EACb,SAAA,EAAW,wDAAA;AAAA,EACX,MAAA,EACE,2EAAA;AAAA,EACF,cAAA,EAAgB,qDAAA;AAAA,EAChB,YAAA,EAAc,sDAAA;AAAA,EACd,IAAA,EAAM,2EAAA;AAAA,EACN,YAAA,EAAc,qDAAA;AAAA,EACd,UAAA,EAAY,wDAAA;AAAA,EACZ,KAAA,EACE,2EAAA;AAAA,EACF,aAAA,EAAe,qDAAA;AAAA,EACf,WAAA,EAAa;AACf,CAAA;AAEO,IAAM,OAAA,GAAUH,UAAAA;AAAA,EACrB,SAASc,QAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA,GAAU,OAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,SAAA,GAAY,KAAA;AAAA,IACZ,QAAA,GAAW,KAAA;AAAA,IACX,IAAA;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,YAAA;AAAA,IACA,UAAA,GAAa,GAAA;AAAA,IACb,UAAA,GAAa,GAAA;AAAA,IACb,QAAA;AAAA,IACA,SAAA,GAAY;AAAA,KAEd,GAAA,EACA;AACA,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIjB,SAAS,KAAK,CAAA;AACtD,IAAA,MAAM,aAAA,GAAgBC,OAA6C,IAAI,CAAA;AACvE,IAAA,MAAM,aAAA,GAAgBA,OAA6C,IAAI,CAAA;AAEvE,IAAA,MAAM,eAAe,cAAA,KAAmB,MAAA;AACxC,IAAA,MAAM,MAAA,GAAS,eAAe,cAAA,GAAiB,YAAA;AAE/C,IAAA,MAAM,OAAA,GAAUC,WAAAA;AAAA,MACd,CAAC,KAAA,KAAmB;AAClB,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,QACvB;AACA,QAAA,YAAA,GAAe,KAAK,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,CAAC,cAAc,YAAY;AAAA,KAC7B;AAEA,IAAA,MAAM,WAAA,GAAcA,YAAY,MAAM;AACpC,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,YAAA,CAAa,cAAc,OAAO,CAAA;AAClC,QAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,MAC1B;AACA,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,YAAA,CAAa,cAAc,OAAO,CAAA;AAClC,QAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,MAC1B;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,WAAA,GAAcA,YAAY,MAAM;AACpC,MAAA,WAAA,EAAY;AACZ,MAAA,aAAA,CAAc,OAAA,GAAU,WAAW,MAAM;AACvC,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd,GAAG,UAAU,CAAA;AAAA,IACf,CAAA,EAAG,CAAC,WAAA,EAAa,UAAA,EAAY,OAAO,CAAC,CAAA;AAErC,IAAA,MAAM,WAAA,GAAcA,YAAY,MAAM;AACpC,MAAA,WAAA,EAAY;AACZ,MAAA,aAAA,CAAc,OAAA,GAAU,WAAW,MAAM;AACvC,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf,GAAG,UAAU,CAAA;AAAA,IACf,CAAA,EAAG,CAAC,WAAA,EAAa,UAAA,EAAY,OAAO,CAAC,CAAA;AAErC,IAAA,MAAM,WAAA,GAAcA,YAAY,MAAM;AACpC,MAAA,WAAA,EAAY;AACZ,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA,EAAG,CAAC,WAAA,EAAa,OAAO,CAAC,CAAA;AAEzB,IAAAgB,UAAU,MAAM;AACd,MAAA,OAAO,MAAM,WAAA,EAAY;AAAA,IAC3B,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,IAAA,MAAM,YAAA,GAAeb,MAAAA,CAAM,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AAEjD,IAAA,MAAM,cAAA,GAAiBA,MAAAA,CAAM,YAAA,CAAa,YAAA,EAAc;AAAA,MACtD,YAAA,EAAc,CAAC,CAAA,KAAwB;AACrC,QAAA,WAAA,EAAY;AACZ,QAAA,YAAA,CAAa,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA,MACrC,CAAA;AAAA,MACA,YAAA,EAAc,CAAC,CAAA,KAAwB;AACrC,QAAA,WAAA,EAAY;AACZ,QAAA,YAAA,CAAa,KAAA,CAAM,eAAe,CAAC,CAAA;AAAA,MACrC,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,CAAA,KAAwB;AAChC,QAAA,WAAA,EAAY;AACZ,QAAA,YAAA,CAAa,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,MAChC,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,CAAA,KAAwB;AAC/B,QAAA,WAAA,EAAY;AACZ,QAAA,YAAA,CAAa,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,MAC/B,CAAA;AAAA,MACA,kBAAA,EAAoB,SAAS,YAAA,GAAe;AAAA,KACR,CAAA;AAEtC,IAAA,MAAM,eAAA,GAAkB,QAAA,IAAY,IAAA,KAAS,IAAA,IAAQ,WAAA;AAErD,IAAA,MAAM,gBAAA,GACJ,OAAA,KAAY,MAAA,GAAS,EAAA,GAAK,yBAAA;AAE5B,IAAA,uBACEP,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,4BAAA;AAAA,QACV,YAAA,EAAc,WAAA;AAAA,QACd,YAAA,EAAc,WAAA;AAAA,QAEb,QAAA,EAAA;AAAA,UAAA,cAAA;AAAA,UACA,0BACCA,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,EAAA,EAAG,YAAA;AAAA,cACH,IAAA,EAAK,SAAA;AAAA,cACL,SAAA,EAAW;AAAA,gBACT,wDAAA;AAAA,gBACA,wBAAwB,SAAS,CAAA;AAAA,gBACjCkB,gBAAe,OAAO,CAAA;AAAA,gBACtBV,aAAY,IAAI,CAAA;AAAA,gBAChB;AAAA,eACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,cAGX,QAAA,EAAA;AAAA,gCAAAT,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAY,MAAA;AAAA,oBACZ,SAAA,EAAW;AAAA,sBACT,+BAAA;AAAA,sBACA,gBAAA;AAAA,sBACA,oBAAoB,OAAO,CAAA;AAAA,sBAC3B,sBAAsB,SAAS;AAAA,qBACjC,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG;AAAA;AAAA,iBACb;AAAA,gCAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,IAAA,oBACCD,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,4BAAA,EAA6B,aAAA,EAAY,QACtD,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,kCAGFC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,oCAAAD,GAAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW;AAAA,0BACT,mCAAA;AAAA,0BACA,IAAA,KAAS,OAAO,YAAA,GAAe;AAAA,yBACjC,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,wBAEV,QAAA,EAAA;AAAA;AAAA,qBACH;AAAA,oBACC,WAAA,IAAe,IAAA,KAAS,IAAA,oBACvBA,GAAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW;AAAA,0BACT,sCAAA;AAAA,0BACA,OAAA,KAAY,SACR,oBAAA,GACA;AAAA,yBACN,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,wBAEV,QAAA,EAAA;AAAA;AAAA;AACH,mBAAA,EAEJ,CAAA;AAAA,kBAEC,mCACCA,GAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,QAAA;AAAA,sBACL,YAAA,EAAW,eAAA;AAAA,sBACX,OAAA,EAAS,WAAA;AAAA,sBACT,SAAA,EAAW;AAAA,wBACT,kDAAA;AAAA,wBACA,sCAAA;AAAA,wBACA,kFAAA;AAAA,wBACA,OAAA,KAAY,SACR,0CAAA,GACA;AAAA,uBACN,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,sBAEX,QAAA,kBAAAA,GAAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAM,4BAAA;AAAA,0BACN,OAAA,EAAQ,WAAA;AAAA,0BACR,IAAA,EAAK,cAAA;AAAA,0BACL,SAAA,EAAU,eAAA;AAAA,0BACV,aAAA,EAAY,MAAA;AAAA,0BAEZ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,8KAAA,EAA+K;AAAA;AAAA;AACzL;AAAA;AACF,iBAAA,EAEJ;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;ACjSO,IAAM,SAAA,GAAYM,UAAAA;AAAA,EACvB,SAASgB,UAAAA,CAAU,EAAE,KAAA,GAAQ,KAAA,EAAO,SAAA,GAAY,EAAA,EAAI,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC5E,IAAA,uBACEtB,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW;AAAA,UACT,sBAAA;AAAA,UACA,mBAAA;AAAA,UACA,CAAC,QACG,+DAAA,GACA,EAAA;AAAA,UACJ;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AChBA,IAAM,WAAA,GAAsC;AAAA,EAC1C,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,CAAA,EAAG,gBAAA;AAAA,EACH,EAAA,EAAI,iBAAA;AAAA,EACJ,EAAA,EAAI,iBAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,aAAA,GAAgBM,UAAAA;AAAA,EAC3B,SAASiB,cAAAA,CAAc,EAAE,OAAA,EAAS,OAAA,EAAS,SAAA,GAAY,EAAA,EAAI,KAAA,EAAO,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC1F,IAAA,MAAM,QAAA,GAAW,OAAA,GACb,WAAA,CAAY,OAAO,CAAA,GACnB,2CAAA;AAEJ,IAAA,MAAM,QAAA,GACJ,OAAA,KAAY,MAAA,GACR,EAAE,GAAA,EAAK,GAAG,OAAO,CAAA,EAAA,CAAA,EAAM,GAAG,KAAA,EAAM,GAChC,KAAA;AAEN,IAAA,uBACEvB,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAW;AAAA,UACT,SAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA,KAAY,SAAY,iEAAA,GAAoE,EAAA;AAAA,UAC5F;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AClCA,IAAM,iBAAA,GAAgD;AAAA,EACpD,CAAA,EAAG,eAAA;AAAA,EACH,CAAA,EAAG,eAAA;AAAA,EACH,CAAA,EAAG,eAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,mBAAA,GAAkD;AAAA,EACtD,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,mBAAA,GAAkD;AAAA,EACtD,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,mBAAA,GAAkD;AAAA,EACtD,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG,yBAAA;AAAA,EACH,CAAA,EAAG;AACL,CAAA;AAEA,IAAM,kBAAA,GAA+C;AAAA,EACnD,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,oBAAA,GAAiD;AAAA,EACrD,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,oBAAA,GAAiD;AAAA,EACrD,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,oBAAA,GAAiD;AAAA,EACrD,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,CAAA,EAAG,0BAAA;AAAA,EACH,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI,2BAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,QAAA,GAAWM,UAAAA;AAAA,EACtB,SAASkB,SAAAA,CACP;AAAA,IACE,MAAA,GAAS,CAAA;AAAA,IACT,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA,GAAU,EAAA;AAAA,IACV,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,uBACExB,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW;AAAA,UACT,kBAAkB,MAAM,CAAA;AAAA,UACxB,QAAA,KAAa,MAAA,GAAY,mBAAA,CAAoB,QAAQ,CAAA,GAAI,EAAA;AAAA,UACzD,QAAA,KAAa,MAAA,GAAY,mBAAA,CAAoB,QAAQ,CAAA,GAAI,EAAA;AAAA,UACzD,QAAA,KAAa,MAAA,GAAY,mBAAA,CAAoB,QAAQ,CAAA,GAAI,EAAA;AAAA,UACzD,mBAAmB,OAAO,CAAA;AAAA,UAC1B,SAAA,KAAc,MAAA,GAAY,oBAAA,CAAqB,SAAS,CAAA,GAAI,EAAA;AAAA,UAC5D,SAAA,KAAc,MAAA,GAAY,oBAAA,CAAqB,SAAS,CAAA,GAAI,EAAA;AAAA,UAC5D,SAAA,KAAc,MAAA,GAAY,oBAAA,CAAqB,SAAS,CAAA,GAAI,EAAA;AAAA,UAC5D;AAAA,SACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF","file":"index.mjs","sourcesContent":["export type RehagroTheme = {\n /** Brand colors — accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\n primary?: string;\n primaryHover?: string;\n secondary?: string;\n secondaryHover?: string;\n danger?: string;\n dangerHover?: string;\n warning?: string;\n success?: string;\n\n /** Semantic colors */\n text?: string;\n textMuted?: string;\n surface?: string;\n background?: string;\n border?: string;\n ring?: string;\n\n /** Border radius (xxs:4 → xs:8 → sm:12 → md:16 → lg:24 → xl:32) */\n radiusXxs?: string;\n radiusXs?: string;\n radiusSm?: string;\n radiusMd?: string;\n radiusLg?: string;\n radiusXl?: string;\n\n /** Border width */\n borderWidthSm?: string;\n borderWidthMd?: string;\n borderWidthLg?: string;\n\n /** Input sizes */\n inputHeightSm?: string;\n inputHeightMd?: string;\n inputHeightLg?: string;\n inputPxSm?: string;\n inputPxMd?: string;\n inputPxLg?: string;\n};\n\nexport type RehagroProviderProps = {\n /** Theme overrides — any token not provided keeps the default value */\n theme?: RehagroTheme;\n /** Toast container position. Default: \"top-right\" */\n toastPosition?: import(\"../components/Toast\").ToastPosition;\n children: React.ReactNode;\n};\n\n/** Maps theme keys to CSS custom property names */\nexport const TOKEN_MAP: Record<keyof RehagroTheme, { var: string; isColor: boolean }> = {\n primary: { var: \"--rh-primary\", isColor: true },\n primaryHover: { var: \"--rh-primary-hover\", isColor: true },\n secondary: { var: \"--rh-secondary\", isColor: true },\n secondaryHover: { var: \"--rh-secondary-hover\", isColor: true },\n danger: { var: \"--rh-danger\", isColor: true },\n dangerHover: { var: \"--rh-danger-hover\", isColor: true },\n warning: { var: \"--rh-warning\", isColor: true },\n success: { var: \"--rh-success\", isColor: true },\n text: { var: \"--rh-text\", isColor: true },\n textMuted: { var: \"--rh-text-muted\", isColor: true },\n surface: { var: \"--rh-surface\", isColor: true },\n background: { var: \"--rh-background\", isColor: true },\n border: { var: \"--rh-border\", isColor: true },\n ring: { var: \"--rh-ring\", isColor: true },\n radiusXxs: { var: \"--rh-radius-xxs\", isColor: false },\n radiusXs: { var: \"--rh-radius-xs\", isColor: false },\n radiusSm: { var: \"--rh-radius-sm\", isColor: false },\n radiusMd: { var: \"--rh-radius-md\", isColor: false },\n radiusLg: { var: \"--rh-radius-lg\", isColor: false },\n radiusXl: { var: \"--rh-radius-xl\", isColor: false },\n borderWidthSm: { var: \"--rh-border-width-sm\", isColor: false },\n borderWidthMd: { var: \"--rh-border-width-md\", isColor: false },\n borderWidthLg: { var: \"--rh-border-width-lg\", isColor: false },\n inputHeightSm: { var: \"--rh-input-height-sm\", isColor: false },\n inputHeightMd: { var: \"--rh-input-height-md\", isColor: false },\n inputHeightLg: { var: \"--rh-input-height-lg\", isColor: false },\n inputPxSm: { var: \"--rh-input-px-sm\", isColor: false },\n inputPxMd: { var: \"--rh-input-px-md\", isColor: false },\n inputPxLg: { var: \"--rh-input-px-lg\", isColor: false },\n};\n","import type { IconProps } from \"./types\";\n\nexport const DeleteIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const EditIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SearchIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const PlusIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const InfoIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const WarningIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SuccessIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const ErrorIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const NeutralIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3.75a.75.75 0 000 1.5h.01a.75.75 0 000-1.5H10zm-.75 3a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v3a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75v-3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const CloseIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport {\n InfoIcon,\n WarningIcon,\n SuccessIcon,\n ErrorIcon,\n NeutralIcon,\n CloseIcon,\n} from \"../../icons\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"success\" | \"error\" | \"neutral\";\nexport type ToastAppearance = \"solid\" | \"light\" | \"outline\";\n\nexport type ToastLink = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type ToastProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Toast title */\n title: string;\n /** Optional description below the title */\n description?: string;\n /** Optional link below the content */\n link?: ToastLink;\n /** Visual variant */\n variant?: ToastVariant;\n /** Visual appearance */\n appearance?: ToastAppearance;\n /** Callback when the close button is clicked */\n onClose?: () => void;\n};\n\n// ── Icon map ──────────────────────────────────────────────────────────────────\n\ntype IconComponent = React.FC<React.SVGAttributes<SVGSVGElement>>;\n\nconst variantIconMap: Record<ToastVariant, IconComponent> = {\n info: InfoIcon,\n warning: WarningIcon,\n success: SuccessIcon,\n error: ErrorIcon,\n neutral: NeutralIcon,\n};\n\n// ── Style maps ────────────────────────────────────────────────────────────────\n\ntype StyleKey = `${ToastVariant}-${ToastAppearance}`;\n\nconst containerStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-bg-blue-600 rh-text-white rh-border-transparent\",\n \"info-light\": \"rh-bg-blue-50 rh-text-blue-900 rh-border-blue-200\",\n \"info-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"warning-solid\": \"rh-bg-yellow-500 rh-text-white rh-border-transparent\",\n \"warning-light\": \"rh-bg-yellow-50 rh-text-yellow-900 rh-border-yellow-200\",\n \"warning-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"success-solid\": \"rh-bg-[rgb(var(--rh-success))] rh-text-white rh-border-transparent\",\n \"success-light\": \"rh-bg-green-50 rh-text-green-900 rh-border-green-200\",\n \"success-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"error-solid\": \"rh-bg-[rgb(var(--rh-danger))] rh-text-white rh-border-transparent\",\n \"error-light\": \"rh-bg-red-50 rh-text-red-900 rh-border-red-200\",\n \"error-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"neutral-solid\": \"rh-bg-gray-900 rh-text-white rh-border-transparent\",\n \"neutral-light\": \"rh-bg-gray-100 rh-text-gray-900 rh-border-gray-200\",\n \"neutral-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n};\n\nconst iconStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white\",\n \"info-light\": \"rh-text-blue-600\",\n \"info-outline\": \"rh-text-blue-600\",\n \"warning-solid\": \"rh-text-white\",\n \"warning-light\": \"rh-text-yellow-600\",\n \"warning-outline\": \"rh-text-yellow-600\",\n \"success-solid\": \"rh-text-white\",\n \"success-light\": \"rh-text-green-600\",\n \"success-outline\": \"rh-text-green-600\",\n \"error-solid\": \"rh-text-white\",\n \"error-light\": \"rh-text-red-600\",\n \"error-outline\": \"rh-text-red-600\",\n \"neutral-solid\": \"rh-text-white\",\n \"neutral-light\": \"rh-text-gray-600\",\n \"neutral-outline\": \"rh-text-gray-600\",\n};\n\nconst descriptionStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700\",\n \"info-outline\": \"rh-text-text-muted\",\n \"warning-solid\": \"rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700\",\n \"warning-outline\": \"rh-text-text-muted\",\n \"success-solid\": \"rh-text-white/80\",\n \"success-light\": \"rh-text-green-700\",\n \"success-outline\": \"rh-text-text-muted\",\n \"error-solid\": \"rh-text-white/80\",\n \"error-light\": \"rh-text-red-700\",\n \"error-outline\": \"rh-text-text-muted\",\n \"neutral-solid\": \"rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700\",\n \"neutral-outline\": \"rh-text-text-muted\",\n};\n\nconst linkStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700 rh-underline hover:rh-text-blue-900\",\n \"info-outline\": \"rh-text-blue-600 rh-underline hover:rh-text-blue-800\",\n \"warning-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700 rh-underline hover:rh-text-yellow-900\",\n \"warning-outline\": \"rh-text-yellow-600 rh-underline hover:rh-text-yellow-800\",\n \"success-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"success-light\": \"rh-text-green-700 rh-underline hover:rh-text-green-900\",\n \"success-outline\": \"rh-text-green-600 rh-underline hover:rh-text-green-800\",\n \"error-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"error-light\": \"rh-text-red-700 rh-underline hover:rh-text-red-900\",\n \"error-outline\": \"rh-text-red-600 rh-underline hover:rh-text-red-800\",\n \"neutral-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700 rh-underline hover:rh-text-gray-900\",\n \"neutral-outline\": \"rh-text-gray-600 rh-underline hover:rh-text-gray-800\",\n};\n\nconst closeStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"info-light\": \"rh-text-blue-500 hover:rh-text-blue-800\",\n \"info-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"warning-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"warning-light\": \"rh-text-yellow-500 hover:rh-text-yellow-800\",\n \"warning-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"success-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"success-light\": \"rh-text-green-500 hover:rh-text-green-800\",\n \"success-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"error-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"error-light\": \"rh-text-red-500 hover:rh-text-red-800\",\n \"error-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"neutral-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"neutral-light\": \"rh-text-gray-500 hover:rh-text-gray-800\",\n \"neutral-outline\": \"rh-text-text-muted hover:rh-text-text\",\n};\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n {\n title,\n description,\n link,\n variant = \"info\",\n appearance = \"light\",\n onClose,\n className = \"\",\n ...rest\n },\n ref,\n) {\n const styleKey: StyleKey = `${variant}-${appearance}`;\n const Icon = variantIconMap[variant];\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n className={[\n \"rh-flex rh-items-start rh-gap-3\",\n \"rh-w-80 rh-rounded-sm rh-border rh-p-4\",\n \"rh-shadow-md rh-font-sans\",\n containerStyles[styleKey],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {/* Icon */}\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n <Icon\n className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]]\n .filter(Boolean)\n .join(\" \")}\n />\n </span>\n\n {/* Content */}\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p className=\"rh-text-sm rh-font-semibold rh-leading-tight\">{title}</p>\n\n {description && (\n <p\n className={[\n \"rh-mt-1 rh-text-sm rh-leading-normal\",\n descriptionStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n\n {link && (\n <a\n href={link.href}\n onClick={link.onClick}\n className={[\n \"rh-mt-1 rh-inline-block rh-text-sm rh-font-medium\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1 rh-rounded-xxs\",\n linkStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {link.label}\n </a>\n )}\n </div>\n\n {/* Close button */}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n onClick={onClose}\n className={[\n \"rh-flex-shrink-0 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1\",\n closeStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <CloseIcon className=\"rh-w-4 rh-h-4\" />\n </button>\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ToastPosition } from \"./ToastContext\";\nimport { Toast } from \"./Toast\";\nimport { useToastContext } from \"./ToastContext\";\n\n// ── Animation direction per position ─────────────────────────────────────────\n\ntype AnimDir = \"right\" | \"left\" | \"top\" | \"bottom\";\n\nconst positionAnimDir: Record<ToastPosition, AnimDir> = {\n \"top-right\": \"right\",\n \"bottom-right\": \"right\",\n \"top-left\": \"left\",\n \"bottom-left\": \"left\",\n \"top-center\": \"top\",\n \"bottom-center\": \"bottom\",\n};\n\nconst enterClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-in-right\",\n left: \"rh-animate-toast-in-left\",\n top: \"rh-animate-toast-in-top\",\n bottom: \"rh-animate-toast-in-bottom\",\n};\n\nconst leaveClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-out-right\",\n left: \"rh-animate-toast-out-left\",\n top: \"rh-animate-toast-out-top\",\n bottom: \"rh-animate-toast-out-bottom\",\n};\n\n// ── Position container classes ────────────────────────────────────────────────\n\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-right\": \"rh-top-4 rh-right-4 rh-items-end\",\n \"top-left\": \"rh-top-4 rh-left-4 rh-items-start\",\n \"top-center\": \"rh-top-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n \"bottom-right\": \"rh-bottom-4 rh-right-4 rh-items-end\",\n \"bottom-left\": \"rh-bottom-4 rh-left-4 rh-items-start\",\n \"bottom-center\": \"rh-bottom-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n};\n\n// ── Animated item ─────────────────────────────────────────────────────────────\n\nconst LEAVE_DURATION_MS = 200;\n\ntype AnimatedToastItemProps = {\n id: string;\n animDir: AnimDir;\n isDismissing: boolean;\n onRemove: (id: string) => void;\n onRequestDismiss: (id: string) => void;\n children: (onClose: () => void) => JSX.Element;\n};\n\nfunction AnimatedToastItem({\n id,\n animDir,\n isDismissing,\n onRemove,\n onRequestDismiss,\n children,\n}: AnimatedToastItemProps) {\n const [entered, setEntered] = useState(false);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // When the context signals dismiss, start the leave timer then remove\n useEffect(() => {\n if (!isDismissing) return;\n leaveTimerRef.current = setTimeout(() => {\n onRemove(id);\n }, LEAVE_DURATION_MS);\n return () => {\n if (leaveTimerRef.current) clearTimeout(leaveTimerRef.current);\n };\n }, [id, isDismissing, onRemove]);\n\n const handleAnimationEnd = useCallback(() => {\n if (!entered) setEntered(true);\n }, [entered]);\n\n const handleClose = useCallback(() => {\n onRequestDismiss(id);\n }, [id, onRequestDismiss]);\n\n const animClass = isDismissing\n ? leaveClass[animDir]\n : entered\n ? \"\"\n : enterClass[animDir];\n\n return (\n <div className={animClass} onAnimationEnd={handleAnimationEnd}>\n {children(handleClose)}\n </div>\n );\n}\n\n// ── Container ─────────────────────────────────────────────────────────────────\n\nexport function ToastContainer() {\n const { toasts, dismissingIds, position, requestDismiss, remove } = useToastContext();\n const animDir = positionAnimDir[position];\n\n if (toasts.length === 0) return null;\n\n return (\n <div\n aria-label=\"Notifications\"\n aria-live=\"polite\"\n className={[\n \"rh-fixed rh-z-[9999]\",\n \"rh-flex rh-flex-col rh-gap-3\",\n \"rh-pointer-events-none\",\n positionClasses[position],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {toasts.map((toast) => (\n <AnimatedToastItem\n key={toast.id}\n id={toast.id}\n animDir={animDir}\n isDismissing={dismissingIds.has(toast.id)}\n onRemove={remove}\n onRequestDismiss={requestDismiss}\n >\n {(onClose) => (\n <div className=\"rh-pointer-events-auto\">\n <Toast\n title={toast.title}\n description={toast.description}\n link={toast.link}\n variant={toast.variant}\n appearance={toast.appearance}\n onClose={onClose}\n />\n </div>\n )}\n </AnimatedToastItem>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport type { ToastAppearance, ToastLink, ToastVariant } from \"./Toast\";\nimport { ToastContainer } from \"./ToastContainer\";\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type ToastPosition =\n | \"top-right\"\n | \"top-left\"\n | \"top-center\"\n | \"bottom-right\"\n | \"bottom-left\"\n | \"bottom-center\";\n\nexport type ToastItem = {\n id: string;\n title: string;\n description?: string;\n link?: ToastLink;\n variant: ToastVariant;\n appearance: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration: number;\n};\n\nexport type ToastOptions = {\n description?: string;\n link?: ToastLink;\n appearance?: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration?: number;\n};\n\nexport type ToastFn = {\n (title: string, options?: ToastOptions): string;\n info: (title: string, options?: ToastOptions) => string;\n warning: (title: string, options?: ToastOptions) => string;\n success: (title: string, options?: ToastOptions) => string;\n error: (title: string, options?: ToastOptions) => string;\n neutral: (title: string, options?: ToastOptions) => string;\n dismiss: (id: string) => void;\n};\n\ntype ToastContextValue = {\n toasts: ToastItem[];\n /** IDs signaled for dismissal — triggers leave animation in ToastContainer */\n dismissingIds: Set<string>;\n position: ToastPosition;\n add: (item: Omit<ToastItem, \"id\">) => string;\n /** Signals a toast to start its leave animation */\n requestDismiss: (id: string) => void;\n /** Actually removes the toast from state (called after leave animation) */\n remove: (id: string) => void;\n};\n\n// ── Context ───────────────────────────────────────────────────────────────────\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n// ── Provider ──────────────────────────────────────────────────────────────────\n\nexport type ToastProviderProps = {\n children: React.ReactNode;\n /** Position of the toast container. Default: \"top-right\" */\n position?: ToastPosition;\n};\n\nexport function ToastProvider({\n children,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const [dismissingIds, setDismissingIds] = useState<Set<string>>(new Set());\n const counterRef = useRef(0);\n\n const remove = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n setDismissingIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n const requestDismiss = useCallback((id: string) => {\n setDismissingIds((prev) => new Set(prev).add(id));\n }, []);\n\n const add = useCallback(\n (item: Omit<ToastItem, \"id\">) => {\n const id = `rh-toast-${++counterRef.current}`;\n const toast: ToastItem = { ...item, id };\n\n setToasts((prev) => [...prev, toast]);\n\n if (toast.duration > 0) {\n setTimeout(() => requestDismiss(id), toast.duration);\n }\n\n return id;\n },\n [requestDismiss],\n );\n\n return (\n <ToastContext.Provider value={{ toasts, dismissingIds, position, add, requestDismiss, remove }}>\n {children}\n <ToastContainer />\n </ToastContext.Provider>\n );\n}\n\n// ── Internal hook (used by ToastContainer) ────────────────────────────────────\n\nexport function useToastContext(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToastContext must be used inside ToastProvider\");\n }\n return ctx;\n}\n\n// ── Public hook ───────────────────────────────────────────────────────────────\n\nexport function useToast(): { toast: ToastFn } {\n const { add, requestDismiss } = useToastContext();\n\n const createToast = useCallback(\n (variant: ToastVariant) =>\n (title: string, options: ToastOptions = {}): string => {\n return add({\n title,\n variant,\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n );\n\n const toast = useCallback(\n (title: string, options: ToastOptions & { variant?: ToastVariant } = {}): string => {\n return add({\n title,\n variant: options.variant ?? \"info\",\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n ) as ToastFn;\n\n toast.info = createToast(\"info\");\n toast.warning = createToast(\"warning\");\n toast.success = createToast(\"success\");\n toast.error = createToast(\"error\");\n toast.neutral = createToast(\"neutral\");\n toast.dismiss = requestDismiss;\n\n return { toast };\n}\n","import React, { useMemo } from \"react\";\nimport type { RehagroProviderProps, RehagroTheme } from \"./theme\";\nimport { TOKEN_MAP } from \"./theme\";\nimport { ToastProvider } from \"../components/Toast\";\n\nfunction hexToRgbTriplet(hex: string): string | null {\n const h = hex.replace(\"#\", \"\").trim();\n if (![3, 6].includes(h.length)) return null;\n const full = h.length === 3 ? h.split(\"\").map((c) => c + c).join(\"\") : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n if ([r, g, b].some(Number.isNaN)) return null;\n return `${r} ${g} ${b}`;\n}\n\nfunction toRgbTriplet(value?: string): string | undefined {\n if (!value) return undefined;\n\n // \"#RRGGBB\" or \"#RGB\"\n if (value.startsWith(\"#\")) return hexToRgbTriplet(value) ?? undefined;\n\n // \"rgb(r, g, b)\"\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\n\n // \"r g b\" (already a triplet)\n const parts = value.trim().split(/\\s+/);\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) {\n return value.trim();\n }\n\n return undefined;\n}\n\nexport function RehagroProvider({ theme, toastPosition, children }: RehagroProviderProps) {\n const style = useMemo(() => {\n if (!theme) return undefined;\n\n const vars: Record<string, string> = {};\n\n for (const [key, config] of Object.entries(TOKEN_MAP)) {\n const value = theme[key as keyof RehagroTheme];\n if (!value) continue;\n\n if (config.isColor) {\n const triplet = toRgbTriplet(value);\n if (triplet) vars[config.var] = triplet;\n } else {\n vars[config.var] = value;\n }\n }\n\n return vars as React.CSSProperties;\n }, [theme]);\n\n return (\n <div className=\"rh-root\" style={style}>\n <ToastProvider position={toastPosition}>{children}</ToastProvider>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Button size */\n size?: ButtonSize;\n /** Border radius */\n radius?: ButtonRadius;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n /** Icon rendered to the left of children (hidden when loading) */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of children (hidden when loading) */\n rightIcon?: React.ReactNode;\n};\n\nconst variantClasses: Record<ButtonVariant, string> = {\n solid:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n outline:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n ghost: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: \"rh-text-sm rh-px-3 rh-py-1.5\",\n md: \"rh-text-sm rh-px-4 rh-py-2\",\n lg: \"rh-text-base rh-px-5 rh-py-2.5\",\n};\n\nconst radiusClasses: Record<ButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"md\",\n radius = \"sm\",\n loading = false,\n disabled,\n leftIcon,\n rightIcon,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = React.useMemo(() => disabled || loading, [disabled, loading]);\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-2\",\n \"rh-border rh-font-sans rh-font-medium\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n variantClasses[variant],\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading && (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n )}\n {!loading && leftIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type IconButtonColor = \"primary\" | \"danger\" | \"warning\" | \"success\" | \"secondary\";\n\nexport type IconButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: IconButtonVariant;\n /** Button size */\n size?: IconButtonSize;\n /** Border radius */\n radius?: IconButtonRadius;\n /** Color scheme */\n color?: IconButtonColor;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n};\n\nconst variantColorClasses: Record<IconButtonVariant, Record<IconButtonColor, string>> = {\n solid: {\n primary:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n danger:\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\n warning:\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\n success:\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\n secondary:\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\n },\n outline: {\n primary:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n danger:\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\n warning:\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\n success:\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\n },\n ghost: {\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\n },\n};\n\nconst sizeClasses: Record<IconButtonSize, string> = {\n sm: \"rh-h-8 rh-w-8 rh-text-sm\",\n md: \"rh-h-10 rh-w-10 rh-text-base\",\n lg: \"rh-h-12 rh-w-12 rh-text-lg\",\n};\n\nconst radiusClasses: Record<IconButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = \"ghost\",\n size = \"md\",\n radius = \"full\",\n color = \"primary\",\n loading = false,\n disabled,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n variantColorClasses[variant][color],\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading ? (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n children\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type TextInputStatus = \"default\" | \"error\";\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type TextInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\"\n> & {\n /** Label text displayed above the input */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Validation status */\n status?: TextInputStatus;\n /** Input size */\n size?: TextInputSize;\n /** Border radius */\n radius?: TextInputRadius;\n /** Icon rendered to the left of the input */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of the input */\n rightIcon?: React.ReactNode;\n /** Helper/error message displayed below the input (accepts ReactNode for flexibility) */\n helperText?: React.ReactNode;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nconst statusClasses: Record<TextInputStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-h-input-sm rh-text-sm rh-px-input-x-sm\",\n md: \"rh-h-input-md rh-text-sm rh-px-input-x-md\",\n lg: \"rh-h-input-lg rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<TextInputRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst iconSizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-w-4 rh-h-4\",\n md: \"rh-w-5 rh-h-5\",\n lg: \"rh-w-5 rh-h-5\",\n};\n\nconst helperStatusClasses: Record<TextInputStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n function TextInput(\n {\n label,\n subtitle,\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n leftIcon,\n rightIcon,\n helperText,\n disabled,\n className = \"\",\n wrapperClassName = \"\",\n id,\n ...rest\n },\n ref,\n ) {\n const inputId = id || React.useId();\n\n return (\n <div\n className={[\n \"rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n htmlFor={inputId}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Input container */}\n <div\n className={[\n \"rh-flex rh-items-center rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {leftIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {leftIcon}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n disabled={disabled}\n aria-invalid={status === \"error\" || undefined}\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\n className={[\n \"rh-flex-1 rh-bg-transparent rh-outline-none\",\n \"rh-text-text placeholder:rh-text-text-muted\",\n disabled ? \"rh-cursor-not-allowed\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n />\n\n {rightIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {rightIcon}\n </span>\n )}\n </div>\n\n {/* Helper text */}\n {helperText && (\n <span\n id={`${inputId}-helper`}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\nexport type CheckboxProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> & {\n /** Checkbox size */\n size?: CheckboxSize;\n /** Label text displayed next to the checkbox */\n label?: string;\n /** Indeterminate state (partially checked) */\n indeterminate?: boolean;\n};\n\nconst sizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-4 rh-w-4\",\n md: \"rh-h-5 rh-w-5\",\n lg: \"rh-h-6 rh-w-6\",\n};\n\nconst iconSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-3 rh-w-3\",\n md: \"rh-h-3.5 rh-w-3.5\",\n lg: \"rh-h-4 rh-w-4\",\n};\n\nconst labelSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-text-sm\",\n md: \"rh-text-sm\",\n lg: \"rh-text-base\",\n};\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst MinusIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 10 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 1H9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(\n {\n size = \"md\",\n label,\n indeterminate = false,\n disabled,\n checked,\n defaultChecked,\n className = \"\",\n id,\n onChange,\n ...rest\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement>(null);\n const inputId = id || React.useId();\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const isChecked = checked ?? innerRef.current?.checked ?? defaultChecked ?? false;\n const isActive = isChecked || indeterminate;\n\n return (\n <label\n htmlFor={inputId}\n className={[\n \"rh-inline-flex rh-items-center rh-gap-2 rh-font-sans rh-select-none\",\n disabled ? \"rh-cursor-not-allowed rh-opacity-50\" : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-relative rh-inline-flex rh-items-center rh-justify-center\">\n <input\n ref={innerRef}\n id={inputId}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n defaultChecked={defaultChecked}\n aria-checked={indeterminate ? \"mixed\" : undefined}\n onChange={onChange}\n className=\"rh-peer rh-sr-only\"\n {...rest}\n />\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-border-border rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n sizeClasses[size],\n isActive\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-bg-surface rh-text-transparent\",\n !disabled && !isActive\n ? \"hover:rh-border-primary\"\n : \"\",\n \"peer-focus-visible:rh-ring-2 peer-focus-visible:rh-ring-ring peer-focus-visible:rh-ring-offset-2\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {indeterminate ? (\n <MinusIcon className={iconSizeClasses[size]} />\n ) : isChecked ? (\n <CheckIcon className={iconSizeClasses[size]} />\n ) : null}\n </span>\n </span>\n\n {label && (\n <span\n className={[\n \"rh-text-text\",\n labelSizeClasses[size],\n ].join(\" \")}\n >\n {label}\n </span>\n )}\n </label>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SelectStatus = \"default\" | \"error\";\n\nexport type SelectOption = {\n /** Unique value for the option */\n value: string;\n /** Display label */\n label: string;\n /** Whether the option is disabled */\n disabled?: boolean;\n};\n\ntype SelectBaseProps = {\n /** List of available options */\n options: SelectOption[];\n /** Label text displayed above the select */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Placeholder text when no option is selected */\n placeholder?: string;\n /** Validation status */\n status?: SelectStatus;\n /** Select size */\n size?: SelectSize;\n /** Border radius */\n radius?: SelectRadius;\n /** Helper/error message displayed below the select */\n helperText?: React.ReactNode;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Custom class for the trigger container */\n className?: string;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple?: false;\n /** Currently selected value (single mode) */\n value?: string;\n /** Default selected value (single mode, uncontrolled) */\n defaultValue?: string;\n /** Called when selection changes (single mode) */\n onChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple: true;\n /** Currently selected values (multi mode) */\n value?: string[];\n /** Default selected values (multi mode, uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes (multi mode) */\n onChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst statusClasses: Record<SelectStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<SelectSize, string> = {\n sm: \"rh-min-h-[32px] rh-text-sm rh-px-input-x-sm\",\n md: \"rh-min-h-[40px] rh-text-sm rh-px-input-x-md\",\n lg: \"rh-min-h-[48px] rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst dropdownRadiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-xs\",\n md: \"rh-rounded-xs\",\n lg: \"rh-rounded-xs\",\n xl: \"rh-rounded-xs\",\n full: \"rh-rounded-xs\",\n};\n\nconst helperStatusClasses: Record<SelectStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nconst optionSizeClasses: Record<SelectSize, string> = {\n sm: \"rh-px-input-x-sm rh-py-1.5 rh-text-sm\",\n md: \"rh-px-input-x-md rh-py-2 rh-text-sm\",\n lg: \"rh-px-input-x-lg rh-py-2.5 rh-text-base\",\n};\n\nconst ChevronIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\n function Select(props, ref) {\n const {\n options,\n label,\n subtitle,\n placeholder = \"Select\",\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n helperText,\n disabled = false,\n className = \"\",\n wrapperClassName = \"\",\n multiple = false,\n } = props;\n\n const triggerId = React.useId();\n const listboxId = React.useId();\n const helperId = React.useId();\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n const listboxRef = React.useRef<HTMLUListElement>(null);\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // --- Selection state ---\n const [internalValue, setInternalValue] = React.useState<string[]>(() => {\n if (props.defaultValue !== undefined) {\n return Array.isArray(props.defaultValue)\n ? props.defaultValue\n : [props.defaultValue];\n }\n return [];\n });\n\n const isControlled = props.value !== undefined;\n const selectedValues: string[] = isControlled\n ? Array.isArray(props.value)\n ? props.value\n : props.value !== undefined\n ? [props.value]\n : []\n : internalValue;\n\n const enabledOptions = options.filter((o) => !o.disabled);\n\n const handleSelect = (optionValue: string) => {\n if (multiple) {\n const next = selectedValues.includes(optionValue)\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n\n if (!isControlled) setInternalValue(next);\n (props as SelectMultipleProps).onChange?.(next);\n } else {\n const next = [optionValue];\n if (!isControlled) setInternalValue(next);\n (props as SelectSingleProps).onChange?.(optionValue);\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n // --- Display value ---\n const displayText = React.useMemo(() => {\n if (selectedValues.length === 0) return null;\n\n if (!multiple) {\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\n }\n\n const selectedLabels = selectedValues\n .map((v) => options.find((o) => o.value === v)?.label)\n .filter(Boolean);\n\n if (selectedLabels.length === 0) return null;\n if (selectedLabels.length === 1) return selectedLabels[0];\n return `${selectedLabels.length} selected`;\n }, [selectedValues, options, multiple]);\n\n // --- Close on outside click ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n // --- Close on Escape ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n // --- Scroll active option into view ---\n React.useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const listbox = listboxRef.current;\n if (!listbox) return;\n const activeEl = listbox.children[activeIndex] as HTMLElement | undefined;\n if (typeof activeEl?.scrollIntoView === \"function\") {\n activeEl.scrollIntoView({ block: \"nearest\" });\n }\n }, [activeIndex, isOpen]);\n\n // --- Reset active index when opening ---\n React.useEffect(() => {\n if (isOpen) {\n const firstSelectedIdx = options.findIndex(\n (o) => !o.disabled && selectedValues.includes(o.value),\n );\n setActiveIndex(firstSelectedIdx >= 0 ? firstSelectedIdx : 0);\n } else {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n // --- Keyboard navigation ---\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n case \"Down\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev + 1; i < options.length; i++) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"ArrowUp\":\n case \"Up\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev - 1; i >= 0; i--) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else if (activeIndex >= 0 && !options[activeIndex].disabled) {\n handleSelect(options[activeIndex].value);\n }\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[0])\n : 0;\n setActiveIndex(idx);\n }\n break;\n }\n case \"End\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[enabledOptions.length - 1])\n : options.length - 1;\n setActiveIndex(idx);\n }\n break;\n }\n case \"Tab\": {\n if (isOpen) setIsOpen(false);\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <div\n ref={wrapperRef}\n className={[\n \"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n id={`${triggerId}-label`}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Trigger */}\n <button\n ref={innerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n aria-labelledby={label ? `${triggerId}-label` : undefined}\n aria-describedby={helperText ? helperId : undefined}\n aria-invalid={status === \"error\" || undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"rh-text-left rh-w-full\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span\n className={[\n \"rh-flex-1 rh-truncate\",\n displayText ? \"rh-text-text\" : \"rh-text-text-muted\",\n ].join(\" \")}\n >\n {displayText ?? placeholder}\n </span>\n\n <ChevronIcon\n className={[\n \"rh-w-5 rh-h-5 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150\",\n isOpen ? \"rh-rotate-180\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n </button>\n\n {/* Dropdown */}\n {isOpen && (\n <ul\n ref={listboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? `${triggerId}-label` : triggerId}\n aria-multiselectable={multiple || undefined}\n tabIndex={-1}\n className={[\n \"rh-absolute rh-z-50 rh-w-full rh-mt-1\",\n \"rh-border rh-border-border rh-bg-surface\",\n \"rh-shadow-md rh-overflow-auto rh-max-h-60\",\n \"rh-py-1\",\n dropdownRadiusClasses[radius],\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ top: \"100%\" }}\n >\n {options.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isActive = index === activeIndex;\n const isDisabled = option.disabled;\n\n return (\n <li\n key={option.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n onClick={() => {\n if (!isDisabled) handleSelect(option.value);\n }}\n onMouseEnter={() => {\n if (!isDisabled) setActiveIndex(index);\n }}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-transition-colors rh-duration-150\",\n optionSizeClasses[size],\n isDisabled\n ? \"rh-opacity-50 rh-cursor-not-allowed\"\n : \"rh-cursor-pointer\",\n isActive && !isDisabled\n ? \"rh-bg-background\"\n : \"\",\n isSelected && !isActive\n ? \"rh-bg-primary/5\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">\n {option.label}\n </span>\n\n {multiple ? (\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-w-5 rh-h-5 rh-shrink-0\",\n \"rh-border rh-rounded-xxs rh-transition-colors rh-duration-150\",\n isSelected\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-border-border rh-bg-surface\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {isSelected && (\n <CheckIcon className=\"rh-w-3 rh-h-3\" />\n )}\n </span>\n ) : (\n isSelected && (\n <CheckIcon className=\"rh-w-3.5 rh-h-3.5 rh-shrink-0 rh-text-primary\" />\n )\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {/* Helper text */}\n {helperText && (\n <span\n id={helperId}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef, useState, useRef, useCallback, useEffect } from \"react\";\n\nexport type TooltipVariant = \"light\" | \"default\" | \"dark\";\nexport type TooltipSize = \"sm\" | \"md\";\nexport type TooltipPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport type TooltipProps = {\n /** Tooltip title text */\n title: string;\n /** Optional description text below the title */\n description?: string;\n /** Visual style variant */\n variant?: TooltipVariant;\n /** Tooltip size */\n size?: TooltipSize;\n /** Placement relative to the trigger element */\n placement?: TooltipPlacement;\n /** Show a close button (only for md size with description) */\n closable?: boolean;\n /** Show an icon before the title */\n icon?: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Delay before showing tooltip (ms) */\n enterDelay?: number;\n /** Delay before hiding tooltip (ms) */\n leaveDelay?: number;\n /** The trigger element */\n children: React.ReactElement;\n /** Additional className for the tooltip container */\n className?: string;\n};\n\nconst variantClasses: Record<TooltipVariant, string> = {\n light: \"rh-bg-surface rh-text-text rh-border rh-border-border rh-shadow-md\",\n default:\n \"rh-bg-primary/10 rh-text-text rh-border rh-border-primary/20 rh-shadow-md\",\n dark: \"rh-bg-primary rh-text-surface rh-shadow-md\",\n};\n\nconst arrowVariantClasses: Record<TooltipVariant, string> = {\n light: \"rh-border-border rh-bg-surface\",\n default: \"rh-border-primary/20 rh-bg-primary/10\",\n dark: \"rh-bg-primary\",\n};\n\nconst sizeClasses: Record<TooltipSize, string> = {\n sm: \"rh-px-3 rh-py-1.5 rh-text-xs\",\n md: \"rh-px-4 rh-py-3 rh-text-sm\",\n};\n\nconst tooltipPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-full rh-left-1/2 rh--translate-x-1/2 rh-mb-2\",\n \"top-start\": \"rh-bottom-full rh-left-0 rh-mb-2\",\n \"top-end\": \"rh-bottom-full rh-right-0 rh-mb-2\",\n bottom: \"rh-top-full rh-left-1/2 rh--translate-x-1/2 rh-mt-2\",\n \"bottom-start\": \"rh-top-full rh-left-0 rh-mt-2\",\n \"bottom-end\": \"rh-top-full rh-right-0 rh-mt-2\",\n left: \"rh-right-full rh-top-1/2 rh--translate-y-1/2 rh-mr-2\",\n \"left-start\": \"rh-right-full rh-top-0 rh-mr-2\",\n \"left-end\": \"rh-right-full rh-bottom-0 rh-mr-2\",\n right: \"rh-left-full rh-top-1/2 rh--translate-y-1/2 rh-ml-2\",\n \"right-start\": \"rh-left-full rh-top-0 rh-ml-2\",\n \"right-end\": \"rh-left-full rh-bottom-0 rh-ml-2\",\n};\n\nconst arrowPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-0 rh-left-1/2 rh--translate-x-1/2 rh-translate-y-1/2 rh-rotate-45\",\n \"top-start\": \"rh-bottom-0 rh-left-4 rh-translate-y-1/2 rh-rotate-45\",\n \"top-end\": \"rh-bottom-0 rh-right-4 rh-translate-y-1/2 rh-rotate-45\",\n bottom:\n \"rh-top-0 rh-left-1/2 rh--translate-x-1/2 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-start\": \"rh-top-0 rh-left-4 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-end\": \"rh-top-0 rh-right-4 rh--translate-y-1/2 rh-rotate-45\",\n left: \"rh-right-0 rh-top-1/2 rh--translate-y-1/2 rh-translate-x-1/2 rh-rotate-45\",\n \"left-start\": \"rh-right-0 rh-top-3 rh-translate-x-1/2 rh-rotate-45\",\n \"left-end\": \"rh-right-0 rh-bottom-3 rh-translate-x-1/2 rh-rotate-45\",\n right:\n \"rh-left-0 rh-top-1/2 rh--translate-y-1/2 rh--translate-x-1/2 rh-rotate-45\",\n \"right-start\": \"rh-left-0 rh-top-3 rh--translate-x-1/2 rh-rotate-45\",\n \"right-end\": \"rh-left-0 rh-bottom-3 rh--translate-x-1/2 rh-rotate-45\",\n};\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(\n {\n title,\n description,\n variant = \"light\",\n size = \"sm\",\n placement = \"top\",\n closable = false,\n icon,\n open: controlledOpen,\n onOpenChange,\n enterDelay = 100,\n leaveDelay = 150,\n children,\n className = \"\",\n },\n ref,\n ) {\n const [internalOpen, setInternalOpen] = useState(false);\n const enterTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const clearTimers = useCallback(() => {\n if (enterTimerRef.current) {\n clearTimeout(enterTimerRef.current);\n enterTimerRef.current = null;\n }\n if (leaveTimerRef.current) {\n clearTimeout(leaveTimerRef.current);\n leaveTimerRef.current = null;\n }\n }, []);\n\n const handleEnter = useCallback(() => {\n clearTimers();\n enterTimerRef.current = setTimeout(() => {\n setOpen(true);\n }, enterDelay);\n }, [clearTimers, enterDelay, setOpen]);\n\n const handleLeave = useCallback(() => {\n clearTimers();\n leaveTimerRef.current = setTimeout(() => {\n setOpen(false);\n }, leaveDelay);\n }, [clearTimers, leaveDelay, setOpen]);\n\n const handleClose = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n useEffect(() => {\n return () => clearTimers();\n }, [clearTimers]);\n\n const triggerChild = React.Children.only(children);\n\n const triggerElement = React.cloneElement(triggerChild, {\n onMouseEnter: (e: React.MouseEvent) => {\n handleEnter();\n triggerChild.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleLeave();\n triggerChild.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleEnter();\n triggerChild.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleLeave();\n triggerChild.props.onBlur?.(e);\n },\n \"aria-describedby\": isOpen ? \"rh-tooltip\" : undefined,\n } as React.HTMLAttributes<HTMLElement>);\n\n const showCloseButton = closable && size === \"md\" && description;\n\n const arrowBorderClass =\n variant === \"dark\" ? \"\" : \"rh-border-b rh-border-r\";\n\n return (\n <div\n className=\"rh-relative rh-inline-flex\"\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {triggerElement}\n {isOpen && (\n <div\n ref={ref}\n id=\"rh-tooltip\"\n role=\"tooltip\"\n className={[\n \"rh-absolute rh-z-50 rh-w-max rh-max-w-xs rh-rounded-xs\",\n tooltipPlacementClasses[placement],\n variantClasses[variant],\n sizeClasses[size],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Arrow */}\n <span\n aria-hidden=\"true\"\n className={[\n \"rh-absolute rh-w-2.5 rh-h-2.5\",\n arrowBorderClass,\n arrowVariantClasses[variant],\n arrowPlacementClasses[placement],\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n\n {/* Content */}\n <div className=\"rh-relative rh-flex rh-items-start rh-gap-2\">\n {icon && (\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p\n className={[\n \"rh-font-semibold rh-leading-tight\",\n size === \"sm\" ? \"rh-text-xs\" : \"rh-text-sm\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {title}\n </p>\n {description && size === \"md\" && (\n <p\n className={[\n \"rh-mt-1 rh-text-xs rh-leading-normal\",\n variant === \"dark\"\n ? \"rh-text-surface/80\"\n : \"rh-text-text-muted\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n </div>\n\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close tooltip\"\n onClick={handleClose}\n className={[\n \"rh-flex-shrink-0 rh-ml-1 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n variant === \"dark\"\n ? \"rh-text-surface/80 hover:rh-text-surface\"\n : \"rh-text-text-muted hover:rh-text-text\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"rh-w-4 rh-h-4\"\n aria-hidden=\"true\"\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type ContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Remove o padding horizontal lateral.\n * Use quando o conteúdo deve ocupar toda a largura disponível.\n */\n fluid?: boolean;\n};\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ fluid = false, className = \"\", children, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={[\n \"rh-w-full rh-mx-auto\",\n \"rh-max-w-[1440px]\",\n !fluid\n ? \"rh-px-grid-margin-mobile desktop-xs:rh-px-grid-margin-desktop\"\n : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type GridContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Override do número de colunas.\n * Padrão: 4 no mobile, 12 no desktop (desktop-xs+).\n */\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n /**\n * Gap entre as colunas em pixels.\n * Padrão: 16px no mobile, 24px no desktop.\n */\n spacing?: number;\n};\n\nconst colsClasses: Record<number, string> = {\n 1: \"rh-grid-cols-1\",\n 2: \"rh-grid-cols-2\",\n 3: \"rh-grid-cols-3\",\n 4: \"rh-grid-cols-4\",\n 5: \"rh-grid-cols-5\",\n 6: \"rh-grid-cols-6\",\n 7: \"rh-grid-cols-7\",\n 8: \"rh-grid-cols-8\",\n 9: \"rh-grid-cols-9\",\n 10: \"rh-grid-cols-10\",\n 11: \"rh-grid-cols-11\",\n 12: \"rh-grid-cols-12\",\n};\n\nexport const GridContainer = forwardRef<HTMLDivElement, GridContainerProps>(\n function GridContainer({ columns, spacing, className = \"\", style, children, ...rest }, ref) {\n const colClass = columns\n ? colsClasses[columns]\n : \"rh-grid-cols-4 desktop-xs:rh-grid-cols-12\";\n\n const gapStyle =\n spacing !== undefined\n ? { gap: `${spacing}px`, ...style }\n : style;\n\n return (\n <div\n ref={ref}\n style={gapStyle}\n className={[\n \"rh-grid\",\n colClass,\n spacing === undefined ? \"rh-gap-grid-gutter-mobile desktop-xs:rh-gap-grid-gutter-desktop\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type GridSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\nexport type MobileSpan = 1 | 2 | 3 | 4;\n\nexport type GridItemProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Span base no mobile (320px+). Padrão: 4 (full width das 4 colunas). */\n mobile?: MobileSpan;\n /** Span a partir de mobile-sm (360px+). */\n mobileSm?: MobileSpan;\n /** Span a partir de mobile-md (390px+). */\n mobileMd?: MobileSpan;\n /** Span a partir de mobile-lg (430px+). */\n mobileLg?: MobileSpan;\n /** Span a partir de desktop-xs (768px+). Padrão: 12 (full width das 12 colunas). */\n desktop?: GridSpan;\n /** Span a partir de desktop-sm (1024px+). */\n desktopSm?: GridSpan;\n /** Span a partir de desktop-md (1280px+). */\n desktopMd?: GridSpan;\n /** Span a partir de desktop-lg (1440px+). */\n desktopLg?: GridSpan;\n};\n\n// Mapas estáticos completos para evitar purge do Tailwind\nconst mobileSpanClasses: Record<MobileSpan, string> = {\n 1: \"rh-col-span-1\",\n 2: \"rh-col-span-2\",\n 3: \"rh-col-span-3\",\n 4: \"rh-col-span-4\",\n};\n\nconst mobileSmSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-sm:rh-col-span-1\",\n 2: \"mobile-sm:rh-col-span-2\",\n 3: \"mobile-sm:rh-col-span-3\",\n 4: \"mobile-sm:rh-col-span-4\",\n};\n\nconst mobileMdSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-md:rh-col-span-1\",\n 2: \"mobile-md:rh-col-span-2\",\n 3: \"mobile-md:rh-col-span-3\",\n 4: \"mobile-md:rh-col-span-4\",\n};\n\nconst mobileLgSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-lg:rh-col-span-1\",\n 2: \"mobile-lg:rh-col-span-2\",\n 3: \"mobile-lg:rh-col-span-3\",\n 4: \"mobile-lg:rh-col-span-4\",\n};\n\nconst desktopSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-xs:rh-col-span-1\",\n 2: \"desktop-xs:rh-col-span-2\",\n 3: \"desktop-xs:rh-col-span-3\",\n 4: \"desktop-xs:rh-col-span-4\",\n 5: \"desktop-xs:rh-col-span-5\",\n 6: \"desktop-xs:rh-col-span-6\",\n 7: \"desktop-xs:rh-col-span-7\",\n 8: \"desktop-xs:rh-col-span-8\",\n 9: \"desktop-xs:rh-col-span-9\",\n 10: \"desktop-xs:rh-col-span-10\",\n 11: \"desktop-xs:rh-col-span-11\",\n 12: \"desktop-xs:rh-col-span-12\",\n};\n\nconst desktopSmSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-sm:rh-col-span-1\",\n 2: \"desktop-sm:rh-col-span-2\",\n 3: \"desktop-sm:rh-col-span-3\",\n 4: \"desktop-sm:rh-col-span-4\",\n 5: \"desktop-sm:rh-col-span-5\",\n 6: \"desktop-sm:rh-col-span-6\",\n 7: \"desktop-sm:rh-col-span-7\",\n 8: \"desktop-sm:rh-col-span-8\",\n 9: \"desktop-sm:rh-col-span-9\",\n 10: \"desktop-sm:rh-col-span-10\",\n 11: \"desktop-sm:rh-col-span-11\",\n 12: \"desktop-sm:rh-col-span-12\",\n};\n\nconst desktopMdSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-md:rh-col-span-1\",\n 2: \"desktop-md:rh-col-span-2\",\n 3: \"desktop-md:rh-col-span-3\",\n 4: \"desktop-md:rh-col-span-4\",\n 5: \"desktop-md:rh-col-span-5\",\n 6: \"desktop-md:rh-col-span-6\",\n 7: \"desktop-md:rh-col-span-7\",\n 8: \"desktop-md:rh-col-span-8\",\n 9: \"desktop-md:rh-col-span-9\",\n 10: \"desktop-md:rh-col-span-10\",\n 11: \"desktop-md:rh-col-span-11\",\n 12: \"desktop-md:rh-col-span-12\",\n};\n\nconst desktopLgSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-lg:rh-col-span-1\",\n 2: \"desktop-lg:rh-col-span-2\",\n 3: \"desktop-lg:rh-col-span-3\",\n 4: \"desktop-lg:rh-col-span-4\",\n 5: \"desktop-lg:rh-col-span-5\",\n 6: \"desktop-lg:rh-col-span-6\",\n 7: \"desktop-lg:rh-col-span-7\",\n 8: \"desktop-lg:rh-col-span-8\",\n 9: \"desktop-lg:rh-col-span-9\",\n 10: \"desktop-lg:rh-col-span-10\",\n 11: \"desktop-lg:rh-col-span-11\",\n 12: \"desktop-lg:rh-col-span-12\",\n};\n\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\n function GridItem(\n {\n mobile = 4,\n mobileSm,\n mobileMd,\n mobileLg,\n desktop = 12,\n desktopSm,\n desktopMd,\n desktopLg,\n className = \"\",\n children,\n ...rest\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\n className={[\n mobileSpanClasses[mobile],\n mobileSm !== undefined ? mobileSmSpanClasses[mobileSm] : \"\",\n mobileMd !== undefined ? mobileMdSpanClasses[mobileMd] : \"\",\n mobileLg !== undefined ? mobileLgSpanClasses[mobileLg] : \"\",\n desktopSpanClasses[desktop],\n desktopSm !== undefined ? desktopSmSpanClasses[desktopSm] : \"\",\n desktopMd !== undefined ? desktopMdSpanClasses[desktopMd] : \"\",\n desktopLg !== undefined ? desktopLgSpanClasses[desktopLg] : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/provider/theme.ts","../src/icons/DeleteIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/InfoIcon.tsx","../src/icons/WarningIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastContext.tsx","../src/provider/RehagroProvider.tsx","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/TextInput/TextInput.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Select/Select.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Grid/Container.tsx","../src/components/Grid/GridContainer.tsx","../src/components/Grid/GridItem.tsx"],"names":["jsx","jsxs","Toast","useState","useRef","useCallback","forwardRef","Button","React","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","statusClasses","helperStatusClasses","CheckIcon","Select","variantClasses","Tooltip","useEffect","Avatar","Container","GridContainer","GridItem"],"mappings":"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","file":"index.mjs","sourcesContent":["export type RehagroTheme = {\n /** Brand colors — accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\n primary?: string;\n primaryHover?: string;\n secondary?: string;\n secondaryHover?: string;\n danger?: string;\n dangerHover?: string;\n warning?: string;\n success?: string;\n\n /** Semantic colors */\n text?: string;\n textMuted?: string;\n surface?: string;\n background?: string;\n border?: string;\n ring?: string;\n\n /** Border radius (xxs:4 → xs:8 → sm:12 → md:16 → lg:24 → xl:32) */\n radiusXxs?: string;\n radiusXs?: string;\n radiusSm?: string;\n radiusMd?: string;\n radiusLg?: string;\n radiusXl?: string;\n\n /** Border width */\n borderWidthSm?: string;\n borderWidthMd?: string;\n borderWidthLg?: string;\n\n /** Input sizes */\n inputHeightSm?: string;\n inputHeightMd?: string;\n inputHeightLg?: string;\n inputPxSm?: string;\n inputPxMd?: string;\n inputPxLg?: string;\n};\n\nexport type RehagroProviderProps = {\n /** Theme overrides — any token not provided keeps the default value */\n theme?: RehagroTheme;\n /** Toast container position. Default: \"top-right\" */\n toastPosition?: import(\"../components/Toast\").ToastPosition;\n children: React.ReactNode;\n};\n\n/** Maps theme keys to CSS custom property names */\nexport const TOKEN_MAP: Record<keyof RehagroTheme, { var: string; isColor: boolean }> = {\n primary: { var: \"--rh-primary\", isColor: true },\n primaryHover: { var: \"--rh-primary-hover\", isColor: true },\n secondary: { var: \"--rh-secondary\", isColor: true },\n secondaryHover: { var: \"--rh-secondary-hover\", isColor: true },\n danger: { var: \"--rh-danger\", isColor: true },\n dangerHover: { var: \"--rh-danger-hover\", isColor: true },\n warning: { var: \"--rh-warning\", isColor: true },\n success: { var: \"--rh-success\", isColor: true },\n text: { var: \"--rh-text\", isColor: true },\n textMuted: { var: \"--rh-text-muted\", isColor: true },\n surface: { var: \"--rh-surface\", isColor: true },\n background: { var: \"--rh-background\", isColor: true },\n border: { var: \"--rh-border\", isColor: true },\n ring: { var: \"--rh-ring\", isColor: true },\n radiusXxs: { var: \"--rh-radius-xxs\", isColor: false },\n radiusXs: { var: \"--rh-radius-xs\", isColor: false },\n radiusSm: { var: \"--rh-radius-sm\", isColor: false },\n radiusMd: { var: \"--rh-radius-md\", isColor: false },\n radiusLg: { var: \"--rh-radius-lg\", isColor: false },\n radiusXl: { var: \"--rh-radius-xl\", isColor: false },\n borderWidthSm: { var: \"--rh-border-width-sm\", isColor: false },\n borderWidthMd: { var: \"--rh-border-width-md\", isColor: false },\n borderWidthLg: { var: \"--rh-border-width-lg\", isColor: false },\n inputHeightSm: { var: \"--rh-input-height-sm\", isColor: false },\n inputHeightMd: { var: \"--rh-input-height-md\", isColor: false },\n inputHeightLg: { var: \"--rh-input-height-lg\", isColor: false },\n inputPxSm: { var: \"--rh-input-px-sm\", isColor: false },\n inputPxMd: { var: \"--rh-input-px-md\", isColor: false },\n inputPxLg: { var: \"--rh-input-px-lg\", isColor: false },\n};\n","import type { IconProps } from \"./types\";\n\nexport const DeleteIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const EditIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SearchIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const PlusIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const InfoIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const WarningIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SuccessIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const ErrorIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const NeutralIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3.75a.75.75 0 000 1.5h.01a.75.75 0 000-1.5H10zm-.75 3a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v3a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75v-3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const CloseIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport {\n InfoIcon,\n WarningIcon,\n SuccessIcon,\n ErrorIcon,\n NeutralIcon,\n CloseIcon,\n} from \"../../icons\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"success\" | \"error\" | \"neutral\";\nexport type ToastAppearance = \"solid\" | \"light\" | \"outline\";\n\nexport type ToastLink = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type ToastProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Toast title */\n title: string;\n /** Optional description below the title */\n description?: string;\n /** Optional link below the content */\n link?: ToastLink;\n /** Visual variant */\n variant?: ToastVariant;\n /** Visual appearance */\n appearance?: ToastAppearance;\n /** Callback when the close button is clicked */\n onClose?: () => void;\n};\n\n// ── Icon map ──────────────────────────────────────────────────────────────────\n\ntype IconComponent = React.FC<React.SVGAttributes<SVGSVGElement>>;\n\nconst variantIconMap: Record<ToastVariant, IconComponent> = {\n info: InfoIcon,\n warning: WarningIcon,\n success: SuccessIcon,\n error: ErrorIcon,\n neutral: NeutralIcon,\n};\n\n// ── Style maps ────────────────────────────────────────────────────────────────\n\ntype StyleKey = `${ToastVariant}-${ToastAppearance}`;\n\nconst containerStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-bg-blue-600 rh-text-white rh-border-transparent\",\n \"info-light\": \"rh-bg-blue-50 rh-text-blue-900 rh-border-blue-200\",\n \"info-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"warning-solid\": \"rh-bg-yellow-500 rh-text-white rh-border-transparent\",\n \"warning-light\": \"rh-bg-yellow-50 rh-text-yellow-900 rh-border-yellow-200\",\n \"warning-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"success-solid\": \"rh-bg-[rgb(var(--rh-success))] rh-text-white rh-border-transparent\",\n \"success-light\": \"rh-bg-green-50 rh-text-green-900 rh-border-green-200\",\n \"success-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"error-solid\": \"rh-bg-[rgb(var(--rh-danger))] rh-text-white rh-border-transparent\",\n \"error-light\": \"rh-bg-red-50 rh-text-red-900 rh-border-red-200\",\n \"error-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"neutral-solid\": \"rh-bg-gray-900 rh-text-white rh-border-transparent\",\n \"neutral-light\": \"rh-bg-gray-100 rh-text-gray-900 rh-border-gray-200\",\n \"neutral-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n};\n\nconst iconStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white\",\n \"info-light\": \"rh-text-blue-600\",\n \"info-outline\": \"rh-text-blue-600\",\n \"warning-solid\": \"rh-text-white\",\n \"warning-light\": \"rh-text-yellow-600\",\n \"warning-outline\": \"rh-text-yellow-600\",\n \"success-solid\": \"rh-text-white\",\n \"success-light\": \"rh-text-green-600\",\n \"success-outline\": \"rh-text-green-600\",\n \"error-solid\": \"rh-text-white\",\n \"error-light\": \"rh-text-red-600\",\n \"error-outline\": \"rh-text-red-600\",\n \"neutral-solid\": \"rh-text-white\",\n \"neutral-light\": \"rh-text-gray-600\",\n \"neutral-outline\": \"rh-text-gray-600\",\n};\n\nconst descriptionStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700\",\n \"info-outline\": \"rh-text-text-muted\",\n \"warning-solid\": \"rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700\",\n \"warning-outline\": \"rh-text-text-muted\",\n \"success-solid\": \"rh-text-white/80\",\n \"success-light\": \"rh-text-green-700\",\n \"success-outline\": \"rh-text-text-muted\",\n \"error-solid\": \"rh-text-white/80\",\n \"error-light\": \"rh-text-red-700\",\n \"error-outline\": \"rh-text-text-muted\",\n \"neutral-solid\": \"rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700\",\n \"neutral-outline\": \"rh-text-text-muted\",\n};\n\nconst linkStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700 rh-underline hover:rh-text-blue-900\",\n \"info-outline\": \"rh-text-blue-600 rh-underline hover:rh-text-blue-800\",\n \"warning-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700 rh-underline hover:rh-text-yellow-900\",\n \"warning-outline\": \"rh-text-yellow-600 rh-underline hover:rh-text-yellow-800\",\n \"success-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"success-light\": \"rh-text-green-700 rh-underline hover:rh-text-green-900\",\n \"success-outline\": \"rh-text-green-600 rh-underline hover:rh-text-green-800\",\n \"error-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"error-light\": \"rh-text-red-700 rh-underline hover:rh-text-red-900\",\n \"error-outline\": \"rh-text-red-600 rh-underline hover:rh-text-red-800\",\n \"neutral-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700 rh-underline hover:rh-text-gray-900\",\n \"neutral-outline\": \"rh-text-gray-600 rh-underline hover:rh-text-gray-800\",\n};\n\nconst closeStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"info-light\": \"rh-text-blue-500 hover:rh-text-blue-800\",\n \"info-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"warning-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"warning-light\": \"rh-text-yellow-500 hover:rh-text-yellow-800\",\n \"warning-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"success-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"success-light\": \"rh-text-green-500 hover:rh-text-green-800\",\n \"success-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"error-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"error-light\": \"rh-text-red-500 hover:rh-text-red-800\",\n \"error-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"neutral-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"neutral-light\": \"rh-text-gray-500 hover:rh-text-gray-800\",\n \"neutral-outline\": \"rh-text-text-muted hover:rh-text-text\",\n};\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n {\n title,\n description,\n link,\n variant = \"info\",\n appearance = \"light\",\n onClose,\n className = \"\",\n ...rest\n },\n ref,\n) {\n const styleKey: StyleKey = `${variant}-${appearance}`;\n const Icon = variantIconMap[variant];\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n className={[\n \"rh-flex rh-items-start rh-gap-3\",\n \"rh-w-80 rh-rounded-sm rh-border rh-p-4\",\n \"rh-shadow-md rh-font-sans\",\n containerStyles[styleKey],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {/* Icon */}\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n <Icon\n className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]]\n .filter(Boolean)\n .join(\" \")}\n />\n </span>\n\n {/* Content */}\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p className=\"rh-text-sm rh-font-semibold rh-leading-tight\">{title}</p>\n\n {description && (\n <p\n className={[\n \"rh-mt-1 rh-text-sm rh-leading-normal\",\n descriptionStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n\n {link && (\n <a\n href={link.href}\n onClick={link.onClick}\n className={[\n \"rh-mt-1 rh-inline-block rh-text-sm rh-font-medium\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1 rh-rounded-xxs\",\n linkStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {link.label}\n </a>\n )}\n </div>\n\n {/* Close button */}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n onClick={onClose}\n className={[\n \"rh-flex-shrink-0 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1\",\n closeStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <CloseIcon className=\"rh-w-4 rh-h-4\" />\n </button>\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ToastPosition } from \"./ToastContext\";\nimport { Toast } from \"./Toast\";\nimport { useToastContext } from \"./ToastContext\";\n\n// ── Animation direction per position ─────────────────────────────────────────\n\ntype AnimDir = \"right\" | \"left\" | \"top\" | \"bottom\";\n\nconst positionAnimDir: Record<ToastPosition, AnimDir> = {\n \"top-right\": \"right\",\n \"bottom-right\": \"right\",\n \"top-left\": \"left\",\n \"bottom-left\": \"left\",\n \"top-center\": \"top\",\n \"bottom-center\": \"bottom\",\n};\n\nconst enterClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-in-right\",\n left: \"rh-animate-toast-in-left\",\n top: \"rh-animate-toast-in-top\",\n bottom: \"rh-animate-toast-in-bottom\",\n};\n\nconst leaveClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-out-right\",\n left: \"rh-animate-toast-out-left\",\n top: \"rh-animate-toast-out-top\",\n bottom: \"rh-animate-toast-out-bottom\",\n};\n\n// ── Position container classes ────────────────────────────────────────────────\n\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-right\": \"rh-top-4 rh-right-4 rh-items-end\",\n \"top-left\": \"rh-top-4 rh-left-4 rh-items-start\",\n \"top-center\": \"rh-top-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n \"bottom-right\": \"rh-bottom-4 rh-right-4 rh-items-end\",\n \"bottom-left\": \"rh-bottom-4 rh-left-4 rh-items-start\",\n \"bottom-center\": \"rh-bottom-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n};\n\n// ── Animated item ─────────────────────────────────────────────────────────────\n\nconst LEAVE_DURATION_MS = 200;\n\ntype AnimatedToastItemProps = {\n id: string;\n animDir: AnimDir;\n isDismissing: boolean;\n onRemove: (id: string) => void;\n onRequestDismiss: (id: string) => void;\n children: (onClose: () => void) => JSX.Element;\n};\n\nfunction AnimatedToastItem({\n id,\n animDir,\n isDismissing,\n onRemove,\n onRequestDismiss,\n children,\n}: AnimatedToastItemProps) {\n const [entered, setEntered] = useState(false);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // When the context signals dismiss, start the leave timer then remove\n useEffect(() => {\n if (!isDismissing) return;\n leaveTimerRef.current = setTimeout(() => {\n onRemove(id);\n }, LEAVE_DURATION_MS);\n return () => {\n if (leaveTimerRef.current) clearTimeout(leaveTimerRef.current);\n };\n }, [id, isDismissing, onRemove]);\n\n const handleAnimationEnd = useCallback(() => {\n if (!entered) setEntered(true);\n }, [entered]);\n\n const handleClose = useCallback(() => {\n onRequestDismiss(id);\n }, [id, onRequestDismiss]);\n\n const animClass = isDismissing\n ? leaveClass[animDir]\n : entered\n ? \"\"\n : enterClass[animDir];\n\n return (\n <div className={animClass} onAnimationEnd={handleAnimationEnd}>\n {children(handleClose)}\n </div>\n );\n}\n\n// ── Container ─────────────────────────────────────────────────────────────────\n\nexport function ToastContainer() {\n const { toasts, dismissingIds, position, requestDismiss, remove } = useToastContext();\n const animDir = positionAnimDir[position];\n\n if (toasts.length === 0) return null;\n\n return (\n <div\n aria-label=\"Notifications\"\n aria-live=\"polite\"\n className={[\n \"rh-fixed rh-z-[9999]\",\n \"rh-flex rh-flex-col rh-gap-3\",\n \"rh-pointer-events-none\",\n positionClasses[position],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {toasts.map((toast) => (\n <AnimatedToastItem\n key={toast.id}\n id={toast.id}\n animDir={animDir}\n isDismissing={dismissingIds.has(toast.id)}\n onRemove={remove}\n onRequestDismiss={requestDismiss}\n >\n {(onClose) => (\n <div className=\"rh-pointer-events-auto\">\n <Toast\n title={toast.title}\n description={toast.description}\n link={toast.link}\n variant={toast.variant}\n appearance={toast.appearance}\n onClose={onClose}\n />\n </div>\n )}\n </AnimatedToastItem>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport type { ToastAppearance, ToastLink, ToastVariant } from \"./Toast\";\nimport { ToastContainer } from \"./ToastContainer\";\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type ToastPosition =\n | \"top-right\"\n | \"top-left\"\n | \"top-center\"\n | \"bottom-right\"\n | \"bottom-left\"\n | \"bottom-center\";\n\nexport type ToastItem = {\n id: string;\n title: string;\n description?: string;\n link?: ToastLink;\n variant: ToastVariant;\n appearance: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration: number;\n};\n\nexport type ToastOptions = {\n description?: string;\n link?: ToastLink;\n appearance?: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration?: number;\n};\n\nexport type ToastFn = {\n (title: string, options?: ToastOptions): string;\n info: (title: string, options?: ToastOptions) => string;\n warning: (title: string, options?: ToastOptions) => string;\n success: (title: string, options?: ToastOptions) => string;\n error: (title: string, options?: ToastOptions) => string;\n neutral: (title: string, options?: ToastOptions) => string;\n dismiss: (id: string) => void;\n};\n\ntype ToastContextValue = {\n toasts: ToastItem[];\n /** IDs signaled for dismissal — triggers leave animation in ToastContainer */\n dismissingIds: Set<string>;\n position: ToastPosition;\n add: (item: Omit<ToastItem, \"id\">) => string;\n /** Signals a toast to start its leave animation */\n requestDismiss: (id: string) => void;\n /** Actually removes the toast from state (called after leave animation) */\n remove: (id: string) => void;\n};\n\n// ── Context ───────────────────────────────────────────────────────────────────\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n// ── Provider ──────────────────────────────────────────────────────────────────\n\nexport type ToastProviderProps = {\n children: React.ReactNode;\n /** Position of the toast container. Default: \"top-right\" */\n position?: ToastPosition;\n};\n\nexport function ToastProvider({\n children,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const [dismissingIds, setDismissingIds] = useState<Set<string>>(new Set());\n const counterRef = useRef(0);\n\n const remove = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n setDismissingIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n const requestDismiss = useCallback((id: string) => {\n setDismissingIds((prev) => new Set(prev).add(id));\n }, []);\n\n const add = useCallback(\n (item: Omit<ToastItem, \"id\">) => {\n const id = `rh-toast-${++counterRef.current}`;\n const toast: ToastItem = { ...item, id };\n\n setToasts((prev) => [...prev, toast]);\n\n if (toast.duration > 0) {\n setTimeout(() => requestDismiss(id), toast.duration);\n }\n\n return id;\n },\n [requestDismiss],\n );\n\n return (\n <ToastContext.Provider value={{ toasts, dismissingIds, position, add, requestDismiss, remove }}>\n {children}\n <ToastContainer />\n </ToastContext.Provider>\n );\n}\n\n// ── Internal hook (used by ToastContainer) ────────────────────────────────────\n\nexport function useToastContext(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToastContext must be used inside ToastProvider\");\n }\n return ctx;\n}\n\n// ── Public hook ───────────────────────────────────────────────────────────────\n\nexport function useToast(): { toast: ToastFn } {\n const { add, requestDismiss } = useToastContext();\n\n const createToast = useCallback(\n (variant: ToastVariant) =>\n (title: string, options: ToastOptions = {}): string => {\n return add({\n title,\n variant,\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n );\n\n const toast = useCallback(\n (title: string, options: ToastOptions & { variant?: ToastVariant } = {}): string => {\n return add({\n title,\n variant: options.variant ?? \"info\",\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n ) as ToastFn;\n\n toast.info = createToast(\"info\");\n toast.warning = createToast(\"warning\");\n toast.success = createToast(\"success\");\n toast.error = createToast(\"error\");\n toast.neutral = createToast(\"neutral\");\n toast.dismiss = requestDismiss;\n\n return { toast };\n}\n","import React, { useMemo } from \"react\";\nimport type { RehagroProviderProps, RehagroTheme } from \"./theme\";\nimport { TOKEN_MAP } from \"./theme\";\nimport { ToastProvider } from \"../components/Toast\";\n\nfunction hexToRgbTriplet(hex: string): string | null {\n const h = hex.replace(\"#\", \"\").trim();\n if (![3, 6].includes(h.length)) return null;\n const full = h.length === 3 ? h.split(\"\").map((c) => c + c).join(\"\") : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n if ([r, g, b].some(Number.isNaN)) return null;\n return `${r} ${g} ${b}`;\n}\n\nfunction toRgbTriplet(value?: string): string | undefined {\n if (!value) return undefined;\n\n // \"#RRGGBB\" or \"#RGB\"\n if (value.startsWith(\"#\")) return hexToRgbTriplet(value) ?? undefined;\n\n // \"rgb(r, g, b)\"\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\n\n // \"r g b\" (already a triplet)\n const parts = value.trim().split(/\\s+/);\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) {\n return value.trim();\n }\n\n return undefined;\n}\n\nexport function RehagroProvider({ theme, toastPosition, children }: RehagroProviderProps) {\n const style = useMemo(() => {\n if (!theme) return undefined;\n\n const vars: Record<string, string> = {};\n\n for (const [key, config] of Object.entries(TOKEN_MAP)) {\n const value = theme[key as keyof RehagroTheme];\n if (!value) continue;\n\n if (config.isColor) {\n const triplet = toRgbTriplet(value);\n if (triplet) vars[config.var] = triplet;\n } else {\n vars[config.var] = value;\n }\n }\n\n return vars as React.CSSProperties;\n }, [theme]);\n\n return (\n <div className=\"rh-root\" style={style}>\n <ToastProvider position={toastPosition}>{children}</ToastProvider>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Button size */\n size?: ButtonSize;\n /** Border radius */\n radius?: ButtonRadius;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n /** Icon rendered to the left of children (hidden when loading) */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of children (hidden when loading) */\n rightIcon?: React.ReactNode;\n};\n\nconst variantClasses: Record<ButtonVariant, string> = {\n solid:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n outline:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n ghost: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: \"rh-text-sm rh-px-3 rh-py-1.5\",\n md: \"rh-text-sm rh-px-4 rh-py-2\",\n lg: \"rh-text-base rh-px-5 rh-py-2.5\",\n};\n\nconst radiusClasses: Record<ButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"md\",\n radius = \"sm\",\n loading = false,\n disabled,\n leftIcon,\n rightIcon,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = React.useMemo(() => disabled || loading, [disabled, loading]);\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-2\",\n \"rh-border rh-font-sans rh-font-medium\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n variantClasses[variant],\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading && (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n )}\n {!loading && leftIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type IconButtonColor = \"primary\" | \"danger\" | \"warning\" | \"success\" | \"secondary\";\n\nexport type IconButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: IconButtonVariant;\n /** Button size */\n size?: IconButtonSize;\n /** Border radius */\n radius?: IconButtonRadius;\n /** Color scheme */\n color?: IconButtonColor;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n};\n\nconst variantColorClasses: Record<IconButtonVariant, Record<IconButtonColor, string>> = {\n solid: {\n primary:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n danger:\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\n warning:\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\n success:\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\n secondary:\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\n },\n outline: {\n primary:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n danger:\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\n warning:\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\n success:\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\n },\n ghost: {\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\n },\n};\n\nconst sizeClasses: Record<IconButtonSize, string> = {\n sm: \"rh-h-8 rh-w-8 rh-text-sm\",\n md: \"rh-h-10 rh-w-10 rh-text-base\",\n lg: \"rh-h-12 rh-w-12 rh-text-lg\",\n};\n\nconst radiusClasses: Record<IconButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = \"ghost\",\n size = \"md\",\n radius = \"full\",\n color = \"primary\",\n loading = false,\n disabled,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n variantColorClasses[variant][color],\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading ? (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n children\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type TextInputStatus = \"default\" | \"error\";\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type TextInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\"\n> & {\n /** Label text displayed above the input */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Validation status */\n status?: TextInputStatus;\n /** Input size */\n size?: TextInputSize;\n /** Border radius */\n radius?: TextInputRadius;\n /** Icon rendered to the left of the input */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of the input */\n rightIcon?: React.ReactNode;\n /** Helper/error message displayed below the input (accepts ReactNode for flexibility) */\n helperText?: React.ReactNode;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nconst statusClasses: Record<TextInputStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-h-input-sm rh-text-sm rh-px-input-x-sm\",\n md: \"rh-h-input-md rh-text-sm rh-px-input-x-md\",\n lg: \"rh-h-input-lg rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<TextInputRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst iconSizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-w-4 rh-h-4\",\n md: \"rh-w-5 rh-h-5\",\n lg: \"rh-w-5 rh-h-5\",\n};\n\nconst helperStatusClasses: Record<TextInputStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n function TextInput(\n {\n label,\n subtitle,\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n leftIcon,\n rightIcon,\n helperText,\n disabled,\n className = \"\",\n wrapperClassName = \"\",\n id,\n ...rest\n },\n ref,\n ) {\n const inputId = id || React.useId();\n\n return (\n <div\n className={[\n \"rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n htmlFor={inputId}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Input container */}\n <div\n className={[\n \"rh-flex rh-items-center rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {leftIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {leftIcon}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n disabled={disabled}\n aria-invalid={status === \"error\" || undefined}\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\n className={[\n \"rh-flex-1 rh-bg-transparent rh-outline-none\",\n \"rh-text-text placeholder:rh-text-text-muted\",\n disabled ? \"rh-cursor-not-allowed\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n />\n\n {rightIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {rightIcon}\n </span>\n )}\n </div>\n\n {/* Helper text */}\n {helperText && (\n <span\n id={`${inputId}-helper`}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\nexport type CheckboxProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> & {\n /** Checkbox size */\n size?: CheckboxSize;\n /** Label text displayed next to the checkbox */\n label?: string;\n /** Indeterminate state (partially checked) */\n indeterminate?: boolean;\n};\n\nconst sizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-4 rh-w-4\",\n md: \"rh-h-5 rh-w-5\",\n lg: \"rh-h-6 rh-w-6\",\n};\n\nconst iconSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-3 rh-w-3\",\n md: \"rh-h-3.5 rh-w-3.5\",\n lg: \"rh-h-4 rh-w-4\",\n};\n\nconst labelSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-text-sm\",\n md: \"rh-text-sm\",\n lg: \"rh-text-base\",\n};\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst MinusIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 10 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 1H9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(\n {\n size = \"md\",\n label,\n indeterminate = false,\n disabled,\n checked,\n defaultChecked,\n className = \"\",\n id,\n onChange,\n ...rest\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement>(null);\n const inputId = id || React.useId();\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const isChecked = checked ?? innerRef.current?.checked ?? defaultChecked ?? false;\n const isActive = isChecked || indeterminate;\n\n return (\n <label\n htmlFor={inputId}\n className={[\n \"rh-inline-flex rh-items-center rh-gap-2 rh-font-sans rh-select-none\",\n disabled ? \"rh-cursor-not-allowed rh-opacity-50\" : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-relative rh-inline-flex rh-items-center rh-justify-center\">\n <input\n ref={innerRef}\n id={inputId}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n defaultChecked={defaultChecked}\n aria-checked={indeterminate ? \"mixed\" : undefined}\n onChange={onChange}\n className=\"rh-peer rh-sr-only\"\n {...rest}\n />\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-border-border rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n sizeClasses[size],\n isActive\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-bg-surface rh-text-transparent\",\n !disabled && !isActive\n ? \"hover:rh-border-primary\"\n : \"\",\n \"peer-focus-visible:rh-ring-2 peer-focus-visible:rh-ring-ring peer-focus-visible:rh-ring-offset-2\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {indeterminate ? (\n <MinusIcon className={iconSizeClasses[size]} />\n ) : isChecked ? (\n <CheckIcon className={iconSizeClasses[size]} />\n ) : null}\n </span>\n </span>\n\n {label && (\n <span\n className={[\n \"rh-text-text\",\n labelSizeClasses[size],\n ].join(\" \")}\n >\n {label}\n </span>\n )}\n </label>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SelectStatus = \"default\" | \"error\";\n\nexport type SelectOption = {\n /** Unique value for the option */\n value: string;\n /** Display label */\n label: string;\n /** Whether the option is disabled */\n disabled?: boolean;\n};\n\ntype SelectBaseProps = {\n /** List of available options */\n options: SelectOption[];\n /** Label text displayed above the select */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Placeholder text when no option is selected */\n placeholder?: string;\n /** Validation status */\n status?: SelectStatus;\n /** Select size */\n size?: SelectSize;\n /** Border radius */\n radius?: SelectRadius;\n /** Helper/error message displayed below the select */\n helperText?: React.ReactNode;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Custom class for the trigger container */\n className?: string;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple?: false;\n /** Currently selected value (single mode) */\n value?: string;\n /** Default selected value (single mode, uncontrolled) */\n defaultValue?: string;\n /** Called when selection changes (single mode) */\n onChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple: true;\n /** Currently selected values (multi mode) */\n value?: string[];\n /** Default selected values (multi mode, uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes (multi mode) */\n onChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst statusClasses: Record<SelectStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<SelectSize, string> = {\n sm: \"rh-min-h-[32px] rh-text-sm rh-px-input-x-sm\",\n md: \"rh-min-h-[40px] rh-text-sm rh-px-input-x-md\",\n lg: \"rh-min-h-[48px] rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst dropdownRadiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-xs\",\n md: \"rh-rounded-xs\",\n lg: \"rh-rounded-xs\",\n xl: \"rh-rounded-xs\",\n full: \"rh-rounded-xs\",\n};\n\nconst helperStatusClasses: Record<SelectStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nconst optionSizeClasses: Record<SelectSize, string> = {\n sm: \"rh-px-input-x-sm rh-py-1.5 rh-text-sm\",\n md: \"rh-px-input-x-md rh-py-2 rh-text-sm\",\n lg: \"rh-px-input-x-lg rh-py-2.5 rh-text-base\",\n};\n\nconst ChevronIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\n function Select(props, ref) {\n const {\n options,\n label,\n subtitle,\n placeholder = \"Select\",\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n helperText,\n disabled = false,\n className = \"\",\n wrapperClassName = \"\",\n multiple = false,\n } = props;\n\n const triggerId = React.useId();\n const listboxId = React.useId();\n const helperId = React.useId();\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n const listboxRef = React.useRef<HTMLUListElement>(null);\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // --- Selection state ---\n const [internalValue, setInternalValue] = React.useState<string[]>(() => {\n if (props.defaultValue !== undefined) {\n return Array.isArray(props.defaultValue)\n ? props.defaultValue\n : [props.defaultValue];\n }\n return [];\n });\n\n const isControlled = props.value !== undefined;\n const selectedValues: string[] = isControlled\n ? Array.isArray(props.value)\n ? props.value\n : props.value !== undefined\n ? [props.value]\n : []\n : internalValue;\n\n const enabledOptions = options.filter((o) => !o.disabled);\n\n const handleSelect = (optionValue: string) => {\n if (multiple) {\n const next = selectedValues.includes(optionValue)\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n\n if (!isControlled) setInternalValue(next);\n (props as SelectMultipleProps).onChange?.(next);\n } else {\n const next = [optionValue];\n if (!isControlled) setInternalValue(next);\n (props as SelectSingleProps).onChange?.(optionValue);\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n // --- Display value ---\n const displayText = React.useMemo(() => {\n if (selectedValues.length === 0) return null;\n\n if (!multiple) {\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\n }\n\n const selectedLabels = selectedValues\n .map((v) => options.find((o) => o.value === v)?.label)\n .filter(Boolean);\n\n if (selectedLabels.length === 0) return null;\n if (selectedLabels.length === 1) return selectedLabels[0];\n return `${selectedLabels.length} selected`;\n }, [selectedValues, options, multiple]);\n\n // --- Close on outside click ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n // --- Close on Escape ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n // --- Scroll active option into view ---\n React.useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const listbox = listboxRef.current;\n if (!listbox) return;\n const activeEl = listbox.children[activeIndex] as HTMLElement | undefined;\n if (typeof activeEl?.scrollIntoView === \"function\") {\n activeEl.scrollIntoView({ block: \"nearest\" });\n }\n }, [activeIndex, isOpen]);\n\n // --- Reset active index when opening ---\n React.useEffect(() => {\n if (isOpen) {\n const firstSelectedIdx = options.findIndex(\n (o) => !o.disabled && selectedValues.includes(o.value),\n );\n setActiveIndex(firstSelectedIdx >= 0 ? firstSelectedIdx : 0);\n } else {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n // --- Keyboard navigation ---\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n case \"Down\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev + 1; i < options.length; i++) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"ArrowUp\":\n case \"Up\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev - 1; i >= 0; i--) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else if (activeIndex >= 0 && !options[activeIndex].disabled) {\n handleSelect(options[activeIndex].value);\n }\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[0])\n : 0;\n setActiveIndex(idx);\n }\n break;\n }\n case \"End\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[enabledOptions.length - 1])\n : options.length - 1;\n setActiveIndex(idx);\n }\n break;\n }\n case \"Tab\": {\n if (isOpen) setIsOpen(false);\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <div\n ref={wrapperRef}\n className={[\n \"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n id={`${triggerId}-label`}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Trigger */}\n <button\n ref={innerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n aria-labelledby={label ? `${triggerId}-label` : undefined}\n aria-describedby={helperText ? helperId : undefined}\n aria-invalid={status === \"error\" || undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"rh-text-left rh-w-full\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span\n className={[\n \"rh-flex-1 rh-truncate\",\n displayText ? \"rh-text-text\" : \"rh-text-text-muted\",\n ].join(\" \")}\n >\n {displayText ?? placeholder}\n </span>\n\n <ChevronIcon\n className={[\n \"rh-w-5 rh-h-5 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150\",\n isOpen ? \"rh-rotate-180\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n </button>\n\n {/* Dropdown */}\n {isOpen && (\n <ul\n ref={listboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? `${triggerId}-label` : triggerId}\n aria-multiselectable={multiple || undefined}\n tabIndex={-1}\n className={[\n \"rh-absolute rh-z-50 rh-w-full rh-mt-1\",\n \"rh-border rh-border-border rh-bg-surface\",\n \"rh-shadow-md rh-overflow-auto rh-max-h-60\",\n \"rh-py-1\",\n dropdownRadiusClasses[radius],\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ top: \"100%\" }}\n >\n {options.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isActive = index === activeIndex;\n const isDisabled = option.disabled;\n\n return (\n <li\n key={option.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n onClick={() => {\n if (!isDisabled) handleSelect(option.value);\n }}\n onMouseEnter={() => {\n if (!isDisabled) setActiveIndex(index);\n }}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-transition-colors rh-duration-150\",\n optionSizeClasses[size],\n isDisabled\n ? \"rh-opacity-50 rh-cursor-not-allowed\"\n : \"rh-cursor-pointer\",\n isActive && !isDisabled\n ? \"rh-bg-background\"\n : \"\",\n isSelected && !isActive\n ? \"rh-bg-primary/5\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">\n {option.label}\n </span>\n\n {multiple ? (\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-w-5 rh-h-5 rh-shrink-0\",\n \"rh-border rh-rounded-xxs rh-transition-colors rh-duration-150\",\n isSelected\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-border-border rh-bg-surface\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {isSelected && (\n <CheckIcon className=\"rh-w-3 rh-h-3\" />\n )}\n </span>\n ) : (\n isSelected && (\n <CheckIcon className=\"rh-w-3.5 rh-h-3.5 rh-shrink-0 rh-text-primary\" />\n )\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {/* Helper text */}\n {helperText && (\n <span\n id={helperId}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef, useState, useRef, useCallback, useEffect } from \"react\";\n\nexport type TooltipVariant = \"light\" | \"default\" | \"dark\";\nexport type TooltipSize = \"sm\" | \"md\";\nexport type TooltipPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport type TooltipProps = {\n /** Tooltip title text */\n title: string;\n /** Optional description text below the title */\n description?: string;\n /** Visual style variant */\n variant?: TooltipVariant;\n /** Tooltip size */\n size?: TooltipSize;\n /** Placement relative to the trigger element */\n placement?: TooltipPlacement;\n /** Show a close button (only for md size with description) */\n closable?: boolean;\n /** Show an icon before the title */\n icon?: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Delay before showing tooltip (ms) */\n enterDelay?: number;\n /** Delay before hiding tooltip (ms) */\n leaveDelay?: number;\n /** The trigger element */\n children: React.ReactElement;\n /** Additional className for the tooltip container */\n className?: string;\n};\n\nconst variantClasses: Record<TooltipVariant, string> = {\n light: \"rh-bg-surface rh-text-text rh-border rh-border-border rh-shadow-md\",\n default:\n \"rh-bg-primary/10 rh-text-text rh-border rh-border-primary/20 rh-shadow-md\",\n dark: \"rh-bg-primary rh-text-surface rh-shadow-md\",\n};\n\nconst arrowVariantClasses: Record<TooltipVariant, string> = {\n light: \"rh-border-border rh-bg-surface\",\n default: \"rh-border-primary/20 rh-bg-primary/10\",\n dark: \"rh-bg-primary\",\n};\n\nconst sizeClasses: Record<TooltipSize, string> = {\n sm: \"rh-px-3 rh-py-1.5 rh-text-xs\",\n md: \"rh-px-4 rh-py-3 rh-text-sm\",\n};\n\nconst tooltipPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-full rh-left-1/2 rh--translate-x-1/2 rh-mb-2\",\n \"top-start\": \"rh-bottom-full rh-left-0 rh-mb-2\",\n \"top-end\": \"rh-bottom-full rh-right-0 rh-mb-2\",\n bottom: \"rh-top-full rh-left-1/2 rh--translate-x-1/2 rh-mt-2\",\n \"bottom-start\": \"rh-top-full rh-left-0 rh-mt-2\",\n \"bottom-end\": \"rh-top-full rh-right-0 rh-mt-2\",\n left: \"rh-right-full rh-top-1/2 rh--translate-y-1/2 rh-mr-2\",\n \"left-start\": \"rh-right-full rh-top-0 rh-mr-2\",\n \"left-end\": \"rh-right-full rh-bottom-0 rh-mr-2\",\n right: \"rh-left-full rh-top-1/2 rh--translate-y-1/2 rh-ml-2\",\n \"right-start\": \"rh-left-full rh-top-0 rh-ml-2\",\n \"right-end\": \"rh-left-full rh-bottom-0 rh-ml-2\",\n};\n\nconst arrowPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-0 rh-left-1/2 rh--translate-x-1/2 rh-translate-y-1/2 rh-rotate-45\",\n \"top-start\": \"rh-bottom-0 rh-left-4 rh-translate-y-1/2 rh-rotate-45\",\n \"top-end\": \"rh-bottom-0 rh-right-4 rh-translate-y-1/2 rh-rotate-45\",\n bottom:\n \"rh-top-0 rh-left-1/2 rh--translate-x-1/2 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-start\": \"rh-top-0 rh-left-4 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-end\": \"rh-top-0 rh-right-4 rh--translate-y-1/2 rh-rotate-45\",\n left: \"rh-right-0 rh-top-1/2 rh--translate-y-1/2 rh-translate-x-1/2 rh-rotate-45\",\n \"left-start\": \"rh-right-0 rh-top-3 rh-translate-x-1/2 rh-rotate-45\",\n \"left-end\": \"rh-right-0 rh-bottom-3 rh-translate-x-1/2 rh-rotate-45\",\n right:\n \"rh-left-0 rh-top-1/2 rh--translate-y-1/2 rh--translate-x-1/2 rh-rotate-45\",\n \"right-start\": \"rh-left-0 rh-top-3 rh--translate-x-1/2 rh-rotate-45\",\n \"right-end\": \"rh-left-0 rh-bottom-3 rh--translate-x-1/2 rh-rotate-45\",\n};\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(\n {\n title,\n description,\n variant = \"light\",\n size = \"sm\",\n placement = \"top\",\n closable = false,\n icon,\n open: controlledOpen,\n onOpenChange,\n enterDelay = 100,\n leaveDelay = 150,\n children,\n className = \"\",\n },\n ref,\n ) {\n const [internalOpen, setInternalOpen] = useState(false);\n const enterTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const clearTimers = useCallback(() => {\n if (enterTimerRef.current) {\n clearTimeout(enterTimerRef.current);\n enterTimerRef.current = null;\n }\n if (leaveTimerRef.current) {\n clearTimeout(leaveTimerRef.current);\n leaveTimerRef.current = null;\n }\n }, []);\n\n const handleEnter = useCallback(() => {\n clearTimers();\n enterTimerRef.current = setTimeout(() => {\n setOpen(true);\n }, enterDelay);\n }, [clearTimers, enterDelay, setOpen]);\n\n const handleLeave = useCallback(() => {\n clearTimers();\n leaveTimerRef.current = setTimeout(() => {\n setOpen(false);\n }, leaveDelay);\n }, [clearTimers, leaveDelay, setOpen]);\n\n const handleClose = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n useEffect(() => {\n return () => clearTimers();\n }, [clearTimers]);\n\n const triggerChild = React.Children.only(children);\n\n const triggerElement = React.cloneElement(triggerChild, {\n onMouseEnter: (e: React.MouseEvent) => {\n handleEnter();\n triggerChild.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleLeave();\n triggerChild.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleEnter();\n triggerChild.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleLeave();\n triggerChild.props.onBlur?.(e);\n },\n \"aria-describedby\": isOpen ? \"rh-tooltip\" : undefined,\n } as React.HTMLAttributes<HTMLElement>);\n\n const showCloseButton = closable && size === \"md\" && description;\n\n const arrowBorderClass =\n variant === \"dark\" ? \"\" : \"rh-border-b rh-border-r\";\n\n return (\n <div\n className=\"rh-relative rh-inline-flex\"\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {triggerElement}\n {isOpen && (\n <div\n ref={ref}\n id=\"rh-tooltip\"\n role=\"tooltip\"\n className={[\n \"rh-absolute rh-z-50 rh-w-max rh-max-w-xs rh-rounded-xs\",\n tooltipPlacementClasses[placement],\n variantClasses[variant],\n sizeClasses[size],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Arrow */}\n <span\n aria-hidden=\"true\"\n className={[\n \"rh-absolute rh-w-2.5 rh-h-2.5\",\n arrowBorderClass,\n arrowVariantClasses[variant],\n arrowPlacementClasses[placement],\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n\n {/* Content */}\n <div className=\"rh-relative rh-flex rh-items-start rh-gap-2\">\n {icon && (\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p\n className={[\n \"rh-font-semibold rh-leading-tight\",\n size === \"sm\" ? \"rh-text-xs\" : \"rh-text-sm\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {title}\n </p>\n {description && size === \"md\" && (\n <p\n className={[\n \"rh-mt-1 rh-text-xs rh-leading-normal\",\n variant === \"dark\"\n ? \"rh-text-surface/80\"\n : \"rh-text-text-muted\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n </div>\n\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close tooltip\"\n onClick={handleClose}\n className={[\n \"rh-flex-shrink-0 rh-ml-1 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n variant === \"dark\"\n ? \"rh-text-surface/80 hover:rh-text-surface\"\n : \"rh-text-text-muted hover:rh-text-text\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"rh-w-4 rh-h-4\"\n aria-hidden=\"true\"\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef, useState } from \"react\";\n\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type AvatarVariant = \"circle\" | \"square\";\n\nexport type AvatarProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> & {\n /** Image source URL */\n src?: string;\n /** Alt text for the image (required for accessibility) */\n alt?: string;\n /** Fallback initials shown when image is unavailable */\n initials?: string;\n /** Avatar size */\n size?: AvatarSize;\n /** Shape variant */\n variant?: AvatarVariant;\n};\n\nconst sizeClasses: Record<AvatarSize, string> = {\n sm: \"rh-w-8 rh-h-8 rh-text-xs\",\n md: \"rh-w-10 rh-h-10 rh-text-sm\",\n lg: \"rh-w-12 rh-h-12 rh-text-base\",\n xl: \"rh-w-16 rh-h-16 rh-text-lg\",\n};\n\nconst imageSizeClasses: Record<AvatarSize, string> = {\n sm: \"rh-w-8 rh-h-8\",\n md: \"rh-w-10 rh-h-10\",\n lg: \"rh-w-12 rh-h-12\",\n xl: \"rh-w-16 rh-h-16\",\n};\n\nconst variantClasses: Record<AvatarVariant, string> = {\n circle: \"rh-rounded-full\",\n square: \"rh-rounded-sm\",\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", className = \"\", ...rest },\n ref,\n) {\n const [imgError, setImgError] = useState(false);\n const showImage = src && !imgError;\n\n const fallbackLabel = initials\n ? initials.slice(0, 2).toUpperCase()\n : alt\n ? alt\n .split(\" \")\n .slice(0, 2)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n : \"?\";\n\n return (\n <div\n ref={ref}\n role={showImage ? undefined : \"img\"}\n aria-label={showImage ? undefined : alt || initials}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center rh-shrink-0 rh-overflow-hidden\",\n \"rh-bg-primary rh-text-surface rh-font-sans rh-font-medium rh-select-none\",\n sizeClasses[size],\n variantClasses[variant],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt}\n className={[imageSizeClasses[size], variantClasses[variant], \"rh-object-cover\"].join(\" \")}\n onError={() => setImgError(true)}\n />\n ) : (\n <span aria-hidden=\"true\">{fallbackLabel}</span>\n )}\n </div>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type ContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Remove o padding horizontal lateral.\n * Use quando o conteúdo deve ocupar toda a largura disponível.\n */\n fluid?: boolean;\n};\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ fluid = false, className = \"\", children, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={[\n \"rh-w-full rh-mx-auto\",\n \"rh-max-w-[1440px]\",\n !fluid\n ? \"rh-px-grid-margin-mobile desktop-xs:rh-px-grid-margin-desktop\"\n : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type GridContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Override do número de colunas.\n * Padrão: 4 no mobile, 12 no desktop (desktop-xs+).\n */\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n /**\n * Gap entre as colunas em pixels.\n * Padrão: 16px no mobile, 24px no desktop.\n */\n spacing?: number;\n};\n\nconst colsClasses: Record<number, string> = {\n 1: \"rh-grid-cols-1\",\n 2: \"rh-grid-cols-2\",\n 3: \"rh-grid-cols-3\",\n 4: \"rh-grid-cols-4\",\n 5: \"rh-grid-cols-5\",\n 6: \"rh-grid-cols-6\",\n 7: \"rh-grid-cols-7\",\n 8: \"rh-grid-cols-8\",\n 9: \"rh-grid-cols-9\",\n 10: \"rh-grid-cols-10\",\n 11: \"rh-grid-cols-11\",\n 12: \"rh-grid-cols-12\",\n};\n\nexport const GridContainer = forwardRef<HTMLDivElement, GridContainerProps>(\n function GridContainer({ columns, spacing, className = \"\", style, children, ...rest }, ref) {\n const colClass = columns\n ? colsClasses[columns]\n : \"rh-grid-cols-4 desktop-xs:rh-grid-cols-12\";\n\n const gapStyle =\n spacing !== undefined\n ? { gap: `${spacing}px`, ...style }\n : style;\n\n return (\n <div\n ref={ref}\n style={gapStyle}\n className={[\n \"rh-grid\",\n colClass,\n spacing === undefined ? \"rh-gap-grid-gutter-mobile desktop-xs:rh-gap-grid-gutter-desktop\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type GridSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\nexport type MobileSpan = 1 | 2 | 3 | 4;\n\nexport type GridItemProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Span base no mobile (320px+). Padrão: 4 (full width das 4 colunas). */\n mobile?: MobileSpan;\n /** Span a partir de mobile-sm (360px+). */\n mobileSm?: MobileSpan;\n /** Span a partir de mobile-md (390px+). */\n mobileMd?: MobileSpan;\n /** Span a partir de mobile-lg (430px+). */\n mobileLg?: MobileSpan;\n /** Span a partir de desktop-xs (768px+). Padrão: 12 (full width das 12 colunas). */\n desktop?: GridSpan;\n /** Span a partir de desktop-sm (1024px+). */\n desktopSm?: GridSpan;\n /** Span a partir de desktop-md (1280px+). */\n desktopMd?: GridSpan;\n /** Span a partir de desktop-lg (1440px+). */\n desktopLg?: GridSpan;\n};\n\n// Mapas estáticos completos para evitar purge do Tailwind\nconst mobileSpanClasses: Record<MobileSpan, string> = {\n 1: \"rh-col-span-1\",\n 2: \"rh-col-span-2\",\n 3: \"rh-col-span-3\",\n 4: \"rh-col-span-4\",\n};\n\nconst mobileSmSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-sm:rh-col-span-1\",\n 2: \"mobile-sm:rh-col-span-2\",\n 3: \"mobile-sm:rh-col-span-3\",\n 4: \"mobile-sm:rh-col-span-4\",\n};\n\nconst mobileMdSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-md:rh-col-span-1\",\n 2: \"mobile-md:rh-col-span-2\",\n 3: \"mobile-md:rh-col-span-3\",\n 4: \"mobile-md:rh-col-span-4\",\n};\n\nconst mobileLgSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-lg:rh-col-span-1\",\n 2: \"mobile-lg:rh-col-span-2\",\n 3: \"mobile-lg:rh-col-span-3\",\n 4: \"mobile-lg:rh-col-span-4\",\n};\n\nconst desktopSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-xs:rh-col-span-1\",\n 2: \"desktop-xs:rh-col-span-2\",\n 3: \"desktop-xs:rh-col-span-3\",\n 4: \"desktop-xs:rh-col-span-4\",\n 5: \"desktop-xs:rh-col-span-5\",\n 6: \"desktop-xs:rh-col-span-6\",\n 7: \"desktop-xs:rh-col-span-7\",\n 8: \"desktop-xs:rh-col-span-8\",\n 9: \"desktop-xs:rh-col-span-9\",\n 10: \"desktop-xs:rh-col-span-10\",\n 11: \"desktop-xs:rh-col-span-11\",\n 12: \"desktop-xs:rh-col-span-12\",\n};\n\nconst desktopSmSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-sm:rh-col-span-1\",\n 2: \"desktop-sm:rh-col-span-2\",\n 3: \"desktop-sm:rh-col-span-3\",\n 4: \"desktop-sm:rh-col-span-4\",\n 5: \"desktop-sm:rh-col-span-5\",\n 6: \"desktop-sm:rh-col-span-6\",\n 7: \"desktop-sm:rh-col-span-7\",\n 8: \"desktop-sm:rh-col-span-8\",\n 9: \"desktop-sm:rh-col-span-9\",\n 10: \"desktop-sm:rh-col-span-10\",\n 11: \"desktop-sm:rh-col-span-11\",\n 12: \"desktop-sm:rh-col-span-12\",\n};\n\nconst desktopMdSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-md:rh-col-span-1\",\n 2: \"desktop-md:rh-col-span-2\",\n 3: \"desktop-md:rh-col-span-3\",\n 4: \"desktop-md:rh-col-span-4\",\n 5: \"desktop-md:rh-col-span-5\",\n 6: \"desktop-md:rh-col-span-6\",\n 7: \"desktop-md:rh-col-span-7\",\n 8: \"desktop-md:rh-col-span-8\",\n 9: \"desktop-md:rh-col-span-9\",\n 10: \"desktop-md:rh-col-span-10\",\n 11: \"desktop-md:rh-col-span-11\",\n 12: \"desktop-md:rh-col-span-12\",\n};\n\nconst desktopLgSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-lg:rh-col-span-1\",\n 2: \"desktop-lg:rh-col-span-2\",\n 3: \"desktop-lg:rh-col-span-3\",\n 4: \"desktop-lg:rh-col-span-4\",\n 5: \"desktop-lg:rh-col-span-5\",\n 6: \"desktop-lg:rh-col-span-6\",\n 7: \"desktop-lg:rh-col-span-7\",\n 8: \"desktop-lg:rh-col-span-8\",\n 9: \"desktop-lg:rh-col-span-9\",\n 10: \"desktop-lg:rh-col-span-10\",\n 11: \"desktop-lg:rh-col-span-11\",\n 12: \"desktop-lg:rh-col-span-12\",\n};\n\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\n function GridItem(\n {\n mobile = 4,\n mobileSm,\n mobileMd,\n mobileLg,\n desktop = 12,\n desktopSm,\n desktopMd,\n desktopLg,\n className = \"\",\n children,\n ...rest\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\n className={[\n mobileSpanClasses[mobile],\n mobileSm !== undefined ? mobileSmSpanClasses[mobileSm] : \"\",\n mobileMd !== undefined ? mobileMdSpanClasses[mobileMd] : \"\",\n mobileLg !== undefined ? mobileLgSpanClasses[mobileLg] : \"\",\n desktopSpanClasses[desktop],\n desktopSm !== undefined ? desktopSmSpanClasses[desktopSm] : \"\",\n desktopMd !== undefined ? desktopMdSpanClasses[desktopMd] : \"\",\n desktopLg !== undefined ? desktopLgSpanClasses[desktopLg] : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n"]}
|