@classytic/fluid 0.1.2 → 0.2.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/README.md +63 -18
- package/animations.css +74 -0
- package/dist/chunk-GUHK2DTW.js +15 -0
- package/dist/chunk-GUHK2DTW.js.map +1 -0
- package/dist/chunk-H3NFL3GJ.js +57 -0
- package/dist/chunk-H3NFL3GJ.js.map +1 -0
- package/dist/chunk-J2YRTQE4.js +293 -0
- package/dist/chunk-J2YRTQE4.js.map +1 -0
- package/dist/compact.d.ts +217 -0
- package/dist/compact.js +986 -0
- package/dist/compact.js.map +1 -0
- package/dist/dashboard.d.ts +38 -1
- package/dist/dashboard.js +65 -25
- package/dist/dashboard.js.map +1 -1
- package/dist/index.d.ts +586 -507
- package/dist/index.js +1656 -2211
- package/dist/index.js.map +1 -1
- package/dist/layout.js +2 -60
- package/dist/layout.js.map +1 -1
- package/dist/search.d.ts +172 -0
- package/dist/search.js +341 -0
- package/dist/search.js.map +1 -0
- package/dist/use-base-search-AS5Z3SAy.d.ts +64 -0
- package/package.json +32 -19
- package/styles.css +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/compact/field.tsx","../src/components/compact/compact-input.tsx","../src/components/compact/compact-textarea.tsx","../src/components/compact/compact-select.tsx","../src/components/compact/compact-number-input.tsx","../src/components/compact/compact-tag-choice.tsx","../src/components/compact/compact-slug-field.tsx"],"names":["jsx","jsxs","InputGroup","InputGroupAddon","Controller","InputGroupInput","Input","Plus","Fragment","InputGroupButton"],"mappings":";;;;;;;;;;;;;AAkBA,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAa1D,IAAM,IAAA,GAAO,IAAA,CAAK,SAAS,SAAA,CAAU;AAAA,EAC1C,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU;AACZ,CAAA,EAAmB;AACjB,EAAA,MAAM,KAAK,KAAA,EAAM;AAEjB,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,EAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,EAAA,EAAI,QAAA,EAAU,OAAO;AAAA,GACxB;AAEA,EAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAS,CAAA,EAAI,UAAS,CAAA,EAC1D,CAAA;AAEJ,CAAC,CAAA;AAWM,IAAM,KAAA,GAAQ,IAAA,CAAK,SAAS,UAAA,CAAW;AAAA,EAC5C,QAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAS,GAAA,EAAK,EAAA;AAAA,MACd,SAAA,EAAW,EAAA;AAAA,QACT,6CAAA;AAAA,QACA,gBAAA;AAAA,QACA,6DAAA;AAAA,QACA,mDAAA;AAAA,QACA,mBAAA;AAAA,QACA,iCAAA;AAAA,QACA,KAAK,QAAA,IAAY,YAAA;AAAA,QACjB,KAAK,OAAA,IAAW,sDAAA;AAAA,QAChB;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAOM,IAAM,KAAA,GAAQ,IAAA,CAAK,SAAS,UAAA,CAAW;AAAA,EAC5C,QAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,2BACG,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,0CAAA,EAA4C,SAAS,GACnE,QAAA,EACH,CAAA;AAEJ,CAAC,CAAA;AAUM,IAAM,WAAA,GAAc,IAAA,CAAK,SAAS,gBAAA,CAAiB;AAAA,EACxD,QAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,2BACG,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,+CAAA,EAAiD,SAAS,GACxE,QAAA,EACH,CAAA;AAEJ,CAAC,CAAA;AAOM,IAAM,IAAA,GAAO,IAAA,CAAK,SAAS,SAAA,CAAU;AAAA,EAC1C,QAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,mEAAA;AAAA,QACA,uBAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAEM,IAAM,KAAA,GAAQ;AAAA,EACnB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA;AC1GA,SAAS,YAAA,CAAkD;AAAA;AAAA,EAEzD,OAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA;AAAA,EAGP,SAAA;AAAA,EACA,UAAA;AAAA;AAAA,EAGA,SAAA;AAAA,EACA,cAAA;AAAA;AAAA,EAGA,aAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA;AAAA,EAGA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2D;AAEzD,EAAA,MAAM,gBAAgB,SAAA,IAAa,UAAA;AAEnC,EAAA,MAAM,WAAA,GAAc,CAClB,UAAA,EACA,aAAA,EACA,YACA,UAAA,KACG;AACH,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,GAAA;AAAA,MACA,EAAA,EAAI,IAAA;AAAA,MACJ,IAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,WAAA;AAAA,MACA,OAAO,UAAA,IAAc,EAAA;AAAA,MACrB,QAAA,EAAU,CAAC,CAAA,KAAqC;AAC9C,QAAA,MAAM,QAAA,GAAW,EAAE,MAAA,CAAO,KAAA;AAC1B,QAAA,aAAA,GAAgB,QAAQ,CAAA;AACxB,QAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,MAC1B,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,UAAA,IAAc,sDAAA;AAAA,QACd;AAAA,OACF;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACL;AAGA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,uBACE,IAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,MAAA,EACnB,QAAA,EAAA;AAAA,QAAA,SAAA,oBACCA,GAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAM,gBACpB,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,wBAEFA,GAAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,UAAA,EAAY,CAAA;AAAA,QAChC,8BACCA,GAAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAM,cACpB,QAAA,EAAA,UAAA,EACH;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ;AAGA,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAO,GAAG,UAAA,EAAY,CAAA;AAAA,EAChC,CAAA;AAGA,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACEA,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChB,IAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,WAAsB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,YAAY,KAAA,EAC3E,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC7B,WAAA,CAAY,MAAM,KAAA,EAAO,KAAA,CAAM,UAAU,QAAA,EAAU,UAAA,EAAY,OAAO,OAAO;AAAA,WAAA,EAChF,CAAA;AAAA,UACC,UAAA,EAAY,yBAASA,GAAAA,CAAC,MAAM,KAAA,EAAN,EAAa,QAAA,EAAA,UAAA,CAAW,KAAA,CAAM,OAAA,EAAQ,CAAA;AAAA,0BAC7DA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAClC;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAqB;AAC/C,IAAA,QAAA,GAAW,EAAE,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,IAA6C,CAAA;AAC3E,IAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,MAAM,IAAA,EAAN,EAAW,WAAsB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EAC/D,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAC7B,WAAA,CAAY,KAAA,EAAO,kBAAA,EAAoB,QAAA,EAAU,KAAK;AAAA,KAAA,EACzD,CAAA;AAAA,IACC,yBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC9BA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,GAAA,EAClC,CAAA;AAEJ;AC/IA,SAAS,eAAA,CAAqD;AAAA;AAAA,EAE5D,OAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA;AAAA,EAGP,SAAA;AAAA,EACA,UAAA;AAAA;AAAA,EAGA,SAAA;AAAA,EACA,cAAA;AAAA;AAAA,EAGA,aAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA;AAAA,EAGA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiE;AAC/D,EAAA,MAAM,gBAAgB,SAAA,IAAa,UAAA;AAEnC,EAAA,MAAM,cAAA,GAAiB,CACrB,UAAA,EACA,aAAA,EACA,YACA,UAAA,KACG;AACH,IAAA,MAAM,gBAAA,GAAmB,YAAY,MAAA,IAAU,CAAA;AAE/C,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAA;AAAA,MACA,EAAA,EAAI,IAAA;AAAA,MACJ,IAAA;AAAA,MACA,QAAA,EAAU,UAAA;AAAA,MACV,WAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAO,UAAA,IAAc,EAAA;AAAA,MACrB,QAAA,EAAU,CAAC,CAAA,KAAwC;AACjD,QAAA,MAAM,QAAA,GAAW,EAAE,MAAA,CAAO,KAAA;AAC1B,QAAA,aAAA,GAAgB,QAAQ,CAAA;AACxB,QAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,MAC1B,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0BAAA;AAAA,QACA,UAAA,IAAc,sDAAA;AAAA,QACd;AAAA,OACF;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAG;AAAA,KACL;AAGA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,uBACEC,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAACC,YAAA,EACE,QAAA,EAAA;AAAA,UAAA,SAAA,oBACCF,GAAAA,CAACG,eAAAA,EAAA,EAAgB,KAAA,EAAM,eACpB,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,0BAEFH,GAAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,aAAA,EAAe,CAAA;AAAA,UACtC,8BACCA,GAAAA,CAACG,iBAAA,EAAgB,KAAA,EAAM,aACpB,QAAA,EAAA,UAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QACC,aAAa,gBAAA,GAAmB,CAAA,oBAC/BF,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iDAAA,EACZ,QAAA,EAAA;AAAA,UAAA,gBAAA;AAAA,UAAiB,GAAA;AAAA,UAAE;AAAA,SAAA,EACtB;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ;AAGA,IAAA,uBACEA,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,QAAA,EAAA,EAAU,GAAG,aAAA,EAAe,CAAA;AAAA,MAC5B,aAAa,gBAAA,GAAmB,CAAA,oBAC/BC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iDAAA,EACZ,QAAA,EAAA;AAAA,QAAA,gBAAA;AAAA,QAAiB,GAAA;AAAA,QAAE;AAAA,OAAA,EACtB;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ,CAAA;AAGA,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACED,GAAAA;AAAA,MAACI,UAAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBH,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,SAAA,EAAsB,QAAA,EAAoB,SAAS,CAAC,CAAC,YAAY,KAAA,EAC3E,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC7B,cAAA,CAAe,MAAM,KAAA,EAAO,KAAA,CAAM,UAAU,QAAA,EAAU,UAAA,EAAY,OAAO,OAAO;AAAA,WAAA,EACnF,CAAA;AAAA,UACC,UAAA,EAAY,yBAASA,GAAAA,CAAC,MAAM,KAAA,EAAN,EAAa,QAAA,EAAA,UAAA,CAAW,KAAA,CAAM,OAAA,EAAQ,CAAA;AAAA,0BAC7DA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAClC;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAqB;AAC/C,IAAA,QAAA,GAAW,EAAE,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,IAAgD,CAAA;AAC9E,IAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,WAAsB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EAC/D,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAC7B,cAAA,CAAe,KAAA,EAAO,kBAAA,EAAoB,QAAA,EAAU,KAAK;AAAA,KAAA,EAC5D,CAAA;AAAA,IACC,yBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC9BA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,GAAA,EAClC,CAAA;AAEJ;ACrJA,SAAS,aAAA,CAAmD;AAAA;AAAA,EAE1D,OAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,WAAA,GAAc,eAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAQ,EAAC;AAAA;AAAA,EAGT,SAAA;AAAA;AAAA,EAGA,aAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,KAAA;AAAA,EAEA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6D;AAE3D,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACEA,GAAAA;AAAA,MAACI,UAAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBH,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,YAAY,KAAA,EACrD,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,4BAC9BC,IAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAO,KAAA,CAAM,KAAA;AAAA,gBACb,aAAA,EAAe,CAAC,GAAA,KAAgB;AAC9B,kBAAA,KAAA,CAAM,SAAS,GAAG,CAAA;AAClB,kBAAA,aAAA,GAAgB,GAAG,CAAA;AAAA,gBACrB,CAAA;AAAA,gBACA,QAAA;AAAA,gBACC,GAAG,KAAA;AAAA,gBAEJ,QAAA,EAAA;AAAA,kCAAAD,GAAAA;AAAA,oBAAC,aAAA;AAAA,oBAAA;AAAA,sBACC,GAAA;AAAA,sBACA,EAAA,EAAI,IAAA;AAAA,sBACJ,SAAA,EAAW,EAAA;AAAA,wBACT,yCAAA;AAAA,wBACA,YAAY,KAAA,IAAS,8CAAA;AAAA,wBACrB;AAAA,uBACF;AAAA,sBAEA,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAA0B;AAAA;AAAA,mBACzC;AAAA,kCACAA,GAAAA,CAAC,aAAA,EAAA,EACE,gBAAM,GAAA,CAAI,CAAC,yBACVA,GAAAA,CAAC,UAAA,EAAA,EAA4B,KAAA,EAAO,KAAK,KAAA,EACtC,QAAA,EAAA,IAAA,CAAK,SADS,IAAA,CAAK,KAEtB,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AACF,WAAA,EACF,CAAA;AAAA,UACC,UAAA,EAAY,yBAASA,GAAAA,CAAC,MAAM,KAAA,EAAN,EAAa,QAAA,EAAA,UAAA,CAAW,KAAA,CAAM,OAAA,EAAQ,CAAA;AAAA,0BAC7DA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAClC;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,uBACEC,KAAC,KAAA,CAAM,IAAA,EAAN,EAAW,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EACzC,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAC9BC,IAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,aAAA;AAAA,UACA,QAAA;AAAA,UACC,GAAG,KAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,4BAAAD,GAAAA;AAAA,cAAC,aAAA;AAAA,cAAA;AAAA,gBACC,GAAA;AAAA,gBACA,SAAA,EAAW,EAAA;AAAA,kBACT,yCAAA;AAAA,kBACA,KAAA,IAAS,8CAAA;AAAA,kBACT;AAAA,iBACF;AAAA,gBAEA,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAA0B;AAAA;AAAA,aACzC;AAAA,4BACAA,GAAAA,CAAC,aAAA,EAAA,EACE,gBAAM,GAAA,CAAI,CAAC,yBACVA,GAAAA,CAAC,UAAA,EAAA,EAA4B,KAAA,EAAO,KAAK,KAAA,EACtC,QAAA,EAAA,IAAA,CAAK,SADS,IAAA,CAAK,KAEtB,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,IACC,yBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChC,CAAA;AAEJ;ACrGA,SAAS,kBAAA,CAAwD;AAAA;AAAA,EAE/D,OAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA;AAAA,EAGP,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,aAAA,GAAgB,OAAA;AAAA;AAAA,EAGhB,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA;AAAA,EAGA,aAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EAEA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAiE;AAE/D,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACEA,GAAAA;AAAA,MAACI,UAAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBJ,GAAAA;AAAA,UAAC,0BAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,KAAA;AAAA,YACA,WAAA;AAAA,YACA,QAAA;AAAA,YACA,GAAA;AAAA,YACA,GAAA;AAAA,YACA,IAAA;AAAA,YACA,MAAA;AAAA,YACA,MAAA;AAAA,YACA,WAAA;AAAA,YACA,aAAA;AAAA,YACA,SAAA;AAAA,YACA,cAAA;AAAA,YACA,cAAA;AAAA,YACA,kBAAA;AAAA,YACA,KAAA,EAAO,YAAY,KAAA,EAAO,OAAA;AAAA,YAC1B,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,YACtB,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,cAAA,KAAA,CAAM,SAAS,GAAG,CAAA;AAClB,cAAA,aAAA,GAAgB,GAAG,CAAA;AAAA,YACrB,CAAA;AAAA,YACC,GAAG;AAAA;AAAA;AACN;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,uBACEA,GAAAA;AAAA,IAAC,0BAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAO,KAAA,IAAS,EAAA;AAAA,MAChB,YAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAyBA,SAAS,0BAAA,CAA2B;AAAA,EAClC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,GAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,KAAK,CAAA,IAAK,CAAA;AACtC,IAAA,MAAM,WAAW,YAAA,GAAe,IAAA;AAChC,IAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,QAAA,IAAY,GAAA,EAAK;AACxC,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAC,CAAA;AAC9C,MAAA,QAAA,GAAW,UAAU,CAAA;AACrB,MAAA,aAAA,GAAgB,UAAU,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,KAAK,CAAA,IAAK,CAAA;AACtC,IAAA,MAAM,WAAW,YAAA,GAAe,IAAA;AAChC,IAAA,IAAI,YAAY,GAAA,EAAK;AACnB,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,EAAE,CAAC,CAAA;AAC9C,MAAA,QAAA,GAAW,UAAU,CAAA;AACrB,MAAA,aAAA,GAAgB,UAAU,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,KAAqC;AAC9D,IAAA,MAAM,GAAA,GAAM,EAAE,MAAA,CAAO,KAAA;AACrB,IAAA,IAAI,QAAQ,EAAA,EAAI;AACd,MAAA,QAAA,GAAW,EAAE,CAAA;AACb,MAAA,aAAA,GAAgB,EAAE,CAAA;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,MAAA,GAAS,OAAO,GAAG,CAAA;AACzB,IAAA,IAAI,CAAC,KAAA,CAAM,MAAM,CAAA,EAAG;AAClB,MAAA,IAAK,QAAQ,MAAA,IAAa,MAAA,GAAS,OAAS,GAAA,KAAQ,MAAA,IAAa,SAAS,GAAA,EAAM;AAC9E,QAAA;AAAA,MACF;AACA,MAAA,QAAA,GAAW,MAAM,CAAA;AACjB,MAAA,aAAA,GAAgB,MAAM,CAAA;AAAA,IACxB;AAAA,EACF,CAAA;AAGA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,uBACEC,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,SAAA,EAAW,kBAAA,EAAoB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EACxE,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,OAAN,EAAY,SAAA,EAAW,gBAAiB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACzDC,IAAAA,CAACC,UAAAA,EAAA,EAAW,WAAU,MAAA,EACpB,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAACG,eAAAA,EAAA,EAAgB,KAAA,EAAM,gBACrB,QAAA,kBAAAH,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cACT,IAAA,EAAK,SAAA;AAAA,cACL,OAAA,EAAS,eAAA;AAAA,cACT,QAAA,EAAU,QAAA,IAAY,MAAA,CAAO,KAAK,CAAA,IAAK,GAAA;AAAA,cAEvC,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC7B,EACF,CAAA;AAAA,0BACAA,GAAAA;AAAA,YAACK,eAAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cACL,KAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA,EAAU,iBAAA;AAAA,cACV,GAAA;AAAA,cACA,GAAA;AAAA,cACA,IAAA;AAAA,cACA,QAAA;AAAA,cACA,WAAA;AAAA,cACA,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,cAAA,EAAgB,SAAS,CAAA;AAAA,cAC7D,GAAG;AAAA;AAAA,WACN;AAAA,0BACAL,GAAAA,CAACG,eAAAA,EAAA,EAAgB,KAAA,EAAM,cACrB,QAAA,kBAAAH,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cACT,IAAA,EAAK,SAAA;AAAA,cACL,OAAA,EAAS,eAAA;AAAA,cACT,UAAU,QAAA,IAAa,GAAA,KAAQ,MAAA,IAAa,MAAA,CAAO,KAAK,CAAA,IAAK,GAAA;AAAA,cAE7D,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC5B,EACF;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MACC,yBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EAChC,CAAA;AAAA,EAEJ;AAGA,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,uBACEC,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,SAAA,EAAW,kBAAA,EAAoB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EACxE,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,OAAN,EAAY,SAAA,EAAW,gBAAiB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBACzDC,IAAAA,CAACC,UAAAA,EAAA,EAAW,WAAU,MAAA,EACnB,QAAA,EAAA;AAAA,UAAA,MAAA,oBACCF,GAAAA,CAACG,eAAAA,EAAA,EAAgB,KAAA,EAAM,gBACpB,QAAA,EAAA,OAAO,MAAA,KAAW,QAAA,mBAAWH,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,MAAA,EAAO,IAAU,MAAA,EAC5E,CAAA;AAAA,0BAEFA,GAAAA;AAAA,YAACK,eAAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,IAAA,EAAK,QAAA;AAAA,cACL,KAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA,EAAU,iBAAA;AAAA,cACV,GAAA;AAAA,cACA,GAAA;AAAA,cACA,IAAA;AAAA,cACA,QAAA;AAAA,cACA,WAAA;AAAA,cACA,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,cAAA,EAAgB,SAAS,CAAA;AAAA,cACjD,GAAG;AAAA;AAAA,WACN;AAAA,UACC,0BACCL,GAAAA,CAACG,eAAAA,EAAA,EAAgB,OAAM,YAAA,EACpB,QAAA,EAAA,OAAO,MAAA,KAAW,QAAA,mBAAWH,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,SAAA,EAAW,QAAA,EAAA,MAAA,EAAO,IAAU,MAAA,EAC5E;AAAA,SAAA,EAEJ;AAAA,OAAA,EACF,CAAA;AAAA,MACC,yBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EAChC,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACEC,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,SAAA,EAAW,kBAAA,EAAoB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EACxE,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,OAAN,EAAY,SAAA,EAAW,gBAAiB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACzDA,GAAAA;AAAA,QAACM,KAAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,QAAA;AAAA,UACL,KAAA;AAAA,UACA,YAAA;AAAA,UACA,QAAA,EAAU,iBAAA;AAAA,UACV,GAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,cAAA;AAAA,YACA,KAAA,IAAS,sDAAA;AAAA,YACT,cAAA;AAAA,YACA;AAAA,WACF;AAAA,UACC,GAAG;AAAA;AAAA;AACN,KAAA,EACF,CAAA;AAAA,IACC,yBAASN,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChC,CAAA;AAEJ;AClTA,SAAS,gBAAA,CAAsD;AAAA;AAAA,EAE7D,OAAA;AAAA,EACA,IAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA,GAAc,mBAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,UAAU,EAAC;AAAA,EACX,aAAA;AAAA;AAAA,EAGA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA;AAAA,EAGA,KAAA,EAAO,YAAY,EAAC;AAAA,EACpB,QAAA,EAAU,YAAA;AAAA,EACV,aAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA6D;AAE3D,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACEA,GAAAA;AAAA,MAACI,UAAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBJ,GAAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,KAAA;AAAA,YACA,WAAA;AAAA,YACA,QAAA;AAAA,YACA,KAAA,EAAO,YAAY,KAAA,EAAO,OAAA;AAAA,YAC1B,KAAA,EAAO,KAAA,CAAM,KAAA,IAAS,EAAC;AAAA,YACvB,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,cAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AACnB,cAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,YACtB,CAAA;AAAA,YACA,OAAA;AAAA,YACA,aAAA;AAAA,YACA,kBAAA,EAAoB,EAAA,CAAG,SAAA,EAAW,kBAAkB,CAAA;AAAA,YACpD,cAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA,KAEJ;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,QAAA,YAAA,GAAe,IAAI,CAAA;AACnB,QAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;AAkBA,SAAS,wBAAA,CAAyB;AAAA,EAChC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAQ,EAAC;AAAA,EACT,QAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,aAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AAEjD,EAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,KAAA,CAAM,QAAA,CAAS,CAAA,CAAE,KAAK,CAAC,CAAA;AAEvE,EAAA,MAAM,SAAA,GAAY,CAAC,WAAA,KAAwB;AACzC,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,WAAW,CAAA,EAAG;AACjC,IAAA,IAAI,aAAA,IAAiB,KAAA,CAAM,MAAA,IAAU,aAAA,EAAe;AACpD,IAAA,MAAM,OAAA,GAAU,CAAC,GAAG,KAAA,EAAO,WAAW,CAAA;AACtC,IAAA,QAAA,GAAW,OAAO,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,WAAA,KAAwB;AAC5C,IAAA,MAAM,UAAU,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,WAAW,CAAA;AACrD,IAAA,QAAA,GAAW,OAAO,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,SAAA,EAAW,kBAAA,EAAoB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EACxE,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,OAAN,EAAY,SAAA,EAAW,gBAAiB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBAEzDC,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,gFAAA;AAAA,YACA,yEAAA;AAAA,YACA,qDAAA;AAAA,YACA,KAAA,IAAS,qDAAA;AAAA,YACT,QAAA,IAAY,+BAAA;AAAA,YACZ;AAAA,WACF;AAAA,UACA,GAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,sBAAA,EAAwB,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK,MAAM,CAAA,EAClE,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAA,KAAQ;AAClB,cAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,GAAG,CAAA;AAClD,cAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAgB,OAAA,EAAQ,WAAA,EAAY,WAAU,6CAAA,EAC7C,QAAA,EAAA;AAAA,gCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAQ,KAAA,IAAS,GAAA,EAAI,CAAA;AAAA,gBAC3B,CAAC,4BACAA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAU,oDAAA;AAAA,oBACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,sBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,sBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,sBAAA,YAAA,CAAa,GAAG,CAAA;AAAA,oBAClB,CAAA;AAAA,oBAEA,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACzB,eAAA,EAAA,EAbQ,GAeZ,CAAA;AAAA,YAEJ,CAAC,CAAA,EACH,CAAA;AAAA,YAEC,CAAC,QAAA,IAAY,gBAAA,CAAiB,MAAA,GAAS,MAAM,CAAC,aAAA,IAAiB,KAAA,CAAM,MAAA,GAAS,kCAC7EC,IAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,cAAc,OAAA,EACjC,QAAA,EAAA;AAAA,8BAAAD,GAAAA;AAAA,gBAAC,cAAA;AAAA,gBAAA;AAAA,kBACC,wBACEC,IAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,GAAA,EAAK,UAAA;AAAA,sBACL,IAAA,EAAK,QAAA;AAAA,sBACL,OAAA,EAAQ,OAAA;AAAA,sBACR,SAAA,EAAW,EAAA;AAAA,wBACT,qGAAA;AAAA,wBACA,6DAAA;AAAA,wBACA;AAAA,uBACF;AAAA,sBACA,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,sBACd,CAAA;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAD,GAAAA,CAACO,IAAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,wBAC9B,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,WAAA,GAAc;AAAA;AAAA;AAAA;AACtC;AAAA,eAEJ;AAAA,8BACAP,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,eAAA,EAAgB,KAAA,EAAM,OAAA,EAC9C,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACZ,2BAAiB,MAAA,KAAW,CAAA,mBAC3BA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EAAsD,QAAA,EAAA,sBAAA,EAAoB,oBAEzFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA,gBAAA,CAAiB,GAAA,CAAI,CAAC,2BACrBC,IAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBAEC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,oBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,oBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,oBAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AAAA,kBACxB,CAAA;AAAA,kBACA,SAAA,EAAU,8HAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,oBACnB,KAAA,CAAM,SAAS,MAAA,CAAO,KAAK,qBAAKA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,iBAAA;AAAA,gBATvD,MAAA,CAAO;AAAA,eAWf,CAAA,EACH,CAAA,EAEJ,CAAA,EACF;AAAA,aAAA,EACF,CAAA;AAAA,YAGD,aAAA,oBACCC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EAA0C,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,MAAA;AAAA,cAAO,GAAA;AAAA,cAAE,aAAA;AAAA,cAAc;AAAA,aAAA,EAAS;AAAA;AAAA;AAAA;AAEnG,KAAA,EACF,CAAA;AAAA,IACC,yBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChC,CAAA;AAEJ;AClRA,SAAS,aAAa,IAAA,EAAsB;AAC1C,EAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAClB,EAAA,OAAO,KACJ,WAAA,EAAY,CACZ,MAAK,CACL,OAAA,CAAQ,aAAa,EAAE,CAAA,CACvB,QAAQ,MAAA,EAAQ,GAAG,EACnB,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,CAClB,OAAA,CAAQ,YAAY,EAAE,CAAA;AAC3B;AA4CA,SAAS,gBAAA,CAAsD;AAAA;AAAA,EAE7D,OAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,WAAA,GAAc,cAAA;AAAA,EACd,QAAA;AAAA;AAAA,EAGA,IAAA;AAAA;AAAA,EAGA,WAAA;AAAA,EACA,UAAA;AAAA;AAAA,EAGA,SAAA;AAAA,EACA,cAAA;AAAA;AAAA,EAGA,aAAA;AAAA;AAAA,EAGA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EAEA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA+D;AAE7D,EAAA,MAAM,cAAA,GAAiB,CAAC,YAAA,EAAkC,aAAA,KAA2C;AACnG,IAAA,MAAM,OAAA,GAAU,aAAa,UAAA,CAAW,WAAA,IAAe,EAAE,CAAA,GAAI,YAAA,CAAa,eAAe,EAAE,CAAA;AAC3F,IAAA,aAAA,CAAc,OAAO,CAAA;AACrB,IAAA,aAAA,GAAgB,OAAO,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAClB,UAAA,EACA,aAAA,EACA,YACA,UAAA,KACG;AACH,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,GAAA;AAAA,MACA,EAAA,EAAI,IAAA;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,QAAA,EAAU,UAAA;AAAA,MACV,WAAA;AAAA,MACA,OAAO,UAAA,IAAc,EAAA;AAAA,MACrB,QAAA,EAAU,CAAC,CAAA,KAAqC;AAC9C,QAAA,MAAM,QAAA,GAAW,EAAE,MAAA,CAAO,KAAA;AAC1B,QAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,QAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,MAC1B,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,cAAA;AAAA,QACA,YAAY,KAAA,IAAS,sDAAA;AAAA,QACrB;AAAA,OACF;AAAA,MACA,GAAG;AAAA,KACL;AAEA,IAAA,uBACEC,IAAAA,CAAAO,QAAAA,EAAA,EAEG,QAAA,EAAA;AAAA,MAAA,IAAA,oBACCR,GAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EACE,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,sBAGFC,IAAAA,CAACC,UAAAA,EAAA,EAAW,WAAU,MAAA,EACpB,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAACK,eAAAA,EAAA,EAAiB,GAAG,UAAA,EAAY,SAAA,EAAW,EAAA,CAAG,UAAA,CAAW,SAAA,EAAW,IAAA,IAAQ,MAAM,CAAA,EAAG,CAAA;AAAA,wBACtFL,GAAAA,CAACG,eAAAA,EAAA,EAAgB,KAAA,EAAM,cACrB,QAAA,kBAAAF,IAAAA;AAAA,UAACQ,gBAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,MAAM,cAAA,CAAe,UAAA,EAAY,aAAa,CAAA;AAAA,YACvD,QAAA,EAAU,cAAc,CAAC,WAAA;AAAA,YACzB,KAAA,EAAM,yBAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAT,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAE/B,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAGA,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,uBACEA,GAAAA;AAAA,MAACI,UAAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAQ,CAAC,EAAE,KAAA,EAAO,UAAA,uBAChBH,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,SAAA,EAAsB,QAAA,EAAoB,SAAS,CAAC,CAAC,YAAY,KAAA,EAC3E,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,YAC7B,YAAY,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,QAAA,EAAU,UAAU,UAAU;AAAA,WAAA,EAChE,CAAA;AAAA,UACC,UAAA,EAAY,yBAASA,GAAAA,CAAC,MAAM,KAAA,EAAN,EAAa,QAAA,EAAA,UAAA,CAAW,KAAA,CAAM,OAAA,EAAQ,CAAA;AAAA,0BAC7DA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAClC;AAAA;AAAA,KAEJ;AAAA,EAEJ;AAGA,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAqB;AAC/C,IAAA,QAAA,GAAW,EAAE,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,IAAY,CAAA;AAC1C,IAAA,aAAA,GAAgB,QAAQ,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,CAAM,IAAA,EAAN,EAAW,WAAsB,QAAA,EAAoB,OAAA,EAAS,CAAC,CAAC,KAAA,EAC/D,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASD,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAC7B,WAAA,CAAY,KAAA,EAAO,kBAAA,EAAoB,QAAA,EAAU,EAAE,KAAA,EAAO,KAAA,GAAQ,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,MAAA,EAAW;AAAA,KAAA,EACrG,CAAA;AAAA,IACC,yBAASA,GAAAA,CAAC,KAAA,CAAM,KAAA,EAAN,EAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC9BA,GAAAA,CAAC,KAAA,CAAM,WAAA,EAAN,EAAmB,QAAA,EAAA,WAAA,EAAY;AAAA,GAAA,EAClC,CAAA;AAEJ","file":"compact.js","sourcesContent":["\"use client\";\r\n\r\nimport React, {\r\n createContext,\r\n useContext,\r\n useId,\r\n useMemo,\r\n memo,\r\n ReactNode,\r\n} from \"react\";\r\nimport { cn } from \"../../utils\";\r\n\r\ninterface FieldContextValue {\r\n id: string;\r\n disabled: boolean;\r\n invalid: boolean;\r\n}\r\n\r\nconst FieldContext = createContext<FieldContextValue | null>(null);\r\n\r\ninterface FieldRootProps {\r\n children: ReactNode;\r\n className?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\n/**\r\n * Field wrapper — provides context (id, disabled, invalid) and\r\n * top padding so the floating label has room above the border.\r\n */\r\nexport const Root = memo(function FieldRoot({\r\n children,\r\n className,\r\n disabled = false,\r\n invalid = false,\r\n}: FieldRootProps) {\r\n const id = useId();\r\n\r\n const value = useMemo(\r\n () => ({\r\n id,\r\n disabled,\r\n invalid,\r\n }),\r\n [id, disabled, invalid],\r\n );\r\n\r\n return (\r\n <FieldContext.Provider value={value}>\r\n <div className={cn(\"w-full pt-3\", className)}>{children}</div>\r\n </FieldContext.Provider>\r\n );\r\n});\r\n\r\ninterface FieldLabelProps {\r\n children: ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Floating label — sits centered on the top border of\r\n * the nearest `relative` ancestor (the input container).\r\n */\r\nexport const Label = memo(function FieldLabel({\r\n children,\r\n className,\r\n}: FieldLabelProps) {\r\n const ctx = useContext(FieldContext);\r\n return (\r\n <label\r\n htmlFor={ctx?.id}\r\n className={cn(\r\n \"absolute top-0 -translate-y-1/2 left-3 z-10\",\r\n \"bg-card px-1.5\",\r\n \"text-[11px] font-medium leading-tight text-muted-foreground\",\r\n \"pointer-events-none select-none whitespace-nowrap\",\r\n \"transition-colors\",\r\n \"group-focus-within:text-primary\",\r\n ctx?.disabled && \"opacity-60\",\r\n ctx?.invalid && \"text-destructive group-focus-within:text-destructive\",\r\n className,\r\n )}\r\n >\r\n {children}\r\n </label>\r\n );\r\n});\r\n\r\ninterface FieldErrorProps {\r\n children?: ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const Error = memo(function FieldError({\r\n children,\r\n className,\r\n}: FieldErrorProps) {\r\n if (!children) return null;\r\n return (\r\n <p className={cn(\"text-[11px] text-destructive mt-1.5 pl-3\", className)}>\r\n {children}\r\n </p>\r\n );\r\n});\r\n\r\ninterface FieldDescriptionProps {\r\n children?: ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Helper / description text below the input control.\r\n */\r\nexport const Description = memo(function FieldDescription({\r\n children,\r\n className,\r\n}: FieldDescriptionProps) {\r\n if (!children) return null;\r\n return (\r\n <p className={cn(\"text-[11px] text-muted-foreground mt-1.5 pl-3\", className)}>\r\n {children}\r\n </p>\r\n );\r\n});\r\n\r\ninterface FieldIconProps {\r\n children: ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const Icon = memo(function FieldIcon({\r\n children,\r\n className,\r\n}: FieldIconProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none z-10\",\r\n \"text-muted-foreground\",\r\n className,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nexport const Field = {\r\n Root,\r\n Label,\r\n Error,\r\n Description,\r\n Icon,\r\n};\r\n","\"use client\";\r\n\r\nimport { type Ref, type ChangeEvent, type InputHTMLAttributes, type ReactNode } from \"react\";\r\nimport { Controller, Control, FieldValues, Path } from \"react-hook-form\";\r\nimport { cn } from \"../../utils\";\r\nimport { Input } from \"@/components/ui/input\";\r\nimport { InputGroup, InputGroupInput, InputGroupAddon } from \"@/components/ui/input-group\";\r\nimport { Field } from \"./field\";\r\n\r\ninterface CompactInputProps<T extends FieldValues = FieldValues>\r\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\"> {\r\n // Form integration\r\n control?: Control<T>;\r\n name?: Path<T>;\r\n description?: string;\r\n required?: boolean;\r\n\r\n // Basic props\r\n label?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n type?: string;\r\n\r\n // InputGroup addons\r\n addonLeft?: ReactNode;\r\n addonRight?: ReactNode;\r\n\r\n // Styling\r\n inputClassName?: string;\r\n\r\n // Events\r\n onValueChange?: (value: string) => void;\r\n\r\n // Direct usage\r\n value?: string;\r\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * CompactInput - Enhanced form input with InputGroup support\r\n *\r\n * Features:\r\n * - Floating label design\r\n * - InputGroup support with icons, buttons, and text addons\r\n * - Controller integration for react-hook-form\r\n * - Direct usage without form\r\n */\r\nfunction CompactInput<T extends FieldValues = FieldValues>({\r\n // Form integration\r\n control,\r\n name,\r\n description,\r\n required,\r\n\r\n // Basic props\r\n label,\r\n placeholder,\r\n disabled,\r\n type = \"text\",\r\n\r\n // InputGroup addons\r\n addonLeft,\r\n addonRight,\r\n\r\n // Styling\r\n className,\r\n inputClassName,\r\n\r\n // Events\r\n onValueChange,\r\n\r\n // Direct usage\r\n value,\r\n onChange,\r\n error,\r\n\r\n // Valid HTML input attributes\r\n autoComplete,\r\n autoFocus,\r\n maxLength,\r\n minLength,\r\n max,\r\n min,\r\n pattern,\r\n readOnly,\r\n step,\r\n inputMode,\r\n enterKeyHint,\r\n ref,\r\n ...props\r\n}: CompactInputProps<T> & { ref?: Ref<HTMLInputElement> }) {\r\n // Determine if we need InputGroup\r\n const hasInputGroup = addonLeft || addonRight;\r\n\r\n const renderInput = (\r\n fieldValue: string | undefined,\r\n fieldOnChange: ((value: string) => void) | undefined,\r\n isDisabled: boolean | undefined,\r\n fieldError?: string\r\n ) => {\r\n const inputProps = {\r\n ref,\r\n id: name,\r\n name,\r\n type,\r\n disabled: isDisabled,\r\n placeholder,\r\n value: fieldValue || \"\",\r\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n fieldOnChange?.(newValue);\r\n onValueChange?.(newValue);\r\n },\r\n className: cn(\r\n \"h-11 text-sm\",\r\n fieldError && \"border-destructive focus-visible:ring-destructive/20\",\r\n inputClassName\r\n ),\r\n autoComplete,\r\n autoFocus,\r\n maxLength,\r\n minLength,\r\n max,\r\n min,\r\n pattern,\r\n readOnly,\r\n step,\r\n inputMode,\r\n enterKeyHint,\r\n ...props,\r\n };\r\n\r\n // With InputGroup\r\n if (hasInputGroup) {\r\n return (\r\n <InputGroup className=\"h-11\">\r\n {addonLeft && (\r\n <InputGroupAddon align=\"inline-start\">\r\n {addonLeft}\r\n </InputGroupAddon>\r\n )}\r\n <InputGroupInput {...inputProps} />\r\n {addonRight && (\r\n <InputGroupAddon align=\"inline-end\">\r\n {addonRight}\r\n </InputGroupAddon>\r\n )}\r\n </InputGroup>\r\n );\r\n }\r\n\r\n // Simple input\r\n return <Input {...inputProps} />;\r\n };\r\n\r\n // With react-hook-form\r\n if (control && name) {\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field, fieldState }) => (\r\n <Field.Root className={className} disabled={disabled} invalid={!!fieldState?.error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n {renderInput(field.value, field.onChange, disabled, fieldState?.error?.message)}\r\n </div>\r\n {fieldState?.error && <Field.Error>{fieldState.error.message}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n )}\r\n />\r\n );\r\n }\r\n\r\n // Direct usage\r\n const handleDirectChange = (newValue: string) => {\r\n onChange?.({ target: { value: newValue } } as ChangeEvent<HTMLInputElement>);\r\n onValueChange?.(newValue);\r\n };\r\n\r\n return (\r\n <Field.Root className={className} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n {renderInput(value, handleDirectChange, disabled, error)}\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n );\r\n}\r\n\r\nexport { CompactInput };\r\nexport type { CompactInputProps };\r\n","\"use client\";\r\n\r\nimport { type Ref, type ChangeEvent, type TextareaHTMLAttributes, type ReactNode } from \"react\";\r\nimport { Controller, Control, FieldValues, Path } from \"react-hook-form\";\r\nimport { cn } from \"../../utils\";\r\nimport { Textarea } from \"@/components/ui/textarea\";\r\nimport { InputGroup, InputGroupTextarea, InputGroupAddon } from \"@/components/ui/input-group\";\r\nimport { Field } from \"./field\";\r\n\r\ninterface CompactTextareaProps<T extends FieldValues = FieldValues>\r\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\"> {\r\n // Form integration\r\n control?: Control<T>;\r\n name?: Path<T>;\r\n description?: string;\r\n required?: boolean;\r\n\r\n // Basic props\r\n label?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n rows?: number;\r\n\r\n // InputGroup addons\r\n addonLeft?: ReactNode;\r\n addonRight?: ReactNode;\r\n\r\n // Styling\r\n inputClassName?: string;\r\n\r\n // Events\r\n onValueChange?: (value: string) => void;\r\n\r\n // Direct usage\r\n value?: string;\r\n onChange?: (e: ChangeEvent<HTMLTextAreaElement>) => void;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * CompactTextarea - Enhanced textarea with InputGroup support\r\n *\r\n * Features:\r\n * - Floating label design\r\n * - InputGroup support with addons\r\n * - Character counter with maxLength\r\n * - Controller integration for react-hook-form\r\n * - Direct usage without form\r\n */\r\nfunction CompactTextarea<T extends FieldValues = FieldValues>({\r\n // Form integration\r\n control,\r\n name,\r\n description,\r\n required,\r\n\r\n // Basic props\r\n label,\r\n placeholder,\r\n disabled,\r\n rows = 3,\r\n\r\n // InputGroup addons\r\n addonLeft,\r\n addonRight,\r\n\r\n // Styling\r\n className,\r\n inputClassName,\r\n\r\n // Events\r\n onValueChange,\r\n\r\n // Direct usage\r\n value,\r\n onChange,\r\n error,\r\n\r\n // Valid HTML textarea attributes\r\n cols,\r\n wrap,\r\n autoComplete,\r\n autoFocus,\r\n maxLength,\r\n minLength,\r\n readOnly,\r\n spellCheck,\r\n ref,\r\n ...props\r\n}: CompactTextareaProps<T> & { ref?: Ref<HTMLTextAreaElement> }) {\r\n const hasInputGroup = addonLeft || addonRight;\r\n\r\n const renderTextarea = (\r\n fieldValue: string | undefined,\r\n fieldOnChange: ((value: string) => void) | undefined,\r\n isDisabled: boolean | undefined,\r\n fieldError?: string\r\n ) => {\r\n const currentCharCount = fieldValue?.length || 0;\r\n\r\n const textareaProps = {\r\n ref,\r\n id: name,\r\n name,\r\n disabled: isDisabled,\r\n placeholder,\r\n rows,\r\n value: fieldValue || \"\",\r\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\r\n const newValue = e.target.value;\r\n fieldOnChange?.(newValue);\r\n onValueChange?.(newValue);\r\n },\r\n className: cn(\r\n \"resize-none pt-3 text-sm\",\r\n fieldError && \"border-destructive focus-visible:ring-destructive/20\",\r\n inputClassName\r\n ),\r\n cols,\r\n wrap,\r\n autoComplete,\r\n autoFocus,\r\n maxLength,\r\n minLength,\r\n readOnly,\r\n spellCheck,\r\n ...props,\r\n };\r\n\r\n // With InputGroup\r\n if (hasInputGroup) {\r\n return (\r\n <>\r\n <InputGroup>\r\n {addonLeft && (\r\n <InputGroupAddon align=\"block-start\">\r\n {addonLeft}\r\n </InputGroupAddon>\r\n )}\r\n <InputGroupTextarea {...textareaProps} />\r\n {addonRight && (\r\n <InputGroupAddon align=\"block-end\">\r\n {addonRight}\r\n </InputGroupAddon>\r\n )}\r\n </InputGroup>\r\n {maxLength && currentCharCount > 0 && (\r\n <div className=\"text-xs text-muted-foreground mt-1.5 text-right\">\r\n {currentCharCount}/{maxLength}\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n // Simple textarea\r\n return (\r\n <>\r\n <Textarea {...textareaProps} />\r\n {maxLength && currentCharCount > 0 && (\r\n <div className=\"text-xs text-muted-foreground mt-1.5 text-right\">\r\n {currentCharCount}/{maxLength}\r\n </div>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n // With react-hook-form\r\n if (control && name) {\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field, fieldState }) => (\r\n <Field.Root className={className} disabled={disabled} invalid={!!fieldState?.error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n {renderTextarea(field.value, field.onChange, disabled, fieldState?.error?.message)}\r\n </div>\r\n {fieldState?.error && <Field.Error>{fieldState.error.message}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n )}\r\n />\r\n );\r\n }\r\n\r\n // Direct usage\r\n const handleDirectChange = (newValue: string) => {\r\n onChange?.({ target: { value: newValue } } as ChangeEvent<HTMLTextAreaElement>);\r\n onValueChange?.(newValue);\r\n };\r\n\r\n return (\r\n <Field.Root className={className} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n {renderTextarea(value, handleDirectChange, disabled, error)}\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n );\r\n}\r\n\r\nexport { CompactTextarea };\r\nexport type { CompactTextareaProps };\r\n","\"use client\";\r\n\r\nimport type { Ref } from \"react\";\r\nimport { Controller, Control, FieldValues, Path } from \"react-hook-form\";\r\nimport { cn } from \"../../utils\";\r\nimport { Field } from \"./field\";\r\nimport {\r\n Select,\r\n SelectContent,\r\n SelectItem,\r\n SelectTrigger,\r\n SelectValue\r\n} from \"@/components/ui/select\";\r\n\r\ninterface SelectOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CompactSelectProps<T extends FieldValues = FieldValues> {\r\n // Form integration\r\n control?: Control<T>;\r\n name?: Path<T>;\r\n description?: string;\r\n required?: boolean;\r\n\r\n // Basic props\r\n label?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n items?: SelectOption[];\r\n\r\n // Styling\r\n className?: string;\r\n\r\n // Events\r\n onValueChange?: (value: string) => void;\r\n\r\n // Direct usage\r\n value?: string;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * CompactSelect - Simple, clean select dropdown\r\n *\r\n * @example\r\n * <CompactSelect\r\n * label=\"Status\"\r\n * items={[\r\n * { value: \"active\", label: \"Active\" },\r\n * { value: \"inactive\", label: \"Inactive\" }\r\n * ]}\r\n * />\r\n */\r\nfunction CompactSelect<T extends FieldValues = FieldValues>({\r\n // Form integration\r\n control,\r\n name,\r\n description,\r\n required,\r\n\r\n // Basic props\r\n label,\r\n placeholder = \"Select option\",\r\n disabled,\r\n items = [],\r\n\r\n // Styling\r\n className,\r\n\r\n // Events\r\n onValueChange,\r\n\r\n // Direct usage\r\n value,\r\n error,\r\n\r\n ref,\r\n ...props\r\n}: CompactSelectProps<T> & { ref?: Ref<HTMLButtonElement> }) {\r\n // With react-hook-form\r\n if (control && name) {\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field, fieldState }) => (\r\n <Field.Root disabled={disabled} invalid={!!fieldState?.error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n <Select\r\n value={field.value}\r\n onValueChange={(val: string) => {\r\n field.onChange(val);\r\n onValueChange?.(val);\r\n }}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n <SelectTrigger\r\n ref={ref}\r\n id={name}\r\n className={cn(\r\n \"w-full data-[size=default]:h-11 text-sm\",\r\n fieldState?.error && \"border-destructive focus:ring-destructive/20\",\r\n className\r\n )}\r\n >\r\n <SelectValue placeholder={placeholder} />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {items.map((item) => (\r\n <SelectItem key={item.value} value={item.value}>\r\n {item.label}\r\n </SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n {fieldState?.error && <Field.Error>{fieldState.error.message}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n )}\r\n />\r\n );\r\n }\r\n\r\n // Direct usage\r\n return (\r\n <Field.Root disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n <Select\r\n value={value}\r\n onValueChange={onValueChange}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n <SelectTrigger\r\n ref={ref}\r\n className={cn(\r\n \"w-full data-[size=default]:h-11 text-sm\",\r\n error && \"border-destructive focus:ring-destructive/20\",\r\n className\r\n )}\r\n >\r\n <SelectValue placeholder={placeholder} />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {items.map((item) => (\r\n <SelectItem key={item.value} value={item.value}>\r\n {item.label}\r\n </SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n </Field.Root>\r\n );\r\n}\r\n\r\nexport { CompactSelect };\r\nexport type { CompactSelectProps };\r\n","\"use client\";\r\n\r\nimport { type Ref, type ReactNode, type ChangeEvent } from \"react\";\r\nimport { Controller, Control, FieldValues, Path } from \"react-hook-form\";\r\nimport { Plus, Minus } from \"lucide-react\";\r\nimport { cn } from \"../../utils\";\r\nimport { Input } from \"@/components/ui/input\";\r\nimport { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton } from \"@/components/ui/input-group\";\r\nimport { Field } from \"./field\";\r\n\r\ninterface CompactNumberInputProps<T extends FieldValues = FieldValues> {\r\n // Form integration\r\n control?: Control<T>;\r\n name?: Path<T>;\r\n description?: string;\r\n required?: boolean;\r\n\r\n // Basic props\r\n label?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n\r\n // Number configuration\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n\r\n // Display options\r\n prefix?: ReactNode;\r\n suffix?: ReactNode;\r\n showButtons?: boolean;\r\n buttonVariant?: \"ghost\" | \"outline\" | \"default\";\r\n\r\n // Styling\r\n className?: string;\r\n inputClassName?: string;\r\n labelClassName?: string;\r\n containerClassName?: string;\r\n\r\n // Events\r\n onValueChange?: (value: number | string) => void;\r\n\r\n // Direct usage\r\n value?: number | string;\r\n defaultValue?: number | string;\r\n onChange?: (value: number | string) => void;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * CompactNumberInput - A space-efficient number input with optional increment/decrement buttons\r\n *\r\n * Features:\r\n * - Floating label design\r\n * - Optional increment/decrement buttons\r\n * - Support for min/max/step values\r\n * - Prefix/suffix support\r\n * - Form integration via control prop\r\n * - Direct usage without form\r\n */\r\nfunction CompactNumberInput<T extends FieldValues = FieldValues>({\r\n // Form integration\r\n control,\r\n name,\r\n description,\r\n required,\r\n\r\n // Basic props\r\n label,\r\n placeholder,\r\n disabled,\r\n\r\n // Number configuration\r\n min = 0,\r\n max,\r\n step = 1,\r\n\r\n // Display options\r\n prefix,\r\n suffix,\r\n showButtons = false,\r\n buttonVariant = \"ghost\",\r\n\r\n // Styling\r\n className,\r\n inputClassName,\r\n labelClassName,\r\n containerClassName,\r\n\r\n // Events\r\n onValueChange,\r\n\r\n // Direct usage\r\n value,\r\n defaultValue,\r\n onChange,\r\n error,\r\n\r\n ref,\r\n ...props\r\n}: CompactNumberInputProps<T> & { ref?: Ref<HTMLInputElement> }) {\r\n // With react-hook-form\r\n if (control && name) {\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field, fieldState }) => (\r\n <CompactNumberInputInternal\r\n ref={ref}\r\n label={label}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n min={min}\r\n max={max}\r\n step={step}\r\n prefix={prefix}\r\n suffix={suffix}\r\n showButtons={showButtons}\r\n buttonVariant={buttonVariant}\r\n className={className}\r\n inputClassName={inputClassName}\r\n labelClassName={labelClassName}\r\n containerClassName={containerClassName}\r\n error={fieldState?.error?.message}\r\n value={field.value ?? \"\"}\r\n onChange={(val) => {\r\n field.onChange(val);\r\n onValueChange?.(val);\r\n }}\r\n {...props}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n // Direct usage\r\n return (\r\n <CompactNumberInputInternal\r\n ref={ref}\r\n label={label}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n min={min}\r\n max={max}\r\n step={step}\r\n prefix={prefix}\r\n suffix={suffix}\r\n showButtons={showButtons}\r\n buttonVariant={buttonVariant}\r\n className={className}\r\n inputClassName={inputClassName}\r\n labelClassName={labelClassName}\r\n containerClassName={containerClassName}\r\n error={error}\r\n value={value ?? \"\"}\r\n defaultValue={defaultValue}\r\n onChange={onChange}\r\n onValueChange={onValueChange}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ninterface CompactNumberInputInternalProps {\r\n label?: string;\r\n placeholder?: string;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n prefix?: ReactNode;\r\n suffix?: ReactNode;\r\n showButtons?: boolean;\r\n buttonVariant?: \"ghost\" | \"outline\" | \"default\";\r\n error?: string;\r\n className?: string;\r\n inputClassName?: string;\r\n labelClassName?: string;\r\n containerClassName?: string;\r\n disabled?: boolean;\r\n value?: number | string;\r\n defaultValue?: number | string;\r\n onChange?: (value: number | string) => void;\r\n onValueChange?: (value: number | string) => void;\r\n ref?: Ref<HTMLInputElement>;\r\n}\r\n\r\nfunction CompactNumberInputInternal({\r\n label,\r\n placeholder,\r\n min = 0,\r\n max,\r\n step = 1,\r\n prefix,\r\n suffix,\r\n showButtons,\r\n buttonVariant,\r\n error,\r\n className,\r\n inputClassName,\r\n labelClassName,\r\n containerClassName,\r\n disabled,\r\n value,\r\n defaultValue,\r\n onChange,\r\n onValueChange,\r\n ref,\r\n ...props\r\n}: CompactNumberInputInternalProps) {\r\n const handleIncrement = () => {\r\n const currentValue = Number(value) || 0;\r\n const newValue = currentValue + step;\r\n if (max === undefined || newValue <= max) {\r\n const finalValue = Number(newValue.toFixed(10));\r\n onChange?.(finalValue);\r\n onValueChange?.(finalValue);\r\n }\r\n };\r\n\r\n const handleDecrement = () => {\r\n const currentValue = Number(value) || 0;\r\n const newValue = currentValue - step;\r\n if (newValue >= min) {\r\n const finalValue = Number(newValue.toFixed(10));\r\n onChange?.(finalValue);\r\n onValueChange?.(finalValue);\r\n }\r\n };\r\n\r\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\r\n const val = e.target.value;\r\n if (val === \"\") {\r\n onChange?.(\"\");\r\n onValueChange?.(\"\");\r\n return;\r\n }\r\n\r\n const numVal = Number(val);\r\n if (!isNaN(numVal)) {\r\n if ((min !== undefined && numVal < min) || (max !== undefined && numVal > max)) {\r\n return;\r\n }\r\n onChange?.(numVal);\r\n onValueChange?.(numVal);\r\n }\r\n };\r\n\r\n // With increment/decrement buttons\r\n if (showButtons) {\r\n return (\r\n <Field.Root className={containerClassName} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label className={labelClassName}>{label}</Field.Label>}\r\n <InputGroup className=\"h-11\">\r\n <InputGroupAddon align=\"inline-start\">\r\n <InputGroupButton\r\n type=\"button\"\r\n variant={buttonVariant}\r\n size=\"icon-sm\"\r\n onClick={handleDecrement}\r\n disabled={disabled || Number(value) <= min}\r\n >\r\n <Minus className=\"h-4 w-4\" />\r\n </InputGroupButton>\r\n </InputGroupAddon>\r\n <InputGroupInput\r\n ref={ref}\r\n type=\"number\"\r\n value={value}\r\n defaultValue={defaultValue}\r\n onChange={handleInputChange}\r\n min={min}\r\n max={max}\r\n step={step}\r\n disabled={disabled}\r\n placeholder={placeholder}\r\n className={cn(\"text-center text-sm\", inputClassName, className)}\r\n {...props}\r\n />\r\n <InputGroupAddon align=\"inline-end\">\r\n <InputGroupButton\r\n type=\"button\"\r\n variant={buttonVariant}\r\n size=\"icon-sm\"\r\n onClick={handleIncrement}\r\n disabled={disabled || (max !== undefined && Number(value) >= max)}\r\n >\r\n <Plus className=\"h-4 w-4\" />\r\n </InputGroupButton>\r\n </InputGroupAddon>\r\n </InputGroup>\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n </Field.Root>\r\n );\r\n }\r\n\r\n // With prefix/suffix\r\n if (prefix || suffix) {\r\n return (\r\n <Field.Root className={containerClassName} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label className={labelClassName}>{label}</Field.Label>}\r\n <InputGroup className=\"h-11\">\r\n {prefix && (\r\n <InputGroupAddon align=\"inline-start\">\r\n {typeof prefix === \"string\" ? <span className=\"text-xs\">{prefix}</span> : prefix}\r\n </InputGroupAddon>\r\n )}\r\n <InputGroupInput\r\n ref={ref}\r\n type=\"number\"\r\n value={value}\r\n defaultValue={defaultValue}\r\n onChange={handleInputChange}\r\n min={min}\r\n max={max}\r\n step={step}\r\n disabled={disabled}\r\n placeholder={placeholder}\r\n className={cn(\"text-sm\", inputClassName, className)}\r\n {...props}\r\n />\r\n {suffix && (\r\n <InputGroupAddon align=\"inline-end\">\r\n {typeof suffix === \"string\" ? <span className=\"text-xs\">{suffix}</span> : suffix}\r\n </InputGroupAddon>\r\n )}\r\n </InputGroup>\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n </Field.Root>\r\n );\r\n }\r\n\r\n // Simple input\r\n return (\r\n <Field.Root className={containerClassName} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label className={labelClassName}>{label}</Field.Label>}\r\n <Input\r\n ref={ref}\r\n type=\"number\"\r\n value={value}\r\n defaultValue={defaultValue}\r\n onChange={handleInputChange}\r\n min={min}\r\n max={max}\r\n step={step}\r\n disabled={disabled}\r\n placeholder={placeholder}\r\n className={cn(\r\n \"h-11 text-sm\",\r\n error && \"border-destructive focus-visible:ring-destructive/20\",\r\n inputClassName,\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n </Field.Root>\r\n );\r\n}\r\n\r\nexport { CompactNumberInput };\r\nexport type { CompactNumberInputProps };\r\n","\"use client\";\r\n\r\nimport { useState, useRef, type Ref } from \"react\";\r\nimport { Controller, Control, FieldValues, Path } from \"react-hook-form\";\r\nimport { X, Plus, Check } from \"lucide-react\";\r\nimport { cn } from \"../../utils\";\r\nimport { Button } from \"@/components/ui/button\";\r\nimport { Badge } from \"@/components/ui/badge\";\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"@/components/ui/popover\";\r\nimport { Field } from \"./field\";\r\n\r\ninterface Choice {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CompactTagChoiceProps<T extends FieldValues = FieldValues> {\r\n // Form integration\r\n control?: Control<T>;\r\n name?: Path<T>;\r\n\r\n // Display\r\n label?: string;\r\n description?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n disabled?: boolean;\r\n\r\n // Data\r\n choices?: Choice[];\r\n maxSelections?: number;\r\n\r\n // Styling\r\n className?: string;\r\n containerClassName?: string;\r\n labelClassName?: string;\r\n inputClassName?: string;\r\n\r\n // Direct usage\r\n value?: string[];\r\n onChange?: (value: string[]) => void;\r\n onValueChange?: (value: string[]) => void;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * CompactTagChoice - A compact tag selection input\r\n *\r\n * Features:\r\n * - Multi-select tag interface\r\n * - Maximum selection limit\r\n * - Popover for selecting options\r\n * - Form integration via control prop\r\n * - Direct usage without form\r\n */\r\nfunction CompactTagChoice<T extends FieldValues = FieldValues>({\r\n // Form integration\r\n control,\r\n name,\r\n\r\n // Display\r\n label,\r\n description,\r\n placeholder = \"Select options...\",\r\n required,\r\n disabled,\r\n\r\n // Data\r\n choices = [],\r\n maxSelections,\r\n\r\n // Styling\r\n className,\r\n containerClassName,\r\n labelClassName,\r\n inputClassName,\r\n\r\n // Direct usage\r\n value: propValue = [],\r\n onChange: propOnChange,\r\n onValueChange,\r\n error,\r\n ref,\r\n}: CompactTagChoiceProps<T> & { ref?: Ref<HTMLDivElement> }) {\r\n // With react-hook-form\r\n if (control && name) {\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field, fieldState }) => (\r\n <CompactTagChoiceInternal\r\n ref={ref}\r\n label={label}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n error={fieldState?.error?.message}\r\n value={field.value || []}\r\n onChange={(vals) => {\r\n field.onChange(vals);\r\n onValueChange?.(vals);\r\n }}\r\n choices={choices}\r\n maxSelections={maxSelections}\r\n containerClassName={cn(className, containerClassName)}\r\n labelClassName={labelClassName}\r\n inputClassName={inputClassName}\r\n />\r\n )}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <CompactTagChoiceInternal\r\n ref={ref}\r\n label={label}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n value={propValue}\r\n onChange={(vals) => {\r\n propOnChange?.(vals);\r\n onValueChange?.(vals);\r\n }}\r\n choices={choices}\r\n maxSelections={maxSelections}\r\n containerClassName={containerClassName}\r\n labelClassName={labelClassName}\r\n inputClassName={inputClassName}\r\n className={className}\r\n error={error}\r\n />\r\n );\r\n}\r\n\r\ninterface CompactTagChoiceInternalProps {\r\n label?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n value?: string[];\r\n onChange?: (value: string[]) => void;\r\n choices?: Choice[];\r\n maxSelections?: number;\r\n error?: string;\r\n className?: string;\r\n containerClassName?: string;\r\n labelClassName?: string;\r\n inputClassName?: string;\r\n ref?: Ref<HTMLDivElement>;\r\n}\r\n\r\nfunction CompactTagChoiceInternal({\r\n label,\r\n placeholder,\r\n disabled,\r\n value = [],\r\n onChange,\r\n choices = [],\r\n maxSelections,\r\n error,\r\n className,\r\n containerClassName,\r\n labelClassName,\r\n inputClassName,\r\n ref,\r\n}: CompactTagChoiceInternalProps) {\r\n const [open, setOpen] = useState(false);\r\n const triggerRef = useRef<HTMLButtonElement>(null);\r\n\r\n const availableChoices = choices.filter((c) => !value.includes(c.value));\r\n\r\n const addChoice = (choiceValue: string) => {\r\n if (value.includes(choiceValue)) return;\r\n if (maxSelections && value.length >= maxSelections) return;\r\n const updated = [...value, choiceValue];\r\n onChange?.(updated);\r\n };\r\n\r\n const removeChoice = (choiceValue: string) => {\r\n const updated = value.filter((v) => v !== choiceValue);\r\n onChange?.(updated);\r\n };\r\n\r\n return (\r\n <Field.Root className={containerClassName} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label className={labelClassName}>{label}</Field.Label>}\r\n\r\n <div\r\n className={cn(\r\n \"min-h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\",\r\n \"ring-offset-background focus-within:ring-1 focus-within:ring-primary/20\",\r\n \"hover:border-primary/50 transition-all duration-200\",\r\n error && \"border-destructive focus-within:ring-destructive/20\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n inputClassName\r\n )}\r\n ref={ref}\r\n >\r\n <div className={cn(\"flex flex-wrap gap-1\", value.length > 0 && \"mb-2\")}>\r\n {value.map((val) => {\r\n const choice = choices.find((c) => c.value === val);\r\n return (\r\n <Badge key={val} variant=\"secondary\" className=\"flex items-center gap-1 px-2 py-0.5 text-xs\">\r\n <span>{choice?.label ?? val}</span>\r\n {!disabled && (\r\n <button\r\n type=\"button\"\r\n className=\"text-muted-foreground hover:text-foreground ml-0.5\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n removeChoice(val);\r\n }}\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n )}\r\n </Badge>\r\n );\r\n })}\r\n </div>\r\n\r\n {!disabled && availableChoices.length > 0 && (!maxSelections || value.length < maxSelections) && (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger\r\n render={\r\n <Button\r\n ref={triggerRef}\r\n type=\"button\"\r\n variant=\"ghost\"\r\n className={cn(\r\n \"inline-flex items-center justify-center h-auto p-1 rounded-md text-xs font-medium transition-colors\",\r\n \"text-muted-foreground hover:text-foreground hover:bg-accent\",\r\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\r\n )}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setOpen(true);\r\n }}\r\n >\r\n <Plus className=\"h-3 w-3 mr-1\" />\r\n {value.length === 0 ? placeholder : \"Add more...\"}\r\n </Button>\r\n }\r\n />\r\n <PopoverContent className=\"w-[220px] p-0\" align=\"start\">\r\n <div className=\"p-1\">\r\n {availableChoices.length === 0 ? (\r\n <div className=\"px-2 py-3 text-sm text-muted-foreground text-center\">No options available</div>\r\n ) : (\r\n <div className=\"space-y-0.5\">\r\n {availableChoices.map((choice) => (\r\n <div\r\n key={choice.value}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n addChoice(choice.value);\r\n }}\r\n className=\"flex items-center justify-between px-2 py-1.5 text-sm rounded-sm hover:bg-accent hover:text-accent-foreground cursor-pointer\"\r\n >\r\n <span>{choice.label}</span>\r\n {value.includes(choice.value) && <Check className=\"h-4 w-4\" />}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n )}\r\n\r\n {maxSelections && (\r\n <div className=\"text-[11px] text-muted-foreground mt-1\">{value.length}/{maxSelections} selected</div>\r\n )}\r\n </div>\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n </Field.Root>\r\n );\r\n}\r\n\r\nexport { CompactTagChoice };\r\nexport type { CompactTagChoiceProps };\r\n","\"use client\";\r\n\r\nimport { type Ref, type ReactNode, type ChangeEvent } from \"react\";\r\nimport { Controller, Control, FieldValues, Path, FieldError } from \"react-hook-form\";\r\nimport { Wand2 } from \"lucide-react\";\r\nimport { cn } from \"../../utils\";\r\nimport { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton } from \"@/components/ui/input-group\";\r\nimport { Field } from \"./field\";\r\n\r\n/**\r\n * Generates a URL-friendly slug from a string\r\n */\r\nfunction generateSlug(text: string): string {\r\n if (!text) return \"\";\r\n return text\r\n .toLowerCase()\r\n .trim()\r\n .replace(/[^\\w\\s-]/g, \"\") // Remove special characters\r\n .replace(/\\s+/g, \"-\") // Replace spaces with hyphens\r\n .replace(/-+/g, \"-\") // Replace multiple hyphens with single hyphen\r\n .replace(/^-+|-+$/g, \"\"); // Remove leading/trailing hyphens\r\n}\r\n\r\ninterface CompactSlugFieldProps<T extends FieldValues = FieldValues> {\r\n // Form integration\r\n control?: Control<T>;\r\n name?: Path<T>;\r\n description?: string;\r\n required?: boolean;\r\n\r\n // Basic props\r\n label?: string;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n\r\n // Icon support\r\n icon?: ReactNode;\r\n\r\n // Slug generation\r\n sourceValue?: string;\r\n onGenerate?: (source: string) => string;\r\n\r\n // Styling\r\n className?: string;\r\n inputClassName?: string;\r\n\r\n // Events\r\n onValueChange?: (value: string) => void;\r\n\r\n // Direct usage\r\n value?: string;\r\n onChange?: (e: ChangeEvent<HTMLInputElement> | { target: { value: string } }) => void;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * CompactSlugField - Compact slug input with auto-generation\r\n *\r\n * Features:\r\n * - Compact design with floating label\r\n * - Auto-generate slug from source field\r\n * - Manual editing support\r\n * - InputGroup with generate button\r\n * - Form integration via control prop\r\n */\r\nfunction CompactSlugField<T extends FieldValues = FieldValues>({\r\n // Form integration\r\n control,\r\n name,\r\n description,\r\n required,\r\n\r\n // Basic props\r\n label,\r\n placeholder = \"my-page-slug\",\r\n disabled,\r\n\r\n // Icon support\r\n icon,\r\n\r\n // Slug generation\r\n sourceValue,\r\n onGenerate,\r\n\r\n // Styling\r\n className,\r\n inputClassName,\r\n\r\n // Events\r\n onValueChange,\r\n\r\n // Direct usage\r\n value,\r\n onChange,\r\n error,\r\n\r\n ref,\r\n ...props\r\n}: CompactSlugFieldProps<T> & { ref?: Ref<HTMLInputElement> }) {\r\n\r\n const handleGenerate = (currentValue: string | undefined, fieldOnChange: (value: string) => void) => {\r\n const newSlug = onGenerate ? onGenerate(sourceValue || \"\") : generateSlug(sourceValue || \"\");\r\n fieldOnChange(newSlug);\r\n onValueChange?.(newSlug);\r\n };\r\n\r\n const renderInput = (\r\n fieldValue: string | undefined,\r\n fieldOnChange: (value: string) => void,\r\n isDisabled: boolean | undefined,\r\n fieldState?: { error?: FieldError | { message?: string } }\r\n ) => {\r\n const inputProps = {\r\n ref,\r\n id: name,\r\n type: \"text\" as const,\r\n disabled: isDisabled,\r\n placeholder,\r\n value: fieldValue || \"\",\r\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n fieldOnChange(newValue);\r\n onValueChange?.(newValue);\r\n },\r\n className: cn(\r\n \"h-11 text-sm\",\r\n fieldState?.error && \"border-destructive focus-visible:ring-destructive/20\",\r\n inputClassName\r\n ),\r\n ...props,\r\n };\r\n\r\n return (\r\n <>\r\n {/* Icon support (outside InputGroup) */}\r\n {icon && (\r\n <Field.Icon>\r\n {icon}\r\n </Field.Icon>\r\n )}\r\n\r\n <InputGroup className=\"h-11\">\r\n <InputGroupInput {...inputProps} className={cn(inputProps.className, icon && \"pl-9\")} />\r\n <InputGroupAddon align=\"inline-end\">\r\n <InputGroupButton\r\n type=\"button\"\r\n size=\"sm\"\r\n onClick={() => handleGenerate(fieldValue, fieldOnChange)}\r\n disabled={isDisabled || !sourceValue}\r\n title=\"Generate slug from name\"\r\n >\r\n <Wand2 className=\"h-4 w-4\" />\r\n Generate\r\n </InputGroupButton>\r\n </InputGroupAddon>\r\n </InputGroup>\r\n </>\r\n );\r\n };\r\n\r\n // With react-hook-form\r\n if (control && name) {\r\n return (\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field, fieldState }) => (\r\n <Field.Root className={className} disabled={disabled} invalid={!!fieldState?.error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n {renderInput(field.value, field.onChange, disabled, fieldState)}\r\n </div>\r\n {fieldState?.error && <Field.Error>{fieldState.error.message}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n )}\r\n />\r\n );\r\n }\r\n\r\n // Direct usage (without react-hook-form)\r\n const handleDirectChange = (newValue: string) => {\r\n onChange?.({ target: { value: newValue } });\r\n onValueChange?.(newValue);\r\n };\r\n\r\n return (\r\n <Field.Root className={className} disabled={disabled} invalid={!!error}>\r\n <div className=\"relative group\">\r\n {label && <Field.Label>{label}</Field.Label>}\r\n {renderInput(value, handleDirectChange, disabled, { error: error ? { message: error } : undefined })}\r\n </div>\r\n {error && <Field.Error>{error}</Field.Error>}\r\n <Field.Description>{description}</Field.Description>\r\n </Field.Root>\r\n );\r\n}\r\n\r\nexport { CompactSlugField, generateSlug };\r\nexport type { CompactSlugFieldProps };\r\n"]}
|
package/dist/dashboard.d.ts
CHANGED
|
@@ -54,6 +54,43 @@ interface PageHeaderProps {
|
|
|
54
54
|
}
|
|
55
55
|
declare function PageHeader({ items, className, actions }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
56
56
|
|
|
57
|
+
interface DashboardContentProps {
|
|
58
|
+
/** Content to render inside the dashboard area */
|
|
59
|
+
children: React.ReactNode;
|
|
60
|
+
/** Additional className for the outer wrapper */
|
|
61
|
+
className?: string;
|
|
62
|
+
/** Enable @container queries on the content area */
|
|
63
|
+
container?: boolean | string;
|
|
64
|
+
/** Horizontal padding — defaults to "md" */
|
|
65
|
+
padding?: "none" | "sm" | "md" | "lg";
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* DashboardContent — Safe content wrapper for sidebar layouts.
|
|
69
|
+
*
|
|
70
|
+
* Prevents the classic flexbox overflow bug where children with
|
|
71
|
+
* `max-w-*` or grid layouts extend beyond the available space
|
|
72
|
+
* (behind the sidebar) by propagating `min-w-0` through the
|
|
73
|
+
* flex chain.
|
|
74
|
+
*
|
|
75
|
+
* **Important**: `SidebarInset` also needs `min-w-0` for the
|
|
76
|
+
* width constraint to propagate correctly from the flex parent.
|
|
77
|
+
* Pass `className="min-w-0"` to `SidebarInset`.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```tsx
|
|
81
|
+
* <SidebarProvider>
|
|
82
|
+
* <AppSidebar />
|
|
83
|
+
* <SidebarInset className="min-w-0">
|
|
84
|
+
* <DashboardContent>
|
|
85
|
+
* <PageHeader items={breadcrumbs} />
|
|
86
|
+
* <MyPageContent />
|
|
87
|
+
* </DashboardContent>
|
|
88
|
+
* </SidebarInset>
|
|
89
|
+
* </SidebarProvider>
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare function DashboardContent({ children, className, container, padding, }: DashboardContentProps): react_jsx_runtime.JSX.Element;
|
|
93
|
+
|
|
57
94
|
interface SidebarBrandProps {
|
|
58
95
|
/** Brand title text */
|
|
59
96
|
title: string;
|
|
@@ -346,4 +383,4 @@ interface DualSidebarProps {
|
|
|
346
383
|
*/
|
|
347
384
|
declare function DualSidebar({ brand, categories, user, defaultCategoryId, onCategoryChange, defaultCollapsed, railVariant, ariaLabel, className, }: DualSidebarProps): react_jsx_runtime.JSX.Element;
|
|
348
385
|
|
|
349
|
-
export { type BreadcrumbItem, type BreadcrumbItemData, DashboardHeader, type DashboardHeaderProps, DualSidebar, type DualSidebarBrand, type DualSidebarCategory, type DualSidebarItem, type DualSidebarProps, type DualSidebarUser, type HeaderAction, type HeaderBadge, type HeaderMetadata, HeaderSection, type HeaderSectionProps, InsetSidebar, type InsetSidebarBrand, type InsetSidebarProject, type InsetSidebarProps, type InsetSidebarUser, type NavGroup, type NavItem, type NavSubItem, PageHeader, type PageHeaderProps, type ProjectItem, ProjectSwitcher, type ProjectSwitcherProps, SidebarBrand, type SidebarBrandProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, SidebarUserMenu, type SidebarUserMenuProps, type UserData, type UserMenuItem };
|
|
386
|
+
export { type BreadcrumbItem, type BreadcrumbItemData, DashboardContent, type DashboardContentProps, DashboardHeader, type DashboardHeaderProps, DualSidebar, type DualSidebarBrand, type DualSidebarCategory, type DualSidebarItem, type DualSidebarProps, type DualSidebarUser, type HeaderAction, type HeaderBadge, type HeaderMetadata, HeaderSection, type HeaderSectionProps, InsetSidebar, type InsetSidebarBrand, type InsetSidebarProject, type InsetSidebarProps, type InsetSidebarUser, type NavGroup, type NavItem, type NavSubItem, PageHeader, type PageHeaderProps, type ProjectItem, ProjectSwitcher, type ProjectSwitcherProps, SidebarBrand, type SidebarBrandProps, SidebarNav, SidebarNavGroup, type SidebarNavGroupProps, SidebarNavItem, type SidebarNavItemProps, type SidebarNavProps, SidebarUserMenu, type SidebarUserMenuProps, type UserData, type UserMenuItem };
|
package/dist/dashboard.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { cn } from './chunk-GUHK2DTW.js';
|
|
3
|
+
export { cn } from './chunk-GUHK2DTW.js';
|
|
2
4
|
import { Button } from '@/components/ui/button';
|
|
3
5
|
import { Badge } from '@/components/ui/badge';
|
|
4
6
|
import { Skeleton } from '@/components/ui/skeleton';
|
|
5
|
-
import { clsx } from 'clsx';
|
|
6
|
-
import { twMerge } from 'tailwind-merge';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import * as React4 from 'react';
|
|
9
9
|
import React4__default, { useState } from 'react';
|
|
@@ -18,10 +18,6 @@ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGro
|
|
|
18
18
|
import { SheetTitle, SheetDescription } from '@/components/ui/sheet';
|
|
19
19
|
import { Tooltip, TooltipTrigger, TooltipContent } from '@/components/ui/tooltip';
|
|
20
20
|
|
|
21
|
-
// src/dashboard/header-section.tsx
|
|
22
|
-
function cn(...inputs) {
|
|
23
|
-
return twMerge(clsx(inputs));
|
|
24
|
-
}
|
|
25
21
|
var variants = {
|
|
26
22
|
default: {
|
|
27
23
|
wrapper: "px-6 py-5 rounded-xl shadow-sm border bg-background hover:shadow-md",
|
|
@@ -172,23 +168,57 @@ function HeaderSection({
|
|
|
172
168
|
);
|
|
173
169
|
}
|
|
174
170
|
function PageHeader({ items, className, actions }) {
|
|
175
|
-
return /* @__PURE__ */ jsxs(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
171
|
+
return /* @__PURE__ */ jsxs(
|
|
172
|
+
"header",
|
|
173
|
+
{
|
|
174
|
+
className: cn(
|
|
175
|
+
"flex h-12 shrink-0 items-center justify-between gap-2",
|
|
176
|
+
className
|
|
177
|
+
),
|
|
178
|
+
children: [
|
|
179
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
180
|
+
/* @__PURE__ */ jsx(SidebarTrigger, { className: "-ml-1" }),
|
|
181
|
+
/* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "!self-center h-4" }),
|
|
182
|
+
/* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: items.map((item, index) => /* @__PURE__ */ jsxs(React4__default.Fragment, { children: [
|
|
183
|
+
/* @__PURE__ */ jsx(
|
|
184
|
+
BreadcrumbItem,
|
|
185
|
+
{
|
|
186
|
+
className: item.current ? "" : "hidden md:block",
|
|
187
|
+
children: item.current ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: item.label }) : /* @__PURE__ */ jsx(BreadcrumbLink, { render: /* @__PURE__ */ jsx(Link3, { href: item.href || "#" }), children: item.label })
|
|
188
|
+
}
|
|
189
|
+
),
|
|
190
|
+
index < items.length - 1 && /* @__PURE__ */ jsx(BreadcrumbSeparator, { className: "hidden md:block" })
|
|
191
|
+
] }, `breadcrumb-${index}`)) }) })
|
|
192
|
+
] }),
|
|
193
|
+
actions
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
var PADDING = {
|
|
199
|
+
none: "",
|
|
200
|
+
sm: "px-2",
|
|
201
|
+
md: "px-4",
|
|
202
|
+
lg: "px-6 lg:px-8"
|
|
203
|
+
};
|
|
204
|
+
function DashboardContent({
|
|
205
|
+
children,
|
|
206
|
+
className,
|
|
207
|
+
container = true,
|
|
208
|
+
padding = "md"
|
|
209
|
+
}) {
|
|
210
|
+
const containerClass = container === true ? "@container/main" : typeof container === "string" ? `@container/${container}` : "";
|
|
211
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-1 flex-col min-w-0", className), children: /* @__PURE__ */ jsx(
|
|
212
|
+
"div",
|
|
213
|
+
{
|
|
214
|
+
className: cn(
|
|
215
|
+
"flex flex-1 flex-col gap-2 min-w-0",
|
|
216
|
+
containerClass,
|
|
217
|
+
PADDING[padding]
|
|
218
|
+
),
|
|
219
|
+
children
|
|
220
|
+
}
|
|
221
|
+
) });
|
|
192
222
|
}
|
|
193
223
|
function SidebarBrand({
|
|
194
224
|
title,
|
|
@@ -203,6 +233,7 @@ function SidebarBrand({
|
|
|
203
233
|
SidebarMenuButton,
|
|
204
234
|
{
|
|
205
235
|
size: "lg",
|
|
236
|
+
className: "group-data-[collapsible=icon]:p-0!",
|
|
206
237
|
tooltip: isCollapsed ? tooltip || title : void 0,
|
|
207
238
|
render: /* @__PURE__ */ jsx(
|
|
208
239
|
Link3,
|
|
@@ -215,7 +246,16 @@ function SidebarBrand({
|
|
|
215
246
|
}
|
|
216
247
|
),
|
|
217
248
|
children: [
|
|
218
|
-
/* @__PURE__ */ jsx(
|
|
249
|
+
/* @__PURE__ */ jsx(
|
|
250
|
+
"div",
|
|
251
|
+
{
|
|
252
|
+
className: cn(
|
|
253
|
+
"rounded-lg flex items-center justify-center bg-sidebar-primary text-sidebar-primary-foreground shadow-sm flex-shrink-0 transition-[width,height]",
|
|
254
|
+
isCollapsed && !isMobile ? "h-6 w-6" : "h-8 w-8"
|
|
255
|
+
),
|
|
256
|
+
children: icon
|
|
257
|
+
}
|
|
258
|
+
),
|
|
219
259
|
/* @__PURE__ */ jsx(
|
|
220
260
|
"span",
|
|
221
261
|
{
|
|
@@ -987,6 +1027,6 @@ function DualSidebar({
|
|
|
987
1027
|
) });
|
|
988
1028
|
}
|
|
989
1029
|
|
|
990
|
-
export { DashboardHeader, DualSidebar, HeaderSection, InsetSidebar, PageHeader, ProjectSwitcher, SidebarBrand, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarUserMenu
|
|
1030
|
+
export { DashboardContent, DashboardHeader, DualSidebar, HeaderSection, InsetSidebar, PageHeader, ProjectSwitcher, SidebarBrand, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarUserMenu };
|
|
991
1031
|
//# sourceMappingURL=dashboard.js.map
|
|
992
1032
|
//# sourceMappingURL=dashboard.js.map
|