@inf-monkeys-tech/monkeys-design 0.4.50 → 0.4.52

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.
Files changed (49) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +335 -335
  3. package/dist/components/base/index.js +1 -1
  4. package/dist/components/base/index.js.map +1 -1
  5. package/dist/components/base/index.mjs +1 -1
  6. package/dist/components/base/index.mjs.map +1 -1
  7. package/dist/components/data-explorer/index.js.map +1 -1
  8. package/dist/components/data-explorer/index.mjs.map +1 -1
  9. package/dist/components/layout/index.js +5 -5
  10. package/dist/components/layout/index.js.map +1 -1
  11. package/dist/components/layout/index.mjs +5 -5
  12. package/dist/components/layout/index.mjs.map +1 -1
  13. package/dist/components/login/index.js.map +1 -1
  14. package/dist/components/login/index.mjs.map +1 -1
  15. package/dist/components/toast/index.js.map +1 -1
  16. package/dist/components/toast/index.mjs.map +1 -1
  17. package/dist/components/toolbar/index.js.map +1 -1
  18. package/dist/components/toolbar/index.mjs.map +1 -1
  19. package/dist/components/workbench/index.js +1 -1
  20. package/dist/components/workbench/index.js.map +1 -1
  21. package/dist/components/workbench/index.mjs +1 -1
  22. package/dist/components/workbench/index.mjs.map +1 -1
  23. package/dist/icons/oauth/index.js.map +1 -1
  24. package/dist/icons/oauth/index.mjs.map +1 -1
  25. package/dist/index.js +5 -5
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +5 -5
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/palette/index.js.map +1 -1
  30. package/dist/palette/index.mjs.map +1 -1
  31. package/dist/registry/index.js.map +1 -1
  32. package/dist/registry/index.mjs.map +1 -1
  33. package/dist/styles/global.scss +21 -21
  34. package/dist/styles/login-page.scss +518 -518
  35. package/dist/styles/workflow-board.scss +440 -440
  36. package/dist/styles/workflow-nodes.css +340 -340
  37. package/dist/theme-system/index.js +1 -1
  38. package/dist/theme-system/index.js.map +1 -1
  39. package/dist/theme-system/index.mjs +1 -1
  40. package/dist/theme-system/index.mjs.map +1 -1
  41. package/dist/themes/artist/index.js.map +1 -1
  42. package/dist/themes/artist/index.mjs.map +1 -1
  43. package/dist/themes/bsd/index.js.map +1 -1
  44. package/dist/themes/bsd/index.mjs.map +1 -1
  45. package/dist/themes/concept/index.js.map +1 -1
  46. package/dist/themes/concept/index.mjs.map +1 -1
  47. package/dist/themes/default/index.js.map +1 -1
  48. package/dist/themes/default/index.mjs.map +1 -1
  49. package/package.json +151 -151
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/registry/index.ts","../../../src/themes/artist/components/LandingPage.tsx","../../../src/themes/artist/index.ts"],"names":["jsxs","jsx","useState"],"mappings":";;;;;;AAIA,IAAM,aAAgD,EAAC;AAWhD,SAAS,aAAA,CACd,OAAA,EACA,UAAA,EACA,MAAA,EACM;AACN,EAAA,UAAA,CAAW,OAAO,IAAI,EAAE,GAAG,WAAW,OAAO,CAAA,EAAG,GAAG,UAAA,EAAW;AAE9D,EAAA,IAAI,MAAA,EAAQ;AACV,KAAwB,EAAE,EAAA,EAAI,OAAA,EAAS,GAAG,MAAA,GAAO;AAAA,EACnD;AACF;ACgBO,IAAM,aAAA,GAAgB;AAAA,EAC3B,OAAA,EAAS,gFAAA;AAAA,EACT,QAAA,EAAU,4GAAA;AAAA,EACV,SAAA,EAAW,uEAAA;AAAA,EACX,mBAAA,EAAqB;AACvB;AAEO,IAAM,4BAAA,GAAkD;AAAA,EAC7D;AAAA,IACE,IAAA,EAAM,0BAAA;AAAA,IACN,OAAA,EAAS,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,kCAAA,CAAA;AAAA,IAC7C,QAAA,EAAU,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,mCAAA,CAAA;AAAA,IAC9C,WAAA,EAAa,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,sCAAA;AAAA,GACnD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,0BAAA;AAAA,IACN,OAAA,EAAS,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,kCAAA,CAAA;AAAA,IAC7C,QAAA,EAAU,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,mCAAA,CAAA;AAAA,IAC9C,WAAA,EAAa,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,sCAAA;AAAA,GACnD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,0BAAA;AAAA,IACN,OAAA,EAAS,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,kCAAA,CAAA;AAAA,IAC7C,QAAA,EAAU,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,mCAAA,CAAA;AAAA,IAC9C,WAAA,EAAa,CAAA,EAAG,aAAA,CAAc,mBAAmB,CAAA,sCAAA;AAAA;AAErD;AAKA,IAAM,gBAAA,GAAgE,CAAC,EAAE,IAAA,GAAO,IAAI,KAAA,GAAQ,WAAA,uBAC1FA,eAAA,CAAC,KAAA,EAAA,EAAI,OAAO,IAAA,EAAM,MAAA,EAAQ,MAAM,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,WAAA,EAAY,GAAA,EACzF,QAAA,EAAA;AAAA,kBAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,GAAE,YAAA,EAAa,CAAA;AAAA,kBACrBA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,YAAA,EAAa;AAAA,CAAA,EACvB,CAAA;AAYF,IAAM,eAAA,GAAkD,CAAC,EAAE,IAAA,EAAM,SAAS,QAAA,EAAU,WAAA,EAAa,SAAQ,KAAM;AAC7G,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAAS,KAAK,CAAA;AAEhD,EAAA,uBACEF,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,YAAA,EAAc,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,MACrC,YAAA,EAAc,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,MACtC,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,IAAA,EAAM,CAAA;AAAA,QACN,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,cAAA,EAAgB,UAAA;AAAA,QAChB,QAAA,EAAU,QAAA;AAAA,QACV,YAAA,EAAc,MAAA;AAAA,QACd,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ,SAAA;AAAA,QACR,UAAA,EAAY,qFAAA;AAAA,QACZ,mBAAA,EAAqB,SAAA;AAAA,QACrB,MAAA,EAAQ,uCAAA;AAAA,QACR,SAAA,EAAW,0CAAA;AAAA,QACX,UAAA,EAAY,eAAA;AAAA,QACZ,SAAA,EAAW;AAAA,OACb;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,KAAA,EAAO,MAAA;AAAA,cACP,GAAA,EAAK,MAAA;AAAA,cACL,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,MAAA;AAAA,cACR,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,YAAA,EAAc,KAAA;AAAA,cACd,UAAA,EAAY,YAAY,MAAA,GAAS,aAAA;AAAA,cACjC,UAAA,EAAY;AAAA,aACd;AAAA,YAEA,QAAA,kBAAAA,cAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAM,EAAA,EAAI,OAAM,WAAA,EAAY;AAAA;AAAA,SAChD;AAAA,wBAGAA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,GAAA,EAAK,IAAA;AAAA,YACL,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,KAAA,EAAO,KAAA;AAAA,cACP,MAAA,EAAQ,KAAA;AAAA,cACR,KAAA,EAAO,OAAA;AAAA,cACP,MAAA,EAAQ,OAAA;AAAA,cACR,SAAA,EAAW,SAAA;AAAA,cACX,OAAA,EAAS,GAAA;AAAA,cACT,MAAA,EAAQ,YAAY,oBAAA,GAAuB,MAAA;AAAA,cAC3C,UAAA,EAAY;AAAA;AACd;AAAA,SACF;AAAA,wBAGAD,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,EAAA,EAAG,EAC9E,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,QAAA;AAAA,cACL,GAAA,EAAK,IAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,MAAA,EAAQ,MAAA;AAAA,gBACR,SAAA,EAAW,SAAA;AAAA,gBACX,cAAA,EAAgB,MAAA;AAAA,gBAChB,MAAA,EAAQ,YAAY,iBAAA,GAAoB,MAAA;AAAA,gBACxC,UAAA,EAAY;AAAA;AACd;AAAA,WACF;AAAA,0BACAA,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,GAAA,EAAI,EAAA;AAAA,cACJ,KAAA,EAAO;AAAA,gBACL,MAAA,EAAQ,MAAA;AAAA,gBACR,SAAA,EAAW,SAAA;AAAA,gBACX,cAAA,EAAgB,MAAA;AAAA,gBAChB,MAAA,EAAQ,YAAY,WAAA,GAAc,MAAA;AAAA,gBAClC,UAAA,EAAY;AAAA;AACd;AAAA;AACF,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAIO,SAAS,iBAAA,CAAkB;AAAA,EAChC,eAAA,GAAkB,KAAA;AAAA,EAClB,IAAA;AAAA,EACA,YAAA,GAAe,4BAAA;AAAA,EACf,gBAAA;AAAA,EACA,OAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAQ,EAAC;AAAA,EACT;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,gBAAA,IAAmB;AAAA,IACrB,CAAA,MAAO;AACL,MAAA,OAAA,IAAU;AAAA,IACZ;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,gBAAA,IAAmB;AAAA,EACrB,CAAA;AAEA,EAAA,uBACED,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,QAAA,EAAU,UAAA;AAAA,QACV,SAAA,EAAW,OAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAU,QAAA;AAAA,QACV,UAAA,EAAY,mDAAA;AAAA,QACZ,GAAG;AAAA,OACL;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,mBAAA,oBACCC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,OAAA;AAAA,cACV,GAAA,EAAK,CAAA;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,KAAA,EAAO,OAAA;AAAA,cACP,MAAA,EAAQ,OAAA;AAAA,cACR,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY;AAAA;AACd;AAAA,SACF;AAAA,wBAIFA,cAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,OAAA;AAAA,cACV,GAAA,EAAK,CAAA;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,OAAA;AAAA,cACR,MAAA,EAAQ,EAAA;AAAA,cACR,OAAA,EAAS,MAAA;AAAA,cACT,SAAA,EAAW,YAAA;AAAA,cACX,SAAA,EAAW,mDAAA;AAAA,cACX,cAAA,EAAgB,YAAA;AAAA,cAChB,eAAA,EAAiB;AAAA,aACnB;AAAA,YAEA,QAAA,kBAAAD,eAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,MAAA;AAAA,kBACT,UAAA,EAAY,QAAA;AAAA,kBACZ,cAAA,EAAgB,eAAA;AAAA,kBAChB,aAAA,EAAe,MAAA;AAAA,kBACf,YAAA,EAAc;AAAA,iBAChB;AAAA,gBAGA,QAAA,EAAA;AAAA,kCAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,MAAA,EAAQ,UAAA,EAAY,MAAA,EAAO,EACnF,QAAA,EAAA;AAAA,oCAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAA,CAAc,OAAA,EAAS,GAAA,EAAI,MAAA,EAAO,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO,EAAG,CAAA;AAAA,oCACtFA,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAA,CAAc,QAAA,EAAU,GAAA,EAAI,oBAAA,EAAM,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAO,EAAG;AAAA,mBAAA,EACzE,CAAA;AAAA,iDAGC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAA,EAAa,QAAO,EAC/B,QAAA,EAAA,eAAA,IAAmB,IAAA,mBAClBA,cAAA,CAAC,SAAI,OAAA,EAAS,eAAA,EAAiB,OAAO,EAAE,MAAA,EAAQ,WAAU,EACxD,QAAA,kBAAAA,cAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,GAAA,EAAK,KAAK,KAAA,IAAS,EAAA;AAAA,sBACnB,GAAA,EAAK,KAAK,IAAA,IAAQ,EAAA;AAAA,sBAClB,OAAO,IAAA,CAAK,IAAA;AAAA,sBACZ,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,MAAA;AAAA,wBACP,MAAA,EAAQ,MAAA;AAAA,wBACR,YAAA,EAAc,KAAA;AAAA,wBACd,MAAA,EAAQ,oCAAA;AAAA,wBACR,SAAA,EAAW;AAAA;AACb;AAAA,qBAEJ,CAAA,mBAEAA,cAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,OAAA;AAAA,sBACT,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,MAAA;AAAA,wBACP,MAAA,EAAQ,MAAA;AAAA,wBACR,YAAA,EAAc,KAAA;AAAA,wBACd,MAAA,EAAQ,oCAAA;AAAA,wBACR,UAAA,EAAY,0BAAA;AAAA,wBACZ,KAAA,EAAO,MAAA;AAAA,wBACP,MAAA,EAAQ,SAAA;AAAA,wBACR,QAAA,EAAU,MAAA;AAAA,wBACV,UAAA,EAAY,UAAA;AAAA,wBACZ,cAAA,EAAgB,YAAA;AAAA,wBAChB,OAAA,EAAS,MAAA;AAAA,wBACT,UAAA,EAAY,QAAA;AAAA,wBACZ,cAAA,EAAgB;AAAA,uBAClB;AAAA,sBAEA,QAAA,kBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,MAAA,EAAO,aAAY,GAAA,EACpF,QAAA,EAAA;AAAA,wCAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,GAAE,2CAAA,EAA4C,CAAA;AAAA,uDACnD,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,GAAA,EAAI,GAAE,GAAA,EAAI;AAAA,uBAAA,EAC/B;AAAA;AAAA,mBACF,EAEJ;AAAA;AAAA;AAAA;AACF;AAAA,SACF;AAAA,wBAGAD,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,OAAA;AAAA,cACV,MAAA,EAAQ,EAAA;AAAA,cACR,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ;AAAA,aACV;AAAA,YAGA,QAAA,EAAA;AAAA,8BAAAA,eAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,OAAA,EAAS,MAAA;AAAA,oBACT,aAAA,EAAe,QAAA;AAAA,oBACf,UAAA,EAAY,YAAA;AAAA,oBACZ,OAAA,EAAS,gBAAA;AAAA,oBACT,GAAA,EAAK;AAAA,mBACP;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAC,cAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAK,aAAA,CAAc,SAAA;AAAA,wBACnB,GAAA,EAAI,QAAA;AAAA,wBACJ,KAAA,EAAO,EAAE,QAAA,EAAU,KAAA,EAAO,QAAQ,MAAA;AAAO;AAAA,qBAC3C;AAAA,oCAGAD,eAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,OAAA,EAAS,iBAAA;AAAA,wBACT,KAAA,EAAO;AAAA,0BACL,SAAA,EAAW,MAAA;AAAA,0BACX,KAAA,EAAO,OAAA;AAAA,0BACP,MAAA,EAAQ,MAAA;AAAA,0BACR,OAAA,EAAS,MAAA;AAAA,0BACT,UAAA,EAAY,QAAA;AAAA,0BACZ,cAAA,EAAgB,QAAA;AAAA,0BAChB,GAAA,EAAK,MAAA;AAAA,0BACL,UAAA,EAAY,mDAAA;AAAA,0BACZ,YAAA,EAAc,MAAA;AAAA,0BACd,MAAA,EAAQ,SAAA;AAAA,0BACR,SAAA,EAAW,yHAAA;AAAA,0BACX,UAAA,EAAY,UAAA;AAAA,0BACZ,KAAA,EAAO,MAAA;AAAA,0BACP,QAAA,EAAU,MAAA;AAAA,0BACV,UAAA,EAAY;AAAA,yBACd;AAAA,wBAEA,QAAA,EAAA;AAAA,0CAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EACnD,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,sxDAAqxD,CAAA,EAC/xD,CAAA;AAAA,0BAAM,sCAAA;AAAA,0CAENA,cAAA;AAAA,4BAAC,KAAA;AAAA,4BAAA;AAAA,8BACC,KAAA,EAAO;AAAA,gCACL,KAAA,EAAO,MAAA;AAAA,gCACP,MAAA,EAAQ,MAAA;AAAA,gCACR,YAAA,EAAc,KAAA;AAAA,gCACd,UAAA,EAAY,MAAA;AAAA,gCACZ,OAAA,EAAS,MAAA;AAAA,gCACT,UAAA,EAAY,QAAA;AAAA,gCACZ,cAAA,EAAgB;AAAA,+BAClB;AAAA,8BAEA,QAAA,kBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,IAAA,EAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,MAAA,EAAO,aAAY,GAAA,EACpF,QAAA,EAAA;AAAA,gDAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,GAAE,UAAA,EAAW,CAAA;AAAA,gDACnBA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA,+BAAA,EAC1B;AAAA;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AAAA,eACF;AAAA,8BAGAA,cAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,IAAA,EAAM,CAAA;AAAA,oBACN,OAAA,EAAS,MAAA;AAAA,oBACT,cAAA,EAAgB,eAAA;AAAA,oBAChB,GAAA,EAAK,MAAA;AAAA,oBACL,OAAA,EAAS,MAAA;AAAA,oBACT,SAAA,EAAW;AAAA,mBACb;AAAA,kBAEC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,qBACzBA,cAAA;AAAA,oBAAC,eAAA;AAAA,oBAAA;AAAA,sBAEC,MAAM,MAAA,CAAO,IAAA;AAAA,sBACb,SAAS,MAAA,CAAO,OAAA;AAAA,sBAChB,UAAU,MAAA,CAAO,QAAA;AAAA,sBACjB,aAAa,MAAA,CAAO,WAAA;AAAA,sBACpB,OAAA,EAAS,MAAM,kBAAA,GAAqB,MAAA,CAAO,IAAI;AAAA,qBAAA;AAAA,oBAL1C,MAAA,CAAO;AAAA,mBAOf;AAAA;AAAA;AACH;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;;AChZA,aAAA;AAAA,EACE,QAAA;AAAA,EACA;AAAA,IACE,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,WAAA,EAAa,wCAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb,CAAA","file":"index.js","sourcesContent":["import type { ComponentType } from 'react';\nimport type { ComponentRegistry, ThemeConfig } from '../types';\n\n// 存储所有主题的组件注册表\nconst registries: Record<string, ComponentRegistry> = {};\n\n// 存储主题配置\nconst themeConfigs: Record<string, ThemeConfig> = {};\n\n/**\n * 注册主题组件\n * @param themeId 主题 ID (如 'bsd', 'artist', 'concept')\n * @param components 组件注册表\n * @param config 主题配置(可选)\n */\nexport function registerTheme(\n themeId: string,\n components: ComponentRegistry,\n config?: Omit<ThemeConfig, 'id'>\n): void {\n registries[themeId] = { ...registries[themeId], ...components };\n\n if (config) {\n themeConfigs[themeId] = { id: themeId, ...config };\n }\n}\n\n/**\n * 注册单个组件到指定主题\n * @param themeId 主题 ID\n * @param componentName 组件名称\n * @param component 组件\n */\nexport function registerComponent(\n themeId: string,\n componentName: string,\n component: ComponentType<any>\n): void {\n if (!registries[themeId]) {\n registries[themeId] = {};\n }\n registries[themeId][componentName] = component;\n}\n\n/**\n * 解析组件 - 优先使用主题特定组件,fallback 到 default\n * @param themeId 主题 ID\n * @param componentName 组件名称\n * @returns 组件或 null\n */\nexport function resolveComponent<P = any>(\n themeId: string,\n componentName: string\n): ComponentType<P> | null {\n // 1. 先尝试获取主题特定组件\n const themeComponent = registries[themeId]?.[componentName];\n if (themeComponent) {\n return themeComponent as ComponentType<P>;\n }\n\n // 2. Fallback 到 default 主题\n const defaultComponent = registries['default']?.[componentName];\n if (defaultComponent) {\n return defaultComponent as ComponentType<P>;\n }\n\n // 3. 未找到\n return null;\n}\n\n/**\n * 检查主题是否有特定组件的定制版本\n * @param themeId 主题 ID\n * @param componentName 组件名称\n */\nexport function hasCustomComponent(themeId: string, componentName: string): boolean {\n return !!registries[themeId]?.[componentName];\n}\n\n/**\n * 获取主题的所有已注册组件名称\n * @param themeId 主题 ID\n */\nexport function getRegisteredComponents(themeId: string): string[] {\n return Object.keys(registries[themeId] || {});\n}\n\n/**\n * 获取所有已注册的主题 ID\n */\nexport function getRegisteredThemes(): string[] {\n return Object.keys(registries);\n}\n\n/**\n * 获取主题配置\n * @param themeId 主题 ID\n */\nexport function getThemeConfig(themeId: string): ThemeConfig | null {\n return themeConfigs[themeId] || null;\n}\n\n/**\n * 清除所有注册(主要用于测试)\n */\nexport function clearRegistry(): void {\n Object.keys(registries).forEach((key) => delete registries[key]);\n Object.keys(themeConfigs).forEach((key) => delete themeConfigs[key]);\n}\n","'use client';\n\nimport React, { useState } from 'react';\n\n// ==================== 类型定义 ====================\n\nexport interface QuickActionData {\n name: string;\n iconUrl: string;\n titleUrl: string;\n subtitleUrl: string;\n}\n\nexport interface UserInfo {\n name?: string;\n photo?: string;\n}\n\nexport interface ArtistLandingPageProps {\n /** 是否已认证 */\n isAuthenticated?: boolean;\n /** 用户信息 */\n user?: UserInfo | null;\n /** 快速操作数据(可覆盖默认值) */\n quickActions?: QuickActionData[];\n /** 点击进入工作台 */\n onEnterWorkbench?: () => void;\n /** 点击登录 */\n onLogin?: () => void;\n /** 点击快速操作 */\n onQuickActionClick?: (name: string) => void;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 动态背景组件(可选,由主项目注入) */\n backgroundComponent?: React.ReactNode;\n}\n\n// ==================== 默认配置 ====================\n\nexport const ARTIST_CONFIG = {\n iconUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/icon.svg',\n titleUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/title%E8%89%BA%E6%9C%AF%E5%AE%B6.svg',\n sloganUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/icons/artist/home.svg',\n quickActionsBaseUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/quick-actions',\n};\n\nexport const ARTIST_DEFAULT_QUICK_ACTIONS: QuickActionData[] = [\n {\n name: '意图表达',\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/icon.svg`,\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/title.svg`,\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/subtitle.svg`,\n },\n {\n name: '一键生成',\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/icon.svg`,\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/title.svg`,\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/subtitle.svg`,\n },\n {\n name: '智能修改',\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/icon.svg`,\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/title.svg`,\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/subtitle.svg`,\n },\n];\n\n// ==================== 子组件 ====================\n\n// 箭头图标\nconst ArrowUpRightIcon: React.FC<{ size?: number; color?: string }> = ({ size = 40, color = '#ffffff80' }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\">\n <path d=\"M7 17L17 7\" />\n <path d=\"M7 7h10v10\" />\n </svg>\n);\n\n// 快速操作卡片\ninterface QuickActionCardProps {\n name: string;\n iconUrl: string;\n titleUrl: string;\n subtitleUrl: string;\n onClick?: () => void;\n}\n\nconst QuickActionCard: React.FC<QuickActionCardProps> = ({ name, iconUrl, titleUrl, subtitleUrl, onClick }) => {\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n <div\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n overflow: 'hidden',\n borderRadius: '1rem',\n padding: '26px 20px',\n cursor: 'pointer',\n background: 'linear-gradient(180deg, rgba(255, 255, 255, 0.5625) 2%, rgba(90, 87, 83, 0.75) 80%)',\n backgroundBlendMode: 'overlay',\n border: '1.76px solid rgba(255, 255, 255, 0.5)',\n boxShadow: 'inset 0px 0px 0px 0px rgba(0, 0, 0, 0.1)',\n transition: 'all 0.3s ease',\n minHeight: '350px',\n }}\n >\n {/* 箭头 */}\n <div\n style={{\n position: 'absolute',\n right: '12px',\n top: '12px',\n width: '40px',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n background: isHovered ? '#000' : 'transparent',\n transition: 'background 0.3s',\n }}\n >\n <ArrowUpRightIcon size={40} color=\"#ffffff80\" />\n </div>\n\n {/* 图标 */}\n <img\n src={iconUrl}\n alt={name}\n style={{\n position: 'absolute',\n right: '20%',\n bottom: '30%',\n width: '120px',\n height: '120px',\n objectFit: 'contain',\n opacity: 0.8,\n filter: isHovered ? 'hue-rotate(180deg)' : 'none',\n transition: 'filter 0.3s',\n }}\n />\n\n {/* 文本 */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', zIndex: 10 }}>\n <img\n src={titleUrl}\n alt={name}\n style={{\n height: '24px',\n objectFit: 'contain',\n objectPosition: 'left',\n filter: isHovered ? 'brightness(0.7)' : 'none',\n transition: 'filter 0.3s',\n }}\n />\n <img\n src={subtitleUrl}\n alt=\"\"\n style={{\n height: '16px',\n objectFit: 'contain',\n objectPosition: 'left',\n filter: isHovered ? 'invert(1)' : 'none',\n transition: 'filter 0.3s',\n }}\n />\n </div>\n </div>\n );\n};\n\n// ==================== 主组件 ====================\n\nexport function ArtistLandingPage({\n isAuthenticated = false,\n user,\n quickActions = ARTIST_DEFAULT_QUICK_ACTIONS,\n onEnterWorkbench,\n onLogin,\n onQuickActionClick,\n className = '',\n style = {},\n backgroundComponent,\n}: ArtistLandingPageProps) {\n const handleToWorkbench = () => {\n if (isAuthenticated) {\n onEnterWorkbench?.();\n } else {\n onLogin?.();\n }\n };\n\n const handleUserClick = () => {\n onEnterWorkbench?.();\n };\n\n return (\n <div\n className={className}\n style={{\n position: 'relative',\n minHeight: '100vh',\n width: '100%',\n overflow: 'hidden',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n ...style,\n }}\n >\n {/* 动态背景 */}\n {backgroundComponent || (\n <div\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n zIndex: 0,\n background: 'linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%)',\n }}\n />\n )}\n\n {/* 顶部导航栏 */}\n <header\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100px',\n zIndex: 20,\n padding: '30px',\n boxSizing: 'border-box',\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25)',\n backdropFilter: 'blur(10px)',\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: '30px',\n borderBottom: '1px solid rgba(255, 255, 255, 0.2)',\n }}\n >\n {/* Logo */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', marginLeft: '16px' }}>\n <img src={ARTIST_CONFIG.iconUrl} alt=\"logo\" style={{ width: '46px', height: '46px' }} />\n <img src={ARTIST_CONFIG.titleUrl} alt=\"艺术家\" style={{ height: '36px' }} />\n </div>\n\n {/* 用户头像/登录 */}\n <div style={{ marginRight: '16px' }}>\n {isAuthenticated && user ? (\n <div onClick={handleUserClick} style={{ cursor: 'pointer' }}>\n <img\n src={user.photo || ''}\n alt={user.name || ''}\n title={user.name}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n border: '2px solid rgba(255, 255, 255, 0.2)',\n objectFit: 'cover',\n }}\n />\n </div>\n ) : (\n <button\n onClick={onLogin}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n border: '1px solid rgba(255, 255, 255, 0.3)',\n background: 'rgba(255, 255, 255, 0.1)',\n color: '#fff',\n cursor: 'pointer',\n fontSize: '14px',\n transition: 'all 0.3s',\n backdropFilter: 'blur(10px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n </header>\n\n {/* 主内容区 */}\n <div\n style={{\n position: 'fixed',\n zIndex: 10,\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100vh',\n }}\n >\n {/* Slogan 区域 */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '150px 0 0 30px',\n gap: '30px',\n }}\n >\n <img\n src={ARTIST_CONFIG.sloganUrl}\n alt=\"slogan\"\n style={{ maxWidth: '80%', height: 'auto' }}\n />\n\n {/* 进入按钮 */}\n <div\n onClick={handleToWorkbench}\n style={{\n marginTop: '40px',\n width: '308px',\n height: '77px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '12px',\n background: 'linear-gradient(103deg, #4D8F9D 0%, #416887 100%)',\n borderRadius: '15px',\n cursor: 'pointer',\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25), 0 0 20px rgba(255, 255, 255, 0.3), 0 0 40px rgba(255, 255, 255, 0.2)',\n transition: 'all 0.3s',\n color: '#fff',\n fontSize: '26px',\n fontWeight: 600,\n }}\n >\n <svg width=\"24\" height=\"23\" viewBox=\"0 0 24 23\" fill=\"#fff\">\n <path d=\"M20.414621,7.7390924L20.145603,8.3532591C19.948801,8.802886,19.323929,8.802886,19.12702,8.3532591L18.858112,7.7390924C18.378654,6.6439967,17.515091,5.7721038,16.43749,5.2951164L15.60873,4.928297C15.160691,4.729948,15.160691,4.0809946,15.60873,3.8826451L16.39113,3.5363247C17.496439,3.0470688,18.375492,2.1429076,18.846657,1.0106162L19.122875,0.34691912C19.315418,-0.11563972,19.957314,-0.11563972,20.149748,0.34691912L20.425968,1.0106162C20.89724,2.1429076,21.776295,3.0470688,22.881603,3.5363247L23.663895,3.8826451C24.112041,4.0809946,24.112041,4.729948,23.663895,4.928297L22.835239,5.2951164C21.757639,5.7721038,20.894073,6.6439967,20.414621,7.7390924ZM10.909091,1.0857151C4.8841639,1.0857151,0,5.9466209,0,11.942858C0,13.791286,0.46411648,15.531795,1.2827022,17.055267L0,22.799999L5.7721863,21.523418C7.3029823,22.338139,9.0518188,22.799999,10.909091,22.799999C16.933966,22.799999,21.818182,17.939041,21.818182,11.942858C21.818182,11.505858,21.792221,11.074504,21.7416,10.650207L19.574947,10.906218C19.615528,11.24572,19.636366,11.591631,19.636366,11.942858C19.636366,16.73987,15.729055,20.628574,10.909091,20.628574C9.4532728,20.628574,8.0536156,20.275171,6.801033,19.608541L6.0880923,19.229088L2.8736296,19.940012L3.5879564,16.74085L3.2067165,16.031332C2.5368986,14.784716,2.1818182,13.391744,2.1818182,11.942858C2.1818182,7.1458678,6.089149,3.2571435,10.909091,3.2571435C11.663892,3.2571435,12.394691,3.3522527,13.09091,3.5305159L13.63451,1.4275739C12.762219,1.2042099,11.8488,1.0857151,10.909091,1.0857151ZM7.6363645,11.942858L5.4545455,11.942858C5.4545455,14.94095,7.8966331,17.371428,10.909091,17.371428C13.921529,17.371428,16.363638,14.94095,16.363638,11.942858L14.18182,11.942858C14.18182,13.741777,12.71662,15.200002,10.909091,15.200002C9.1015635,15.200002,7.6363645,13.741777,7.6363645,11.942858Z\" />\n </svg>\n 进入设计项目\n <div\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '8px',\n background: '#000',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n </div>\n </div>\n </div>\n\n {/* 快速操作区域 */}\n <div\n style={{\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between',\n gap: '30px',\n padding: '30px',\n marginTop: 'auto',\n }}\n >\n {quickActions.map((action, index) => (\n <QuickActionCard\n key={action.name}\n name={action.name}\n iconUrl={action.iconUrl}\n titleUrl={action.titleUrl}\n subtitleUrl={action.subtitleUrl}\n onClick={() => onQuickActionClick?.(action.name)}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default ArtistLandingPage;\n","import { registerTheme } from '../../registry';\nimport { ArtistLandingPage, ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS } from './components/LandingPage';\n\n// 注册 Artist 主题\nregisterTheme(\n 'artist',\n {\n 'landing-page': ArtistLandingPage,\n },\n {\n name: 'Artist Theme',\n description: 'Artist Theme Components for Monkeys UI',\n version: '1.0.0',\n }\n);\n\n// 导出组件\nexport { ArtistLandingPage };\n\n// 导出类型\nexport type { ArtistLandingPageProps, QuickActionData } from './components/LandingPage';\n\n// 导出配置\nexport { ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS };\n"]}
1
+ {"version":3,"sources":["../../../src/registry/index.ts","../../../src/themes/artist/components/LandingPage.tsx","../../../src/themes/artist/index.ts"],"names":["jsxs","jsx","useState"],"mappings":"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","file":"index.js","sourcesContent":["import type { ComponentType } from 'react';\r\nimport type { ComponentRegistry, ThemeConfig } from '../types';\r\n\r\n// 存储所有主题的组件注册表\r\nconst registries: Record<string, ComponentRegistry> = {};\r\n\r\n// 存储主题配置\r\nconst themeConfigs: Record<string, ThemeConfig> = {};\r\n\r\n/**\r\n * 注册主题组件\r\n * @param themeId 主题 ID (如 'bsd', 'artist', 'concept')\r\n * @param components 组件注册表\r\n * @param config 主题配置(可选)\r\n */\r\nexport function registerTheme(\r\n themeId: string,\r\n components: ComponentRegistry,\r\n config?: Omit<ThemeConfig, 'id'>\r\n): void {\r\n registries[themeId] = { ...registries[themeId], ...components };\r\n\r\n if (config) {\r\n themeConfigs[themeId] = { id: themeId, ...config };\r\n }\r\n}\r\n\r\n/**\r\n * 注册单个组件到指定主题\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n * @param component 组件\r\n */\r\nexport function registerComponent(\r\n themeId: string,\r\n componentName: string,\r\n component: ComponentType<any>\r\n): void {\r\n if (!registries[themeId]) {\r\n registries[themeId] = {};\r\n }\r\n registries[themeId][componentName] = component;\r\n}\r\n\r\n/**\r\n * 解析组件 - 优先使用主题特定组件,fallback 到 default\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n * @returns 组件或 null\r\n */\r\nexport function resolveComponent<P = any>(\r\n themeId: string,\r\n componentName: string\r\n): ComponentType<P> | null {\r\n // 1. 先尝试获取主题特定组件\r\n const themeComponent = registries[themeId]?.[componentName];\r\n if (themeComponent) {\r\n return themeComponent as ComponentType<P>;\r\n }\r\n\r\n // 2. Fallback 到 default 主题\r\n const defaultComponent = registries['default']?.[componentName];\r\n if (defaultComponent) {\r\n return defaultComponent as ComponentType<P>;\r\n }\r\n\r\n // 3. 未找到\r\n return null;\r\n}\r\n\r\n/**\r\n * 检查主题是否有特定组件的定制版本\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n */\r\nexport function hasCustomComponent(themeId: string, componentName: string): boolean {\r\n return !!registries[themeId]?.[componentName];\r\n}\r\n\r\n/**\r\n * 获取主题的所有已注册组件名称\r\n * @param themeId 主题 ID\r\n */\r\nexport function getRegisteredComponents(themeId: string): string[] {\r\n return Object.keys(registries[themeId] || {});\r\n}\r\n\r\n/**\r\n * 获取所有已注册的主题 ID\r\n */\r\nexport function getRegisteredThemes(): string[] {\r\n return Object.keys(registries);\r\n}\r\n\r\n/**\r\n * 获取主题配置\r\n * @param themeId 主题 ID\r\n */\r\nexport function getThemeConfig(themeId: string): ThemeConfig | null {\r\n return themeConfigs[themeId] || null;\r\n}\r\n\r\n/**\r\n * 清除所有注册(主要用于测试)\r\n */\r\nexport function clearRegistry(): void {\r\n Object.keys(registries).forEach((key) => delete registries[key]);\r\n Object.keys(themeConfigs).forEach((key) => delete themeConfigs[key]);\r\n}\r\n","'use client';\r\n\r\nimport React, { useState } from 'react';\r\n\r\n// ==================== 类型定义 ====================\r\n\r\nexport interface QuickActionData {\r\n name: string;\r\n iconUrl: string;\r\n titleUrl: string;\r\n subtitleUrl: string;\r\n}\r\n\r\nexport interface UserInfo {\r\n name?: string;\r\n photo?: string;\r\n}\r\n\r\nexport interface ArtistLandingPageProps {\r\n /** 是否已认证 */\r\n isAuthenticated?: boolean;\r\n /** 用户信息 */\r\n user?: UserInfo | null;\r\n /** 快速操作数据(可覆盖默认值) */\r\n quickActions?: QuickActionData[];\r\n /** 点击进入工作台 */\r\n onEnterWorkbench?: () => void;\r\n /** 点击登录 */\r\n onLogin?: () => void;\r\n /** 点击快速操作 */\r\n onQuickActionClick?: (name: string) => void;\r\n /** 自定义类名 */\r\n className?: string;\r\n /** 自定义样式 */\r\n style?: React.CSSProperties;\r\n /** 动态背景组件(可选,由主项目注入) */\r\n backgroundComponent?: React.ReactNode;\r\n}\r\n\r\n// ==================== 默认配置 ====================\r\n\r\nexport const ARTIST_CONFIG = {\r\n iconUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/icon.svg',\r\n titleUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/title%E8%89%BA%E6%9C%AF%E5%AE%B6.svg',\r\n sloganUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/icons/artist/home.svg',\r\n quickActionsBaseUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/quick-actions',\r\n};\r\n\r\nexport const ARTIST_DEFAULT_QUICK_ACTIONS: QuickActionData[] = [\r\n {\r\n name: '意图表达',\r\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/icon.svg`,\r\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/title.svg`,\r\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/subtitle.svg`,\r\n },\r\n {\r\n name: '一键生成',\r\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/icon.svg`,\r\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/title.svg`,\r\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/subtitle.svg`,\r\n },\r\n {\r\n name: '智能修改',\r\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/icon.svg`,\r\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/title.svg`,\r\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/subtitle.svg`,\r\n },\r\n];\r\n\r\n// ==================== 子组件 ====================\r\n\r\n// 箭头图标\r\nconst ArrowUpRightIcon: React.FC<{ size?: number; color?: string }> = ({ size = 40, color = '#ffffff80' }) => (\r\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\">\r\n <path d=\"M7 17L17 7\" />\r\n <path d=\"M7 7h10v10\" />\r\n </svg>\r\n);\r\n\r\n// 快速操作卡片\r\ninterface QuickActionCardProps {\r\n name: string;\r\n iconUrl: string;\r\n titleUrl: string;\r\n subtitleUrl: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst QuickActionCard: React.FC<QuickActionCardProps> = ({ name, iconUrl, titleUrl, subtitleUrl, onClick }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n return (\r\n <div\r\n onClick={onClick}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n style={{\r\n position: 'relative',\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-end',\r\n overflow: 'hidden',\r\n borderRadius: '1rem',\r\n padding: '26px 20px',\r\n cursor: 'pointer',\r\n background: 'linear-gradient(180deg, rgba(255, 255, 255, 0.5625) 2%, rgba(90, 87, 83, 0.75) 80%)',\r\n backgroundBlendMode: 'overlay',\r\n border: '1.76px solid rgba(255, 255, 255, 0.5)',\r\n boxShadow: 'inset 0px 0px 0px 0px rgba(0, 0, 0, 0.1)',\r\n transition: 'all 0.3s ease',\r\n minHeight: '350px',\r\n }}\r\n >\r\n {/* 箭头 */}\r\n <div\r\n style={{\r\n position: 'absolute',\r\n right: '12px',\r\n top: '12px',\r\n width: '40px',\r\n height: '40px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '50%',\r\n background: isHovered ? '#000' : 'transparent',\r\n transition: 'background 0.3s',\r\n }}\r\n >\r\n <ArrowUpRightIcon size={40} color=\"#ffffff80\" />\r\n </div>\r\n\r\n {/* 图标 */}\r\n <img\r\n src={iconUrl}\r\n alt={name}\r\n style={{\r\n position: 'absolute',\r\n right: '20%',\r\n bottom: '30%',\r\n width: '120px',\r\n height: '120px',\r\n objectFit: 'contain',\r\n opacity: 0.8,\r\n filter: isHovered ? 'hue-rotate(180deg)' : 'none',\r\n transition: 'filter 0.3s',\r\n }}\r\n />\r\n\r\n {/* 文本 */}\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', zIndex: 10 }}>\r\n <img\r\n src={titleUrl}\r\n alt={name}\r\n style={{\r\n height: '24px',\r\n objectFit: 'contain',\r\n objectPosition: 'left',\r\n filter: isHovered ? 'brightness(0.7)' : 'none',\r\n transition: 'filter 0.3s',\r\n }}\r\n />\r\n <img\r\n src={subtitleUrl}\r\n alt=\"\"\r\n style={{\r\n height: '16px',\r\n objectFit: 'contain',\r\n objectPosition: 'left',\r\n filter: isHovered ? 'invert(1)' : 'none',\r\n transition: 'filter 0.3s',\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ==================== 主组件 ====================\r\n\r\nexport function ArtistLandingPage({\r\n isAuthenticated = false,\r\n user,\r\n quickActions = ARTIST_DEFAULT_QUICK_ACTIONS,\r\n onEnterWorkbench,\r\n onLogin,\r\n onQuickActionClick,\r\n className = '',\r\n style = {},\r\n backgroundComponent,\r\n}: ArtistLandingPageProps) {\r\n const handleToWorkbench = () => {\r\n if (isAuthenticated) {\r\n onEnterWorkbench?.();\r\n } else {\r\n onLogin?.();\r\n }\r\n };\r\n\r\n const handleUserClick = () => {\r\n onEnterWorkbench?.();\r\n };\r\n\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n position: 'relative',\r\n minHeight: '100vh',\r\n width: '100%',\r\n overflow: 'hidden',\r\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n ...style,\r\n }}\r\n >\r\n {/* 动态背景 */}\r\n {backgroundComponent || (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100vw',\r\n height: '100vh',\r\n zIndex: 0,\r\n background: 'linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%)',\r\n }}\r\n />\r\n )}\r\n\r\n {/* 顶部导航栏 */}\r\n <header\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100px',\r\n zIndex: 20,\r\n padding: '30px',\r\n boxSizing: 'border-box',\r\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25)',\r\n backdropFilter: 'blur(10px)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n paddingBottom: '30px',\r\n borderBottom: '1px solid rgba(255, 255, 255, 0.2)',\r\n }}\r\n >\r\n {/* Logo */}\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', marginLeft: '16px' }}>\r\n <img src={ARTIST_CONFIG.iconUrl} alt=\"logo\" style={{ width: '46px', height: '46px' }} />\r\n <img src={ARTIST_CONFIG.titleUrl} alt=\"艺术家\" style={{ height: '36px' }} />\r\n </div>\r\n\r\n {/* 用户头像/登录 */}\r\n <div style={{ marginRight: '16px' }}>\r\n {isAuthenticated && user ? (\r\n <div onClick={handleUserClick} style={{ cursor: 'pointer' }}>\r\n <img\r\n src={user.photo || ''}\r\n alt={user.name || ''}\r\n title={user.name}\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n border: '2px solid rgba(255, 255, 255, 0.2)',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <button\r\n onClick={onLogin}\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n border: '1px solid rgba(255, 255, 255, 0.3)',\r\n background: 'rgba(255, 255, 255, 0.1)',\r\n color: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n transition: 'all 0.3s',\r\n backdropFilter: 'blur(10px)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </header>\r\n\r\n {/* 主内容区 */}\r\n <div\r\n style={{\r\n position: 'fixed',\r\n zIndex: 10,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n height: '100vh',\r\n }}\r\n >\r\n {/* Slogan 区域 */}\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: '150px 0 0 30px',\r\n gap: '30px',\r\n }}\r\n >\r\n <img\r\n src={ARTIST_CONFIG.sloganUrl}\r\n alt=\"slogan\"\r\n style={{ maxWidth: '80%', height: 'auto' }}\r\n />\r\n\r\n {/* 进入按钮 */}\r\n <div\r\n onClick={handleToWorkbench}\r\n style={{\r\n marginTop: '40px',\r\n width: '308px',\r\n height: '77px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '12px',\r\n background: 'linear-gradient(103deg, #4D8F9D 0%, #416887 100%)',\r\n borderRadius: '15px',\r\n cursor: 'pointer',\r\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25), 0 0 20px rgba(255, 255, 255, 0.3), 0 0 40px rgba(255, 255, 255, 0.2)',\r\n transition: 'all 0.3s',\r\n color: '#fff',\r\n fontSize: '26px',\r\n fontWeight: 600,\r\n }}\r\n >\r\n <svg width=\"24\" height=\"23\" viewBox=\"0 0 24 23\" fill=\"#fff\">\r\n <path d=\"M20.414621,7.7390924L20.145603,8.3532591C19.948801,8.802886,19.323929,8.802886,19.12702,8.3532591L18.858112,7.7390924C18.378654,6.6439967,17.515091,5.7721038,16.43749,5.2951164L15.60873,4.928297C15.160691,4.729948,15.160691,4.0809946,15.60873,3.8826451L16.39113,3.5363247C17.496439,3.0470688,18.375492,2.1429076,18.846657,1.0106162L19.122875,0.34691912C19.315418,-0.11563972,19.957314,-0.11563972,20.149748,0.34691912L20.425968,1.0106162C20.89724,2.1429076,21.776295,3.0470688,22.881603,3.5363247L23.663895,3.8826451C24.112041,4.0809946,24.112041,4.729948,23.663895,4.928297L22.835239,5.2951164C21.757639,5.7721038,20.894073,6.6439967,20.414621,7.7390924ZM10.909091,1.0857151C4.8841639,1.0857151,0,5.9466209,0,11.942858C0,13.791286,0.46411648,15.531795,1.2827022,17.055267L0,22.799999L5.7721863,21.523418C7.3029823,22.338139,9.0518188,22.799999,10.909091,22.799999C16.933966,22.799999,21.818182,17.939041,21.818182,11.942858C21.818182,11.505858,21.792221,11.074504,21.7416,10.650207L19.574947,10.906218C19.615528,11.24572,19.636366,11.591631,19.636366,11.942858C19.636366,16.73987,15.729055,20.628574,10.909091,20.628574C9.4532728,20.628574,8.0536156,20.275171,6.801033,19.608541L6.0880923,19.229088L2.8736296,19.940012L3.5879564,16.74085L3.2067165,16.031332C2.5368986,14.784716,2.1818182,13.391744,2.1818182,11.942858C2.1818182,7.1458678,6.089149,3.2571435,10.909091,3.2571435C11.663892,3.2571435,12.394691,3.3522527,13.09091,3.5305159L13.63451,1.4275739C12.762219,1.2042099,11.8488,1.0857151,10.909091,1.0857151ZM7.6363645,11.942858L5.4545455,11.942858C5.4545455,14.94095,7.8966331,17.371428,10.909091,17.371428C13.921529,17.371428,16.363638,14.94095,16.363638,11.942858L14.18182,11.942858C14.18182,13.741777,12.71662,15.200002,10.909091,15.200002C9.1015635,15.200002,7.6363645,13.741777,7.6363645,11.942858Z\" />\r\n </svg>\r\n 进入设计项目\r\n <div\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '8px',\r\n background: '#000',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\r\n <path d=\"M5 12h14\" />\r\n <path d=\"m12 5 7 7-7 7\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* 快速操作区域 */}\r\n <div\r\n style={{\r\n flex: 1,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n gap: '30px',\r\n padding: '30px',\r\n marginTop: 'auto',\r\n }}\r\n >\r\n {quickActions.map((action, index) => (\r\n <QuickActionCard\r\n key={action.name}\r\n name={action.name}\r\n iconUrl={action.iconUrl}\r\n titleUrl={action.titleUrl}\r\n subtitleUrl={action.subtitleUrl}\r\n onClick={() => onQuickActionClick?.(action.name)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ArtistLandingPage;\r\n","import { registerTheme } from '../../registry';\r\nimport { ArtistLandingPage, ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS } from './components/LandingPage';\r\n\r\n// 注册 Artist 主题\r\nregisterTheme(\r\n 'artist',\r\n {\r\n 'landing-page': ArtistLandingPage,\r\n },\r\n {\r\n name: 'Artist Theme',\r\n description: 'Artist Theme Components for Monkeys UI',\r\n version: '1.0.0',\r\n }\r\n);\r\n\r\n// 导出组件\r\nexport { ArtistLandingPage };\r\n\r\n// 导出类型\r\nexport type { ArtistLandingPageProps, QuickActionData } from './components/LandingPage';\r\n\r\n// 导出配置\r\nexport { ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS };\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/registry/index.ts","../../../src/themes/artist/components/LandingPage.tsx","../../../src/themes/artist/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ComponentType } from 'react';\nimport type { ComponentRegistry, ThemeConfig } from '../types';\n\n// 存储所有主题的组件注册表\nconst registries: Record<string, ComponentRegistry> = {};\n\n// 存储主题配置\nconst themeConfigs: Record<string, ThemeConfig> = {};\n\n/**\n * 注册主题组件\n * @param themeId 主题 ID (如 'bsd', 'artist', 'concept')\n * @param components 组件注册表\n * @param config 主题配置(可选)\n */\nexport function registerTheme(\n themeId: string,\n components: ComponentRegistry,\n config?: Omit<ThemeConfig, 'id'>\n): void {\n registries[themeId] = { ...registries[themeId], ...components };\n\n if (config) {\n themeConfigs[themeId] = { id: themeId, ...config };\n }\n}\n\n/**\n * 注册单个组件到指定主题\n * @param themeId 主题 ID\n * @param componentName 组件名称\n * @param component 组件\n */\nexport function registerComponent(\n themeId: string,\n componentName: string,\n component: ComponentType<any>\n): void {\n if (!registries[themeId]) {\n registries[themeId] = {};\n }\n registries[themeId][componentName] = component;\n}\n\n/**\n * 解析组件 - 优先使用主题特定组件,fallback 到 default\n * @param themeId 主题 ID\n * @param componentName 组件名称\n * @returns 组件或 null\n */\nexport function resolveComponent<P = any>(\n themeId: string,\n componentName: string\n): ComponentType<P> | null {\n // 1. 先尝试获取主题特定组件\n const themeComponent = registries[themeId]?.[componentName];\n if (themeComponent) {\n return themeComponent as ComponentType<P>;\n }\n\n // 2. Fallback 到 default 主题\n const defaultComponent = registries['default']?.[componentName];\n if (defaultComponent) {\n return defaultComponent as ComponentType<P>;\n }\n\n // 3. 未找到\n return null;\n}\n\n/**\n * 检查主题是否有特定组件的定制版本\n * @param themeId 主题 ID\n * @param componentName 组件名称\n */\nexport function hasCustomComponent(themeId: string, componentName: string): boolean {\n return !!registries[themeId]?.[componentName];\n}\n\n/**\n * 获取主题的所有已注册组件名称\n * @param themeId 主题 ID\n */\nexport function getRegisteredComponents(themeId: string): string[] {\n return Object.keys(registries[themeId] || {});\n}\n\n/**\n * 获取所有已注册的主题 ID\n */\nexport function getRegisteredThemes(): string[] {\n return Object.keys(registries);\n}\n\n/**\n * 获取主题配置\n * @param themeId 主题 ID\n */\nexport function getThemeConfig(themeId: string): ThemeConfig | null {\n return themeConfigs[themeId] || null;\n}\n\n/**\n * 清除所有注册(主要用于测试)\n */\nexport function clearRegistry(): void {\n Object.keys(registries).forEach((key) => delete registries[key]);\n Object.keys(themeConfigs).forEach((key) => delete themeConfigs[key]);\n}\n","'use client';\n\nimport React, { useState } from 'react';\n\n// ==================== 类型定义 ====================\n\nexport interface QuickActionData {\n name: string;\n iconUrl: string;\n titleUrl: string;\n subtitleUrl: string;\n}\n\nexport interface UserInfo {\n name?: string;\n photo?: string;\n}\n\nexport interface ArtistLandingPageProps {\n /** 是否已认证 */\n isAuthenticated?: boolean;\n /** 用户信息 */\n user?: UserInfo | null;\n /** 快速操作数据(可覆盖默认值) */\n quickActions?: QuickActionData[];\n /** 点击进入工作台 */\n onEnterWorkbench?: () => void;\n /** 点击登录 */\n onLogin?: () => void;\n /** 点击快速操作 */\n onQuickActionClick?: (name: string) => void;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 动态背景组件(可选,由主项目注入) */\n backgroundComponent?: React.ReactNode;\n}\n\n// ==================== 默认配置 ====================\n\nexport const ARTIST_CONFIG = {\n iconUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/icon.svg',\n titleUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/title%E8%89%BA%E6%9C%AF%E5%AE%B6.svg',\n sloganUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/icons/artist/home.svg',\n quickActionsBaseUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/quick-actions',\n};\n\nexport const ARTIST_DEFAULT_QUICK_ACTIONS: QuickActionData[] = [\n {\n name: '意图表达',\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/icon.svg`,\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/title.svg`,\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/subtitle.svg`,\n },\n {\n name: '一键生成',\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/icon.svg`,\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/title.svg`,\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/subtitle.svg`,\n },\n {\n name: '智能修改',\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/icon.svg`,\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/title.svg`,\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/subtitle.svg`,\n },\n];\n\n// ==================== 子组件 ====================\n\n// 箭头图标\nconst ArrowUpRightIcon: React.FC<{ size?: number; color?: string }> = ({ size = 40, color = '#ffffff80' }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\">\n <path d=\"M7 17L17 7\" />\n <path d=\"M7 7h10v10\" />\n </svg>\n);\n\n// 快速操作卡片\ninterface QuickActionCardProps {\n name: string;\n iconUrl: string;\n titleUrl: string;\n subtitleUrl: string;\n onClick?: () => void;\n}\n\nconst QuickActionCard: React.FC<QuickActionCardProps> = ({ name, iconUrl, titleUrl, subtitleUrl, onClick }) => {\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n <div\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'relative',\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n overflow: 'hidden',\n borderRadius: '1rem',\n padding: '26px 20px',\n cursor: 'pointer',\n background: 'linear-gradient(180deg, rgba(255, 255, 255, 0.5625) 2%, rgba(90, 87, 83, 0.75) 80%)',\n backgroundBlendMode: 'overlay',\n border: '1.76px solid rgba(255, 255, 255, 0.5)',\n boxShadow: 'inset 0px 0px 0px 0px rgba(0, 0, 0, 0.1)',\n transition: 'all 0.3s ease',\n minHeight: '350px',\n }}\n >\n {/* 箭头 */}\n <div\n style={{\n position: 'absolute',\n right: '12px',\n top: '12px',\n width: '40px',\n height: '40px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n background: isHovered ? '#000' : 'transparent',\n transition: 'background 0.3s',\n }}\n >\n <ArrowUpRightIcon size={40} color=\"#ffffff80\" />\n </div>\n\n {/* 图标 */}\n <img\n src={iconUrl}\n alt={name}\n style={{\n position: 'absolute',\n right: '20%',\n bottom: '30%',\n width: '120px',\n height: '120px',\n objectFit: 'contain',\n opacity: 0.8,\n filter: isHovered ? 'hue-rotate(180deg)' : 'none',\n transition: 'filter 0.3s',\n }}\n />\n\n {/* 文本 */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', zIndex: 10 }}>\n <img\n src={titleUrl}\n alt={name}\n style={{\n height: '24px',\n objectFit: 'contain',\n objectPosition: 'left',\n filter: isHovered ? 'brightness(0.7)' : 'none',\n transition: 'filter 0.3s',\n }}\n />\n <img\n src={subtitleUrl}\n alt=\"\"\n style={{\n height: '16px',\n objectFit: 'contain',\n objectPosition: 'left',\n filter: isHovered ? 'invert(1)' : 'none',\n transition: 'filter 0.3s',\n }}\n />\n </div>\n </div>\n );\n};\n\n// ==================== 主组件 ====================\n\nexport function ArtistLandingPage({\n isAuthenticated = false,\n user,\n quickActions = ARTIST_DEFAULT_QUICK_ACTIONS,\n onEnterWorkbench,\n onLogin,\n onQuickActionClick,\n className = '',\n style = {},\n backgroundComponent,\n}: ArtistLandingPageProps) {\n const handleToWorkbench = () => {\n if (isAuthenticated) {\n onEnterWorkbench?.();\n } else {\n onLogin?.();\n }\n };\n\n const handleUserClick = () => {\n onEnterWorkbench?.();\n };\n\n return (\n <div\n className={className}\n style={{\n position: 'relative',\n minHeight: '100vh',\n width: '100%',\n overflow: 'hidden',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n ...style,\n }}\n >\n {/* 动态背景 */}\n {backgroundComponent || (\n <div\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n zIndex: 0,\n background: 'linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%)',\n }}\n />\n )}\n\n {/* 顶部导航栏 */}\n <header\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100%',\n height: '100px',\n zIndex: 20,\n padding: '30px',\n boxSizing: 'border-box',\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25)',\n backdropFilter: 'blur(10px)',\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: '30px',\n borderBottom: '1px solid rgba(255, 255, 255, 0.2)',\n }}\n >\n {/* Logo */}\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', marginLeft: '16px' }}>\n <img src={ARTIST_CONFIG.iconUrl} alt=\"logo\" style={{ width: '46px', height: '46px' }} />\n <img src={ARTIST_CONFIG.titleUrl} alt=\"艺术家\" style={{ height: '36px' }} />\n </div>\n\n {/* 用户头像/登录 */}\n <div style={{ marginRight: '16px' }}>\n {isAuthenticated && user ? (\n <div onClick={handleUserClick} style={{ cursor: 'pointer' }}>\n <img\n src={user.photo || ''}\n alt={user.name || ''}\n title={user.name}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n border: '2px solid rgba(255, 255, 255, 0.2)',\n objectFit: 'cover',\n }}\n />\n </div>\n ) : (\n <button\n onClick={onLogin}\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n border: '1px solid rgba(255, 255, 255, 0.3)',\n background: 'rgba(255, 255, 255, 0.1)',\n color: '#fff',\n cursor: 'pointer',\n fontSize: '14px',\n transition: 'all 0.3s',\n backdropFilter: 'blur(10px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n </header>\n\n {/* 主内容区 */}\n <div\n style={{\n position: 'fixed',\n zIndex: 10,\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: '100vh',\n }}\n >\n {/* Slogan 区域 */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '150px 0 0 30px',\n gap: '30px',\n }}\n >\n <img\n src={ARTIST_CONFIG.sloganUrl}\n alt=\"slogan\"\n style={{ maxWidth: '80%', height: 'auto' }}\n />\n\n {/* 进入按钮 */}\n <div\n onClick={handleToWorkbench}\n style={{\n marginTop: '40px',\n width: '308px',\n height: '77px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '12px',\n background: 'linear-gradient(103deg, #4D8F9D 0%, #416887 100%)',\n borderRadius: '15px',\n cursor: 'pointer',\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25), 0 0 20px rgba(255, 255, 255, 0.3), 0 0 40px rgba(255, 255, 255, 0.2)',\n transition: 'all 0.3s',\n color: '#fff',\n fontSize: '26px',\n fontWeight: 600,\n }}\n >\n <svg width=\"24\" height=\"23\" viewBox=\"0 0 24 23\" fill=\"#fff\">\n <path d=\"M20.414621,7.7390924L20.145603,8.3532591C19.948801,8.802886,19.323929,8.802886,19.12702,8.3532591L18.858112,7.7390924C18.378654,6.6439967,17.515091,5.7721038,16.43749,5.2951164L15.60873,4.928297C15.160691,4.729948,15.160691,4.0809946,15.60873,3.8826451L16.39113,3.5363247C17.496439,3.0470688,18.375492,2.1429076,18.846657,1.0106162L19.122875,0.34691912C19.315418,-0.11563972,19.957314,-0.11563972,20.149748,0.34691912L20.425968,1.0106162C20.89724,2.1429076,21.776295,3.0470688,22.881603,3.5363247L23.663895,3.8826451C24.112041,4.0809946,24.112041,4.729948,23.663895,4.928297L22.835239,5.2951164C21.757639,5.7721038,20.894073,6.6439967,20.414621,7.7390924ZM10.909091,1.0857151C4.8841639,1.0857151,0,5.9466209,0,11.942858C0,13.791286,0.46411648,15.531795,1.2827022,17.055267L0,22.799999L5.7721863,21.523418C7.3029823,22.338139,9.0518188,22.799999,10.909091,22.799999C16.933966,22.799999,21.818182,17.939041,21.818182,11.942858C21.818182,11.505858,21.792221,11.074504,21.7416,10.650207L19.574947,10.906218C19.615528,11.24572,19.636366,11.591631,19.636366,11.942858C19.636366,16.73987,15.729055,20.628574,10.909091,20.628574C9.4532728,20.628574,8.0536156,20.275171,6.801033,19.608541L6.0880923,19.229088L2.8736296,19.940012L3.5879564,16.74085L3.2067165,16.031332C2.5368986,14.784716,2.1818182,13.391744,2.1818182,11.942858C2.1818182,7.1458678,6.089149,3.2571435,10.909091,3.2571435C11.663892,3.2571435,12.394691,3.3522527,13.09091,3.5305159L13.63451,1.4275739C12.762219,1.2042099,11.8488,1.0857151,10.909091,1.0857151ZM7.6363645,11.942858L5.4545455,11.942858C5.4545455,14.94095,7.8966331,17.371428,10.909091,17.371428C13.921529,17.371428,16.363638,14.94095,16.363638,11.942858L14.18182,11.942858C14.18182,13.741777,12.71662,15.200002,10.909091,15.200002C9.1015635,15.200002,7.6363645,13.741777,7.6363645,11.942858Z\" />\n </svg>\n 进入设计项目\n <div\n style={{\n width: '40px',\n height: '40px',\n borderRadius: '8px',\n background: '#000',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n </div>\n </div>\n </div>\n\n {/* 快速操作区域 */}\n <div\n style={{\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between',\n gap: '30px',\n padding: '30px',\n marginTop: 'auto',\n }}\n >\n {quickActions.map((action, index) => (\n <QuickActionCard\n key={action.name}\n name={action.name}\n iconUrl={action.iconUrl}\n titleUrl={action.titleUrl}\n subtitleUrl={action.subtitleUrl}\n onClick={() => onQuickActionClick?.(action.name)}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default ArtistLandingPage;\n","import { registerTheme } from '../../registry';\nimport { ArtistLandingPage, ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS } from './components/LandingPage';\n\n// 注册 Artist 主题\nregisterTheme(\n 'artist',\n {\n 'landing-page': ArtistLandingPage,\n },\n {\n name: 'Artist Theme',\n description: 'Artist Theme Components for Monkeys UI',\n version: '1.0.0',\n }\n);\n\n// 导出组件\nexport { ArtistLandingPage };\n\n// 导出类型\nexport type { ArtistLandingPageProps, QuickActionData } from './components/LandingPage';\n\n// 导出配置\nexport { ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS };\n"]}
1
+ {"version":3,"sources":["../../../src/registry/index.ts","../../../src/themes/artist/components/LandingPage.tsx","../../../src/themes/artist/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { ComponentType } from 'react';\r\nimport type { ComponentRegistry, ThemeConfig } from '../types';\r\n\r\n// 存储所有主题的组件注册表\r\nconst registries: Record<string, ComponentRegistry> = {};\r\n\r\n// 存储主题配置\r\nconst themeConfigs: Record<string, ThemeConfig> = {};\r\n\r\n/**\r\n * 注册主题组件\r\n * @param themeId 主题 ID (如 'bsd', 'artist', 'concept')\r\n * @param components 组件注册表\r\n * @param config 主题配置(可选)\r\n */\r\nexport function registerTheme(\r\n themeId: string,\r\n components: ComponentRegistry,\r\n config?: Omit<ThemeConfig, 'id'>\r\n): void {\r\n registries[themeId] = { ...registries[themeId], ...components };\r\n\r\n if (config) {\r\n themeConfigs[themeId] = { id: themeId, ...config };\r\n }\r\n}\r\n\r\n/**\r\n * 注册单个组件到指定主题\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n * @param component 组件\r\n */\r\nexport function registerComponent(\r\n themeId: string,\r\n componentName: string,\r\n component: ComponentType<any>\r\n): void {\r\n if (!registries[themeId]) {\r\n registries[themeId] = {};\r\n }\r\n registries[themeId][componentName] = component;\r\n}\r\n\r\n/**\r\n * 解析组件 - 优先使用主题特定组件,fallback 到 default\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n * @returns 组件或 null\r\n */\r\nexport function resolveComponent<P = any>(\r\n themeId: string,\r\n componentName: string\r\n): ComponentType<P> | null {\r\n // 1. 先尝试获取主题特定组件\r\n const themeComponent = registries[themeId]?.[componentName];\r\n if (themeComponent) {\r\n return themeComponent as ComponentType<P>;\r\n }\r\n\r\n // 2. Fallback 到 default 主题\r\n const defaultComponent = registries['default']?.[componentName];\r\n if (defaultComponent) {\r\n return defaultComponent as ComponentType<P>;\r\n }\r\n\r\n // 3. 未找到\r\n return null;\r\n}\r\n\r\n/**\r\n * 检查主题是否有特定组件的定制版本\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n */\r\nexport function hasCustomComponent(themeId: string, componentName: string): boolean {\r\n return !!registries[themeId]?.[componentName];\r\n}\r\n\r\n/**\r\n * 获取主题的所有已注册组件名称\r\n * @param themeId 主题 ID\r\n */\r\nexport function getRegisteredComponents(themeId: string): string[] {\r\n return Object.keys(registries[themeId] || {});\r\n}\r\n\r\n/**\r\n * 获取所有已注册的主题 ID\r\n */\r\nexport function getRegisteredThemes(): string[] {\r\n return Object.keys(registries);\r\n}\r\n\r\n/**\r\n * 获取主题配置\r\n * @param themeId 主题 ID\r\n */\r\nexport function getThemeConfig(themeId: string): ThemeConfig | null {\r\n return themeConfigs[themeId] || null;\r\n}\r\n\r\n/**\r\n * 清除所有注册(主要用于测试)\r\n */\r\nexport function clearRegistry(): void {\r\n Object.keys(registries).forEach((key) => delete registries[key]);\r\n Object.keys(themeConfigs).forEach((key) => delete themeConfigs[key]);\r\n}\r\n","'use client';\r\n\r\nimport React, { useState } from 'react';\r\n\r\n// ==================== 类型定义 ====================\r\n\r\nexport interface QuickActionData {\r\n name: string;\r\n iconUrl: string;\r\n titleUrl: string;\r\n subtitleUrl: string;\r\n}\r\n\r\nexport interface UserInfo {\r\n name?: string;\r\n photo?: string;\r\n}\r\n\r\nexport interface ArtistLandingPageProps {\r\n /** 是否已认证 */\r\n isAuthenticated?: boolean;\r\n /** 用户信息 */\r\n user?: UserInfo | null;\r\n /** 快速操作数据(可覆盖默认值) */\r\n quickActions?: QuickActionData[];\r\n /** 点击进入工作台 */\r\n onEnterWorkbench?: () => void;\r\n /** 点击登录 */\r\n onLogin?: () => void;\r\n /** 点击快速操作 */\r\n onQuickActionClick?: (name: string) => void;\r\n /** 自定义类名 */\r\n className?: string;\r\n /** 自定义样式 */\r\n style?: React.CSSProperties;\r\n /** 动态背景组件(可选,由主项目注入) */\r\n backgroundComponent?: React.ReactNode;\r\n}\r\n\r\n// ==================== 默认配置 ====================\r\n\r\nexport const ARTIST_CONFIG = {\r\n iconUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/icon.svg',\r\n titleUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/title%E8%89%BA%E6%9C%AF%E5%AE%B6.svg',\r\n sloganUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/icons/artist/home.svg',\r\n quickActionsBaseUrl: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/artist/quick-actions',\r\n};\r\n\r\nexport const ARTIST_DEFAULT_QUICK_ACTIONS: QuickActionData[] = [\r\n {\r\n name: '意图表达',\r\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/icon.svg`,\r\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/title.svg`,\r\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/意图表达/subtitle.svg`,\r\n },\r\n {\r\n name: '一键生成',\r\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/icon.svg`,\r\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/title.svg`,\r\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/一键生成/subtitle.svg`,\r\n },\r\n {\r\n name: '智能修改',\r\n iconUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/icon.svg`,\r\n titleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/title.svg`,\r\n subtitleUrl: `${ARTIST_CONFIG.quickActionsBaseUrl}/智能修改/subtitle.svg`,\r\n },\r\n];\r\n\r\n// ==================== 子组件 ====================\r\n\r\n// 箭头图标\r\nconst ArrowUpRightIcon: React.FC<{ size?: number; color?: string }> = ({ size = 40, color = '#ffffff80' }) => (\r\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"2\">\r\n <path d=\"M7 17L17 7\" />\r\n <path d=\"M7 7h10v10\" />\r\n </svg>\r\n);\r\n\r\n// 快速操作卡片\r\ninterface QuickActionCardProps {\r\n name: string;\r\n iconUrl: string;\r\n titleUrl: string;\r\n subtitleUrl: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst QuickActionCard: React.FC<QuickActionCardProps> = ({ name, iconUrl, titleUrl, subtitleUrl, onClick }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n return (\r\n <div\r\n onClick={onClick}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n style={{\r\n position: 'relative',\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'flex-end',\r\n overflow: 'hidden',\r\n borderRadius: '1rem',\r\n padding: '26px 20px',\r\n cursor: 'pointer',\r\n background: 'linear-gradient(180deg, rgba(255, 255, 255, 0.5625) 2%, rgba(90, 87, 83, 0.75) 80%)',\r\n backgroundBlendMode: 'overlay',\r\n border: '1.76px solid rgba(255, 255, 255, 0.5)',\r\n boxShadow: 'inset 0px 0px 0px 0px rgba(0, 0, 0, 0.1)',\r\n transition: 'all 0.3s ease',\r\n minHeight: '350px',\r\n }}\r\n >\r\n {/* 箭头 */}\r\n <div\r\n style={{\r\n position: 'absolute',\r\n right: '12px',\r\n top: '12px',\r\n width: '40px',\r\n height: '40px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '50%',\r\n background: isHovered ? '#000' : 'transparent',\r\n transition: 'background 0.3s',\r\n }}\r\n >\r\n <ArrowUpRightIcon size={40} color=\"#ffffff80\" />\r\n </div>\r\n\r\n {/* 图标 */}\r\n <img\r\n src={iconUrl}\r\n alt={name}\r\n style={{\r\n position: 'absolute',\r\n right: '20%',\r\n bottom: '30%',\r\n width: '120px',\r\n height: '120px',\r\n objectFit: 'contain',\r\n opacity: 0.8,\r\n filter: isHovered ? 'hue-rotate(180deg)' : 'none',\r\n transition: 'filter 0.3s',\r\n }}\r\n />\r\n\r\n {/* 文本 */}\r\n <div style={{ display: 'flex', flexDirection: 'column', gap: '24px', zIndex: 10 }}>\r\n <img\r\n src={titleUrl}\r\n alt={name}\r\n style={{\r\n height: '24px',\r\n objectFit: 'contain',\r\n objectPosition: 'left',\r\n filter: isHovered ? 'brightness(0.7)' : 'none',\r\n transition: 'filter 0.3s',\r\n }}\r\n />\r\n <img\r\n src={subtitleUrl}\r\n alt=\"\"\r\n style={{\r\n height: '16px',\r\n objectFit: 'contain',\r\n objectPosition: 'left',\r\n filter: isHovered ? 'invert(1)' : 'none',\r\n transition: 'filter 0.3s',\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ==================== 主组件 ====================\r\n\r\nexport function ArtistLandingPage({\r\n isAuthenticated = false,\r\n user,\r\n quickActions = ARTIST_DEFAULT_QUICK_ACTIONS,\r\n onEnterWorkbench,\r\n onLogin,\r\n onQuickActionClick,\r\n className = '',\r\n style = {},\r\n backgroundComponent,\r\n}: ArtistLandingPageProps) {\r\n const handleToWorkbench = () => {\r\n if (isAuthenticated) {\r\n onEnterWorkbench?.();\r\n } else {\r\n onLogin?.();\r\n }\r\n };\r\n\r\n const handleUserClick = () => {\r\n onEnterWorkbench?.();\r\n };\r\n\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n position: 'relative',\r\n minHeight: '100vh',\r\n width: '100%',\r\n overflow: 'hidden',\r\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\r\n ...style,\r\n }}\r\n >\r\n {/* 动态背景 */}\r\n {backgroundComponent || (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100vw',\r\n height: '100vh',\r\n zIndex: 0,\r\n background: 'linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%)',\r\n }}\r\n />\r\n )}\r\n\r\n {/* 顶部导航栏 */}\r\n <header\r\n style={{\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100px',\r\n zIndex: 20,\r\n padding: '30px',\r\n boxSizing: 'border-box',\r\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25)',\r\n backdropFilter: 'blur(10px)',\r\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n paddingBottom: '30px',\r\n borderBottom: '1px solid rgba(255, 255, 255, 0.2)',\r\n }}\r\n >\r\n {/* Logo */}\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '10px', marginLeft: '16px' }}>\r\n <img src={ARTIST_CONFIG.iconUrl} alt=\"logo\" style={{ width: '46px', height: '46px' }} />\r\n <img src={ARTIST_CONFIG.titleUrl} alt=\"艺术家\" style={{ height: '36px' }} />\r\n </div>\r\n\r\n {/* 用户头像/登录 */}\r\n <div style={{ marginRight: '16px' }}>\r\n {isAuthenticated && user ? (\r\n <div onClick={handleUserClick} style={{ cursor: 'pointer' }}>\r\n <img\r\n src={user.photo || ''}\r\n alt={user.name || ''}\r\n title={user.name}\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n border: '2px solid rgba(255, 255, 255, 0.2)',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <button\r\n onClick={onLogin}\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '50%',\r\n border: '1px solid rgba(255, 255, 255, 0.3)',\r\n background: 'rgba(255, 255, 255, 0.1)',\r\n color: '#fff',\r\n cursor: 'pointer',\r\n fontSize: '14px',\r\n transition: 'all 0.3s',\r\n backdropFilter: 'blur(10px)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </header>\r\n\r\n {/* 主内容区 */}\r\n <div\r\n style={{\r\n position: 'fixed',\r\n zIndex: 10,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n height: '100vh',\r\n }}\r\n >\r\n {/* Slogan 区域 */}\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n padding: '150px 0 0 30px',\r\n gap: '30px',\r\n }}\r\n >\r\n <img\r\n src={ARTIST_CONFIG.sloganUrl}\r\n alt=\"slogan\"\r\n style={{ maxWidth: '80%', height: 'auto' }}\r\n />\r\n\r\n {/* 进入按钮 */}\r\n <div\r\n onClick={handleToWorkbench}\r\n style={{\r\n marginTop: '40px',\r\n width: '308px',\r\n height: '77px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '12px',\r\n background: 'linear-gradient(103deg, #4D8F9D 0%, #416887 100%)',\r\n borderRadius: '15px',\r\n cursor: 'pointer',\r\n boxShadow: 'inset 4px 4px 8.7px 0px rgba(255, 255, 255, 0.25), 0 0 20px rgba(255, 255, 255, 0.3), 0 0 40px rgba(255, 255, 255, 0.2)',\r\n transition: 'all 0.3s',\r\n color: '#fff',\r\n fontSize: '26px',\r\n fontWeight: 600,\r\n }}\r\n >\r\n <svg width=\"24\" height=\"23\" viewBox=\"0 0 24 23\" fill=\"#fff\">\r\n <path d=\"M20.414621,7.7390924L20.145603,8.3532591C19.948801,8.802886,19.323929,8.802886,19.12702,8.3532591L18.858112,7.7390924C18.378654,6.6439967,17.515091,5.7721038,16.43749,5.2951164L15.60873,4.928297C15.160691,4.729948,15.160691,4.0809946,15.60873,3.8826451L16.39113,3.5363247C17.496439,3.0470688,18.375492,2.1429076,18.846657,1.0106162L19.122875,0.34691912C19.315418,-0.11563972,19.957314,-0.11563972,20.149748,0.34691912L20.425968,1.0106162C20.89724,2.1429076,21.776295,3.0470688,22.881603,3.5363247L23.663895,3.8826451C24.112041,4.0809946,24.112041,4.729948,23.663895,4.928297L22.835239,5.2951164C21.757639,5.7721038,20.894073,6.6439967,20.414621,7.7390924ZM10.909091,1.0857151C4.8841639,1.0857151,0,5.9466209,0,11.942858C0,13.791286,0.46411648,15.531795,1.2827022,17.055267L0,22.799999L5.7721863,21.523418C7.3029823,22.338139,9.0518188,22.799999,10.909091,22.799999C16.933966,22.799999,21.818182,17.939041,21.818182,11.942858C21.818182,11.505858,21.792221,11.074504,21.7416,10.650207L19.574947,10.906218C19.615528,11.24572,19.636366,11.591631,19.636366,11.942858C19.636366,16.73987,15.729055,20.628574,10.909091,20.628574C9.4532728,20.628574,8.0536156,20.275171,6.801033,19.608541L6.0880923,19.229088L2.8736296,19.940012L3.5879564,16.74085L3.2067165,16.031332C2.5368986,14.784716,2.1818182,13.391744,2.1818182,11.942858C2.1818182,7.1458678,6.089149,3.2571435,10.909091,3.2571435C11.663892,3.2571435,12.394691,3.3522527,13.09091,3.5305159L13.63451,1.4275739C12.762219,1.2042099,11.8488,1.0857151,10.909091,1.0857151ZM7.6363645,11.942858L5.4545455,11.942858C5.4545455,14.94095,7.8966331,17.371428,10.909091,17.371428C13.921529,17.371428,16.363638,14.94095,16.363638,11.942858L14.18182,11.942858C14.18182,13.741777,12.71662,15.200002,10.909091,15.200002C9.1015635,15.200002,7.6363645,13.741777,7.6363645,11.942858Z\" />\r\n </svg>\r\n 进入设计项目\r\n <div\r\n style={{\r\n width: '40px',\r\n height: '40px',\r\n borderRadius: '8px',\r\n background: '#000',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" strokeWidth=\"2\">\r\n <path d=\"M5 12h14\" />\r\n <path d=\"m12 5 7 7-7 7\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* 快速操作区域 */}\r\n <div\r\n style={{\r\n flex: 1,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n gap: '30px',\r\n padding: '30px',\r\n marginTop: 'auto',\r\n }}\r\n >\r\n {quickActions.map((action, index) => (\r\n <QuickActionCard\r\n key={action.name}\r\n name={action.name}\r\n iconUrl={action.iconUrl}\r\n titleUrl={action.titleUrl}\r\n subtitleUrl={action.subtitleUrl}\r\n onClick={() => onQuickActionClick?.(action.name)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ArtistLandingPage;\r\n","import { registerTheme } from '../../registry';\r\nimport { ArtistLandingPage, ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS } from './components/LandingPage';\r\n\r\n// 注册 Artist 主题\r\nregisterTheme(\r\n 'artist',\r\n {\r\n 'landing-page': ArtistLandingPage,\r\n },\r\n {\r\n name: 'Artist Theme',\r\n description: 'Artist Theme Components for Monkeys UI',\r\n version: '1.0.0',\r\n }\r\n);\r\n\r\n// 导出组件\r\nexport { ArtistLandingPage };\r\n\r\n// 导出类型\r\nexport type { ArtistLandingPageProps, QuickActionData } from './components/LandingPage';\r\n\r\n// 导出配置\r\nexport { ARTIST_CONFIG, ARTIST_DEFAULT_QUICK_ACTIONS };\r\n"]}