@datatechsolutions/ui 3.4.0 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astrlabe/index.js +107 -107
- package/dist/astrlabe/index.mjs +3 -3
- package/dist/astrlabe/workflow-canvas.js +3 -3
- package/dist/astrlabe/workflow-canvas.mjs +2 -2
- package/dist/{chunk-IDEM3DYF.mjs → chunk-2TBNOQ7M.mjs} +3 -3
- package/dist/{chunk-IDEM3DYF.mjs.map → chunk-2TBNOQ7M.mjs.map} +1 -1
- package/dist/{chunk-45QAUEYT.js → chunk-2UMDWOUY.js} +4 -4
- package/dist/{chunk-45QAUEYT.js.map → chunk-2UMDWOUY.js.map} +1 -1
- package/dist/{chunk-NAFWHJCM.mjs → chunk-37ZLBCJF.mjs} +6 -6
- package/dist/{chunk-NAFWHJCM.mjs.map → chunk-37ZLBCJF.mjs.map} +1 -1
- package/dist/{chunk-MO5FBVV3.js → chunk-5AVO5DJO.js} +62 -62
- package/dist/{chunk-MO5FBVV3.js.map → chunk-5AVO5DJO.js.map} +1 -1
- package/dist/{chunk-X3GW7UPN.mjs → chunk-7OZ4MVEF.mjs} +4 -4
- package/dist/{chunk-X3GW7UPN.mjs.map → chunk-7OZ4MVEF.mjs.map} +1 -1
- package/dist/{chunk-SQ4KGLBZ.mjs → chunk-CDYNTHUE.mjs} +41 -7
- package/dist/chunk-CDYNTHUE.mjs.map +1 -0
- package/dist/{chunk-ZKSDDFHG.mjs → chunk-CJGNEALB.mjs} +4 -4
- package/dist/{chunk-ZKSDDFHG.mjs.map → chunk-CJGNEALB.mjs.map} +1 -1
- package/dist/{chunk-4GDWGWHY.mjs → chunk-CP5QXRXA.mjs} +4 -4
- package/dist/{chunk-4GDWGWHY.mjs.map → chunk-CP5QXRXA.mjs.map} +1 -1
- package/dist/{chunk-SEYUYGER.mjs → chunk-EGXB3WXT.mjs} +12 -11
- package/dist/chunk-EGXB3WXT.mjs.map +1 -0
- package/dist/{chunk-UJVDI66K.js → chunk-EI6FIA45.js} +16 -16
- package/dist/{chunk-UJVDI66K.js.map → chunk-EI6FIA45.js.map} +1 -1
- package/dist/{chunk-AGGOHPMZ.mjs → chunk-EUXHJMGC.mjs} +138 -108
- package/dist/chunk-EUXHJMGC.mjs.map +1 -0
- package/dist/{chunk-M7KSEUZR.js → chunk-F5UDX6JA.js} +74 -74
- package/dist/{chunk-M7KSEUZR.js.map → chunk-F5UDX6JA.js.map} +1 -1
- package/dist/{chunk-6MBWKOPF.js → chunk-HVDDCBQ2.js} +33 -33
- package/dist/{chunk-6MBWKOPF.js.map → chunk-HVDDCBQ2.js.map} +1 -1
- package/dist/{chunk-FSBR4RCK.js → chunk-K4M4B6ME.js} +138 -108
- package/dist/chunk-K4M4B6ME.js.map +1 -0
- package/dist/{chunk-4ICEQJH4.js → chunk-KIBOX3UQ.js} +53 -53
- package/dist/{chunk-4ICEQJH4.js.map → chunk-KIBOX3UQ.js.map} +1 -1
- package/dist/{chunk-NCLZKVJK.js → chunk-KRPSTXN5.js} +9 -9
- package/dist/{chunk-NCLZKVJK.js.map → chunk-KRPSTXN5.js.map} +1 -1
- package/dist/{chunk-NVQWHJQH.mjs → chunk-L5O4NWQO.mjs} +3 -3
- package/dist/{chunk-NVQWHJQH.mjs.map → chunk-L5O4NWQO.mjs.map} +1 -1
- package/dist/{chunk-Y2AYFG4E.js → chunk-MT4FJRMD.js} +4 -4
- package/dist/{chunk-Y2AYFG4E.js.map → chunk-MT4FJRMD.js.map} +1 -1
- package/dist/{chunk-CF7GOUBQ.js → chunk-OWJIKCR2.js} +13 -13
- package/dist/{chunk-CF7GOUBQ.js.map → chunk-OWJIKCR2.js.map} +1 -1
- package/dist/{chunk-RFRXS4PC.mjs → chunk-PFHXKWFT.mjs} +3 -3
- package/dist/{chunk-RFRXS4PC.mjs.map → chunk-PFHXKWFT.mjs.map} +1 -1
- package/dist/{chunk-BW67WFHT.mjs → chunk-PI2C3S6A.mjs} +3 -3
- package/dist/{chunk-BW67WFHT.mjs.map → chunk-PI2C3S6A.mjs.map} +1 -1
- package/dist/{chunk-ERCDMBRT.js → chunk-PYQLY2RH.js} +168 -167
- package/dist/chunk-PYQLY2RH.js.map +1 -0
- package/dist/{chunk-UE2RDQIK.js → chunk-QIUVK4BI.js} +77 -77
- package/dist/{chunk-UE2RDQIK.js.map → chunk-QIUVK4BI.js.map} +1 -1
- package/dist/{chunk-RLVOG5OQ.mjs → chunk-R3Q5RXXO.mjs} +3 -3
- package/dist/{chunk-RLVOG5OQ.mjs.map → chunk-R3Q5RXXO.mjs.map} +1 -1
- package/dist/{chunk-QBFE7ABE.mjs → chunk-R6O57NTJ.mjs} +6 -6
- package/dist/{chunk-QBFE7ABE.mjs.map → chunk-R6O57NTJ.mjs.map} +1 -1
- package/dist/{chunk-TUQLZ4QD.js → chunk-RQBTLFYH.js} +5 -5
- package/dist/{chunk-TUQLZ4QD.js.map → chunk-RQBTLFYH.js.map} +1 -1
- package/dist/{chunk-YV7F7IXG.js → chunk-SFFSXC5E.js} +36 -36
- package/dist/{chunk-YV7F7IXG.js.map → chunk-SFFSXC5E.js.map} +1 -1
- package/dist/{chunk-RLLP7VQJ.js → chunk-U6XA2OYE.js} +63 -29
- package/dist/chunk-U6XA2OYE.js.map +1 -0
- package/dist/{chunk-CUWPLPVY.mjs → chunk-ULEPJXTN.mjs} +3 -3
- package/dist/{chunk-CUWPLPVY.mjs.map → chunk-ULEPJXTN.mjs.map} +1 -1
- package/dist/{chunk-PGVZKMOA.js → chunk-VMIAMBCP.js} +39 -39
- package/dist/{chunk-PGVZKMOA.js.map → chunk-VMIAMBCP.js.map} +1 -1
- package/dist/{chunk-VV6SYMPM.mjs → chunk-WKCR4KVQ.mjs} +3 -3
- package/dist/{chunk-VV6SYMPM.mjs.map → chunk-WKCR4KVQ.mjs.map} +1 -1
- package/dist/{chunk-AL73YAV4.mjs → chunk-YV2SE5LS.mjs} +3 -3
- package/dist/{chunk-AL73YAV4.mjs.map → chunk-YV2SE5LS.mjs.map} +1 -1
- package/dist/index.d.mts +63 -16
- package/dist/index.d.ts +63 -16
- package/dist/index.js +704 -704
- package/dist/index.mjs +1 -1
- package/dist/platform/admin/index.js +10 -10
- package/dist/platform/admin/index.mjs +4 -4
- package/dist/platform/agents-workspace.js +6 -6
- package/dist/platform/agents-workspace.mjs +5 -5
- package/dist/platform/app-shell.js +3 -3
- package/dist/platform/app-shell.mjs +2 -2
- package/dist/platform/auth/index.js +27 -27
- package/dist/platform/auth/index.mjs +4 -4
- package/dist/platform/billing/index.js +3 -3
- package/dist/platform/billing/index.mjs +2 -2
- package/dist/platform/impersonation/index.js +3 -3
- package/dist/platform/impersonation/index.mjs +2 -2
- package/dist/platform/index.d.mts +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +82 -82
- package/dist/platform/index.mjs +18 -18
- package/dist/platform/pages/index.d.mts +8 -0
- package/dist/platform/pages/index.d.ts +8 -0
- package/dist/platform/pages/index.js +317 -201
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +143 -27
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +7 -7
- package/dist/platform/settings/index.mjs +6 -6
- package/dist/platform/workflow-canvas-shell.js +4 -4
- package/dist/platform/workflow-canvas-shell.mjs +3 -3
- package/package.json +1 -1
- package/dist/chunk-AGGOHPMZ.mjs.map +0 -1
- package/dist/chunk-ERCDMBRT.js.map +0 -1
- package/dist/chunk-FSBR4RCK.js.map +0 -1
- package/dist/chunk-RLLP7VQJ.js.map +0 -1
- package/dist/chunk-SEYUYGER.mjs.map +0 -1
- package/dist/chunk-SQ4KGLBZ.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { Button } from './chunk-
|
|
2
|
+
import { Button } from './chunk-EUXHJMGC.mjs';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
function OtpInput({
|
|
@@ -138,5 +138,5 @@ function SocialLoginButtons({
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
export { AuthLayout, BackupCodeGrid, OtpInput, PasswordStrengthMeter, SocialLoginButtons };
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-YV2SE5LS.mjs.map
|
|
142
|
+
//# sourceMappingURL=chunk-YV2SE5LS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/platform/auth/components.tsx"],"names":[],"mappings":";;;AAyBO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,MAAA,GAAS;AACX,CAAA,EAAkB;AAChB,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+C;AACnE,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,MAAM,CAAA;AACtE,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,MAAA,IAAU,UAAA,EAAY;AAC5C,MAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,MAAA;AAAA,QACL,SAAA,EAAU,SAAA;AAAA,QACV,OAAA,EAAQ,QAAA;AAAA,QACR,SAAA,EAAW,MAAA;AAAA,QACX,KAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,QAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA,EAAW,4JACT,KAAA,GACI,iEAAA,GACA,+DACN,CAAA,CAAA,EAAI,QAAA,GAAW,kCAAkC,EAAE,CAAA,CAAA;AAAA,QACnD,cAAA,EAAc,CAAC,CAAC;AAAA;AAAA,KAClB;AAAA,IACC,KAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sDAAsD,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAE7E,CAAA;AAEJ;AAUO,SAAS,qBAAA,CAAsB;AAAA,EACpC,QAAA;AAAA,EACA,gBAAA,GAAmB;AACrB,CAAA,EAA+B;AAC7B,EAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,QAAA,CAAS,MAAA,GAAS,CAAC,CAAC,CAAA;AAC5D,EAAA,MAAM,SAAS,CAAC,YAAA,EAAc,eAAA,EAAiB,eAAA,EAAiB,eAAe,cAAc,CAAA;AAC7F,EAAA,MAAM,SAAS,CAAC,WAAA,EAAa,MAAA,EAAQ,MAAA,EAAQ,UAAU,aAAa,CAAA;AAEpE,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AAEtB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,KAAA,qBAC7B,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,6CACT,KAAA,IAAS,QAAA,GAAW,IAAI,MAAA,CAAO,QAAQ,IAAI,8BAC7C,CAAA;AAAA,OAAA;AAAA,MAHK;AAAA,KAKR,CAAA,EACH,CAAA;AAAA,IACC,oCACC,GAAA,CAAC,GAAA,EAAA,EAAE,WAAU,0CAAA,EAA4C,QAAA,EAAA,MAAA,CAAO,QAAQ,CAAA,EAAE;AAAA,GAAA,EAE9E,CAAA;AAEJ;AASO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,QAAA,GAAW,OAAM,EAAwB;AAC/E,EAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAU,wBAAA,EACZ,gBAAM,GAAA,CAAI,CAAC,MAAM,KAAA,qBAChB,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAU,2HAAA;AAAA,MAET,qBAAW,IAAA,GAAO;AAAA,KAAA;AAAA,IAHd;AAAA,GAKR,CAAA,EACH,CAAA;AAEJ;AASO,SAAS,UAAA,CAAW,EAAE,QAAA,EAAS,EAAoB;AACxD,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EACH,CAAA;AAEJ;AAWA,SAAS,UAAA,GAAa;AACpB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,SAAQ,WAAA,EACxC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,mHAAA,EAAoH,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,oBAC3I,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,uIAAA,EAAwI,MAAK,SAAA,EAAU,CAAA;AAAA,oBAC/J,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+HAAA,EAAgI,MAAK,SAAA,EAAU,CAAA;AAAA,oBACvJ,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,qIAAA,EAAsI,MAAK,SAAA,EAAU;AAAA,GAAA,EAC/J,CAAA;AAEJ;AAEA,SAAS,UAAA,GAAa;AACpB,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EAAiD,IAAA,EAAK,cAAA,EAAe,OAAA,EAAQ,WAAA,EAC1F,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2pBAAA,EAA4pB,CAAA,EACtqB,CAAA;AAEJ;AAEA,SAAS,aAAA,GAAgB;AACvB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,SAAQ,WAAA,EACxC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,GAAA,EAAI,OAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,oBACxD,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,oBACzD,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,GAAA,EAAI,CAAA,EAAE,IAAA,EAAK,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,oBACzD,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,IAAA,EAAK,CAAA,EAAE,IAAA,EAAK,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU;AAAA,GAAA,EAC5D,CAAA;AAEJ;AAEA,SAAS,SAAA,GAAY;AACnB,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EAAiD,IAAA,EAAK,cAAA,EAAe,OAAA,EAAQ,WAAA,EAC1F,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2TAAA,EAA4T,CAAA,EACtU,CAAA;AAEJ;AAEA,SAAS,UAAA,GAAa;AACpB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,SAAQ,WAAA,EACxC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6qBAAA,EAA8qB,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,oBACrsB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2MAAA,EAA4M,MAAK,SAAA,EAAU,CAAA;AAAA,oBACnO,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,qMAAA,EAAsM,MAAK,SAAA,EAAU;AAAA,GAAA,EAC/N,CAAA;AAEJ;AAEA,SAAS,WAAA,GAAc;AACrB,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,OAAA,EAAQ,WAAA,EACxC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,8jCAAA,EAA+jC,IAAA,EAAK,SAAA,EAAU,CAAA,EACxlC,CAAA;AAEJ;AAEA,IAAM,eAAA,GAA6E;AAAA,EACjF,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,EAAU,MAAM,UAAA,EAAW;AAAA,EAC5C,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,EAAU,MAAM,UAAA,EAAW;AAAA,EAC5C,SAAA,EAAW,EAAE,KAAA,EAAO,WAAA,EAAa,MAAM,aAAA,EAAc;AAAA,EACrD,KAAA,EAAO,EAAE,KAAA,EAAO,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,EACzC,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAA,EAAU,MAAM,UAAA,EAAW;AAAA,EAC5C,OAAA,EAAS,EAAE,KAAA,EAAO,SAAA,EAAW,MAAM,WAAA;AACrC,CAAA;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC,SAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAA4B;AAC1B,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,yBACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,KAAa;AAC3B,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,gBAAgB,QAAQ,CAAA;AAChD,IAAA,uBACE,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAM,gBAAA;AAAA,QACN,IAAA,EAAK,IAAA;AAAA,QACL,SAAA,EAAS,IAAA;AAAA,QACT,OAAA,EAAS,MAAM,eAAA,CAAgB,QAAQ,CAAA;AAAA,QACvC,QAAA,EAAU,QAAA,IAAa,OAAA,IAAW,IAAA,IAAQ,OAAA,KAAY,QAAA;AAAA,QACtD,SAAS,OAAA,KAAY,QAAA;AAAA,QAEpB,QAAA,EAAA;AAAA,UAAA,OAAA,KAAY,QAAA,wBAAa,IAAA,EAAA,EAAK,CAAA;AAAA,UAC9B;AAAA;AAAA,OAAA;AAAA,MAVI;AAAA,KAWP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ","file":"chunk-AL73YAV4.mjs","sourcesContent":["import React, { type ReactNode } from 'react'\nimport { Button } from '@ui/index'\n\n// =============================================================================\n// Stub UI components for windsock auth flows\n// These components are not exported by @datatechsolutions/ui and are defined\n// locally with minimal implementations.\n// =============================================================================\n\n// ── SocialProvider type ─────────────────────────────────────────────────────\n\nexport type SocialProvider = 'google' | 'github' | 'discord' | 'microsoft' | 'apple' | 'amazon'\n\n// ── OtpInput ────────────────────────────────────────────────────────────────\n\nexport interface OtpInputProps {\n value: string\n onChange: (value: string) => void\n onComplete?: (code: string) => void\n error?: string\n disabled?: boolean\n autoFocus?: boolean\n length?: number\n}\n\nexport function OtpInput({\n value,\n onChange,\n onComplete,\n error,\n disabled = false,\n autoFocus = false,\n length = 6,\n}: OtpInputProps) {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value.replace(/\\D/g, '').slice(0, length)\n onChange(newValue)\n if (newValue.length === length && onComplete) {\n onComplete(newValue)\n }\n }\n\n return (\n <div className=\"space-y-1\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={length}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n autoFocus={autoFocus}\n className={`w-full rounded-xl border px-4 py-3 text-center font-mono text-2xl tracking-[0.5em] transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 ${\n error\n ? 'border-red-500 bg-red-50 dark:border-red-400 dark:bg-red-900/20'\n : 'border-gray-300 bg-white dark:border-white/20 dark:bg-white/5'\n } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n aria-invalid={!!error}\n />\n {error && (\n <p className=\"text-xs text-red-600 dark:text-red-400 text-center\">{error}</p>\n )}\n </div>\n )\n}\n\n// ── PasswordStrengthMeter ───────────────────────────────────────────────────\n\nexport interface PasswordStrengthMeterProps {\n password: string\n policy?: unknown\n showRequirements?: boolean\n}\n\nexport function PasswordStrengthMeter({\n password,\n showRequirements = false,\n}: PasswordStrengthMeterProps) {\n const strength = Math.min(4, Math.floor(password.length / 3))\n const colors = ['bg-red-500', 'bg-orange-500', 'bg-yellow-500', 'bg-lime-500', 'bg-green-500']\n const labels = ['Very weak', 'Weak', 'Fair', 'Strong', 'Very strong']\n\n if (!password) return null\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex gap-1\">\n {Array.from({ length: 4 }, (_, index) => (\n <div\n key={index}\n className={`h-1 flex-1 rounded-full transition-colors ${\n index <= strength - 1 ? colors[strength] : 'bg-gray-200 dark:bg-white/10'\n }`}\n />\n ))}\n </div>\n {showRequirements && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400\">{labels[strength]}</p>\n )}\n </div>\n )\n}\n\n// ── BackupCodeGrid ──────────────────────────────────────────────────────────\n\nexport interface BackupCodeGridProps {\n codes: string[]\n revealed?: boolean\n}\n\nexport function BackupCodeGrid({ codes, revealed = false }: BackupCodeGridProps) {\n return (\n <div className=\"grid grid-cols-2 gap-2\">\n {codes.map((code, index) => (\n <div\n key={index}\n className=\"rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 text-center font-mono text-sm dark:border-white/10 dark:bg-white/5\"\n >\n {revealed ? code : '\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022'}\n </div>\n ))}\n </div>\n )\n}\n\n// ── AuthLayout ──────────────────────────────────────────────────────────────\n\nexport interface AuthLayoutProps {\n children: ReactNode\n heroPanel?: unknown\n}\n\nexport function AuthLayout({ children }: AuthLayoutProps) {\n return (\n <div className=\"w-full max-w-md mx-auto\">\n {children}\n </div>\n )\n}\n\n// ── SocialLoginButtons ──────────────────────────────────────────────────────\n\nexport interface SocialLoginButtonsProps {\n providers: SocialProvider[]\n onProviderClick: (provider: SocialProvider) => void\n loading?: SocialProvider | null\n disabled?: boolean\n}\n\nfunction GoogleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z\" fill=\"#4285F4\" />\n <path d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\" fill=\"#34A853\" />\n <path d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\" fill=\"#FBBC05\" />\n <path d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" fill=\"#EA4335\" />\n </svg>\n )\n}\n\nfunction GitHubIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z\" />\n </svg>\n )\n}\n\nfunction MicrosoftIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </svg>\n )\n}\n\nfunction AppleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />\n </svg>\n )\n}\n\nfunction AmazonIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M13.958 10.09c0 1.232.029 2.256-.591 3.351-.502.891-1.301 1.438-2.186 1.438-1.214 0-1.922-.924-1.922-2.292 0-2.692 2.415-3.182 4.7-3.182v.685zm3.186 7.705a.66.66 0 0 1-.753.077c-1.06-.876-1.25-1.283-1.828-2.119-1.748 1.783-2.986 2.317-5.249 2.317-2.681 0-4.768-1.653-4.768-4.96 0-2.583 1.4-4.34 3.392-5.2 1.727-.753 4.14-.886 5.98-1.094v-.408c0-.748.058-1.634-.383-2.28-.383-.579-1.117-.816-1.765-.816-1.2 0-2.266.615-2.527 1.89a.556.556 0 0 1-.481.482l-2.7-.291c-.224-.05-.474-.231-.41-.574C6.41 1.62 9.647.5 12.564.5c1.476 0 3.406.393 4.573 1.51 1.476 1.38 1.336 3.224 1.336 5.229v4.736c0 1.423.59 2.047 1.145 2.816.196.275.24.604-.01.807-.626.524-1.74 1.499-2.352 2.044l-.112.062z\" fill=\"#FF9900\" />\n <path d=\"M21.558 18.494c-1.94 1.432-4.753 2.195-7.178 2.195-3.396 0-6.453-1.255-8.765-3.344-.182-.164-.02-.389.199-.261 2.497 1.453 5.584 2.328 8.773 2.328 2.152 0 4.517-.446 6.694-1.37.328-.14.603.216.277.452z\" fill=\"#FF9900\" />\n <path d=\"M22.323 17.168c-.247-.317-1.636-.15-2.261-.076-.19.022-.219-.142-.048-.261 1.107-.777 2.923-.553 3.134-.293.212.264-.055 2.087-1.095 2.959-.16.134-.312.063-.241-.114.234-.583.758-1.899.511-2.215z\" fill=\"#FF9900\" />\n </svg>\n )\n}\n\nfunction DiscordIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\" fill=\"#5865F2\" />\n </svg>\n )\n}\n\nconst PROVIDER_CONFIG: Record<SocialProvider, { label: string; Icon: React.FC }> = {\n google: { label: 'Google', Icon: GoogleIcon },\n github: { label: 'GitHub', Icon: GitHubIcon },\n microsoft: { label: 'Microsoft', Icon: MicrosoftIcon },\n apple: { label: 'Apple', Icon: AppleIcon },\n amazon: { label: 'Amazon', Icon: AmazonIcon },\n discord: { label: 'Discord', Icon: DiscordIcon },\n}\n\nexport function SocialLoginButtons({\n providers,\n onProviderClick,\n loading,\n disabled = false,\n}: SocialLoginButtonsProps) {\n return (\n <div className=\"flex flex-col gap-2.5\">\n {providers.map((provider) => {\n const { label, Icon } = PROVIDER_CONFIG[provider]\n return (\n <Button\n key={provider}\n type=\"button\"\n color=\"ios-glass-blue\"\n size=\"lg\"\n fullWidth\n onClick={() => onProviderClick(provider)}\n disabled={disabled || (loading != null && loading !== provider)}\n loading={loading === provider}\n >\n {loading !== provider && <Icon />}\n {label}\n </Button>\n )\n })}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/platform/auth/components.tsx"],"names":[],"mappings":"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","file":"chunk-YV2SE5LS.mjs","sourcesContent":["import React, { type ReactNode } from 'react'\nimport { Button } from '@ui/index'\n\n// =============================================================================\n// Stub UI components for windsock auth flows\n// These components are not exported by @datatechsolutions/ui and are defined\n// locally with minimal implementations.\n// =============================================================================\n\n// ── SocialProvider type ─────────────────────────────────────────────────────\n\nexport type SocialProvider = 'google' | 'github' | 'discord' | 'microsoft' | 'apple' | 'amazon'\n\n// ── OtpInput ────────────────────────────────────────────────────────────────\n\nexport interface OtpInputProps {\n value: string\n onChange: (value: string) => void\n onComplete?: (code: string) => void\n error?: string\n disabled?: boolean\n autoFocus?: boolean\n length?: number\n}\n\nexport function OtpInput({\n value,\n onChange,\n onComplete,\n error,\n disabled = false,\n autoFocus = false,\n length = 6,\n}: OtpInputProps) {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value.replace(/\\D/g, '').slice(0, length)\n onChange(newValue)\n if (newValue.length === length && onComplete) {\n onComplete(newValue)\n }\n }\n\n return (\n <div className=\"space-y-1\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={length}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n autoFocus={autoFocus}\n className={`w-full rounded-xl border px-4 py-3 text-center font-mono text-2xl tracking-[0.5em] transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 ${\n error\n ? 'border-red-500 bg-red-50 dark:border-red-400 dark:bg-red-900/20'\n : 'border-gray-300 bg-white dark:border-white/20 dark:bg-white/5'\n } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n aria-invalid={!!error}\n />\n {error && (\n <p className=\"text-xs text-red-600 dark:text-red-400 text-center\">{error}</p>\n )}\n </div>\n )\n}\n\n// ── PasswordStrengthMeter ───────────────────────────────────────────────────\n\nexport interface PasswordStrengthMeterProps {\n password: string\n policy?: unknown\n showRequirements?: boolean\n}\n\nexport function PasswordStrengthMeter({\n password,\n showRequirements = false,\n}: PasswordStrengthMeterProps) {\n const strength = Math.min(4, Math.floor(password.length / 3))\n const colors = ['bg-red-500', 'bg-orange-500', 'bg-yellow-500', 'bg-lime-500', 'bg-green-500']\n const labels = ['Very weak', 'Weak', 'Fair', 'Strong', 'Very strong']\n\n if (!password) return null\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex gap-1\">\n {Array.from({ length: 4 }, (_, index) => (\n <div\n key={index}\n className={`h-1 flex-1 rounded-full transition-colors ${\n index <= strength - 1 ? colors[strength] : 'bg-gray-200 dark:bg-white/10'\n }`}\n />\n ))}\n </div>\n {showRequirements && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400\">{labels[strength]}</p>\n )}\n </div>\n )\n}\n\n// ── BackupCodeGrid ──────────────────────────────────────────────────────────\n\nexport interface BackupCodeGridProps {\n codes: string[]\n revealed?: boolean\n}\n\nexport function BackupCodeGrid({ codes, revealed = false }: BackupCodeGridProps) {\n return (\n <div className=\"grid grid-cols-2 gap-2\">\n {codes.map((code, index) => (\n <div\n key={index}\n className=\"rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 text-center font-mono text-sm dark:border-white/10 dark:bg-white/5\"\n >\n {revealed ? code : '\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022'}\n </div>\n ))}\n </div>\n )\n}\n\n// ── AuthLayout ──────────────────────────────────────────────────────────────\n\nexport interface AuthLayoutProps {\n children: ReactNode\n heroPanel?: unknown\n}\n\nexport function AuthLayout({ children }: AuthLayoutProps) {\n return (\n <div className=\"w-full max-w-md mx-auto\">\n {children}\n </div>\n )\n}\n\n// ── SocialLoginButtons ──────────────────────────────────────────────────────\n\nexport interface SocialLoginButtonsProps {\n providers: SocialProvider[]\n onProviderClick: (provider: SocialProvider) => void\n loading?: SocialProvider | null\n disabled?: boolean\n}\n\nfunction GoogleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z\" fill=\"#4285F4\" />\n <path d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\" fill=\"#34A853\" />\n <path d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\" fill=\"#FBBC05\" />\n <path d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" fill=\"#EA4335\" />\n </svg>\n )\n}\n\nfunction GitHubIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z\" />\n </svg>\n )\n}\n\nfunction MicrosoftIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </svg>\n )\n}\n\nfunction AppleIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0 text-gray-800 dark:text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M17.05 20.28c-.98.95-2.05.88-3.08.4-1.09-.5-2.08-.48-3.24 0-1.44.62-2.2.44-3.06-.4C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\" />\n </svg>\n )\n}\n\nfunction AmazonIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M13.958 10.09c0 1.232.029 2.256-.591 3.351-.502.891-1.301 1.438-2.186 1.438-1.214 0-1.922-.924-1.922-2.292 0-2.692 2.415-3.182 4.7-3.182v.685zm3.186 7.705a.66.66 0 0 1-.753.077c-1.06-.876-1.25-1.283-1.828-2.119-1.748 1.783-2.986 2.317-5.249 2.317-2.681 0-4.768-1.653-4.768-4.96 0-2.583 1.4-4.34 3.392-5.2 1.727-.753 4.14-.886 5.98-1.094v-.408c0-.748.058-1.634-.383-2.28-.383-.579-1.117-.816-1.765-.816-1.2 0-2.266.615-2.527 1.89a.556.556 0 0 1-.481.482l-2.7-.291c-.224-.05-.474-.231-.41-.574C6.41 1.62 9.647.5 12.564.5c1.476 0 3.406.393 4.573 1.51 1.476 1.38 1.336 3.224 1.336 5.229v4.736c0 1.423.59 2.047 1.145 2.816.196.275.24.604-.01.807-.626.524-1.74 1.499-2.352 2.044l-.112.062z\" fill=\"#FF9900\" />\n <path d=\"M21.558 18.494c-1.94 1.432-4.753 2.195-7.178 2.195-3.396 0-6.453-1.255-8.765-3.344-.182-.164-.02-.389.199-.261 2.497 1.453 5.584 2.328 8.773 2.328 2.152 0 4.517-.446 6.694-1.37.328-.14.603.216.277.452z\" fill=\"#FF9900\" />\n <path d=\"M22.323 17.168c-.247-.317-1.636-.15-2.261-.076-.19.022-.219-.142-.048-.261 1.107-.777 2.923-.553 3.134-.293.212.264-.055 2.087-1.095 2.959-.16.134-.312.063-.241-.114.234-.583.758-1.899.511-2.215z\" fill=\"#FF9900\" />\n </svg>\n )\n}\n\nfunction DiscordIcon() {\n return (\n <svg className=\"h-5 w-5 shrink-0\" viewBox=\"0 0 24 24\">\n <path d=\"M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\" fill=\"#5865F2\" />\n </svg>\n )\n}\n\nconst PROVIDER_CONFIG: Record<SocialProvider, { label: string; Icon: React.FC }> = {\n google: { label: 'Google', Icon: GoogleIcon },\n github: { label: 'GitHub', Icon: GitHubIcon },\n microsoft: { label: 'Microsoft', Icon: MicrosoftIcon },\n apple: { label: 'Apple', Icon: AppleIcon },\n amazon: { label: 'Amazon', Icon: AmazonIcon },\n discord: { label: 'Discord', Icon: DiscordIcon },\n}\n\nexport function SocialLoginButtons({\n providers,\n onProviderClick,\n loading,\n disabled = false,\n}: SocialLoginButtonsProps) {\n return (\n <div className=\"flex flex-col gap-2.5\">\n {providers.map((provider) => {\n const { label, Icon } = PROVIDER_CONFIG[provider]\n return (\n <Button\n key={provider}\n type=\"button\"\n color=\"ios-glass-blue\"\n size=\"lg\"\n fullWidth\n onClick={() => onProviderClick(provider)}\n disabled={disabled || (loading != null && loading !== provider)}\n loading={loading === provider}\n >\n {loading !== provider && <Icon />}\n {label}\n </Button>\n )\n })}\n </div>\n )\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -217,6 +217,10 @@ declare function CardDivider({ className }: {
|
|
|
217
217
|
}): react_jsx_runtime.JSX.Element;
|
|
218
218
|
type SectionCardHeaderProps = {
|
|
219
219
|
icon?: ReactNode;
|
|
220
|
+
/** Optional uppercase eyebrow above the title — mirrors the
|
|
221
|
+
* HeroBlock eyebrow slot. Use for breadcrumb-style labels
|
|
222
|
+
* ("WORKSPACE / WORKFLOWS") or section categorization. */
|
|
223
|
+
eyebrow?: string;
|
|
220
224
|
title: string;
|
|
221
225
|
subtitle?: string;
|
|
222
226
|
/** Gradient classes for the icon background */
|
|
@@ -246,13 +250,41 @@ type SectionCardProps = {
|
|
|
246
250
|
/** Callback fired when the user toggles the header (controlled or
|
|
247
251
|
* uncontrolled). */
|
|
248
252
|
onOpenChange?: (open: boolean) => void;
|
|
253
|
+
/** Optional top accent gradient stripe — same idiom as HeroSection.
|
|
254
|
+
* Decorative, `aria-hidden`. Passes a Tailwind gradient class string
|
|
255
|
+
* (e.g. "from-indigo-500 via-purple-500 to-pink-500"). */
|
|
256
|
+
accentGradient?: string;
|
|
257
|
+
/** Optional action buttons pinned to the right of the title row.
|
|
258
|
+
* Equivalent to HeroSection's `actions`. For collapsible cards
|
|
259
|
+
* these stay visible (alongside the chevron). */
|
|
260
|
+
actions?: ReactNode;
|
|
261
|
+
/** Optional toolbar (search / filter / create) rendered between
|
|
262
|
+
* the header divider and the card body. */
|
|
263
|
+
toolbar?: ReactNode;
|
|
264
|
+
/** Optional badges / pills rendered below the toolbar (e.g. tag
|
|
265
|
+
* cloud, status chips). */
|
|
266
|
+
badges?: ReactNode;
|
|
267
|
+
/** HeroBlock typography preset — controls how big the title /
|
|
268
|
+
* subtitle / eyebrow render. Defaults to `section` (compact card
|
|
269
|
+
* header). Set to `banner` for full page-banner cards (same look
|
|
270
|
+
* as the legacy HeroSection); `surface` for modal sidebar style;
|
|
271
|
+
* `display` for marketing hero scale. */
|
|
272
|
+
kind?: 'section' | 'surface' | 'banner' | 'display';
|
|
273
|
+
/** Heading semantic level — controls the rendered h-tag for the
|
|
274
|
+
* card title. Defaults to `h3` to fit inside pages. Use `h1` for
|
|
275
|
+
* page-banner cards where the SectionCard IS the page heading. */
|
|
276
|
+
headingLevel?: 'h1' | 'h2' | 'h3';
|
|
277
|
+
/** Optional content rendered next to the eyebrow (e.g. a tiny
|
|
278
|
+
* entity count "(12 itens)" — same role as HeroSection's
|
|
279
|
+
* `labelExtra`). */
|
|
280
|
+
eyebrowExtra?: ReactNode;
|
|
249
281
|
};
|
|
250
282
|
/**
|
|
251
283
|
* Section Card with shared HeroBlock header (icon bubble + title +
|
|
252
284
|
* subtitle). Used across dashboard pages and modals for consistent
|
|
253
285
|
* section styling. Optionally collapsible.
|
|
254
286
|
*/
|
|
255
|
-
declare function SectionCard({ header, children, className, padded, variant, collapsible, defaultOpen, open: controlledOpen, onOpenChange, }: SectionCardProps): react_jsx_runtime.JSX.Element;
|
|
287
|
+
declare function SectionCard({ header, children, className, padded, variant, collapsible, defaultOpen, open: controlledOpen, onOpenChange, accentGradient, actions, toolbar, badges, kind, headingLevel, eyebrowExtra, }: SectionCardProps): react_jsx_runtime.JSX.Element;
|
|
256
288
|
type ListCardProps = {
|
|
257
289
|
children: ReactNode;
|
|
258
290
|
className?: string;
|
|
@@ -896,14 +928,22 @@ type HeroSectionProps = {
|
|
|
896
928
|
children?: ReactNode;
|
|
897
929
|
};
|
|
898
930
|
/**
|
|
899
|
-
* Page banner —
|
|
900
|
-
*
|
|
901
|
-
*
|
|
902
|
-
*
|
|
903
|
-
*
|
|
931
|
+
* Page banner — a thin alias of `<SectionCard kind="banner">`. Kept
|
|
932
|
+
* for the 15+ consumers across `apps/*` and `packages/ui/src/platform`
|
|
933
|
+
* that already import it; new code can use `<SectionCard kind="banner">`
|
|
934
|
+
* directly with the exact same slots.
|
|
935
|
+
*
|
|
936
|
+
* Maps:
|
|
937
|
+
* label → header.eyebrow
|
|
938
|
+
* icon/title/subtitle → header
|
|
939
|
+
* gradient → accentGradient
|
|
940
|
+
* actions / toolbar / badges → SectionCard's same-named slots
|
|
941
|
+
* labelExtra → eyebrowExtra
|
|
904
942
|
*
|
|
905
|
-
*
|
|
906
|
-
*
|
|
943
|
+
* `subtitle` is typed as ReactNode (JSX/links allowed); SectionCard
|
|
944
|
+
* accepts only string, so when JSX is passed we render it manually
|
|
945
|
+
* inside `children` and forward only the string portion (if any) as
|
|
946
|
+
* subtitle. That keeps the legacy API intact.
|
|
907
947
|
*/
|
|
908
948
|
declare function HeroSection({ icon, label, title, subtitle, gradient, actions, toolbar, badges, labelExtra, children, }: HeroSectionProps): react_jsx_runtime.JSX.Element;
|
|
909
949
|
|
|
@@ -924,6 +964,12 @@ interface ActiveFilterChipsProps {
|
|
|
924
964
|
onRemoveFilter?: (filter: ActiveFilterChip) => void;
|
|
925
965
|
styleConfig?: Record<string, ActiveFilterChipStyleConfig>;
|
|
926
966
|
}
|
|
967
|
+
/**
|
|
968
|
+
* Strip of active filter chips with animated enter/exit. Each chip
|
|
969
|
+
* is a crystal pill (same chrome as `<Badge>` / `<StatusBadge>`)
|
|
970
|
+
* with a leading icon picked from `styleConfig[filter.type]` and an
|
|
971
|
+
* optional `×` remove button.
|
|
972
|
+
*/
|
|
927
973
|
declare function ActiveFilterChips({ filters, onRemoveFilter, styleConfig, }: ActiveFilterChipsProps): react_jsx_runtime.JSX.Element;
|
|
928
974
|
|
|
929
975
|
interface ActiveFilter {
|
|
@@ -1965,15 +2011,16 @@ interface HeroBlockProps {
|
|
|
1965
2011
|
titlePlaceholder?: string;
|
|
1966
2012
|
/** Optional subtitle below the title. */
|
|
1967
2013
|
subtitle?: string;
|
|
1968
|
-
/** Icon element rendered inside the bubble. For
|
|
1969
|
-
*
|
|
2014
|
+
/** Icon element rendered inside the bubble. For avatar-style
|
|
2015
|
+
* callers (round shape, own chrome), pass `<Avatar>` and set
|
|
2016
|
+
* `iconBackground="none"` so HeroBlock doesn't wrap it again. */
|
|
1970
2017
|
icon?: ReactNode;
|
|
1971
|
-
/** Bubble shape — `square` is the default; `round` is for avatars. */
|
|
1972
|
-
iconShape?: 'square' | 'round';
|
|
1973
2018
|
/** Bubble background treatment:
|
|
1974
|
-
* - `glass` (default) — neutral glassy
|
|
1975
|
-
* - `gradient` — colored fill, requires `gradient` prop
|
|
1976
|
-
* - `none` — no wrapper
|
|
2019
|
+
* - `glass` (default) — neutral glassy square bubble
|
|
2020
|
+
* - `gradient` — colored fill square bubble, requires `gradient` prop
|
|
2021
|
+
* - `none` — no wrapper at all; caller supplies its own chrome
|
|
2022
|
+
* (typically `<Avatar>`, an `<img>` with built-in radius, or
|
|
2023
|
+
* an inline icon that doesn't need a container) */
|
|
1977
2024
|
iconBackground?: 'glass' | 'gradient' | 'none';
|
|
1978
2025
|
/** Gradient classes for the bubble (used when
|
|
1979
2026
|
* `iconBackground="gradient"`). */
|
|
@@ -2009,7 +2056,7 @@ interface HeroBlockProps {
|
|
|
2009
2056
|
* would be invisible. */
|
|
2010
2057
|
tone?: 'default' | 'dark';
|
|
2011
2058
|
}
|
|
2012
|
-
declare function HeroBlock({ eyebrow, title, onTitleChange, titlePlaceholder, subtitle, icon,
|
|
2059
|
+
declare function HeroBlock({ eyebrow, title, onTitleChange, titlePlaceholder, subtitle, icon, iconBackground, gradient, iconSize, rightContent, headingLevel, kind, headingId, className, children, tone, }: HeroBlockProps): react_jsx_runtime.JSX.Element;
|
|
2013
2060
|
|
|
2014
2061
|
type InputSize = 'sm' | 'md' | 'lg';
|
|
2015
2062
|
type BaseFormFieldProps = {
|
package/dist/index.d.ts
CHANGED
|
@@ -217,6 +217,10 @@ declare function CardDivider({ className }: {
|
|
|
217
217
|
}): react_jsx_runtime.JSX.Element;
|
|
218
218
|
type SectionCardHeaderProps = {
|
|
219
219
|
icon?: ReactNode;
|
|
220
|
+
/** Optional uppercase eyebrow above the title — mirrors the
|
|
221
|
+
* HeroBlock eyebrow slot. Use for breadcrumb-style labels
|
|
222
|
+
* ("WORKSPACE / WORKFLOWS") or section categorization. */
|
|
223
|
+
eyebrow?: string;
|
|
220
224
|
title: string;
|
|
221
225
|
subtitle?: string;
|
|
222
226
|
/** Gradient classes for the icon background */
|
|
@@ -246,13 +250,41 @@ type SectionCardProps = {
|
|
|
246
250
|
/** Callback fired when the user toggles the header (controlled or
|
|
247
251
|
* uncontrolled). */
|
|
248
252
|
onOpenChange?: (open: boolean) => void;
|
|
253
|
+
/** Optional top accent gradient stripe — same idiom as HeroSection.
|
|
254
|
+
* Decorative, `aria-hidden`. Passes a Tailwind gradient class string
|
|
255
|
+
* (e.g. "from-indigo-500 via-purple-500 to-pink-500"). */
|
|
256
|
+
accentGradient?: string;
|
|
257
|
+
/** Optional action buttons pinned to the right of the title row.
|
|
258
|
+
* Equivalent to HeroSection's `actions`. For collapsible cards
|
|
259
|
+
* these stay visible (alongside the chevron). */
|
|
260
|
+
actions?: ReactNode;
|
|
261
|
+
/** Optional toolbar (search / filter / create) rendered between
|
|
262
|
+
* the header divider and the card body. */
|
|
263
|
+
toolbar?: ReactNode;
|
|
264
|
+
/** Optional badges / pills rendered below the toolbar (e.g. tag
|
|
265
|
+
* cloud, status chips). */
|
|
266
|
+
badges?: ReactNode;
|
|
267
|
+
/** HeroBlock typography preset — controls how big the title /
|
|
268
|
+
* subtitle / eyebrow render. Defaults to `section` (compact card
|
|
269
|
+
* header). Set to `banner` for full page-banner cards (same look
|
|
270
|
+
* as the legacy HeroSection); `surface` for modal sidebar style;
|
|
271
|
+
* `display` for marketing hero scale. */
|
|
272
|
+
kind?: 'section' | 'surface' | 'banner' | 'display';
|
|
273
|
+
/** Heading semantic level — controls the rendered h-tag for the
|
|
274
|
+
* card title. Defaults to `h3` to fit inside pages. Use `h1` for
|
|
275
|
+
* page-banner cards where the SectionCard IS the page heading. */
|
|
276
|
+
headingLevel?: 'h1' | 'h2' | 'h3';
|
|
277
|
+
/** Optional content rendered next to the eyebrow (e.g. a tiny
|
|
278
|
+
* entity count "(12 itens)" — same role as HeroSection's
|
|
279
|
+
* `labelExtra`). */
|
|
280
|
+
eyebrowExtra?: ReactNode;
|
|
249
281
|
};
|
|
250
282
|
/**
|
|
251
283
|
* Section Card with shared HeroBlock header (icon bubble + title +
|
|
252
284
|
* subtitle). Used across dashboard pages and modals for consistent
|
|
253
285
|
* section styling. Optionally collapsible.
|
|
254
286
|
*/
|
|
255
|
-
declare function SectionCard({ header, children, className, padded, variant, collapsible, defaultOpen, open: controlledOpen, onOpenChange, }: SectionCardProps): react_jsx_runtime.JSX.Element;
|
|
287
|
+
declare function SectionCard({ header, children, className, padded, variant, collapsible, defaultOpen, open: controlledOpen, onOpenChange, accentGradient, actions, toolbar, badges, kind, headingLevel, eyebrowExtra, }: SectionCardProps): react_jsx_runtime.JSX.Element;
|
|
256
288
|
type ListCardProps = {
|
|
257
289
|
children: ReactNode;
|
|
258
290
|
className?: string;
|
|
@@ -896,14 +928,22 @@ type HeroSectionProps = {
|
|
|
896
928
|
children?: ReactNode;
|
|
897
929
|
};
|
|
898
930
|
/**
|
|
899
|
-
* Page banner —
|
|
900
|
-
*
|
|
901
|
-
*
|
|
902
|
-
*
|
|
903
|
-
*
|
|
931
|
+
* Page banner — a thin alias of `<SectionCard kind="banner">`. Kept
|
|
932
|
+
* for the 15+ consumers across `apps/*` and `packages/ui/src/platform`
|
|
933
|
+
* that already import it; new code can use `<SectionCard kind="banner">`
|
|
934
|
+
* directly with the exact same slots.
|
|
935
|
+
*
|
|
936
|
+
* Maps:
|
|
937
|
+
* label → header.eyebrow
|
|
938
|
+
* icon/title/subtitle → header
|
|
939
|
+
* gradient → accentGradient
|
|
940
|
+
* actions / toolbar / badges → SectionCard's same-named slots
|
|
941
|
+
* labelExtra → eyebrowExtra
|
|
904
942
|
*
|
|
905
|
-
*
|
|
906
|
-
*
|
|
943
|
+
* `subtitle` is typed as ReactNode (JSX/links allowed); SectionCard
|
|
944
|
+
* accepts only string, so when JSX is passed we render it manually
|
|
945
|
+
* inside `children` and forward only the string portion (if any) as
|
|
946
|
+
* subtitle. That keeps the legacy API intact.
|
|
907
947
|
*/
|
|
908
948
|
declare function HeroSection({ icon, label, title, subtitle, gradient, actions, toolbar, badges, labelExtra, children, }: HeroSectionProps): react_jsx_runtime.JSX.Element;
|
|
909
949
|
|
|
@@ -924,6 +964,12 @@ interface ActiveFilterChipsProps {
|
|
|
924
964
|
onRemoveFilter?: (filter: ActiveFilterChip) => void;
|
|
925
965
|
styleConfig?: Record<string, ActiveFilterChipStyleConfig>;
|
|
926
966
|
}
|
|
967
|
+
/**
|
|
968
|
+
* Strip of active filter chips with animated enter/exit. Each chip
|
|
969
|
+
* is a crystal pill (same chrome as `<Badge>` / `<StatusBadge>`)
|
|
970
|
+
* with a leading icon picked from `styleConfig[filter.type]` and an
|
|
971
|
+
* optional `×` remove button.
|
|
972
|
+
*/
|
|
927
973
|
declare function ActiveFilterChips({ filters, onRemoveFilter, styleConfig, }: ActiveFilterChipsProps): react_jsx_runtime.JSX.Element;
|
|
928
974
|
|
|
929
975
|
interface ActiveFilter {
|
|
@@ -1965,15 +2011,16 @@ interface HeroBlockProps {
|
|
|
1965
2011
|
titlePlaceholder?: string;
|
|
1966
2012
|
/** Optional subtitle below the title. */
|
|
1967
2013
|
subtitle?: string;
|
|
1968
|
-
/** Icon element rendered inside the bubble. For
|
|
1969
|
-
*
|
|
2014
|
+
/** Icon element rendered inside the bubble. For avatar-style
|
|
2015
|
+
* callers (round shape, own chrome), pass `<Avatar>` and set
|
|
2016
|
+
* `iconBackground="none"` so HeroBlock doesn't wrap it again. */
|
|
1970
2017
|
icon?: ReactNode;
|
|
1971
|
-
/** Bubble shape — `square` is the default; `round` is for avatars. */
|
|
1972
|
-
iconShape?: 'square' | 'round';
|
|
1973
2018
|
/** Bubble background treatment:
|
|
1974
|
-
* - `glass` (default) — neutral glassy
|
|
1975
|
-
* - `gradient` — colored fill, requires `gradient` prop
|
|
1976
|
-
* - `none` — no wrapper
|
|
2019
|
+
* - `glass` (default) — neutral glassy square bubble
|
|
2020
|
+
* - `gradient` — colored fill square bubble, requires `gradient` prop
|
|
2021
|
+
* - `none` — no wrapper at all; caller supplies its own chrome
|
|
2022
|
+
* (typically `<Avatar>`, an `<img>` with built-in radius, or
|
|
2023
|
+
* an inline icon that doesn't need a container) */
|
|
1977
2024
|
iconBackground?: 'glass' | 'gradient' | 'none';
|
|
1978
2025
|
/** Gradient classes for the bubble (used when
|
|
1979
2026
|
* `iconBackground="gradient"`). */
|
|
@@ -2009,7 +2056,7 @@ interface HeroBlockProps {
|
|
|
2009
2056
|
* would be invisible. */
|
|
2010
2057
|
tone?: 'default' | 'dark';
|
|
2011
2058
|
}
|
|
2012
|
-
declare function HeroBlock({ eyebrow, title, onTitleChange, titlePlaceholder, subtitle, icon,
|
|
2059
|
+
declare function HeroBlock({ eyebrow, title, onTitleChange, titlePlaceholder, subtitle, icon, iconBackground, gradient, iconSize, rightContent, headingLevel, kind, headingId, className, children, tone, }: HeroBlockProps): react_jsx_runtime.JSX.Element;
|
|
2013
2060
|
|
|
2014
2061
|
type InputSize = 'sm' | 'md' | 'lg';
|
|
2015
2062
|
type BaseFormFieldProps = {
|