{"_id":"@aftership/approval-widget-kit","_rev":"8-54e07371b3fefee66d220056ca9dca12","name":"@aftership/approval-widget-kit","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"@aftership/approval-widget-kit","version":"1.0.0","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","_id":"@aftership/approval-widget-kit@1.0.0","maintainers":[{"name":"aftership","email":"sdk@aftership.com"}],"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"dist":{"shasum":"8d57b84b13a68221115b75effa3de530e6322b5f","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.0.0.tgz","fileCount":88,"integrity":"sha512-hmHV3nX2x2RcJI34G9N0cDHg/1f/+hATBOxMrI+vMRS2huLMA5LEPHDByLMBe1UCqVQNBc5urqMI+sSvN/BS/g==","signatures":[{"sig":"MEYCIQCzya33wiPy+DJSoZlHc8EkS32x02mMP/dBnMBh/cdXJQIhAPJTvP7YzIK3qIS90kIQcSFaMBfocFm+wU/hKzGG53bZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692001},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"b00bbe8d0b622f8ccf49db71e05675bf7efe4916","scripts":{"dev":"rollup -c -w","build":"rollup -c","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"repository":{"url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","type":"git","directory":"packages/approval-widget-kit"},"_npmVersion":"10.7.0","description":"Reusable approval widgets component library for AfterShip platforms","directories":{},"_nodeVersion":"20.15.0","dependencies":{"dayjs":"^1.11.0","lodash":"^4.17.15","moment":"^2.29.0","tinymce":"^6.0.0","query-string":"^7.1.3","@emotion/react":"^11.9.0","react-markdown":"^8.0.7","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","@tinymce/tinymce-react":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.20.0","typescript":"^4.9.0","@types/node":"^18.0.0","@types/react":"^18.0.0","@types/lodash":"^4.14.0","@types/react-dom":"^18.0.0","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"antd":"^5.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-query":"^3.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","@aftership/automizely-product-auth":"^1.23.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-widget-kit_1.0.0_1760957790784_0.49801862592197943","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aftership/approval-widget-kit","version":"1.0.1","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","_id":"@aftership/approval-widget-kit@1.0.1","maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"dist":{"shasum":"357cfd8aa5ac636e9f2c6495f75da80973e897bb","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.0.1.tgz","fileCount":86,"integrity":"sha512-02aZy9slK67osf8jKCGEJ2L39Ed3Y4U6UoAx4dqI9adxo9ExagwReXex3Jh/uPr4chO89TClTDYGTbfcYc/3rA==","signatures":[{"sig":"MEYCIQCNyK+6S0/GEnCghY8rQRZbV5nWCGRxzmw7fsvkmzfSPgIhAJfodw2h9aTCOVUCB+IkB0sXKlU0K+pmydvo9S4yp3gE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695402},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"2c059184de85f7b6925b940ab2a108a2902e42e7","scripts":{"dev":"rollup -c -w","build":"rollup -c","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"repository":{"url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","type":"git","directory":"packages/approval-widget-kit"},"_npmVersion":"10.7.0","description":"Reusable approval widgets component library for AfterShip platforms","directories":{},"_nodeVersion":"20.15.0","dependencies":{"dayjs":"^1.11.0","lodash":"^4.17.15","moment":"^2.29.0","tinymce":"^6.0.0","query-string":"^7.1.3","@emotion/react":"^11.9.0","react-markdown":"^8.0.7","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","@tinymce/tinymce-react":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.20.0","typescript":"^4.9.0","@types/node":"^18.0.0","@types/react":"^18.0.0","@types/lodash":"^4.14.0","@types/react-dom":"^18.0.0","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"antd":"^5.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-query":"^3.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","@aftership/automizely-product-auth":"^1.23.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-widget-kit_1.0.1_1761218297443_0.8154293468306848","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aftership/approval-widget-kit","version":"1.0.2","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","_id":"@aftership/approval-widget-kit@1.0.2","maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"dist":{"shasum":"b9d7abd56f460b27ff54cc056f9a596b9eb2976c","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.0.2.tgz","fileCount":92,"integrity":"sha512-9MviRRbXONG1WvSfnIMAS2jk79JAFwqzFunlOvINzDjyFpUoAAV5WIrzbUxOie7wXLlEhH0nXQNv9c8+uMOYeQ==","signatures":[{"sig":"MEUCIH+iIfWpR030TTep480LYyBaII+vOV2/PVYUQO8YfUr5AiEAhVFf0QSCVjjWhYnq/5/Z0gh9VcGA0Tb9QMePuJ5htmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":725270},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"11c6adebea1ec6a8deac9d17b1b3488e147d20dd","scripts":{"dev":"rollup -c -w","build":"rollup -c","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"repository":{"url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","type":"git","directory":"packages/approval-widget-kit"},"_npmVersion":"10.7.0","description":"Reusable approval widgets component library for AfterShip platforms","directories":{},"_nodeVersion":"20.15.0","dependencies":{"dayjs":"^1.11.0","lodash":"^4.17.15","moment":"^2.29.0","tinymce":"^6.0.0","query-string":"^7.1.3","@emotion/react":"^11.9.0","react-markdown":"^8.0.7","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","@tinymce/tinymce-react":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.20.0","typescript":"^4.9.0","@types/node":"^18.0.0","@types/react":"^18.0.0","@types/lodash":"^4.14.0","@types/react-dom":"^18.0.0","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"antd":"^5.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-query":"^3.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","@aftership/automizely-product-auth":"^1.23.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-widget-kit_1.0.2_1763617084347_0.010854806775774994","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aftership/approval-widget-kit","version":"1.0.3","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","_id":"@aftership/approval-widget-kit@1.0.3","maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"dist":{"shasum":"b791827689294b8a875e0b70f5de24ac4ed0ff55","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.0.3.tgz","fileCount":92,"integrity":"sha512-i5pdxswikz0KuGFl+GKEcKAcfPZ+Dh9P1xqoIfv9w1BZ5fGEwi5DDaFDwwYKB14oBsrhh9Ttta4uhr/u2/RhjA==","signatures":[{"sig":"MEQCIGa+M+igIstjrbbbIq9kGQi5hbvroPKPLOXjoFfZyeQ1AiAhO7sPqLYe+nyLLrfO88gcpY2O0uZnJLa/BjMA2Tl9kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":725856},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"79a42f871077e5e8f4c74428e4454a2bcc00c75f","scripts":{"dev":"rollup -c -w","build":"rollup -c","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"repository":{"url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","type":"git","directory":"packages/approval-widget-kit"},"_npmVersion":"10.7.0","description":"Reusable approval widgets component library for AfterShip platforms","directories":{},"_nodeVersion":"20.15.0","dependencies":{"dayjs":"^1.11.0","lodash":"^4.17.15","moment":"^2.29.0","tinymce":"^6.0.0","query-string":"^7.1.3","@emotion/react":"^11.9.0","react-markdown":"^8.0.7","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","@tinymce/tinymce-react":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.20.0","typescript":"^4.9.0","@types/node":"^18.0.0","@types/react":"^18.0.0","@types/lodash":"^4.14.0","@types/react-dom":"^18.0.0","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"antd":"^5.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-query":"^3.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","@aftership/automizely-product-auth":"^1.23.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-widget-kit_1.0.3_1765784770518_0.2276850879836383","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aftership/approval-widget-kit","version":"1.1.0","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","_id":"@aftership/approval-widget-kit@1.1.0","maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"dist":{"shasum":"c7904cd37271c0e3a63b8f64e065203de37cbb34","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.1.0.tgz","fileCount":92,"integrity":"sha512-rS+ShF4EPz8z7ZOEHJ3SRWQCvyIgpJnt4qp9TGS1xIIQfswlxmjEhIoWye7dB3MG7uiJh/zvcx3DuPToJoal1w==","signatures":[{"sig":"MEUCIHqCW4m64/NcKelcpDwRhrgn9exbfZsjyf1DFMsiU1TcAiEA/kfCIAubt7qhw/W65GkUQsvnRN5LQKMmddGXLgxA4nQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":741070},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"c18faf6be8c74b8454c7679accf9784e7399ce09","scripts":{"dev":"rollup -c -w","build":"rollup -c","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"repository":{"url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","type":"git","directory":"packages/approval-widget-kit"},"_npmVersion":"10.7.0","description":"Reusable approval widgets component library for AfterShip platforms","directories":{},"_nodeVersion":"20.15.0","dependencies":{"dayjs":"^1.11.0","lodash":"^4.17.15","moment":"^2.29.0","tinymce":"^6.0.0","query-string":"^7.1.3","@emotion/react":"^11.9.0","react-markdown":"^8.0.7","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","@tinymce/tinymce-react":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.20.0","typescript":"^4.9.0","@types/node":"^18.0.0","@types/react":"^18.0.0","@types/lodash":"^4.14.0","@types/react-dom":"^18.0.0","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"antd":"^5.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-query":"^3.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","@aftership/automizely-product-auth":"^1.23.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-widget-kit_1.1.0_1785900719499_0.509437301681859","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aftership/approval-widget-kit","version":"1.1.1","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","_id":"@aftership/approval-widget-kit@1.1.1","maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"dist":{"shasum":"74ebc80cafc79bbff32a3e6cad79e6ffd271d2c2","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.1.1.tgz","fileCount":92,"integrity":"sha512-D3PgJNzvj2cSz6rGV9iIYYF0ULo6QCLN13w3hxF9sgL+jEgc737qzG+fJwx+Asz2hWbjUQh7itiZARBsQdGUWQ==","signatures":[{"sig":"MEQCICo+QCeY70ls3CQz1ifCApptssuNXjOvEX2TrxaZclnYAiBoxbYSZzXCZyRhHiMvEta0N+gezQP4Eu1oTfQv71mMuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":742700},"main":"dist/index.cjs.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"1a6ffaf1b849dbaa1d798d550af041237be57279","scripts":{"dev":"rollup -c -w","build":"rollup -c","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"repository":{"url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","type":"git","directory":"packages/approval-widget-kit"},"_npmVersion":"10.7.0","description":"Reusable approval widgets component library for AfterShip platforms","directories":{},"_nodeVersion":"20.15.0","dependencies":{"dayjs":"^1.11.0","lodash":"^4.17.15","moment":"^2.29.0","tinymce":"^6.0.0","query-string":"^7.1.3","@emotion/react":"^11.9.0","react-markdown":"^8.0.7","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","@tinymce/tinymce-react":"^4.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rollup":"^3.20.0","typescript":"^4.9.0","@types/node":"^18.0.0","@types/react":"^18.0.0","@types/lodash":"^4.14.0","@types/react-dom":"^18.0.0","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"antd":"^5.0.0","react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","react-query":"^3.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","@aftership/automizely-product-auth":"^1.23.0"},"_npmOperationalInternal":{"tmp":"tmp/approval-widget-kit_1.1.1_1785995401029_0.410890551795146","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aftership/approval-widget-kit","version":"1.1.2","type":"module","description":"Reusable approval widgets component library for AfterShip platforms","main":"dist/index.cjs.js","module":"dist/index.esm.js","types":"dist/index.d.ts","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"author":{"name":"AfterShip Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","directory":"packages/approval-widget-kit"},"homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"rollup -c","dev":"rollup -c -w","typecheck":"tsc --noEmit"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0","antd":"^5.0.0","@ant-design/icons":"^4.0.0 || ^5.0.0","react-query":"^3.0.0","@aftership/automizely-product-auth":"^1.23.0"},"dependencies":{"@emotion/react":"^11.9.0","@emotion/styled":"^11.8.1","react-json-view":"^1.21.3","react-markdown":"^8.0.7","lodash":"^4.17.15","moment":"^2.29.0","dayjs":"^1.11.0","query-string":"^7.1.3","@tinymce/tinymce-react":"^4.2.0","tinymce":"^6.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^24.0.0","@rollup/plugin-node-resolve":"^15.0.0","@rollup/plugin-typescript":"^11.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/lodash":"^4.14.0","@types/node":"^18.0.0","rollup":"^3.20.0","rollup-plugin-postcss":"^4.0.2","rollup-plugin-peer-deps-external":"^2.2.4","typescript":"^4.9.0"},"_id":"@aftership/approval-widget-kit@1.1.2","gitHead":"8b035f8f21d69677713e2357eb438f5cbdb78568","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-0kQWw5W0vDWOP+jPK0emJzKTArnk0FYs1qfk6DVIVXmJ/iyjkwKk1grzjOJmkGZ64+QulGQhgtWWSgp4ZgltwQ==","shasum":"d973d1f79d9eba35adeb111c549d2d43a86965cc","tarball":"https://registry.npmjs.org/@aftership/approval-widget-kit/-/approval-widget-kit-1.1.2.tgz","fileCount":92,"unpackedSize":750035,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIByBxLbnG3nV5C0jLCi5NdiAywwu2kBSR0zma2oouNOQAiA/MqbpDsPL7wUb4g61a1W4YOsPD4EKAfyKNyv0XdB0XQ=="}]},"_npmUser":{"name":"aftership","email":"sdk@aftership.com"},"directories":{},"maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/approval-widget-kit_1.1.2_1789351523273_0.32806638656849696"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-20T10:56:30.656Z","modified":"2026-09-14T02:05:23.622Z","1.0.0":"2025-10-20T10:56:31.037Z","1.0.1":"2025-10-23T11:18:17.643Z","1.0.2":"2025-11-20T05:38:04.620Z","1.0.3":"2025-12-15T07:46:10.723Z","1.1.0":"2026-08-05T03:31:59.702Z","1.1.1":"2026-08-06T05:50:01.205Z","1.1.2":"2026-09-14T02:05:23.433Z"},"bugs":{"url":"https://github.com/aftership/admin.automizely.org_approvals/issues"},"author":{"name":"AfterShip Team"},"license":"MIT","homepage":"https://github.com/aftership/admin.automizely.org_approvals/tree/master/packages/approval-widget-kit#readme","keywords":["react","approval","widget","component","aftership","react-component","approval-workflow","approval-detail"],"repository":{"type":"git","url":"git+https://github.com/aftership/admin.automizely.org_approvals.git","directory":"packages/approval-widget-kit"},"description":"Reusable approval widgets component library for AfterShip platforms","maintainers":[{"name":"aftership","email":"sdk@aftership.com"},{"name":"aftership-dev","email":"sre+aftership-dev@aftership.com"}],"readme":"# @aftership/approval-widget-kit\n\n> 🎨 Reusable approval widgets component library for AfterShip platforms\n\n## 📦 安装\n\n```bash\n# npm\nnpm install @aftership/approval-widget-kit\n\n# yarn\nyarn add @aftership/approval-widget-kit\n\n# pnpm\npnpm add @aftership/approval-widget-kit\n```\n\n## ✨ 特性\n\n- ✅ **零配置**：无需手动配置认证和环境，开箱即用\n- 🎨 **基于 Ant Design**：与 Ant Design 完美集成\n- 📦 **Tree-shakable**：支持按需加载，减小打包体积\n- 🔒 **TypeScript**：完整的类型定义支持\n- 🌍 **多环境支持**：自动识别 production/staging/development\n- 🔐 **自动认证**：无缝集成 AfterShip 认证系统\n- 🔥 **热更新友好**：支持开发环境热更新\n\n## 🚀 零配置使用\n\n本组件库采用**零配置**设计，自动处理：\n\n- **认证**：通过 `@aftership/automizely-product-auth` 自动获取 token\n- **环境**：通过 `process.env.APP_ENV` 自动识别环境\n- **API 请求**：内置统一请求工具，自动添加认证头\n\n### 前置条件\n\n使用本组件库前，你的应用需要：\n\n1. ✅ **包裹 `AuthProviderEmployee`**（来自 `@aftership/automizely-product-auth`）\n2. ✅ **包裹 `QueryClientProvider`**（来自 `react-query`）\n3. ✅ **设置环境变量 `process.env.APP_ENV`**（可选，默认 production）\n\n### 快速开始\n\n```tsx\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { AuthProviderEmployee } from '@aftership/automizely-product-auth/internal';\nimport { QueryClient, QueryClientProvider } from 'react-query';\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\nimport '@aftership/approval-widget-kit/dist/index.css';\n\n// 创建 QueryClient 实例\nconst queryClient = new QueryClient();\n\nfunction App() {\n  return (\n    <AuthProviderEmployee \n      config={{ \n        forceLogin: true,\n        clientId: 'your-client-id' \n      }}\n    >\n      <QueryClientProvider client={queryClient}>\n        {/* 使用审批详情组件 */}\n        <ApprovalDetail approvalId=\"12345\" />\n      </QueryClientProvider>\n    </AuthProviderEmployee>\n  );\n}\n\nReactDOM.render(<App />, document.getElementById('root'));\n```\n\n## 📚 组件说明\n\n### ApprovalDetail\n\n审批详情组件，展示审批流程的完整信息，包括审批数据、流程图、评论和操作按钮。\n\n> Basic 卡片会在 Template ID 之后展示 **Linked URL**（审批单的 `linked_url`，新开页跳转 + 复制），仅在该字段非空时渲染。\n\n#### Props\n\n```typescript\ninterface TApprovalDetailProps {\n  // 必填\n  approvalId: string;                           // 审批单 ID\n  \n  // 可选 - 显示控制\n  isShowData?: boolean;                         // 是否显示审批数据，默认 true\n  isShowLink?: boolean;                         // 是否显示流程图，默认 true\n  isShowComment?: boolean;                      // 是否显示评论区，默认 true\n  isShowOperation?: boolean;                    // 是否显示操作按钮，默认 true\n  \n  // 可选 - 事件回调\n  onApprovalChange?: (approval: TApproval) => void;  // 审批状态变化回调\n}\n```\n\n#### 基础用法\n\n```tsx\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\nimport '@aftership/approval-widget-kit/dist/index.css';\n\nfunction MyApprovalPage() {\n  return <ApprovalDetail approvalId=\"12345\" />;\n}\n```\n\n#### 自定义显示模块\n\n```tsx\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\n\nfunction CustomApprovalView() {\n  return (\n    <ApprovalDetail \n      approvalId=\"12345\"\n      isShowData={true}      // 显示审批数据\n      isShowLink={true}      // 显示流程图\n      isShowComment={true}   // 显示评论区\n      isShowOperation={false} // 隐藏操作按钮（只读模式）\n    />\n  );\n}\n```\n\n#### 监听审批状态变化\n\n```tsx\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\nimport type { TApproval, EApprovalState } from '@aftership/approval-widget-kit';\n\nfunction ApprovalWithCallback() {\n  const handleApprovalChange = (approval: TApproval) => {\n    console.log('审批状态已更新:', approval.status);\n    \n    // 根据状态执行不同操作\n    if (approval.status === EApprovalState.APPROVED) {\n      console.log('审批已通过！');\n      // 执行通过后的逻辑\n    } else if (approval.status === EApprovalState.REJECTED) {\n      console.log('审批已拒绝！');\n      // 执行拒绝后的逻辑\n    }\n  };\n\n  return (\n    <ApprovalDetail \n      approvalId=\"12345\"\n      onApprovalChange={handleApprovalChange}\n    />\n  );\n}\n```\n\n#### 打印模式（隐藏操作）\n\n```tsx\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\n\nfunction PrintableApproval() {\n  const handlePrint = () => {\n    window.print();\n  };\n\n  return (\n    <div>\n      <button onClick={handlePrint}>打印</button>\n      \n      {/* 打印时不显示操作按钮 */}\n      <ApprovalDetail \n        approvalId=\"12345\"\n        isShowOperation={false}\n      />\n    </div>\n  );\n}\n```\n\n### 其他工具组件\n\n#### UserSelect - 用户选择器\n\n```tsx\nimport { UserSelect } from '@aftership/approval-widget-kit';\n\nfunction MyForm() {\n  return (\n    <UserSelect \n      placeholder=\"Please select users\"\n      mode=\"multiple\"\n      filterUser={['user1', 'user2']} // 过滤掉特定用户\n    />\n  );\n}\n```\n\n#### UserTag - 用户标签\n\n```tsx\nimport { UserTag } from '@aftership/approval-widget-kit';\n\nfunction UserDisplay() {\n  return <UserTag email=\"john@example.com\" />;\n}\n```\n\n#### CopyButton - 复制按钮\n\n```tsx\nimport { CopyButton } from '@aftership/approval-widget-kit';\n\nfunction CopyDemo() {\n  return <CopyButton text=\"要复制的文本内容\" />;\n}\n```\n\n#### RichEditor - 富文本编辑器\n\n```tsx\nimport { RichEditor } from '@aftership/approval-widget-kit';\nimport { useRef } from 'react';\n\nfunction EditorDemo() {\n  const editorRef = useRef(null);\n\n  return (\n    <RichEditor \n      editorRef={editorRef}\n      placeholder=\"请输入内容...\"\n    />\n  );\n}\n```\n\n## 🔧 工具函数\n\n### 请求工具\n\n组件库内置统一请求工具，自动处理认证头和环境配置。\n\n```tsx\nimport { request, get, post, put, del } from '@aftership/approval-widget-kit';\nimport type { IResponse } from '@aftership/approval-widget-kit';\n\n// GET 请求\nconst fetchUser = async () => {\n  const data = await get<IResponse<UserData>>('/api/users/123');\n  return data;\n};\n\n// POST 请求\nconst createApproval = async () => {\n  const result = await post<IResponse>('/api/approvals', { \n    title: 'New Approval',\n    description: 'Approval description'\n  });\n  return result;\n};\n\n// PUT 请求\nconst updateApproval = async () => {\n  const result = await put<IResponse>('/api/approvals/123', {\n    status: 'approved'\n  });\n  return result;\n};\n\n// DELETE 请求\nconst deleteApproval = async () => {\n  await del('/api/approvals/123');\n};\n\n// 自定义请求\nconst customRequest = async () => {\n  const response = await request('/api/custom', {\n    method: 'POST',\n    headers: { 'X-Custom-Header': 'value' },\n    payload: { data: 'value' }\n  });\n  return response;\n};\n```\n\n### 工具函数\n\n```tsx\nimport { \n  camelCaseToShow,  // 驼峰转展示文本\n  onError,          // 统一错误处理\n} from '@aftership/approval-widget-kit';\n\n// 驼峰转展示文本\nconst displayText = camelCaseToShow('approvalStatus'); // \"Approval Status\"\n\n// 统一错误处理\ntry {\n  await someApiCall();\n} catch (error) {\n  onError(error); // 自动显示友好错误提示\n}\n```\n\n## 🎯 类型定义\n\n### 核心类型\n\n```typescript\nimport type {\n  // 审批相关\n  TApproval,                    // 审批单数据\n  TApprovalNode,                // 审批节点\n  ApprovalComment,              // 审批评论\n  TAttachments,                 // 附件\n  ApprovalError,                // 错误类型\n  \n  // 枚举\n  EApprovalState,               // 审批状态\n  EApprovalStatusOperation,     // 审批操作\n  ESignType,                    // 签名类型\n  ERequireApproverField,        // 审批人必填字段\n  \n  // 请求相关\n  IResponse,                    // 响应类型\n  TMethod,                      // 请求方法\n} from '@aftership/approval-widget-kit';\n```\n\n### 枚举说明\n\n#### EApprovalState - 审批状态\n\n```typescript\nenum EApprovalState {\n  PENDING = 'pending',       // 待审批\n  APPROVED = 'approved',     // 已通过\n  REJECTED = 'rejected',     // 已拒绝\n  CANCELLED = 'cancelled',   // 已取消\n  EXPIRED = 'expired',       // 已过期\n}\n```\n\n#### EApprovalStatusOperation - 审批操作\n\n```typescript\nenum EApprovalStatusOperation {\n  APPROVE = 'approve',       // 通过\n  REJECT = 'reject',         // 拒绝\n  REASSIGN = 'reassign',     // 转交\n  ADD = 'add',               // 加签\n  CANCEL = 'cancel',         // 取消\n}\n```\n\n### 类型示例\n\n```typescript\nimport type { TApproval, EApprovalState } from '@aftership/approval-widget-kit';\n\n// 审批单数据结构\nconst approval: TApproval = {\n  id: '12345',\n  title: '采购申请',\n  status: EApprovalState.PENDING,\n  createTime: '2024-01-01T00:00:00Z',\n  creator: {\n    id: 'user1',\n    name: 'John Doe',\n    email: 'john@example.com'\n  },\n  // ... 更多字段\n};\n```\n\n## 🏗️ 开发\n\n### 本地开发\n\n```bash\n# 安装依赖\npnpm install\n\n# 开发模式（监听文件变化自动重新构建）\npnpm dev\n\n# 构建\npnpm build\n\n# 类型检查\npnpm typecheck\n```\n\n### 在 Monorepo 中使用\n\n如果你的项目也是 monorepo，可以使用 workspace 协议：\n\n```json\n{\n  \"dependencies\": {\n    \"@aftership/approval-widget-kit\": \"workspace:*\"\n  }\n}\n```\n\n## 📝 注意事项\n\n### 必需的依赖\n\n确保你的项目已安装以下 peer dependencies：\n\n```json\n{\n  \"peerDependencies\": {\n    \"react\": \"^17.0.0 || ^18.0.0\",\n    \"react-dom\": \"^17.0.0 || ^18.0.0\",\n    \"antd\": \"^5.0.0\",\n    \"react-query\": \"^3.0.0\",\n    \"@aftership/automizely-product-auth\": \"^1.23.0\"\n  }\n}\n```\n\n### 前置条件检查清单\n\n使用组件库前，确保：\n\n- ✅ 应用已包裹 `AuthProviderEmployee`\n- ✅ 应用已包裹 `QueryClientProvider`\n- ✅ 已导入样式 `@aftership/approval-widget-kit/dist/index.css`\n- ✅ 设置了 `process.env.APP_ENV` 环境变量（可选）\n\n### 样式导入\n\n**重要**：必须导入组件库的样式文件\n\n```tsx\n// 在入口文件或组件中导入\nimport '@aftership/approval-widget-kit/dist/index.css';\n```\n\n### 环境变量\n\n组件库会读取以下环境变量（可选）：\n\n```bash\n# 应用环境（默认: production）\nAPP_ENV=development  # development | staging | production\n```\n\n## 🐛 故障排查\n\n### 1. 样式丢失\n\n**现象**: 组件显示不正常，缺少样式\n\n**原因**: 未导入 CSS 文件\n\n**解决方案**:\n```tsx\nimport '@aftership/approval-widget-kit/dist/index.css';\n```\n\n### 2. 认证失败\n\n**现象**: 请求返回 401 错误\n\n**原因**: 未包裹 `AuthProviderEmployee` 或配置错误\n\n**解决方案**:\n```tsx\n<AuthProviderEmployee \n  config={{ \n    forceLogin: true,\n    clientId: 'your-client-id' \n  }}\n>\n  {/* 你的应用 */}\n</AuthProviderEmployee>\n```\n\n### 3. React Query 错误\n\n**现象**: 组件报错 \"No QueryClient set\"\n\n**原因**: 未包裹 `QueryClientProvider`\n\n**解决方案**:\n```tsx\nimport { QueryClient, QueryClientProvider } from 'react-query';\n\nconst queryClient = new QueryClient();\n\n<QueryClientProvider client={queryClient}>\n  {/* 你的应用 */}\n</QueryClientProvider>\n```\n\n### 4. TypeScript 类型错误\n\n**现象**: 导入类型时报错\n\n**原因**: 可能是组件库版本问题或构建产物缺失\n\n**解决方案**:\n```bash\n# 清理并重新安装\nrm -rf node_modules\npnpm install\n```\n\n### 5. 打包体积过大\n\n**优化方案**:\n\n1. 按需导入组件：\n```tsx\n// ✅ 推荐：按需导入\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\n\n// ❌ 避免：全量导入\nimport * as ApprovalKit from '@aftership/approval-widget-kit';\n```\n\n2. 使用 Tree-shaking（确保你的打包工具支持）\n\n## 📖 完整示例\n\n### 示例 1: 基础审批详情页\n\n```tsx\nimport React from 'react';\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\nimport '@aftership/approval-widget-kit/dist/index.css';\nimport { PageHeader, Button } from 'antd';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\n\nfunction ApprovalDetailPage() {\n  const navigate = useNavigate();\n  const [searchParams] = useSearchParams();\n  const approvalId = searchParams.get('approvalId') || '';\n\n  const handleBack = () => {\n    navigate('/approvals');\n  };\n\n  return (\n    <PageHeader\n      title=\"Approval Detail\"\n      onBack={handleBack}\n      extra={[\n        <Button key=\"print\" onClick={() => window.print()}>\n          Print\n        </Button>\n      ]}\n    >\n      <ApprovalDetail approvalId={approvalId} />\n    </PageHeader>\n  );\n}\n\nexport default ApprovalDetailPage;\n```\n\n### 示例 2: 打印视图\n\n```tsx\nimport React, { useRef } from 'react';\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\nimport { Button } from 'antd';\n\nfunction PrintableApprovalPage({ approvalId }: { approvalId: string }) {\n  const printRef = useRef<HTMLDivElement>(null);\n\n  const handlePrint = () => {\n    // 隐藏其他内容，只显示审批详情\n    const printContent = printRef.current;\n    if (printContent) {\n      const printWindow = window.open('', '', 'width=800,height=600');\n      printWindow?.document.write(printContent.innerHTML);\n      printWindow?.document.close();\n      printWindow?.print();\n    }\n  };\n\n  return (\n    <div>\n      <Button onClick={handlePrint}>打印审批单</Button>\n      \n      <div ref={printRef}>\n        <ApprovalDetail \n          approvalId={approvalId}\n          isShowOperation={false}  // 打印时隐藏操作按钮\n        />\n      </div>\n    </div>\n  );\n}\n```\n\n### 示例 3: 审批状态监控\n\n```tsx\nimport React, { useState } from 'react';\nimport { ApprovalDetail } from '@aftership/approval-widget-kit';\nimport type { TApproval, EApprovalState } from '@aftership/approval-widget-kit';\nimport { message, Badge } from 'antd';\n\nfunction ApprovalMonitor({ approvalId }: { approvalId: string }) {\n  const [status, setStatus] = useState<EApprovalState>();\n\n  const handleApprovalChange = (approval: TApproval) => {\n    setStatus(approval.status);\n    \n    // 根据状态显示不同提示\n    switch (approval.status) {\n      case EApprovalState.APPROVED:\n        message.success('审批已通过！');\n        break;\n      case EApprovalState.REJECTED:\n        message.error('审批已拒绝！');\n        break;\n      case EApprovalState.CANCELLED:\n        message.warning('审批已取消！');\n        break;\n    }\n  };\n\n  return (\n    <div>\n      <div style={{ marginBottom: 16 }}>\n        当前状态: <Badge status=\"processing\" text={status} />\n      </div>\n      \n      <ApprovalDetail \n        approvalId={approvalId}\n        onApprovalChange={handleApprovalChange}\n      />\n    </div>\n  );\n}\n```\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n### 开发流程\n\n1. Fork 本仓库\n2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 提交 Pull Request\n\n## 📄 License\n\nMIT © AfterShip Team\n\n## 🔗 相关链接\n\n- [Monorepo 根目录](../../README.md)\n- [主应用文档](../../apps/admin-approvals/README.md.bak)\n- [开发规范](../../apps/admin-approvals/src/docs/CODING-GUIDELINES.md)\n\n## 📮 联系我们\n\n如有问题或建议，欢迎通过以下方式联系：\n\n- 提交 GitHub Issue\n- 联系 AfterShip 团队\n","readmeFilename":"README.md"}