ndcloud-storybook 1.2.0 → 1.2.2-beta.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/atoms/Spinner/Spinner.tsx","../src/tokens/colors.ts","../src/tokens/typography.ts","../src/atoms/Button/Button.tsx","../src/utils/colorHelpers.ts","../src/atoms/shared/inputStyles.ts","../src/atoms/Input/Input.tsx","../src/atoms/Label/Label.tsx","../src/atoms/Textarea/Textarea.tsx","../src/atoms/Tab/Tab.tsx","../src/atoms/HelperText/HelperText.tsx","../src/molecules/FormField/FormField.tsx","../src/molecules/FormFieldTextarea/FormFieldTextarea.tsx"],"names":["keyframes","styled","jsx","jsxs","Variant","css","Fragment","FormFieldWrapper"],"mappings":";;;;;;;;;;;AAYA,IAAM,IAAA,GAAOA,eAAA;AAAA;AAAA;AAAA,CAAA;AAKb,IAAM,UAAUC,uBAAA,CAAO,GAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,WAAA,EAMV,CAAC,EAAE,IAAA,GAAO,EAAA,OAAS,IAAI,CAAA;AAAA,YAAA,EACtB,CAAC,EAAE,IAAA,GAAO,EAAA,OAAS,IAAI,CAAA;AAAA,eAAA,EACpB,IAAI,CAAA,CAAA,EAAI,CAAC,EAAE,KAAA,GAAQ,OAAA,OAAc,KAAK,CAAA;AAAA;AAAA;AAAA,CAAA;AAKvD,IAAM,UAAkC,CAAC;AAAA,EACvC,IAAA,GAAO,EAAA;AAAA,EACP,KAAA,GAAQ,OAAA;AAAA,EACR,OAAA,GAAU,SAAA;AAAA,EACV,OAAA,GAAU;AACZ,CAAA,qBACEC,cAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAY,KAAA,EACnB,QAAA,kBAAAC,eAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACN,IAAA,EAAK,QAAA;AAAA,IACL,YAAA,EAAW,SAAA;AAAA,IAEX,QAAA,EAAA;AAAA,sBAAAD,cAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAY,GAAA,EAAI,CAAA;AAAA,sBAChEA,cAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,0BAAA;AAAA,UACF,MAAA,EAAQ,OAAA;AAAA,UACR,WAAA,EAAY,GAAA;AAAA,UACZ,aAAA,EAAc;AAAA;AAAA;AAChB;AAAA;AACF,CAAA,EACF,CAAA;AAGF,IAAO,eAAA,GAAQ,OAAA;;;ACnDR,IAAM,MAAA,GAAS;AAAA;AAAA,EAEpB,UAAA,EAAY;AAAA;AAAA,IAEV,YAAA,EAAc,SAAA;AAAA,IACd,aAAA,EAAe,SAAA;AAAA;AAAA,IAGf,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IAEX,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IAEP,MAAA,EAAQ;AAAA,GACV;AAAA;AAAA,EAGA,WAAA,EAAa;AAAA,IACX,aAAA,EAAe;AAAA,GACjB;AAAA;AAAA,EAGA,WAAA,EAAa;AAAA,IACX,MAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAQ,SAAA;AAAA,IACR,WAAA,EAAa;AAAA,GACf;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW;AAAA;AAEf;;;ACzCO,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO,GAAA;AAAA,EACP,OAAA,EAAS,GAAA;AAAA,EACT,MAAA,EAAQ,GAAA;AAAA,EACR,MAAA,EAAQ,GAAA;AAAA,EACR,IAAA,EAAM;AACR;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,GAAA,EAAK,EAAA;AAAA,EACL,EAAA,EAAI,EAAA;AAAA,EACJ,CAAA,EAAG,EAAA;AAAA,EACH,CAAA,EAAG,EAAA;AAAA,EACH,IAAA,EAAM,EAAA;AAAA,EACN,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,KAAA,EAAO;AACT;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,UAAA,EAAY;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAAA,EAEA,UAAA,EAAY,YAAA;AAAA,EAEZ,QAAA,EAAU,UAAA;AAAA,EAEV,UAAA,EAAY;AAAA,IACV,KAAA,EAAO,GAAA;AAAA,IACP,MAAA,EAAQ,GAAA;AAAA,IACR,OAAA,EAAS;AAAA;AAEb;AChCO,IAAK,OAAA,qBAAAE,QAAAA,KAAL;AACL,EAAAA,SAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,SAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,SAAA,SAAA,CAAA,GAAU,SAAA;AAHA,EAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;AAuBZ,IAAM,QAAA,GAA8C;AAAA,EAClD,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,OAAO,SAAA,CAAU,SAAA;AAAA,IAC7B,KAAA,EAAO,OAAO,UAAA,CAAW;AAAA,GAC3B;AAAA,EACA,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,OAAO,UAAA,CAAW,aAAA;AAAA,IAC9B,KAAA,EAAO,OAAO,UAAA,CAAW;AAAA,GAC3B;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,OAAO,WAAA,CAAY,WAAA;AAAA,IAC/B,MAAA,EAAQ,kCAAA;AAAA,IACR,KAAA,EAAO;AAAA;AAEX,CAAA;AAEA,IAAM,eAAeH,uBAAAA,CAAO,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAA,EAMX,UAAA,CAAW,WAAW,MAAM,CAAA;AAAA,eAAA,EAC5B,UAAA,CAAW,WAAW,OAAO,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAY1C,CAAC,EAAE,OAAA,GAAU,SAAA,EAAW,QAAA,EAAU,UAAS,KAAM;AACjD,EAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAO,MAAA,EAAO,GAAI,SAAS,OAAO,CAAA;AACtD,EAAA,OAAOI,SAAA;AAAA,kBAAA,EACS,UAAU,CAAA;AAAA,cAAA,EACd,WAAW,CAAA,UAAA,EAAa,MAAA,CAAO,WAAW,MAAM,CAAA,CAAA,GAAK,UAAU,MAAM,CAAA;AAAA,aAAA,EACtE,KAAA,IAAS,MAAA,CAAO,UAAA,CAAW,MAAM,CAAA;AAAA,eAAA,EAC/B,QAAA,GAAW,MAAM,CAAC,CAAA;AAAA,cAAA,EACnB,QAAA,GAAW,gBAAgB,SAAS,CAAA;AAAA,sBAAA,EAC5B,QAAA,GAAW,SAAS,MAAM,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAOhD,CAAC;AAAA,CAAA;AAGH,IAAM,SAAgC,CAAC;AAAA,EACrC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEH,cAAAA;AAAA,EAAC,YAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAO,EAAA;AAAA,IACP,UAAU,QAAA,IAAY,OAAA;AAAA,IACtB,SAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEH,oCACCA,cAAAA,CAAC,mBAAQ,CAAA,mBAETC,gBAAAG,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,IAAA,oBAAQJ,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,MACpB;AAAA,KAAA,EACH;AAAA;AAEJ,CAAA;AAGF,IAAO,cAAA,GAAQ;;;ACjGR,SAAS,UAAA,CAAW,UAAkB,OAAA,EAA2B;AACtE,EAAA,MAAM,MAAM,QAAA,CAAS,IAAA,EAAK,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AAE5C,EAAA,IAAI,CAAC,iBAAA,CAAkB,IAAA,CAAK,GAAG,CAAA,EAAG;AAChC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsB,QAAQ,CAAA,CAAE,CAAA;AAAA,EAClD;AAEA,EAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,KAAA,CAAO,OAAA,GAAU,MAAO,GAAG,CAAA;AACxD,EAAA,MAAM,WAAW,eAAA,CAAgB,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAE7D,EAAA,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA;AAC3B;;;ACpBO,IAAM,cAAA,GAAiB,UAAA;AACvB,IAAM,cAAA,GAAiB,UAAA;AAEvB,IAAM,eAAA,GAAkBG,SAAAA;AAAA;AAAA,oBAAA,EAET,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA,WAAA,EAChC,cAAc,CAAA;AAAA,SAAA,EAChB,UAAA,CAAW,MAAA,CAAO,UAAA,CAAW,SAAA,EAAW,EAAE,CAAC,CAAA;AAAA,oBAAA,EAChC,MAAA,CAAO,WAAW,MAAM,CAAA;AAAA,eAAA,EAC7B,UAAA,CAAW,WAAW,OAAO,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,WAAA,EAMjC,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,kBAAA,EAUhB,MAAA,CAAO,WAAW,aAAa,CAAA;AAAA,aAAA,EACpC,cAAc,CAAA;AAAA;;AAAA;AAAA,sBAAA,EAIL,MAAA,CAAO,WAAW,KAAK,CAAA;AAAA;AAAA;AAAA,CAAA;AAKxC,IAAM,WAAA,GAAcA,SAAAA;AAAA;AAAA,gBAAA,EAET,MAAA,CAAO,QAAQ,KAAK,CAAA;AAAA,WAAA,EACzB,cAAc,CAAA;;AAAA;AAAA;AAAA,kBAAA,EAIP,MAAA,CAAO,QAAQ,KAAK,CAAA;AAAA,aAAA,EACzB,cAAc,CAAA;AAAA;AAAA,CAAA;AAItB,IAAM,aAAA,GAAgBA,SAAAA;AAAA;AAAA,gBAAA,EAEX,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,WAAA,EAC3B,cAAc,CAAA;;AAAA;AAAA;AAAA,kBAAA,EAIP,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA,aAAA,EAC3B,cAAc,CAAA;AAAA;AAAA,CAAA;ACjD7B,IAAM,KAAA,GAA8B,CAAC,EAAE,SAAA,EAAW,OAAO,OAAA,EAAS,GAAG,MAAK,KAAM;AAC9E,EAAA,uBAAOH,cAAAA,CAAC,WAAA,EAAA,EAAY,WAAsB,KAAA,EAAc,OAAA,EAAmB,GAAG,IAAA,EAAM,CAAA;AACtF,CAAA;AAEA,IAAO,aAAA,GAAQ;AAEf,IAAM,cAAcD,uBAAAA,CAAO,KAAA;AAAA,EAAA,EACvB,eAAe;;AAAA,EAAA,EAEf,CAAC,EAAE,KAAA,EAAM,KAAM,SAAS,WAAW;AAAA,EAAA,EACnC,CAAC,EAAE,OAAA,EAAQ,KAAM,WAAW,aAAa;AAAA,CAAA;ACb7C,IAAM,KAAA,GAA8B,CAAC,EAAE,SAAA,EAAW,SAAS,QAAA,EAAU,GAAG,MAAK,KAAM;AACjF,EAAA,uBACEC,cAAAA,CAAC,OAAA,EAAA,EAAM,WAAsB,OAAA,EAAmB,GAAG,MAChD,QAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ;ACLf,IAAM,QAAA,GAAoC,CAAC,EAAE,SAAA,EAAW,OAAO,OAAA,EAAS,GAAG,MAAK,KAAM;AACpF,EAAA,uBAAOA,cAAAA,CAAC,cAAA,EAAA,EAAe,WAAsB,KAAA,EAAc,OAAA,EAAmB,GAAG,IAAA,EAAM,CAAA;AACzF,CAAA;AAEA,IAAO,gBAAA,GAAQ;AAEf,IAAM,iBAAiBD,uBAAAA,CAAO,QAAA;AAAA,EAAA,EAC1B,eAAe;AAAA;AAAA;AAAA;;AAAA,EAAA,EAKf,CAAC,EAAE,KAAA,EAAM,KAAM,SAAS,WAAW;AAAA,EAAA,EACnC,CAAC,EAAE,OAAA,EAAQ,KAAM,WAAW,aAAa;AAAA,CAAA;ACL7C,IAAM,MAA0B,CAAC;AAAA,EAC/B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,GAAA;AAAA,EACX,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,uBACEC,cAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,WAAA,GAAQ;AAEf,IAAM,YAAYD,uBAAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAIV,CAAC,EAAE,QAAA,EAAS,KAAM,GAAG,UAAA,CAAW,QAAA,CAAS,QAAQ,CAAC,CAAA,EAAA,CAAI,CAAA;AAAA;AAAA;AAAA;;AAAA,EAAA,EAKjE,CAAC,EAAE,QAAA,EAAS,KACZ,QAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,EAQsB,MAAA,CAAO,WAAW,YAAY,CAAA;AAAA;AAAA,EAAA,CAErD;AAAA,CAAA;AClDI,IAAM,aAAaA,uBAAAA,CAAO,GAAA;AAAA;AAAA,aAAA,EAElB,UAAA,CAAW,SAAS,EAAE,CAAA;AAAA,SAAA,EAC1B,CAAC,EAAE,KAAA,EAAO,OAAA,EAAQ,KAAM;AAC/B,EAAA,IAAI,KAAA,EAAO,OAAO,MAAA,CAAO,OAAA,CAAQ,KAAA;AACjC,EAAA,IAAI,OAAA,EAAS,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAA;AACnC,EAAA,OAAO,OAAO,UAAA,CAAW,KAAA;AAC3B,CAAC,CAAA;AAAA;ACAH,IAAM,YAAsC,CAAC;AAAA,EAC3C,EAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+C;AACnE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,IAC5B;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,SAAS,OAAA,IAAW,UAAA;AACxC,EAAA,MAAM,QAAA,GAAW,CAAC,CAAC,KAAA;AACnB,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,OAAA,IAAW,CAAC,QAAA;AAEjC,EAAA,uBACEE,eAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAChB,QAAA,EAAA;AAAA,oBAAAD,cAAAA,CAAC,aAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAK,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC3BA,cAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS,UAAA;AAAA,QACR,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACCA,cAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,QAAA,EAAU,OAAA,EAAS,YACnC,QAAA,EAAA,WAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AAEA,IAAM,mBAAmBD,uBAAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAMnB,MAAA,CAAO,WAAW,SAAS,CAAA;AAAA,eAAA,EACvB,UAAA,CAAW,SAAS,CAAC,CAAA;AAAA;AAAA,CAAA;AAItC,IAAO,iBAAA,GAAQ;ACtDf,IAAM,oBAAsD,CAAC;AAAA,EAC3D,EAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkD;AACtE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,IAC5B;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,SAAS,OAAA,IAAW,UAAA;AACxC,EAAA,MAAM,QAAA,GAAW,CAAC,CAAC,KAAA;AACnB,EAAA,MAAM,UAAA,GAAa,CAAC,CAAC,OAAA,IAAW,CAAC,QAAA;AAEjC,EAAA,uBACEE,eAAAA,CAACI,iBAAAA,EAAA,EAAiB,SAAA,EAChB,QAAA,EAAA;AAAA,oBAAAL,cAAAA,CAAC,aAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAK,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC3BA,cAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,KAAA,EAAO,QAAA;AAAA,QACP,OAAA,EAAS,UAAA;AAAA,QACR,GAAG;AAAA;AAAA,KACN;AAAA,IACC,WAAA,oBACCA,cAAAA,CAAC,UAAA,EAAA,EAAW,OAAO,QAAA,EAAU,OAAA,EAAS,YACnC,QAAA,EAAA,WAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AAEA,IAAMK,oBAAmBN,uBAAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAMnB,MAAA,CAAO,WAAW,SAAS,CAAA;AAAA,eAAA,EACvB,UAAA,CAAW,SAAS,CAAC,CAAA;AAAA;AAAA,CAAA;AAItC,IAAO,yBAAA,GAAQ","file":"index.cjs","sourcesContent":["/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { keyframes } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\n\ninterface SpinnerProps {\n size?: number;\n speed?: string;\n bgColor?: string;\n fgColor?: string;\n}\n\nconst spin = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n`;\n\nconst Wrapper = styled.div<SpinnerProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: ${({ size = 20 }) => size}px;\n height: ${({ size = 20 }) => size}px;\n animation: ${spin} ${({ speed = \"0.75s\" }) => speed} linear infinite;\n transform-origin: center;\n }\n`;\n\nconst Spinner: React.FC<SpinnerProps> = ({\n size = 20,\n speed = \"0.75s\",\n bgColor = \"#D1D5DB\",\n fgColor = \"#FFFFFF\",\n}) => (\n <Wrapper size={size} speed={speed}>\n <svg\n viewBox=\"0 0 50 50\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"status\"\n aria-label=\"loading\"\n >\n <circle cx=\"25\" cy=\"25\" r=\"20\" stroke={bgColor} strokeWidth=\"5\" />\n <path\n d=\"M45 25a20 20 0 0 1-20 20\"\n stroke={fgColor}\n strokeWidth=\"5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </Wrapper>\n);\n\nexport default Spinner;\n","/**\n * Color tokens for the design system\n */\n\nexport const colors = {\n // Brand colors\n baseColors: {\n // Brand\n primaryGreen: \"#7EE896\",\n primaryPurple: \"#6D65DA\",\n\n // Palette\n darkBlue1: \"#12131B\",\n darkBlue2: \"#2A2B33\",\n darkBlue3: \"#02061D\",\n\n grey1: \"#3C3C44\",\n grey2: \"#45454F\",\n grey3: \"#9CA3AF\",\n grey4: \"#8E8E98\",\n grey5: \"#4B4B4B\",\n grey6: \"#353535\",\n grey7: \"#ECECED\",\n\n white1: \"#ffffff\",\n },\n\n // Hover states\n hoverColors: {\n primaryPurple: \"#5F56D6\",\n },\n\n // Background colors\n backgrounds: {\n light1: \"#F5F6F8\",\n light2: \"#EFF1F8\",\n transparent: \"transparent\",\n },\n\n // Accents (errors, warnings, etc.)\n accents: {\n error: \"#F2545B\",\n danger: \"#D25E4A\",\n warning: \"#ECAC4D\",\n },\n\n // Gradients\n gradients: {\n gradient1: \"linear-gradient(90deg, #6D65DA 0.08%, #55A3BD 68.44%)\",\n },\n} as const;\n\nexport type Colors = typeof colors;\n\n","export type Typography = typeof typography;\n\nexport type FontWeight = (typeof FONT_WEIGHTS)[keyof typeof FONT_WEIGHTS];\nexport type FontSize = (typeof FONT_SIZES)[keyof typeof FONT_SIZES];\nexport type Align = \"left\" | \"center\" | \"right\";\n/**\n * Typography tokens for the design system\n */\n\nexport const FONT_WEIGHTS = {\n light: 300,\n regular: 350,\n normal: 400,\n medium: 500,\n bold: 700,\n} as const;\n\nexport const FONT_SIZES = {\n xxs: 10,\n xs: 12,\n s: 13,\n m: 14,\n base: 16,\n lg: 18,\n xl: 20,\n \"2xl\": 24,\n} as const;\n\nexport const typography = {\n fontFamily: {\n primary: '\"ABCFavoritExtended\", sans-serif',\n },\n\n fontWeight: FONT_WEIGHTS,\n\n fontSize: FONT_SIZES,\n\n lineHeight: {\n tight: 1.2,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\n","/** @jsxImportSource @emotion/react */\nimport { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport React, { ReactNode } from \"react\";\nimport Spinner from \"../Spinner/Spinner\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\ntype VariantName = \"primary\" | \"secondary\" | \"outline\";\n\nexport enum Variant {\n Primary = \"primary\",\n Secondary = \"secondary\",\n Outline = \"outline\",\n}\n\ninterface VariantStyle {\n background: string;\n color?: string;\n border?: string;\n}\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n label: string;\n variant?: VariantName;\n disabled?: boolean;\n selected?: boolean;\n icon?: ReactNode;\n loading?: boolean;\n className?: string;\n}\n\nconst VARIANTS: Record<VariantName, VariantStyle> = {\n primary: {\n background: colors.gradients.gradient1,\n color: colors.baseColors.white1,\n },\n secondary: {\n background: colors.baseColors.primaryPurple,\n color: colors.baseColors.white1,\n },\n outline: {\n background: colors.backgrounds.transparent,\n border: \"1px solid rgba(70, 70, 74, 0.10)\",\n color: \"#0E1116D9\",\n },\n};\n\nconst StyledButton = styled.button<ButtonProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 20px;\n border-radius: 100px;\n font-weight: ${typography.fontWeight.medium};\n font-family: ${typography.fontFamily.primary};\n transition: all 0.2s ease;\n width: 100%;\n max-width: 336px;\n\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n }\n\n ${({ variant = \"primary\", disabled, selected }) => {\n const { background, color, border } = VARIANTS[variant];\n return css`\n background: ${background};\n border: ${selected ? `2px solid ${colors.baseColors.white1}` : border || \"none\"};\n color: ${color || colors.baseColors.white1};\n opacity: ${disabled ? 0.5 : 1};\n cursor: ${disabled ? \"not-allowed\" : \"pointer\"};\n pointer-events: ${disabled ? \"none\" : \"auto\"};\n\n &:focus-visible {\n outline: 2px solid #0070f3;\n outline-offset: 2px;\n }\n `;\n }}\n`;\n\nconst Button: React.FC<ButtonProps> = ({\n label,\n icon,\n loading,\n disabled,\n className,\n ...rest\n}) => (\n <StyledButton\n label={\"\"}\n disabled={disabled || loading}\n className={className}\n {...rest}\n >\n {loading ? (\n <Spinner />\n ) : (\n <>\n {icon && <span>{icon}</span>}\n {label}\n </>\n )}\n </StyledButton>\n);\n\nexport default Button;\n","/**\n * Color utility functions for the design system\n */\n\nexport type TOpacity = number; // 0-100\nexport type TColor = string; // Hex color with alpha channel\n\n/**\n * Converts a hex color to a hex color with alpha channel\n * @param hexColor - Hex color string (e.g., \"#6D65DA\" or \"6D65DA\")\n * @param opacity - Opacity value from 0-100\n * @returns Hex color with alpha channel (e.g., \"#6D65DAB3\" for 70% opacity)\n * @throws Error if hex color is invalid\n */\nexport function getOpacity(hexColor: string, opacity: TOpacity): TColor {\n const hex = hexColor.trim().replace(/^#/, \"\");\n \n if (!/^[\\da-fA-F]{6}$/.test(hex)) {\n throw new Error(`Invalid hex color: ${hexColor}`);\n }\n\n const opacityFraction = Math.round((opacity / 100) * 255);\n const alphaHex = opacityFraction.toString(16).padStart(2, \"0\");\n\n return `#${hex}${alphaHex}`;\n}\n\n","import { css } from \"@emotion/react\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\nimport { getOpacity } from \"../../utils/colorHelpers\";\n\nexport const defaultPadding = \"9px 17px\";\nexport const focusedPadding = \"8px 16px\";\n\nexport const baseInputStyles = css`\n border-radius: 10px;\n border: 1px solid ${colors.baseColors.grey7};\n padding: ${defaultPadding};\n color: ${getOpacity(colors.baseColors.darkBlue3, 80)};\n background-color: ${colors.baseColors.white1};\n font-weight: ${typography.fontWeight.regular};\n cursor: text;\n transition: border-color 0.2s ease;\n box-sizing: border-box;\n\n &::placeholder {\n color: ${colors.baseColors.grey3};\n }\n\n &:hover:not(:disabled) {\n cursor: text;\n }\n\n &:focus {\n outline: none;\n border-width: 2px;\n border-color: ${colors.baseColors.primaryPurple};\n padding: ${focusedPadding};\n }\n\n &:disabled {\n background-color: ${colors.baseColors.grey7};\n cursor: not-allowed;\n }\n`;\n\nexport const errorStyles = css`\n border-width: 2px;\n border-color: ${colors.accents.error};\n padding: ${focusedPadding};\n\n &:focus {\n border-width: 2px;\n border-color: ${colors.accents.error};\n padding: ${focusedPadding};\n }\n`;\n\nexport const warningStyles = css`\n border-width: 2px;\n border-color: ${colors.accents.warning};\n padding: ${focusedPadding};\n\n &:focus {\n border-width: 2px;\n border-color: ${colors.accents.warning};\n padding: ${focusedPadding};\n }\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { baseInputStyles, errorStyles, warningStyles } from \"../shared/inputStyles\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n error?: boolean;\n warning?: boolean;\n}\n\nconst Input: React.FC<InputProps> = ({ className, error, warning, ...rest }) => {\n return <StyledInput className={className} error={error} warning={warning} {...rest} />;\n};\n\nexport default Input;\n\nconst StyledInput = styled.input<InputProps>`\n ${baseInputStyles}\n\n ${({ error }) => error && errorStyles}\n ${({ warning }) => warning && warningStyles}\n`;","import React from \"react\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\n className?: string;\n htmlFor?: string;\n}\n\nconst Label: React.FC<LabelProps> = ({ className, htmlFor, children, ...rest }) => {\n return (\n <label className={className} htmlFor={htmlFor} {...rest}>\n {children}\n </label>\n );\n};\n\nexport default Label;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { baseInputStyles, errorStyles, warningStyles } from \"../shared/inputStyles\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n className?: string;\n error?: boolean;\n warning?: boolean;\n}\n\nconst Textarea: React.FC<TextareaProps> = ({ className, error, warning, ...rest }) => {\n return <StyledTextarea className={className} error={error} warning={warning} {...rest} />;\n};\n\nexport default Textarea;\n\nconst StyledTextarea = styled.textarea<TextareaProps>`\n ${baseInputStyles}\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n\n ${({ error }) => error && errorStyles}\n ${({ warning }) => warning && warningStyles}\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography, FONT_SIZES } from \"../../tokens/typography\";\n\ntype FontSizeKey = keyof typeof FONT_SIZES;\n\nexport interface TabProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"fontSize\"> {\n children: React.ReactNode;\n selected?: boolean;\n fontSize?: FontSizeKey;\n className?: string;\n}\n\ninterface StyledTabProps {\n selected?: boolean;\n fontSize: FontSizeKey;\n}\n\nconst Tab: React.FC<TabProps> = ({\n children,\n selected,\n fontSize = \"m\",\n className,\n ...rest\n}) => {\n return (\n <StyledTab\n className={className}\n selected={selected}\n fontSize={fontSize}\n {...rest}\n >\n {children}\n </StyledTab>\n );\n};\n\nexport default Tab;\n\nconst StyledTab = styled.div<StyledTabProps>`\n display: inline-block;\n padding: 8px 16px;\n user-select: none;\n font-size: ${({ fontSize }) => `${typography.fontSize[fontSize]}px`};\n position: relative;\n transition: border-color 0.2s ease;\n cursor: pointer;\n\n ${({ selected }) =>\n selected &&\n `\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: 3px;\n background-color: ${colors.baseColors.primaryGreen};\n }\n `}\n`;\n\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\nexport interface HelperTextProps {\n error?: boolean;\n warning?: boolean;\n children: React.ReactNode;\n}\n\nexport const HelperText = styled.div<HelperTextProps>`\n margin-top: 4px;\n font-size: ${typography.fontSize.xs}px;\n color: ${({ error, warning }) => {\n if (error) return colors.accents.error;\n if (warning) return colors.accents.warning;\n return colors.baseColors.grey3;\n }};\n`;\n\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport Input, { InputProps } from \"../../atoms/Input\";\nimport Label from \"../../atoms/Label\";\nimport { HelperText } from \"../../atoms/HelperText\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\nexport interface FormFieldProps extends Omit<InputProps, \"id\" | \"onInput\" | \"error\" | \"warning\"> {\n id: string;\n label: string;\n helperText?: string;\n error?: string;\n warning?: string;\n onInput?: (value: string) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst FormField: React.FC<FormFieldProps> = ({\n id,\n label,\n helperText,\n error,\n warning,\n onInput,\n onChange,\n className,\n ...inputProps\n}) => {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onInput) {\n onInput(event.target.value);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n const displayText = error || warning || helperText;\n const hasError = !!error;\n const hasWarning = !!warning && !hasError;\n\n return (\n <FormFieldWrapper className={className}>\n <Label htmlFor={id}>{label}</Label>\n <Input\n id={id}\n onChange={handleChange}\n error={hasError}\n warning={hasWarning}\n {...inputProps}\n />\n {displayText && (\n <HelperText error={hasError} warning={hasWarning}>\n {displayText}\n </HelperText>\n )}\n </FormFieldWrapper>\n );\n};\n\nconst FormFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n \n label {\n margin-bottom: 8px;\n color: ${colors.baseColors.darkBlue3};\n font-size: ${typography.fontSize.m}px;\n }\n`;\n\nexport default FormField;\n\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport Textarea, { TextareaProps } from \"../../atoms/Textarea\";\nimport Label from \"../../atoms/Label\";\nimport { HelperText } from \"../../atoms/HelperText\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\nexport interface FormFieldTextareaProps extends Omit<TextareaProps, \"id\" | \"onInput\" | \"error\" | \"warning\"> {\n id: string;\n label: string;\n helperText?: string;\n error?: string;\n warning?: string;\n onInput?: (value: string) => void;\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n}\n\nconst FormFieldTextarea: React.FC<FormFieldTextareaProps> = ({\n id,\n label,\n helperText,\n error,\n warning,\n onInput,\n onChange,\n className,\n ...textareaProps\n}) => {\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onInput) {\n onInput(event.target.value);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n const displayText = error || warning || helperText;\n const hasError = !!error;\n const hasWarning = !!warning && !hasError;\n\n return (\n <FormFieldWrapper className={className}>\n <Label htmlFor={id}>{label}</Label>\n <Textarea\n id={id}\n onChange={handleChange}\n error={hasError}\n warning={hasWarning}\n {...textareaProps}\n />\n {displayText && (\n <HelperText error={hasError} warning={hasWarning}>\n {displayText}\n </HelperText>\n )}\n </FormFieldWrapper>\n );\n};\n\nconst FormFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n \n label {\n margin-bottom: 8px;\n color: ${colors.baseColors.darkBlue3};\n font-size: ${typography.fontSize.m}px;\n }\n`;\n\nexport default FormFieldTextarea;\n\n"]}
1
+ {"version":3,"sources":["../src/atoms/Spinner/Spinner.tsx","../src/tokens/colors.ts","../src/tokens/typography.ts","../src/utils/colorHelpers.ts","../src/atoms/Button/Button.tsx","../src/atoms/shared/inputStyles.ts","../src/atoms/Input/Input.tsx","../src/atoms/Label/Label.tsx","../src/atoms/Textarea/Textarea.tsx","../src/atoms/Tab/Tab.tsx","../src/atoms/HelperText/HelperText.tsx","../src/atoms/Badge/Badge.tsx","../src/atoms/UserAvatar/UserAvatar.tsx","../src/molecules/FormField/FormField.tsx","../src/molecules/FormFieldTextarea/FormFieldTextarea.tsx","../src/molecules/SearchInput/SearchInput.styles.ts","../src/molecules/SearchInput/SearchInput.tsx","../src/atoms/Table/Table.tsx","../src/atoms/Table/TableHeader.tsx","../src/atoms/Table/TableCell.tsx","../src/atoms/Table/TableRow.tsx","../src/organisms/DataTable/DataTable.styles.ts","../src/organisms/DataTable/DataTable.tsx"],"names":["jsx","jsxs","keyframes","styled","Variant","Fragment","css","FormFieldWrapper","StyledInput"],"mappings":"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","file":"index.cjs","sourcesContent":["/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { keyframes } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\n\ninterface SpinnerProps {\n size?: number;\n speed?: string;\n bgColor?: string;\n fgColor?: string;\n}\n\nconst Spinner: React.FC<SpinnerProps> = ({\n size = 20,\n speed = \"0.75s\",\n bgColor = \"#D1D5DB\",\n fgColor = \"#FFFFFF\",\n}) => (\n <Wrapper size={size} speed={speed}>\n <svg\n viewBox=\"0 0 50 50\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"status\"\n aria-label=\"loading\"\n >\n <circle cx=\"25\" cy=\"25\" r=\"20\" stroke={bgColor} strokeWidth=\"5\" />\n <path\n d=\"M45 25a20 20 0 0 1-20 20\"\n stroke={fgColor}\n strokeWidth=\"5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </Wrapper>\n);\n\nexport default Spinner;\n\nconst spin = keyframes`\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n`;\n\nconst Wrapper = styled.div<SpinnerProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: ${({ size = 20 }) => size}px;\n height: ${({ size = 20 }) => size}px;\n animation: ${spin} ${({ speed = \"0.75s\" }) => speed} linear infinite;\n transform-origin: center;\n }\n`;\n","/**\n * Color tokens for the design system\n */\n\nexport const colors = {\n // Brand colors\n baseColors: {\n // Brand\n primaryGreen: \"#7EE896\",\n primaryPurple: \"#6D65DA\",\n primaryBlue: \"#55A3BD\",\n\n // Palette\n darkBlue1: \"#12131B\",\n darkBlue2: \"#2A2B33\",\n darkBlue3: \"#02061D\",\n\n grey1: \"#3C3C44\",\n grey2: \"#45454F\",\n grey3: \"#9CA3AF\",\n grey4: \"#8E8E98\",\n grey5: \"#4B4B4B\",\n grey6: \"#353535\",\n grey7: \"#ECECED\",\n\n white1: \"#ffffff\",\n },\n\n // Hover states\n hoverColors: {\n primaryPurple: \"#5F56D6\",\n },\n\n // Background colors\n backgrounds: {\n light1: \"#F5F6F8\",\n light2: \"#EFF1F8\",\n transparent: \"transparent\",\n },\n\n // Accents (errors, warnings, etc.)\n accents: {\n error: \"#F2545B\",\n danger: \"#D25E4A\",\n warning: \"#ECAC4D\",\n },\n\n // Gradients\n gradients: {\n gradient1: \"linear-gradient(90deg, #6D65DA 0.08%, #55A3BD 68.44%)\",\n },\n} as const;\n\nexport type Colors = typeof colors;\n\n","export type Typography = typeof typography;\n\nexport type FontWeight = (typeof FONT_WEIGHTS)[keyof typeof FONT_WEIGHTS];\nexport type FontSize = (typeof FONT_SIZES)[keyof typeof FONT_SIZES];\nexport type FontSizeKey = keyof typeof FONT_SIZES;\nexport type Align = \"left\" | \"center\" | \"right\";\n/**\n * Typography tokens for the design system\n */\n\nexport const FONT_WEIGHTS = {\n light: 300,\n regular: 350,\n normal: 400,\n medium: 500,\n bold: 700,\n} as const;\n\nexport const FONT_SIZES = {\n xxs: 10,\n xs: 12,\n s: 13,\n m: 14,\n base: 16,\n lg: 18,\n xl: 20,\n \"2xl\": 24,\n} as const;\n\nexport const typography = {\n fontFamily: {\n primary: '\"ABCFavoritExtended\", sans-serif',\n },\n\n fontWeight: FONT_WEIGHTS,\n\n fontSize: FONT_SIZES,\n\n lineHeight: {\n tight: 1.2,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\nexport const FONT_SIZE_KEYS = {\n xxs: \"xxs\",\n xs: \"xs\",\n s: \"s\",\n m: \"m\",\n base: \"base\",\n lg: \"lg\",\n xl: \"xl\",\n \"2xl\": \"2xl\",\n} as const satisfies Record<string, FontSizeKey>;\n\n","/**\n * Color utility functions for the design system\n */\n\nexport type TOpacity = number; // 0-100\nexport type TColor = string; // Hex color with alpha channel\n\n/**\n * Converts a hex color to a hex color with alpha channel\n * @param hexColor - Hex color string (e.g., \"#6D65DA\" or \"6D65DA\")\n * @param opacity - Opacity value from 0-100\n * @returns Hex color with alpha channel (e.g., \"#6D65DAB3\" for 70% opacity)\n * @throws Error if hex color is invalid\n */\nexport function getOpacity(hexColor: string, opacity: TOpacity): TColor {\n const hex = hexColor.trim().replace(/^#/, \"\");\n \n if (!/^[\\da-fA-F]{6}$/.test(hex)) {\n throw new Error(`Invalid hex color: ${hexColor}`);\n }\n\n const opacityFraction = Math.round((opacity / 100) * 255);\n const alphaHex = opacityFraction.toString(16).padStart(2, \"0\");\n\n return `#${hex}${alphaHex}`;\n}\n\n","/** @jsxImportSource @emotion/react */\nimport { css } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport React, { ReactNode } from \"react\";\nimport Spinner from \"../Spinner/Spinner\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\nimport { getOpacity } from \"../../utils/colorHelpers\";\n\nexport type VariantName = \"primary\" | \"secondary\" | \"outline\";\n\nexport enum Variant {\n Primary = \"primary\",\n Secondary = \"secondary\",\n Outline = \"outline\",\n}\n\ninterface VariantStyle {\n background: string;\n color?: string;\n border?: string;\n}\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n label: string;\n variant?: VariantName;\n disabled?: boolean;\n selected?: boolean;\n icon?: ReactNode;\n loading?: boolean;\n className?: string;\n}\n\nconst VARIANTS: Record<VariantName, VariantStyle> = {\n primary: {\n background: colors.gradients.gradient1,\n color: colors.baseColors.white1,\n },\n secondary: {\n background: colors.baseColors.primaryPurple,\n color: colors.baseColors.white1,\n },\n outline: {\n background: colors.backgrounds.transparent,\n border: `1px solid ${getOpacity(colors.baseColors.grey2, 10)}`,\n color: getOpacity(colors.baseColors.darkBlue3, 85),\n },\n};\n\nconst Button: React.FC<ButtonProps> = ({\n label,\n icon,\n loading,\n disabled,\n className,\n variant = \"primary\",\n selected,\n ...rest\n}) => (\n <StyledButton\n variant={variant}\n disabled={disabled || loading}\n selected={selected}\n className={className}\n {...rest}\n >\n {loading ? (\n <Spinner />\n ) : (\n <>\n {icon && <span>{icon}</span>}\n {label}\n </>\n )}\n </StyledButton>\n);\n\nexport default Button;\n\nconst StyledButton = styled.button<Omit<ButtonProps, \"label\" | \"icon\" | \"loading\">>`\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 12px 20px;\n border-radius: 100px;\n font-weight: ${typography.fontWeight.medium};\n font-family: ${typography.fontFamily.primary};\n transition: all 0.2s ease;\n width: 100%;\n max-width: 336px;\n\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 8px;\n }\n\n ${({ variant = \"primary\", disabled, selected }) => {\n const { background, color, border } = VARIANTS[variant];\n return css`\n background: ${background};\n border: ${selected ? `2px solid ${colors.baseColors.white1}` : border || \"none\"};\n color: ${color || colors.baseColors.white1};\n opacity: ${disabled ? 0.5 : 1};\n cursor: ${disabled ? \"not-allowed\" : \"pointer\"};\n pointer-events: ${disabled ? \"none\" : \"auto\"};\n\n &:focus-visible {\n outline: 2px solid ${colors.baseColors.primaryBlue};\n outline-offset: 2px;\n }\n `;\n }}\n`;\n","import { css } from \"@emotion/react\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\nimport { getOpacity } from \"../../utils/colorHelpers\";\n\nexport const defaultPadding = \"9px 17px\";\nexport const focusedPadding = \"8px 16px\";\n\nexport const baseInputStyles = css`\n border-radius: 10px;\n border: 1px solid ${colors.baseColors.grey7};\n padding: ${defaultPadding};\n color: ${getOpacity(colors.baseColors.darkBlue3, 80)};\n background-color: ${colors.baseColors.white1};\n font-weight: ${typography.fontWeight.regular};\n cursor: text;\n transition: border-color 0.2s ease;\n box-sizing: border-box;\n\n &::placeholder {\n color: ${colors.baseColors.grey3};\n }\n\n &:hover:not(:disabled) {\n cursor: text;\n }\n\n &:focus {\n outline: none;\n border-width: 2px;\n border-color: ${colors.baseColors.primaryPurple};\n padding: ${focusedPadding};\n }\n\n &:disabled {\n background-color: ${colors.baseColors.grey7};\n cursor: not-allowed;\n }\n`;\n\nexport const errorStyles = css`\n border-width: 2px;\n border-color: ${colors.accents.error};\n padding: ${focusedPadding};\n\n &:focus {\n border-width: 2px;\n border-color: ${colors.accents.error};\n padding: ${focusedPadding};\n }\n`;\n\nexport const warningStyles = css`\n border-width: 2px;\n border-color: ${colors.accents.warning};\n padding: ${focusedPadding};\n\n &:focus {\n border-width: 2px;\n border-color: ${colors.accents.warning};\n padding: ${focusedPadding};\n }\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { baseInputStyles, errorStyles, warningStyles } from \"../shared/inputStyles\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n error?: boolean;\n warning?: boolean;\n}\n\nconst Input: React.FC<InputProps> = ({ className, error, warning, ...rest }) => {\n return <StyledInput className={className} error={error} warning={warning} {...rest} />;\n};\n\nexport default Input;\n\nconst StyledInput = styled.input<InputProps>`\n ${baseInputStyles}\n\n ${({ error }) => error && errorStyles}\n ${({ warning }) => warning && warningStyles}\n`;","import React from \"react\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\n className?: string;\n htmlFor?: string;\n}\n\nconst Label: React.FC<LabelProps> = ({ className, htmlFor, children, ...rest }) => {\n return (\n <label className={className} htmlFor={htmlFor} {...rest}>\n {children}\n </label>\n );\n};\n\nexport default Label;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { baseInputStyles, errorStyles, warningStyles } from \"../shared/inputStyles\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n className?: string;\n error?: boolean;\n warning?: boolean;\n}\n\nconst Textarea: React.FC<TextareaProps> = ({ className, error, warning, ...rest }) => {\n return <StyledTextarea className={className} error={error} warning={warning} {...rest} />;\n};\n\nexport default Textarea;\n\nconst StyledTextarea = styled.textarea<TextareaProps>`\n ${baseInputStyles}\n resize: vertical;\n min-height: 80px;\n font-family: inherit;\n\n ${({ error }) => error && errorStyles}\n ${({ warning }) => warning && warningStyles}\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography, type FontSizeKey } from \"../../tokens/typography\";\n\nexport interface TabProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"fontSize\"> {\n children: React.ReactNode;\n selected?: boolean;\n fontSize?: FontSizeKey;\n className?: string;\n}\n\ninterface StyledTabProps {\n selected?: boolean;\n fontSize: FontSizeKey;\n}\n\nconst Tab: React.FC<TabProps> = ({\n children,\n selected,\n fontSize = \"m\",\n className,\n ...rest\n}) => {\n return (\n <StyledTab\n className={className}\n selected={selected}\n fontSize={fontSize}\n {...rest}\n >\n {children}\n </StyledTab>\n );\n};\n\nexport default Tab;\n\nconst StyledTab = styled.div<StyledTabProps>`\n display: inline-block;\n padding: 8px 16px;\n user-select: none;\n font-size: ${({ fontSize }) => `${typography.fontSize[fontSize]}px`};\n position: relative;\n transition: border-color 0.2s ease;\n cursor: pointer;\n\n ${({ selected }) =>\n selected &&\n `\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: 3px;\n background-color: ${colors.baseColors.primaryGreen};\n }\n `}\n`;\n\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\nexport interface HelperTextProps {\n error?: boolean;\n warning?: boolean;\n children: React.ReactNode;\n}\n\nexport const HelperText = styled.div<HelperTextProps>`\n margin-top: 4px;\n font-size: ${typography.fontSize.xs}px;\n color: ${({ error, warning }) => {\n if (error) return colors.accents.error;\n if (warning) return colors.accents.warning;\n return colors.baseColors.grey3;\n }};\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { colors } from \"../../tokens/colors\";\nimport { FONT_SIZES, FONT_WEIGHTS } from \"../../tokens/typography\";\nimport { getOpacity } from \"../../utils/colorHelpers\";\n\nexport const USER_ROLES = {\n OWNER: \"owner\",\n EDITOR: \"editor\",\n VIEWER: \"viewer\",\n AUDITOR: \"auditor\",\n} as const;\n\nexport const USER_STATUS = {\n INVITED: \"invited\",\n} as const;\n\nexport interface GroupBadgeProps {\n role: string;\n status?: string;\n children: React.ReactNode;\n}\n\nexport const getBadgeColor = (role: string, status?: string): string => {\n if (status?.toLowerCase() === USER_STATUS.INVITED) {\n return colors.accents.warning;\n }\n\n const roleLower = role.toLowerCase();\n\n switch (roleLower) {\n case USER_ROLES.OWNER:\n return colors.baseColors.primaryGreen;\n\n case USER_ROLES.EDITOR:\n return colors.baseColors.primaryBlue;\n\n case USER_ROLES.VIEWER:\n case USER_ROLES.AUDITOR:\n return colors.baseColors.primaryPurple;\n\n default:\n return colors.baseColors.primaryGreen;\n }\n};\n\n/**\n * @description Badge component for displaying user roles with dynamic colors\n */\nexport function GroupBadge({ role, status, children }: GroupBadgeProps) {\n const badgeColor = getBadgeColor(role, status);\n const displayText = status?.toLowerCase() === USER_STATUS.INVITED ? \"Invited\" : children;\n\n return <Badge badgeColor={badgeColor}>{displayText}</Badge>;\n}\n\nconst Badge = styled.div<{ badgeColor: string }>`\n display: inline-flex;\n padding: 8px 28px;\n border-radius: 100px;\n background-color: ${({ badgeColor }) => getOpacity(badgeColor, 20)};\n border: 1px solid ${({ badgeColor }) => badgeColor};\n color: ${({ badgeColor }) => badgeColor};\n font-size: ${FONT_SIZES.s}px;\n font-weight: ${FONT_WEIGHTS.bold};\n text-transform: capitalize;\n`;\n\nexport default GroupBadge;\n\n","import styled from \"@emotion/styled\";\nimport { colors, FONT_SIZES, FONT_WEIGHTS } from \"../../tokens\";\nimport { getOpacity } from \"../../utils/colorHelpers\";\n\nexport interface UserAvatarProps {\n initials?: string;\n badgeColor?: string;\n onClick?: () => void;\n size?: \"small\" | \"large\" | number;\n}\n\n/**\n * @description User avatar component that displays user initials. Supports both static (for tables) and clickable (for profile) variants.\n * If no initials are provided, returns null (user doesn't exist yet, likely invited).\n */\nexport function UserAvatar({ \n initials, \n badgeColor, \n onClick, \n size = 56\n}: UserAvatarProps) {\n if (!initials || !initials.trim()) {\n return null;\n }\n\n if (onClick) {\n return (\n <ProfileAvatar \n badgeColor={badgeColor} \n size={size} \n onClick={onClick}\n >\n {initials}\n </ProfileAvatar>\n );\n }\n\n return (\n <ColourAvatar badgeColor={badgeColor} size={size}>\n {initials}\n </ColourAvatar>\n );\n}\n\nexport default UserAvatar;\n\n\n\n\nconst ColourAvatar = styled.div<{ \n badgeColor?: string; \n size: \"small\" | \"large\" | number;\n}>`\n width: ${({ size }) => \n typeof size === \"number\" ? `${size}px` : size === \"large\" ? \"56px\" : \"40px\"\n };\n height: ${({ size }) => \n typeof size === \"number\" ? `${size}px` : size === \"large\" ? \"56px\" : \"40px\"\n };\n border-radius: 50%;\n background: ${({ badgeColor }) =>\n badgeColor\n ? getOpacity(badgeColor, 20)\n : \"linear-gradient(90deg, #6d65da 0.08%, #55a3bd 68.44%)\"};\n border: ${({ badgeColor }) => (badgeColor ? `2px solid ${badgeColor}` : \"none\")};\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${colors.baseColors.darkBlue1};\n font-size: ${({ size }) => \n typeof size === \"number\" \n ? `${size * 0.325}px` \n : size === \"large\" \n ? `${FONT_SIZES.xs}px` \n : `${FONT_SIZES.s}px`\n };\n font-weight: ${FONT_WEIGHTS.normal};\n flex-shrink: 0;\n`;\n\nconst ProfileAvatar = styled(ColourAvatar)`\n color: #fff;\n background: ${colors.gradients.gradient1};\n border: none;\n border-radius: 999px;\n line-height: 138%;\n margin-bottom: 12px;\n`;\n\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport Input, { InputProps } from \"../../atoms/Input\";\nimport Label from \"../../atoms/Label\";\nimport { HelperText } from \"../../atoms/HelperText\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\nexport interface FormFieldProps extends Omit<InputProps, \"id\" | \"onInput\" | \"error\" | \"warning\"> {\n id: string;\n label: string;\n helperText?: string;\n error?: string;\n warning?: string;\n onInput?: (value: string) => void;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nconst FormField: React.FC<FormFieldProps> = ({\n id,\n label,\n helperText,\n error,\n warning,\n onInput,\n onChange,\n className,\n ...inputProps\n}) => {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onInput) {\n onInput(event.target.value);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n const displayText = error || warning || helperText;\n const hasError = !!error;\n const hasWarning = !!warning && !hasError;\n\n return (\n <FormFieldWrapper className={className}>\n <Label htmlFor={id}>{label}</Label>\n <Input\n id={id}\n onChange={handleChange}\n error={hasError}\n warning={hasWarning}\n {...inputProps}\n />\n {displayText && (\n <HelperText error={hasError} warning={hasWarning}>\n {displayText}\n </HelperText>\n )}\n </FormFieldWrapper>\n );\n};\n\nconst FormFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n \n label {\n margin-bottom: 8px;\n color: ${colors.baseColors.darkBlue3};\n font-size: ${typography.fontSize.m}px;\n }\n`;\n\nexport default FormField;\n\n","import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport Textarea, { TextareaProps } from \"../../atoms/Textarea\";\nimport Label from \"../../atoms/Label\";\nimport { HelperText } from \"../../atoms/HelperText\";\nimport { colors } from \"../../tokens/colors\";\nimport { typography } from \"../../tokens/typography\";\n\nexport interface FormFieldTextareaProps extends Omit<TextareaProps, \"id\" | \"onInput\" | \"error\" | \"warning\"> {\n id: string;\n label: string;\n helperText?: string;\n error?: string;\n warning?: string;\n onInput?: (value: string) => void;\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n}\n\nconst FormFieldTextarea: React.FC<FormFieldTextareaProps> = ({\n id,\n label,\n helperText,\n error,\n warning,\n onInput,\n onChange,\n className,\n ...textareaProps\n}) => {\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onInput) {\n onInput(event.target.value);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n const displayText = error || warning || helperText;\n const hasError = !!error;\n const hasWarning = !!warning && !hasError;\n\n return (\n <FormFieldWrapper className={className}>\n <Label htmlFor={id}>{label}</Label>\n <Textarea\n id={id}\n onChange={handleChange}\n error={hasError}\n warning={hasWarning}\n {...textareaProps}\n />\n {displayText && (\n <HelperText error={hasError} warning={hasWarning}>\n {displayText}\n </HelperText>\n )}\n </FormFieldWrapper>\n );\n};\n\nconst FormFieldWrapper = styled.div`\n display: flex;\n flex-direction: column;\n \n label {\n margin-bottom: 8px;\n color: ${colors.baseColors.darkBlue3};\n font-size: ${typography.fontSize.m}px;\n }\n`;\n\nexport default FormFieldTextarea;\n\n","import styled from \"@emotion/styled\";\nimport Input from \"../../atoms/Input\";\nimport { colors } from \"../../tokens/colors\";\nimport { FontSizeKey, typography } from \"../../tokens/typography\";\n\nexport const SearchContainer = styled.div<{ width?: string | number }>`\n width: ${({ width }) => (typeof width === \"number\" ? `${width}px` : width || \"208px\")};\n`;\n\nexport const InputWrapper = styled.div`\n position: relative;\n width: 100%;\n display: flex;\n align-items: center;\n`;\n\nexport const IconWrapper = styled.div`\n position: absolute;\n left: 17px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${colors.baseColors.grey3};\n pointer-events: none;\n z-index: 2;\n`;\n\nexport const StyledInput = styled(Input)<{ hasClearButton?: boolean; hasIcon?: boolean; fontSize?: FontSizeKey }>`\n width: 100%;\n padding-right: ${({ hasClearButton }) => (hasClearButton ? \"32px\" : \"17px\")};\n padding-left: ${({ hasIcon }) => (hasIcon ? \"44px\" : \"17px\")};\n font-size: ${({ fontSize = \"s\" }) => `${typography.fontSize[fontSize]}px`};\n position: relative;\n z-index: 1;\n\n &:focus {\n padding-left: ${({ hasIcon }) => (hasIcon ? \"43px\" : \"16px\")};\n }\n`;\n\nexport const ClearButton = styled.button`\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${colors.baseColors.grey3};\n transition: color 0.2s ease;\n z-index: 3;\n\n &:hover {\n color: ${colors.baseColors.grey1};\n }\n\n &:focus {\n outline: 2px solid ${colors.baseColors.primaryPurple};\n outline-offset: 2px;\n border-radius: 4px;\n }\n`;\n\nexport const ClearIcon = styled.svg`\n width: 16px;\n height: 16px;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n`;\n\n","import { ChangeEvent, ReactNode } from \"react\";\nimport {\n SearchContainer,\n InputWrapper,\n IconWrapper,\n StyledInput,\n ClearButton,\n ClearIcon,\n} from \"./SearchInput.styles\";\nimport { FontSizeKey } from \"../../tokens/typography\";\n\nexport interface SearchInputProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n showClearButton?: boolean;\n icon?: ReactNode;\n width?: string | number;\n fontSize?: FontSizeKey;\n}\n\n/**\n * @description Shared search input component for IAM views\n */\nexport function SearchInput({\n value,\n onChange,\n placeholder = \"Search...\",\n showClearButton = false,\n icon,\n width = \"208px\",\n fontSize = \"s\",\n}: SearchInputProps) {\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.value);\n };\n\n const handleClear = () => {\n onChange(\"\");\n };\n\n const hasClearButton = showClearButton && !!value;\n const hasIcon = !!icon;\n\n return (\n <SearchContainer width={width}>\n <InputWrapper>\n {hasIcon && <IconWrapper>{icon}</IconWrapper>}\n <StyledInput\n type=\"text\"\n placeholder={placeholder}\n value={value}\n onChange={handleChange}\n autoComplete=\"off\"\n hasClearButton={hasClearButton}\n hasIcon={hasIcon}\n fontSize={fontSize}\n />\n {hasClearButton && (\n <ClearButton onClick={handleClear} type=\"button\" aria-label=\"Clear search\">\n <ClearIcon viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </ClearIcon>\n </ClearButton>\n )}\n </InputWrapper>\n </SearchContainer>\n );\n}\n\nexport default SearchInput;\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n children: React.ReactNode;\n}\n\nexport function TableElement({ children, ...rest }: TableProps) {\n return <StyledTable {...rest}>{children}</StyledTable>;\n}\n\nexport { TableElement as Table };\nexport default TableElement;\n\nconst StyledTable = styled.table`\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 4px;\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { FONT_SIZES, FONT_WEIGHTS } from \"../../tokens/typography\";\n\nexport interface TableHeaderProps\n extends React.ThHTMLAttributes<HTMLTableHeaderCellElement> {\n alignRight?: boolean;\n children: React.ReactNode;\n}\n\nexport function TableHeader({ alignRight, children, ...rest }: TableHeaderProps) {\n return (\n <StyledTableHeader alignRight={alignRight} {...rest}>\n {children}\n </StyledTableHeader>\n );\n}\n\nexport default TableHeader;\n\nconst StyledTableHeader = styled.th<{ alignRight?: boolean }>`\n padding-bottom: 12px;\n text-align: ${({ alignRight }) => (alignRight ? \"right\" : \"left\")};\n font-size: ${FONT_SIZES.xs}px;\n font-weight: ${FONT_WEIGHTS.bold};\n padding-left: ${({ alignRight }) => (alignRight ? \"0\" : \"24px\")};\n padding-right: ${({ alignRight }) => (alignRight ? \"60px\" : \"0\")};\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableDataCellElement> {\n children: React.ReactNode;\n colSpan?: number;\n}\n\nexport function TableCell({ children, colSpan, ...rest }: TableCellProps) {\n return (\n <StyledTableCell colSpan={colSpan} {...rest}>\n {children}\n </StyledTableCell>\n );\n}\n\nexport default TableCell;\n\nconst StyledTableCell = styled.td`\n\n`;\n\n","import styled from \"@emotion/styled\";\nimport React from \"react\";\nimport { colors } from \"../../tokens/colors\";\n\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n children: React.ReactNode;\n}\n\nexport interface TableRowWrapperProps {\n children: React.ReactNode;\n}\n\nexport function TableRow({ children, ...rest }: TableRowProps) {\n return <StyledTableRow {...rest}>{children}</StyledTableRow>;\n}\n\nexport default TableRow;\n\nconst StyledTableRow = styled.tr`\n /* Base row styling */\n`;\n\nexport const TableRowWrapper = styled.div`\n border-radius: 6px;\n border: 1px solid ${colors.baseColors.grey7};\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 24px;\n`;\n\n","import styled from \"@emotion/styled\";\nimport { colors, FONT_SIZES } from \"../../tokens\";\nimport { TableCell } from \"../../atoms/Table\";\n\nexport const CheckboxWrapper = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const ActionsWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n`;\n\nexport const AlignedTableCell = styled(TableCell)<{ alignRight?: boolean; isFirst?: boolean; isLast?: boolean }>`\n padding-top: 12px;\n padding-bottom: 12px;\n padding-left: ${({ alignRight }) => (alignRight ? \"0\" : \"24px\")};\n padding-right: ${({ alignRight }) => (alignRight ? \"60px\" : \"0\")};\n text-align: ${({ alignRight }) => (alignRight ? \"right\" : \"left\")};\n border: 1px solid ${colors.baseColors.grey7};\n border-right: ${({ isLast }) => (isLast ? `1px solid ${colors.baseColors.grey7}` : \"none\")};\n border-left: ${({ isFirst }) => (isFirst ? `1px solid ${colors.baseColors.grey7}` : \"none\")};\n ${({ isFirst }) => isFirst && `border-top-left-radius: 6px; border-bottom-left-radius: 6px;`}\n ${({ isLast }) => isLast && `border-top-right-radius: 6px; border-bottom-right-radius: 6px;`}\n`;\n\nexport const CellContent = styled.div<{ alignRight?: boolean; isLast?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: ${({ alignRight }) => (alignRight ? \"flex-end\" : \"flex-start\")};\n flex: ${({ alignRight }) => (alignRight ? \"0 0 auto\" : \"1\")};\n min-width: 0;\n`;\n\nexport const TableWrapper = styled.div`\n margin-top: 32px;\n`;\n\nexport const EmptyState = styled.div`\n padding: 24px;\n text-align: center;\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const EmptyHeader = styled.div`\n font-size: 26px;\n font-weight: 700;\n color: ${colors.baseColors.darkBlue1};\n`;\n\nexport const EmptySubheader = styled.div`\n font-size: 12px;\n font-weight: 500;\n color: ${colors.baseColors.grey3};\n`;\n\n","import React from \"react\";\nimport { TableElement, TableHeader, TableRow, TableCell, TableRowWrapper } from \"../../atoms/Table\";\nimport {\n CheckboxWrapper,\n ActionsWrapper,\n AlignedTableCell,\n CellContent,\n TableWrapper,\n EmptyState,\n EmptyHeader,\n EmptySubheader,\n} from \"./DataTable.styles\";\n\nexport interface TableColumn<T = any> {\n label: string;\n alignRight?: boolean;\n renderCell?: (row: T, index: number) => React.ReactNode;\n accessor?: keyof T | ((row: T) => React.ReactNode);\n}\n\nexport type TableRowLayout = \"aligned\" | \"spaced\";\n\nexport interface TableProps<T = any> {\n data: T[];\n columns: TableColumn<T>[];\n getRowKey?: (row: T, index: number) => string | number;\n emptyMessage?: string;\n emptyHeader?: string;\n emptySubheader?: string;\n showCheckboxes?: boolean;\n onSelectAll?: (selected: boolean) => void;\n onSelectRow?: (row: T, selected: boolean) => void;\n selectedRows?: Set<string | number>;\n renderActions?: (row: T, index: number) => React.ReactNode;\n rowLayout?: TableRowLayout;\n}\n\n/**\n * Helper function to get cell content from column definition\n */\nfunction getCellContent<T>(\n column: TableColumn<T>,\n row: T,\n rowIndex: number\n): React.ReactNode {\n if (column.renderCell) {\n return column.renderCell(row, rowIndex);\n }\n if (column.accessor) {\n if (typeof column.accessor === \"function\") {\n return column.accessor(row);\n }\n return String(row[column.accessor] ?? \"\");\n }\n return null;\n}\n\n/**\n * Calculate total number of columns including checkboxes and actions\n */\nfunction getTotalColumns<T>(\n columns: TableColumn<T>[],\n showCheckboxes: boolean,\n renderActions?: (row: T, index: number) => React.ReactNode\n): number {\n return columns.length + (showCheckboxes ? 1 : 0) + (renderActions ? 1 : 0);\n}\n\n/**\n * @description Generic data table component with dynamic columns and cell rendering\n */\nexport function Table<T = any>({\n data,\n columns,\n getRowKey,\n emptyMessage,\n emptyHeader,\n emptySubheader,\n showCheckboxes = false,\n onSelectAll,\n onSelectRow,\n selectedRows = new Set(),\n renderActions,\n rowLayout = \"aligned\",\n}: TableProps<T>) {\n const getKey = getRowKey || ((row: T, index: number) => index);\n const allSelected = data.length > 0 && data.every((row, idx) => selectedRows.has(getKey(row, idx)));\n const someSelected = data.some((row, idx) => selectedRows.has(getKey(row, idx)));\n const totalColumns = getTotalColumns(columns, showCheckboxes, renderActions);\n\n const handleSelectAll = (e: React.ChangeEvent<HTMLInputElement>) => {\n onSelectAll?.(e.target.checked);\n };\n\n const handleSelectRow = (row: T, e: React.ChangeEvent<HTMLInputElement>) => {\n onSelectRow?.(row, e.target.checked);\n };\n\n return (\n <TableWrapper>\n <TableElement>\n <thead>\n <TableRow>\n {showCheckboxes && (\n <TableHeader>\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(input) => {\n if (input) input.indeterminate = someSelected && !allSelected;\n }}\n onChange={handleSelectAll}\n aria-label=\"Select all rows\"\n />\n </TableHeader>\n )}\n {columns.map((column, index) => (\n <TableHeader key={index} alignRight={column.alignRight}>\n {column.label}\n </TableHeader>\n ))}\n {renderActions && <TableHeader alignRight={true}> </TableHeader>}\n </TableRow>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <TableRow>\n <TableCell colSpan={totalColumns}>\n <EmptyState>\n {emptyHeader ? (\n <>\n <EmptyHeader>{emptyHeader}</EmptyHeader>\n {emptySubheader && <EmptySubheader>{emptySubheader}</EmptySubheader>}\n </>\n ) : (\n <div>{emptyMessage || \"No data found\"}</div>\n )}\n </EmptyState>\n </TableCell>\n </TableRow>\n ) : (\n data.map((row, rowIndex) => {\n const rowKey = getKey(row, rowIndex);\n const isSelected = selectedRows.has(rowKey);\n\n if (rowLayout === \"spaced\") {\n return (\n <TableRow key={rowKey}>\n <TableCell colSpan={totalColumns}>\n <TableRowWrapper>\n {showCheckboxes && (\n <CheckboxWrapper>\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={(e) => handleSelectRow(row, e)}\n aria-label={`Select row ${rowIndex + 1}`}\n />\n </CheckboxWrapper>\n )}\n {columns.map((column, colIndex) => {\n const cellContent = getCellContent(column, row, rowIndex);\n const isLast = colIndex === columns.length - 1 && !renderActions;\n\n return (\n <CellContent key={colIndex} alignRight={column.alignRight} isLast={isLast}>\n {cellContent}\n </CellContent>\n );\n })}\n {renderActions && (\n <ActionsWrapper>\n {renderActions(row, rowIndex)}\n </ActionsWrapper>\n )}\n </TableRowWrapper>\n </TableCell>\n </TableRow>\n );\n } else {\n return (\n <TableRow key={rowKey}>\n {showCheckboxes && (\n <AlignedTableCell isFirst={true} isLast={totalColumns === 1}>\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={(e) => handleSelectRow(row, e)}\n aria-label={`Select row ${rowIndex + 1}`}\n />\n </AlignedTableCell>\n )}\n {columns.map((column, colIndex) => {\n const cellContent = getCellContent(column, row, rowIndex);\n const isFirst = !showCheckboxes && colIndex === 0;\n const isLast = !renderActions && colIndex === columns.length - 1;\n\n return (\n <AlignedTableCell key={colIndex} alignRight={column.alignRight} isFirst={isFirst} isLast={isLast}>\n {cellContent}\n </AlignedTableCell>\n );\n })}\n {renderActions && (\n <AlignedTableCell alignRight={true} isLast={true}>\n {renderActions(row, rowIndex)}\n </AlignedTableCell>\n )}\n </TableRow>\n );\n }\n })\n )}\n </tbody>\n </TableElement>\n </TableWrapper>\n );\n}\n\nexport default Table;\n\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import * as _emotion_styled from '@emotion/styled';
3
3
  import * as _emotion_react from '@emotion/react';
4
+ import * as _emotion_react_jsx_runtime from '@emotion/react/jsx-runtime';
4
5
 
5
6
  type VariantName = "primary" | "secondary" | "outline";
6
7
  declare enum Variant {
@@ -42,6 +43,7 @@ declare const Textarea: React.FC<TextareaProps>;
42
43
  type Typography = typeof typography;
43
44
  type FontWeight = (typeof FONT_WEIGHTS)[keyof typeof FONT_WEIGHTS];
44
45
  type FontSize = (typeof FONT_SIZES)[keyof typeof FONT_SIZES];
46
+ type FontSizeKey = keyof typeof FONT_SIZES;
45
47
  type Align = "left" | "center" | "right";
46
48
  /**
47
49
  * Typography tokens for the design system
@@ -90,8 +92,17 @@ declare const typography: {
90
92
  readonly relaxed: 1.75;
91
93
  };
92
94
  };
95
+ declare const FONT_SIZE_KEYS: {
96
+ readonly xxs: "xxs";
97
+ readonly xs: "xs";
98
+ readonly s: "s";
99
+ readonly m: "m";
100
+ readonly base: "base";
101
+ readonly lg: "lg";
102
+ readonly xl: "xl";
103
+ readonly "2xl": "2xl";
104
+ };
93
105
 
94
- type FontSizeKey = keyof typeof FONT_SIZES;
95
106
  interface TabProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "fontSize"> {
96
107
  children: React.ReactNode;
97
108
  selected?: boolean;
@@ -110,6 +121,38 @@ declare const HelperText: _emotion_styled.StyledComponent<{
110
121
  as?: React.ElementType;
111
122
  } & HelperTextProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
112
123
 
124
+ declare const USER_ROLES: {
125
+ readonly OWNER: "owner";
126
+ readonly EDITOR: "editor";
127
+ readonly VIEWER: "viewer";
128
+ readonly AUDITOR: "auditor";
129
+ };
130
+ declare const USER_STATUS: {
131
+ readonly INVITED: "invited";
132
+ };
133
+ interface GroupBadgeProps {
134
+ role: string;
135
+ status?: string;
136
+ children: React.ReactNode;
137
+ }
138
+ declare const getBadgeColor: (role: string, status?: string) => string;
139
+ /**
140
+ * @description Badge component for displaying user roles with dynamic colors
141
+ */
142
+ declare function GroupBadge({ role, status, children }: GroupBadgeProps): _emotion_react_jsx_runtime.JSX.Element;
143
+
144
+ interface UserAvatarProps {
145
+ initials?: string;
146
+ badgeColor?: string;
147
+ onClick?: () => void;
148
+ size?: "small" | "large" | number;
149
+ }
150
+ /**
151
+ * @description User avatar component that displays user initials. Supports both static (for tables) and clickable (for profile) variants.
152
+ * If no initials are provided, returns null (user doesn't exist yet, likely invited).
153
+ */
154
+ declare function UserAvatar({ initials, badgeColor, onClick, size }: UserAvatarProps): _emotion_react_jsx_runtime.JSX.Element | null;
155
+
113
156
  interface FormFieldProps extends Omit<InputProps, "id" | "onInput" | "error" | "warning"> {
114
157
  id: string;
115
158
  label: string;
@@ -132,6 +175,20 @@ interface FormFieldTextareaProps extends Omit<TextareaProps, "id" | "onInput" |
132
175
  }
133
176
  declare const FormFieldTextarea: React.FC<FormFieldTextareaProps>;
134
177
 
178
+ interface SearchInputProps {
179
+ value: string;
180
+ onChange: (value: string) => void;
181
+ placeholder?: string;
182
+ showClearButton?: boolean;
183
+ icon?: ReactNode;
184
+ width?: string | number;
185
+ fontSize?: FontSizeKey;
186
+ }
187
+ /**
188
+ * @description Shared search input component for IAM views
189
+ */
190
+ declare function SearchInput({ value, onChange, placeholder, showClearButton, icon, width, fontSize, }: SearchInputProps): _emotion_react_jsx_runtime.JSX.Element;
191
+
135
192
  /**
136
193
  * Color tokens for the design system
137
194
  */
@@ -139,6 +196,7 @@ declare const colors: {
139
196
  readonly baseColors: {
140
197
  readonly primaryGreen: "#7EE896";
141
198
  readonly primaryPurple: "#6D65DA";
199
+ readonly primaryBlue: "#55A3BD";
142
200
  readonly darkBlue1: "#12131B";
143
201
  readonly darkBlue2: "#2A2B33";
144
202
  readonly darkBlue3: "#02061D";
@@ -184,4 +242,57 @@ type TColor = string;
184
242
  */
185
243
  declare function getOpacity(hexColor: string, opacity: TOpacity): TColor;
186
244
 
187
- export { type Align, Button, type ButtonProps, type Colors, FONT_SIZES, FONT_WEIGHTS, type FontSize, type FontWeight, FormField, type FormFieldProps, FormFieldTextarea, type FormFieldTextareaProps, HelperText, type HelperTextProps, Input, type InputProps, Label, type LabelProps, type TColor, type TOpacity, Tab, type TabProps, Textarea, type TextareaProps, type Typography, Variant, colors, getOpacity, typography };
245
+ interface TableProps$1 extends React.TableHTMLAttributes<HTMLTableElement> {
246
+ children: React.ReactNode;
247
+ }
248
+ declare function TableElement({ children, ...rest }: TableProps$1): _emotion_react_jsx_runtime.JSX.Element;
249
+
250
+ interface TableHeaderProps extends React.ThHTMLAttributes<HTMLTableHeaderCellElement> {
251
+ alignRight?: boolean;
252
+ children: React.ReactNode;
253
+ }
254
+ declare function TableHeader({ alignRight, children, ...rest }: TableHeaderProps): _emotion_react_jsx_runtime.JSX.Element;
255
+
256
+ interface TableCellProps extends React.TdHTMLAttributes<HTMLTableDataCellElement> {
257
+ children: React.ReactNode;
258
+ colSpan?: number;
259
+ }
260
+ declare function TableCell({ children, colSpan, ...rest }: TableCellProps): _emotion_react_jsx_runtime.JSX.Element;
261
+
262
+ interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
263
+ children: React.ReactNode;
264
+ }
265
+ declare function TableRow({ children, ...rest }: TableRowProps): _emotion_react_jsx_runtime.JSX.Element;
266
+
267
+ declare const TableRowWrapper: _emotion_styled.StyledComponent<{
268
+ theme?: _emotion_react.Theme;
269
+ as?: React.ElementType;
270
+ }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
271
+
272
+ interface TableColumn<T = any> {
273
+ label: string;
274
+ alignRight?: boolean;
275
+ renderCell?: (row: T, index: number) => React.ReactNode;
276
+ accessor?: keyof T | ((row: T) => React.ReactNode);
277
+ }
278
+ type TableRowLayout = "aligned" | "spaced";
279
+ interface TableProps<T = any> {
280
+ data: T[];
281
+ columns: TableColumn<T>[];
282
+ getRowKey?: (row: T, index: number) => string | number;
283
+ emptyMessage?: string;
284
+ emptyHeader?: string;
285
+ emptySubheader?: string;
286
+ showCheckboxes?: boolean;
287
+ onSelectAll?: (selected: boolean) => void;
288
+ onSelectRow?: (row: T, selected: boolean) => void;
289
+ selectedRows?: Set<string | number>;
290
+ renderActions?: (row: T, index: number) => React.ReactNode;
291
+ rowLayout?: TableRowLayout;
292
+ }
293
+ /**
294
+ * @description Generic data table component with dynamic columns and cell rendering
295
+ */
296
+ declare function Table<T = any>({ data, columns, getRowKey, emptyMessage, emptyHeader, emptySubheader, showCheckboxes, onSelectAll, onSelectRow, selectedRows, renderActions, rowLayout, }: TableProps<T>): _emotion_react_jsx_runtime.JSX.Element;
297
+
298
+ export { type Align, GroupBadge as Badge, Button, type ButtonProps, type Colors, FONT_SIZES, FONT_SIZE_KEYS, FONT_WEIGHTS, type FontSize, type FontSizeKey, type FontWeight, FormField, type FormFieldProps, FormFieldTextarea, type FormFieldTextareaProps, GroupBadge, type GroupBadgeProps, HelperText, type HelperTextProps, Input, type InputProps, Label, type LabelProps, SearchInput, type SearchInputProps, type TColor, type TOpacity, Tab, type TabProps, Table, TableCell, type TableCellProps, type TableColumn, TableElement, type TableProps$1 as TableElementProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, TableRowWrapper, Textarea, type TextareaProps, type Typography, USER_ROLES, USER_STATUS, UserAvatar, type UserAvatarProps, Variant, type VariantName, colors, getBadgeColor, getOpacity, typography };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import * as _emotion_styled from '@emotion/styled';
3
3
  import * as _emotion_react from '@emotion/react';
4
+ import * as _emotion_react_jsx_runtime from '@emotion/react/jsx-runtime';
4
5
 
5
6
  type VariantName = "primary" | "secondary" | "outline";
6
7
  declare enum Variant {
@@ -42,6 +43,7 @@ declare const Textarea: React.FC<TextareaProps>;
42
43
  type Typography = typeof typography;
43
44
  type FontWeight = (typeof FONT_WEIGHTS)[keyof typeof FONT_WEIGHTS];
44
45
  type FontSize = (typeof FONT_SIZES)[keyof typeof FONT_SIZES];
46
+ type FontSizeKey = keyof typeof FONT_SIZES;
45
47
  type Align = "left" | "center" | "right";
46
48
  /**
47
49
  * Typography tokens for the design system
@@ -90,8 +92,17 @@ declare const typography: {
90
92
  readonly relaxed: 1.75;
91
93
  };
92
94
  };
95
+ declare const FONT_SIZE_KEYS: {
96
+ readonly xxs: "xxs";
97
+ readonly xs: "xs";
98
+ readonly s: "s";
99
+ readonly m: "m";
100
+ readonly base: "base";
101
+ readonly lg: "lg";
102
+ readonly xl: "xl";
103
+ readonly "2xl": "2xl";
104
+ };
93
105
 
94
- type FontSizeKey = keyof typeof FONT_SIZES;
95
106
  interface TabProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "fontSize"> {
96
107
  children: React.ReactNode;
97
108
  selected?: boolean;
@@ -110,6 +121,38 @@ declare const HelperText: _emotion_styled.StyledComponent<{
110
121
  as?: React.ElementType;
111
122
  } & HelperTextProps, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
112
123
 
124
+ declare const USER_ROLES: {
125
+ readonly OWNER: "owner";
126
+ readonly EDITOR: "editor";
127
+ readonly VIEWER: "viewer";
128
+ readonly AUDITOR: "auditor";
129
+ };
130
+ declare const USER_STATUS: {
131
+ readonly INVITED: "invited";
132
+ };
133
+ interface GroupBadgeProps {
134
+ role: string;
135
+ status?: string;
136
+ children: React.ReactNode;
137
+ }
138
+ declare const getBadgeColor: (role: string, status?: string) => string;
139
+ /**
140
+ * @description Badge component for displaying user roles with dynamic colors
141
+ */
142
+ declare function GroupBadge({ role, status, children }: GroupBadgeProps): _emotion_react_jsx_runtime.JSX.Element;
143
+
144
+ interface UserAvatarProps {
145
+ initials?: string;
146
+ badgeColor?: string;
147
+ onClick?: () => void;
148
+ size?: "small" | "large" | number;
149
+ }
150
+ /**
151
+ * @description User avatar component that displays user initials. Supports both static (for tables) and clickable (for profile) variants.
152
+ * If no initials are provided, returns null (user doesn't exist yet, likely invited).
153
+ */
154
+ declare function UserAvatar({ initials, badgeColor, onClick, size }: UserAvatarProps): _emotion_react_jsx_runtime.JSX.Element | null;
155
+
113
156
  interface FormFieldProps extends Omit<InputProps, "id" | "onInput" | "error" | "warning"> {
114
157
  id: string;
115
158
  label: string;
@@ -132,6 +175,20 @@ interface FormFieldTextareaProps extends Omit<TextareaProps, "id" | "onInput" |
132
175
  }
133
176
  declare const FormFieldTextarea: React.FC<FormFieldTextareaProps>;
134
177
 
178
+ interface SearchInputProps {
179
+ value: string;
180
+ onChange: (value: string) => void;
181
+ placeholder?: string;
182
+ showClearButton?: boolean;
183
+ icon?: ReactNode;
184
+ width?: string | number;
185
+ fontSize?: FontSizeKey;
186
+ }
187
+ /**
188
+ * @description Shared search input component for IAM views
189
+ */
190
+ declare function SearchInput({ value, onChange, placeholder, showClearButton, icon, width, fontSize, }: SearchInputProps): _emotion_react_jsx_runtime.JSX.Element;
191
+
135
192
  /**
136
193
  * Color tokens for the design system
137
194
  */
@@ -139,6 +196,7 @@ declare const colors: {
139
196
  readonly baseColors: {
140
197
  readonly primaryGreen: "#7EE896";
141
198
  readonly primaryPurple: "#6D65DA";
199
+ readonly primaryBlue: "#55A3BD";
142
200
  readonly darkBlue1: "#12131B";
143
201
  readonly darkBlue2: "#2A2B33";
144
202
  readonly darkBlue3: "#02061D";
@@ -184,4 +242,57 @@ type TColor = string;
184
242
  */
185
243
  declare function getOpacity(hexColor: string, opacity: TOpacity): TColor;
186
244
 
187
- export { type Align, Button, type ButtonProps, type Colors, FONT_SIZES, FONT_WEIGHTS, type FontSize, type FontWeight, FormField, type FormFieldProps, FormFieldTextarea, type FormFieldTextareaProps, HelperText, type HelperTextProps, Input, type InputProps, Label, type LabelProps, type TColor, type TOpacity, Tab, type TabProps, Textarea, type TextareaProps, type Typography, Variant, colors, getOpacity, typography };
245
+ interface TableProps$1 extends React.TableHTMLAttributes<HTMLTableElement> {
246
+ children: React.ReactNode;
247
+ }
248
+ declare function TableElement({ children, ...rest }: TableProps$1): _emotion_react_jsx_runtime.JSX.Element;
249
+
250
+ interface TableHeaderProps extends React.ThHTMLAttributes<HTMLTableHeaderCellElement> {
251
+ alignRight?: boolean;
252
+ children: React.ReactNode;
253
+ }
254
+ declare function TableHeader({ alignRight, children, ...rest }: TableHeaderProps): _emotion_react_jsx_runtime.JSX.Element;
255
+
256
+ interface TableCellProps extends React.TdHTMLAttributes<HTMLTableDataCellElement> {
257
+ children: React.ReactNode;
258
+ colSpan?: number;
259
+ }
260
+ declare function TableCell({ children, colSpan, ...rest }: TableCellProps): _emotion_react_jsx_runtime.JSX.Element;
261
+
262
+ interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
263
+ children: React.ReactNode;
264
+ }
265
+ declare function TableRow({ children, ...rest }: TableRowProps): _emotion_react_jsx_runtime.JSX.Element;
266
+
267
+ declare const TableRowWrapper: _emotion_styled.StyledComponent<{
268
+ theme?: _emotion_react.Theme;
269
+ as?: React.ElementType;
270
+ }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
271
+
272
+ interface TableColumn<T = any> {
273
+ label: string;
274
+ alignRight?: boolean;
275
+ renderCell?: (row: T, index: number) => React.ReactNode;
276
+ accessor?: keyof T | ((row: T) => React.ReactNode);
277
+ }
278
+ type TableRowLayout = "aligned" | "spaced";
279
+ interface TableProps<T = any> {
280
+ data: T[];
281
+ columns: TableColumn<T>[];
282
+ getRowKey?: (row: T, index: number) => string | number;
283
+ emptyMessage?: string;
284
+ emptyHeader?: string;
285
+ emptySubheader?: string;
286
+ showCheckboxes?: boolean;
287
+ onSelectAll?: (selected: boolean) => void;
288
+ onSelectRow?: (row: T, selected: boolean) => void;
289
+ selectedRows?: Set<string | number>;
290
+ renderActions?: (row: T, index: number) => React.ReactNode;
291
+ rowLayout?: TableRowLayout;
292
+ }
293
+ /**
294
+ * @description Generic data table component with dynamic columns and cell rendering
295
+ */
296
+ declare function Table<T = any>({ data, columns, getRowKey, emptyMessage, emptyHeader, emptySubheader, showCheckboxes, onSelectAll, onSelectRow, selectedRows, renderActions, rowLayout, }: TableProps<T>): _emotion_react_jsx_runtime.JSX.Element;
297
+
298
+ export { type Align, GroupBadge as Badge, Button, type ButtonProps, type Colors, FONT_SIZES, FONT_SIZE_KEYS, FONT_WEIGHTS, type FontSize, type FontSizeKey, type FontWeight, FormField, type FormFieldProps, FormFieldTextarea, type FormFieldTextareaProps, GroupBadge, type GroupBadgeProps, HelperText, type HelperTextProps, Input, type InputProps, Label, type LabelProps, SearchInput, type SearchInputProps, type TColor, type TOpacity, Tab, type TabProps, Table, TableCell, type TableCellProps, type TableColumn, TableElement, type TableProps$1 as TableElementProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, TableRowWrapper, Textarea, type TextareaProps, type Typography, USER_ROLES, USER_STATUS, UserAvatar, type UserAvatarProps, Variant, type VariantName, colors, getBadgeColor, getOpacity, typography };