@powerhousedao/network-admin 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +179 -0
- package/dist/document-models/index.d.ts +6 -0
- package/dist/document-models/index.d.ts.map +1 -0
- package/dist/document-models/index.js +4 -0
- package/dist/document-models/network-profile/gen/actions.d.ts +4 -0
- package/dist/document-models/network-profile/gen/actions.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/actions.js +1 -0
- package/dist/document-models/network-profile/gen/creators.d.ts +2 -0
- package/dist/document-models/network-profile/gen/creators.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/creators.js +1 -0
- package/dist/document-models/network-profile/gen/document-model.d.ts +3 -0
- package/dist/document-models/network-profile/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/document-model.js +158 -0
- package/dist/document-models/network-profile/gen/index.d.ts +6 -0
- package/dist/document-models/network-profile/gen/index.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/index.js +5 -0
- package/dist/document-models/network-profile/gen/network-profile-management/actions.d.ts +48 -0
- package/dist/document-models/network-profile/gen/network-profile-management/actions.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/actions.js +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/creators.d.ts +14 -0
- package/dist/document-models/network-profile/gen/network-profile-management/creators.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/creators.js +13 -0
- package/dist/document-models/network-profile/gen/network-profile-management/error.d.ts +2 -0
- package/dist/document-models/network-profile/gen/network-profile-management/error.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/error.js +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/object.d.ts +17 -0
- package/dist/document-models/network-profile/gen/network-profile-management/object.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/object.js +37 -0
- package/dist/document-models/network-profile/gen/network-profile-management/operations.d.ts +17 -0
- package/dist/document-models/network-profile/gen/network-profile-management/operations.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/network-profile-management/operations.js +1 -0
- package/dist/document-models/network-profile/gen/object.d.ts +16 -0
- package/dist/document-models/network-profile/gen/object.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/object.js +25 -0
- package/dist/document-models/network-profile/gen/reducer.d.ts +3 -0
- package/dist/document-models/network-profile/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/reducer.js +60 -0
- package/dist/document-models/network-profile/gen/schema/index.d.ts +3 -0
- package/dist/document-models/network-profile/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/schema/index.js +2 -0
- package/dist/document-models/network-profile/gen/schema/types.d.ts +184 -0
- package/dist/document-models/network-profile/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/schema/types.js +1 -0
- package/dist/document-models/network-profile/gen/schema/zod.d.ts +23 -0
- package/dist/document-models/network-profile/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/schema/zod.js +83 -0
- package/dist/document-models/network-profile/gen/types.d.ts +10 -0
- package/dist/document-models/network-profile/gen/types.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/types.js +1 -0
- package/dist/document-models/network-profile/gen/utils.d.ts +13 -0
- package/dist/document-models/network-profile/gen/utils.d.ts.map +1 -0
- package/dist/document-models/network-profile/gen/utils.js +52 -0
- package/dist/document-models/network-profile/index.d.ts +35 -0
- package/dist/document-models/network-profile/index.d.ts.map +1 -0
- package/dist/document-models/network-profile/index.js +21 -0
- package/dist/document-models/network-profile/ph-factories.d.ts +27 -0
- package/dist/document-models/network-profile/ph-factories.d.ts.map +1 -0
- package/dist/document-models/network-profile/ph-factories.js +60 -0
- package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts +8 -0
- package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts.map +1 -0
- package/dist/document-models/network-profile/src/reducers/network-profile-management.js +40 -0
- package/dist/document-models/network-profile/src/tests/document-model.test.d.ts +6 -0
- package/dist/document-models/network-profile/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/network-profile/src/tests/document-model.test.js +18 -0
- package/dist/document-models/network-profile/src/tests/network-profile-management.test.d.ts +6 -0
- package/dist/document-models/network-profile/src/tests/network-profile-management.test.d.ts.map +1 -0
- package/dist/document-models/network-profile/src/tests/network-profile-management.test.js +164 -0
- package/dist/document-models/network-profile/src/utils.d.ts +2 -0
- package/dist/document-models/network-profile/src/utils.d.ts.map +1 -0
- package/dist/document-models/network-profile/src/utils.js +1 -0
- package/dist/document-models/payment-terms/gen/actions.d.ts +8 -0
- package/dist/document-models/payment-terms/gen/actions.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/actions.js +3 -0
- package/dist/document-models/payment-terms/gen/clauses/actions.d.ts +28 -0
- package/dist/document-models/payment-terms/gen/clauses/actions.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/clauses/actions.js +1 -0
- package/dist/document-models/payment-terms/gen/clauses/creators.d.ts +9 -0
- package/dist/document-models/payment-terms/gen/clauses/creators.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/clauses/creators.js +8 -0
- package/dist/document-models/payment-terms/gen/clauses/error.d.ts +41 -0
- package/dist/document-models/payment-terms/gen/clauses/error.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/clauses/error.js +44 -0
- package/dist/document-models/payment-terms/gen/clauses/object.d.ts +12 -0
- package/dist/document-models/payment-terms/gen/clauses/object.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/clauses/object.js +22 -0
- package/dist/document-models/payment-terms/gen/clauses/operations.d.ts +12 -0
- package/dist/document-models/payment-terms/gen/clauses/operations.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/clauses/operations.js +1 -0
- package/dist/document-models/payment-terms/gen/creators.d.ts +4 -0
- package/dist/document-models/payment-terms/gen/creators.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/creators.js +3 -0
- package/dist/document-models/payment-terms/gen/document-model.d.ts +3 -0
- package/dist/document-models/payment-terms/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/document-model.js +318 -0
- package/dist/document-models/payment-terms/gen/index.d.ts +6 -0
- package/dist/document-models/payment-terms/gen/index.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/index.js +5 -0
- package/dist/document-models/payment-terms/gen/milestones/actions.d.ts +24 -0
- package/dist/document-models/payment-terms/gen/milestones/actions.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/milestones/actions.js +1 -0
- package/dist/document-models/payment-terms/gen/milestones/creators.d.ts +8 -0
- package/dist/document-models/payment-terms/gen/milestones/creators.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/milestones/creators.js +7 -0
- package/dist/document-models/payment-terms/gen/milestones/error.d.ts +27 -0
- package/dist/document-models/payment-terms/gen/milestones/error.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/milestones/error.js +26 -0
- package/dist/document-models/payment-terms/gen/milestones/object.d.ts +11 -0
- package/dist/document-models/payment-terms/gen/milestones/object.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/milestones/object.js +19 -0
- package/dist/document-models/payment-terms/gen/milestones/operations.d.ts +11 -0
- package/dist/document-models/payment-terms/gen/milestones/operations.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/milestones/operations.js +1 -0
- package/dist/document-models/payment-terms/gen/object.d.ts +20 -0
- package/dist/document-models/payment-terms/gen/object.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/object.js +33 -0
- package/dist/document-models/payment-terms/gen/reducer.d.ts +3 -0
- package/dist/document-models/payment-terms/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/reducer.js +86 -0
- package/dist/document-models/payment-terms/gen/schema/index.d.ts +3 -0
- package/dist/document-models/payment-terms/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/schema/index.js +2 -0
- package/dist/document-models/payment-terms/gen/schema/types.d.ts +298 -0
- package/dist/document-models/payment-terms/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/schema/types.js +1 -0
- package/dist/document-models/payment-terms/gen/schema/zod.d.ts +41 -0
- package/dist/document-models/payment-terms/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/schema/zod.js +291 -0
- package/dist/document-models/payment-terms/gen/terms/actions.d.ts +28 -0
- package/dist/document-models/payment-terms/gen/terms/actions.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/terms/actions.js +1 -0
- package/dist/document-models/payment-terms/gen/terms/creators.d.ts +9 -0
- package/dist/document-models/payment-terms/gen/terms/creators.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/terms/creators.js +8 -0
- package/dist/document-models/payment-terms/gen/terms/error.d.ts +2 -0
- package/dist/document-models/payment-terms/gen/terms/error.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/terms/error.js +1 -0
- package/dist/document-models/payment-terms/gen/terms/object.d.ts +12 -0
- package/dist/document-models/payment-terms/gen/terms/object.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/terms/object.js +22 -0
- package/dist/document-models/payment-terms/gen/terms/operations.d.ts +12 -0
- package/dist/document-models/payment-terms/gen/terms/operations.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/terms/operations.js +1 -0
- package/dist/document-models/payment-terms/gen/types.d.ts +10 -0
- package/dist/document-models/payment-terms/gen/types.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/types.js +1 -0
- package/dist/document-models/payment-terms/gen/utils.d.ts +13 -0
- package/dist/document-models/payment-terms/gen/utils.d.ts.map +1 -0
- package/dist/document-models/payment-terms/gen/utils.js +54 -0
- package/dist/document-models/payment-terms/index.d.ts +41 -0
- package/dist/document-models/payment-terms/index.d.ts.map +1 -0
- package/dist/document-models/payment-terms/index.js +21 -0
- package/dist/document-models/payment-terms/ph-factories.d.ts +27 -0
- package/dist/document-models/payment-terms/ph-factories.d.ts.map +1 -0
- package/dist/document-models/payment-terms/ph-factories.js +62 -0
- package/dist/document-models/payment-terms/src/reducers/clauses.d.ts +3 -0
- package/dist/document-models/payment-terms/src/reducers/clauses.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/reducers/clauses.js +69 -0
- package/dist/document-models/payment-terms/src/reducers/milestones.d.ts +3 -0
- package/dist/document-models/payment-terms/src/reducers/milestones.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/reducers/milestones.js +57 -0
- package/dist/document-models/payment-terms/src/reducers/terms.d.ts +3 -0
- package/dist/document-models/payment-terms/src/reducers/terms.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/reducers/terms.js +48 -0
- package/dist/document-models/payment-terms/src/tests/clauses.test.d.ts +6 -0
- package/dist/document-models/payment-terms/src/tests/clauses.test.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/tests/clauses.test.js +64 -0
- package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts +6 -0
- package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/tests/document-model.test.js +18 -0
- package/dist/document-models/payment-terms/src/tests/milestones.test.d.ts +6 -0
- package/dist/document-models/payment-terms/src/tests/milestones.test.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/tests/milestones.test.js +56 -0
- package/dist/document-models/payment-terms/src/tests/terms.test.d.ts +6 -0
- package/dist/document-models/payment-terms/src/tests/terms.test.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/tests/terms.test.js +64 -0
- package/dist/document-models/payment-terms/src/utils.d.ts +2 -0
- package/dist/document-models/payment-terms/src/utils.d.ts.map +1 -0
- package/dist/document-models/payment-terms/src/utils.js +1 -0
- package/dist/document-models/request-for-proposals/gen/actions.d.ts +8 -0
- package/dist/document-models/request-for-proposals/gen/actions.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/actions.js +3 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/actions.d.ts +12 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/actions.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/actions.js +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/creators.d.ts +5 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/creators.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/creators.js +4 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/error.d.ts +2 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/error.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/error.js +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/object.d.ts +8 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/object.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/object.js +10 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/operations.d.ts +8 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/operations.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/contex-document/operations.js +1 -0
- package/dist/document-models/request-for-proposals/gen/creators.d.ts +4 -0
- package/dist/document-models/request-for-proposals/gen/creators.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/creators.js +3 -0
- package/dist/document-models/request-for-proposals/gen/document-model.d.ts +3 -0
- package/dist/document-models/request-for-proposals/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/document-model.js +117 -0
- package/dist/document-models/request-for-proposals/gen/index.d.ts +6 -0
- package/dist/document-models/request-for-proposals/gen/index.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/index.js +5 -0
- package/dist/document-models/request-for-proposals/gen/object.d.ts +20 -0
- package/dist/document-models/request-for-proposals/gen/object.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/object.js +33 -0
- package/dist/document-models/request-for-proposals/gen/proposals/actions.d.ts +16 -0
- package/dist/document-models/request-for-proposals/gen/proposals/actions.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/actions.js +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/creators.d.ts +6 -0
- package/dist/document-models/request-for-proposals/gen/proposals/creators.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/creators.js +5 -0
- package/dist/document-models/request-for-proposals/gen/proposals/error.d.ts +2 -0
- package/dist/document-models/request-for-proposals/gen/proposals/error.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/error.js +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/object.d.ts +9 -0
- package/dist/document-models/request-for-proposals/gen/proposals/object.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/object.js +13 -0
- package/dist/document-models/request-for-proposals/gen/proposals/operations.d.ts +9 -0
- package/dist/document-models/request-for-proposals/gen/proposals/operations.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/proposals/operations.js +1 -0
- package/dist/document-models/request-for-proposals/gen/reducer.d.ts +3 -0
- package/dist/document-models/request-for-proposals/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/reducer.js +42 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/actions.d.ts +8 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/actions.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/actions.js +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/creators.d.ts +4 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/creators.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/creators.js +3 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/error.d.ts +2 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/error.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/error.js +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/object.d.ts +7 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/object.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/object.js +7 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/operations.d.ts +7 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/operations.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/rfp-state/operations.js +1 -0
- package/dist/document-models/request-for-proposals/gen/schema/index.d.ts +3 -0
- package/dist/document-models/request-for-proposals/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/schema/index.js +2 -0
- package/dist/document-models/request-for-proposals/gen/schema/types.d.ts +231 -0
- package/dist/document-models/request-for-proposals/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/schema/types.js +1 -0
- package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts +30 -0
- package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/schema/zod.js +176 -0
- package/dist/document-models/request-for-proposals/gen/types.d.ts +10 -0
- package/dist/document-models/request-for-proposals/gen/types.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/types.js +1 -0
- package/dist/document-models/request-for-proposals/gen/utils.d.ts +13 -0
- package/dist/document-models/request-for-proposals/gen/utils.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/gen/utils.js +59 -0
- package/dist/document-models/request-for-proposals/index.d.ts +30 -0
- package/dist/document-models/request-for-proposals/index.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/index.js +21 -0
- package/dist/document-models/request-for-proposals/ph-factories.d.ts +27 -0
- package/dist/document-models/request-for-proposals/ph-factories.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/ph-factories.js +67 -0
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts +8 -0
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.js +27 -0
- package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts +8 -0
- package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/proposals.js +56 -0
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts +8 -0
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.js +24 -0
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts +5 -0
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.js +185 -0
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts +6 -0
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.js +18 -0
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts +5 -0
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.js +332 -0
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts +5 -0
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.js +243 -0
- package/dist/document-models/request-for-proposals/src/utils.d.ts +2 -0
- package/dist/document-models/request-for-proposals/src/utils.d.ts.map +1 -0
- package/dist/document-models/request-for-proposals/src/utils.js +1 -0
- package/dist/document-models/workstream/gen/actions.d.ts +6 -0
- package/dist/document-models/workstream/gen/actions.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/actions.js +2 -0
- package/dist/document-models/workstream/gen/creators.d.ts +3 -0
- package/dist/document-models/workstream/gen/creators.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/creators.js +2 -0
- package/dist/document-models/workstream/gen/document-model.d.ts +3 -0
- package/dist/document-models/workstream/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/document-model.js +143 -0
- package/dist/document-models/workstream/gen/index.d.ts +6 -0
- package/dist/document-models/workstream/gen/index.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/index.js +5 -0
- package/dist/document-models/workstream/gen/object.d.ts +18 -0
- package/dist/document-models/workstream/gen/object.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/object.js +27 -0
- package/dist/document-models/workstream/gen/proposals/actions.d.ts +20 -0
- package/dist/document-models/workstream/gen/proposals/actions.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/proposals/actions.js +1 -0
- package/dist/document-models/workstream/gen/proposals/creators.d.ts +7 -0
- package/dist/document-models/workstream/gen/proposals/creators.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/proposals/creators.js +6 -0
- package/dist/document-models/workstream/gen/proposals/error.d.ts +2 -0
- package/dist/document-models/workstream/gen/proposals/error.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/proposals/error.js +1 -0
- package/dist/document-models/workstream/gen/proposals/object.d.ts +10 -0
- package/dist/document-models/workstream/gen/proposals/object.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/proposals/object.js +16 -0
- package/dist/document-models/workstream/gen/proposals/operations.d.ts +10 -0
- package/dist/document-models/workstream/gen/proposals/operations.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/proposals/operations.js +1 -0
- package/dist/document-models/workstream/gen/reducer.d.ts +3 -0
- package/dist/document-models/workstream/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/reducer.js +53 -0
- package/dist/document-models/workstream/gen/schema/index.d.ts +3 -0
- package/dist/document-models/workstream/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/schema/index.js +2 -0
- package/dist/document-models/workstream/gen/schema/types.d.ts +225 -0
- package/dist/document-models/workstream/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/schema/types.js +1 -0
- package/dist/document-models/workstream/gen/schema/zod.d.ts +29 -0
- package/dist/document-models/workstream/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/schema/zod.js +158 -0
- package/dist/document-models/workstream/gen/types.d.ts +10 -0
- package/dist/document-models/workstream/gen/types.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/types.js +1 -0
- package/dist/document-models/workstream/gen/utils.d.ts +13 -0
- package/dist/document-models/workstream/gen/utils.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/utils.js +51 -0
- package/dist/document-models/workstream/gen/workstream/actions.d.ts +24 -0
- package/dist/document-models/workstream/gen/workstream/actions.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/workstream/actions.js +1 -0
- package/dist/document-models/workstream/gen/workstream/creators.d.ts +8 -0
- package/dist/document-models/workstream/gen/workstream/creators.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/workstream/creators.js +7 -0
- package/dist/document-models/workstream/gen/workstream/error.d.ts +2 -0
- package/dist/document-models/workstream/gen/workstream/error.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/workstream/error.js +1 -0
- package/dist/document-models/workstream/gen/workstream/object.d.ts +11 -0
- package/dist/document-models/workstream/gen/workstream/object.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/workstream/object.js +19 -0
- package/dist/document-models/workstream/gen/workstream/operations.d.ts +11 -0
- package/dist/document-models/workstream/gen/workstream/operations.d.ts.map +1 -0
- package/dist/document-models/workstream/gen/workstream/operations.js +1 -0
- package/dist/document-models/workstream/index.d.ts +33 -0
- package/dist/document-models/workstream/index.d.ts.map +1 -0
- package/dist/document-models/workstream/index.js +21 -0
- package/dist/document-models/workstream/ph-factories.d.ts +27 -0
- package/dist/document-models/workstream/ph-factories.d.ts.map +1 -0
- package/dist/document-models/workstream/ph-factories.js +59 -0
- package/dist/document-models/workstream/src/reducers/proposals.d.ts +8 -0
- package/dist/document-models/workstream/src/reducers/proposals.d.ts.map +1 -0
- package/dist/document-models/workstream/src/reducers/proposals.js +106 -0
- package/dist/document-models/workstream/src/reducers/workstream.d.ts +8 -0
- package/dist/document-models/workstream/src/reducers/workstream.d.ts.map +1 -0
- package/dist/document-models/workstream/src/reducers/workstream.js +69 -0
- package/dist/document-models/workstream/src/tests/document-model.test.d.ts +6 -0
- package/dist/document-models/workstream/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/document-model.test.js +18 -0
- package/dist/document-models/workstream/src/tests/proposals-reducers.test.d.ts +5 -0
- package/dist/document-models/workstream/src/tests/proposals-reducers.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/proposals-reducers.test.js +316 -0
- package/dist/document-models/workstream/src/tests/proposals.test.d.ts +6 -0
- package/dist/document-models/workstream/src/tests/proposals.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/proposals.test.js +48 -0
- package/dist/document-models/workstream/src/tests/workstream-reducers.test.d.ts +5 -0
- package/dist/document-models/workstream/src/tests/workstream-reducers.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/workstream-reducers.test.js +208 -0
- package/dist/document-models/workstream/src/tests/workstream.test.d.ts +6 -0
- package/dist/document-models/workstream/src/tests/workstream.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/workstream.test.js +56 -0
- package/dist/document-models/workstream/src/utils.d.ts +2 -0
- package/dist/document-models/workstream/src/utils.d.ts.map +1 -0
- package/dist/document-models/workstream/src/utils.js +1 -0
- package/dist/editors/index.d.ts +7 -0
- package/dist/editors/index.d.ts.map +1 -0
- package/dist/editors/index.js +5 -0
- package/dist/editors/network-admin/components/CreateDocument.d.ts +6 -0
- package/dist/editors/network-admin/components/CreateDocument.d.ts.map +1 -0
- package/dist/editors/network-admin/components/CreateDocument.js +24 -0
- package/dist/editors/network-admin/components/DriveExplorer.d.ts +6 -0
- package/dist/editors/network-admin/components/DriveExplorer.d.ts.map +1 -0
- package/dist/editors/network-admin/components/DriveExplorer.js +460 -0
- package/dist/editors/network-admin/components/EditorContainer.d.ts +12 -0
- package/dist/editors/network-admin/components/EditorContainer.d.ts.map +1 -0
- package/dist/editors/network-admin/components/EditorContainer.js +81 -0
- package/dist/editors/network-admin/components/FolderTree.d.ts +15 -0
- package/dist/editors/network-admin/components/FolderTree.d.ts.map +1 -0
- package/dist/editors/network-admin/components/FolderTree.js +44 -0
- package/dist/editors/network-admin/components/IsolatedSidebar.d.ts +22 -0
- package/dist/editors/network-admin/components/IsolatedSidebar.d.ts.map +1 -0
- package/dist/editors/network-admin/components/IsolatedSidebar.js +106 -0
- package/dist/editors/network-admin/components/IsolatedSidebarProvider.d.ts +15 -0
- package/dist/editors/network-admin/components/IsolatedSidebarProvider.d.ts.map +1 -0
- package/dist/editors/network-admin/components/IsolatedSidebarProvider.js +367 -0
- package/dist/editors/network-admin/editor.d.ts +10 -0
- package/dist/editors/network-admin/editor.d.ts.map +1 -0
- package/dist/editors/network-admin/editor.js +22 -0
- package/dist/editors/network-admin/index.d.ts +4 -0
- package/dist/editors/network-admin/index.d.ts.map +1 -0
- package/dist/editors/network-admin/index.js +12 -0
- package/dist/editors/network-admin/utils.d.ts +60 -0
- package/dist/editors/network-admin/utils.d.ts.map +1 -0
- package/dist/editors/network-admin/utils.js +67 -0
- package/dist/editors/network-profile/editor.d.ts +4 -0
- package/dist/editors/network-profile/editor.d.ts.map +1 -0
- package/dist/editors/network-profile/editor.js +151 -0
- package/dist/editors/network-profile/index.d.ts +4 -0
- package/dist/editors/network-profile/index.d.ts.map +1 -0
- package/dist/editors/network-profile/index.js +12 -0
- package/dist/editors/payment-terms/basic-terms-tab.d.ts +8 -0
- package/dist/editors/payment-terms/basic-terms-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/basic-terms-tab.js +84 -0
- package/dist/editors/payment-terms/clauses-tab.d.ts +10 -0
- package/dist/editors/payment-terms/clauses-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/clauses-tab.js +208 -0
- package/dist/editors/payment-terms/cost-materials-tab.d.ts +8 -0
- package/dist/editors/payment-terms/cost-materials-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/cost-materials-tab.js +53 -0
- package/dist/editors/payment-terms/editor.d.ts +4 -0
- package/dist/editors/payment-terms/editor.d.ts.map +1 -0
- package/dist/editors/payment-terms/editor.js +45 -0
- package/dist/editors/payment-terms/escrow-tab.d.ts +8 -0
- package/dist/editors/payment-terms/escrow-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/escrow-tab.js +56 -0
- package/dist/editors/payment-terms/evaluation-tab.d.ts +8 -0
- package/dist/editors/payment-terms/evaluation-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/evaluation-tab.js +62 -0
- package/dist/editors/payment-terms/index.d.ts +4 -0
- package/dist/editors/payment-terms/index.d.ts.map +1 -0
- package/dist/editors/payment-terms/index.js +12 -0
- package/dist/editors/payment-terms/milestones-tab.d.ts +9 -0
- package/dist/editors/payment-terms/milestones-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/milestones-tab.js +193 -0
- package/dist/editors/payment-terms/retainer-tab.d.ts +8 -0
- package/dist/editors/payment-terms/retainer-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/retainer-tab.js +82 -0
- package/dist/editors/request-for-proposals/editor.d.ts +4 -0
- package/dist/editors/request-for-proposals/editor.d.ts.map +1 -0
- package/dist/editors/request-for-proposals/editor.js +42 -0
- package/dist/editors/request-for-proposals/index.d.ts +4 -0
- package/dist/editors/request-for-proposals/index.d.ts.map +1 -0
- package/dist/editors/request-for-proposals/index.js +12 -0
- package/dist/editors/request-for-proposals/markdown-editor.d.ts +12 -0
- package/dist/editors/request-for-proposals/markdown-editor.d.ts.map +1 -0
- package/dist/editors/request-for-proposals/markdown-editor.js +119 -0
- package/dist/editors/workstream/editor.d.ts +4 -0
- package/dist/editors/workstream/editor.d.ts.map +1 -0
- package/dist/editors/workstream/editor.js +450 -0
- package/dist/editors/workstream/index.d.ts +4 -0
- package/dist/editors/workstream/index.d.ts.map +1 -0
- package/dist/editors/workstream/index.js +12 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/powerhouse.manifest.json +65 -0
- package/dist/processors/index.d.ts +2 -0
- package/dist/processors/index.d.ts.map +1 -0
- package/dist/processors/index.js +1 -0
- package/dist/style.css +18384 -0
- package/dist/subgraphs/index.d.ts +6 -0
- package/dist/subgraphs/index.d.ts.map +1 -0
- package/dist/subgraphs/index.js +4 -0
- package/dist/subgraphs/network-profile/index.d.ts +10 -0
- package/dist/subgraphs/network-profile/index.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/index.js +11 -0
- package/dist/subgraphs/network-profile/resolvers.d.ts +3 -0
- package/dist/subgraphs/network-profile/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/resolvers.js +145 -0
- package/dist/subgraphs/network-profile/schema.d.ts +3 -0
- package/dist/subgraphs/network-profile/schema.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/schema.js +139 -0
- package/dist/subgraphs/payment-terms/index.d.ts +10 -0
- package/dist/subgraphs/payment-terms/index.d.ts.map +1 -0
- package/dist/subgraphs/payment-terms/index.js +11 -0
- package/dist/subgraphs/payment-terms/resolvers.d.ts +3 -0
- package/dist/subgraphs/payment-terms/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/payment-terms/resolvers.js +260 -0
- package/dist/subgraphs/payment-terms/schema.d.ts +3 -0
- package/dist/subgraphs/payment-terms/schema.d.ts.map +1 -0
- package/dist/subgraphs/payment-terms/schema.js +302 -0
- package/dist/subgraphs/request-for-proposals/index.d.ts +10 -0
- package/dist/subgraphs/request-for-proposals/index.d.ts.map +1 -0
- package/dist/subgraphs/request-for-proposals/index.js +11 -0
- package/dist/subgraphs/request-for-proposals/resolvers.d.ts +3 -0
- package/dist/subgraphs/request-for-proposals/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/request-for-proposals/resolvers.js +110 -0
- package/dist/subgraphs/request-for-proposals/schema.d.ts +3 -0
- package/dist/subgraphs/request-for-proposals/schema.d.ts.map +1 -0
- package/dist/subgraphs/request-for-proposals/schema.js +232 -0
- package/dist/subgraphs/workstream/index.d.ts +10 -0
- package/dist/subgraphs/workstream/index.d.ts.map +1 -0
- package/dist/subgraphs/workstream/index.js +11 -0
- package/dist/subgraphs/workstream/resolvers.d.ts +3 -0
- package/dist/subgraphs/workstream/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/workstream/resolvers.js +131 -0
- package/dist/subgraphs/workstream/schema.d.ts +3 -0
- package/dist/subgraphs/workstream/schema.d.ts.map +1 -0
- package/dist/subgraphs/workstream/schema.js +206 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +8 -0
- package/package.json +106 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useMemo } from "react";
|
|
3
|
+
import { ObjectSetTable, TextInput, DatePicker } from "@powerhousedao/document-engineering";
|
|
4
|
+
import { Button, Icon, toast } from "@powerhousedao/design-system";
|
|
5
|
+
import { generateId } from "document-model";
|
|
6
|
+
export function MilestonesTab({ milestones, dispatch, actions, currency = "USD" }) {
|
|
7
|
+
const [isAddingNew, setIsAddingNew] = useState(false);
|
|
8
|
+
const [newMilestone, setNewMilestone] = useState({
|
|
9
|
+
name: "",
|
|
10
|
+
amount: "",
|
|
11
|
+
expectedCompletionDate: "",
|
|
12
|
+
requiresApproval: true
|
|
13
|
+
});
|
|
14
|
+
const columns = useMemo(() => [
|
|
15
|
+
{
|
|
16
|
+
field: "name",
|
|
17
|
+
title: "Name",
|
|
18
|
+
editable: true,
|
|
19
|
+
align: "left",
|
|
20
|
+
onSave: (newValue, context) => {
|
|
21
|
+
if (newValue !== context.row.name) {
|
|
22
|
+
dispatch(actions.updateMilestone({
|
|
23
|
+
id: context.row.id,
|
|
24
|
+
name: newValue
|
|
25
|
+
}));
|
|
26
|
+
toast("Milestone name updated", {
|
|
27
|
+
type: "success",
|
|
28
|
+
});
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
field: "amount",
|
|
36
|
+
title: `Amount (${currency})`,
|
|
37
|
+
editable: true,
|
|
38
|
+
align: "right",
|
|
39
|
+
renderCell: (value) => {
|
|
40
|
+
return value ? `${value.value} ${value.unit}` : "";
|
|
41
|
+
},
|
|
42
|
+
onSave: (newValue, context) => {
|
|
43
|
+
const amount = parseFloat(newValue);
|
|
44
|
+
if (isNaN(amount)) {
|
|
45
|
+
toast("Please enter a valid amount", {
|
|
46
|
+
type: "error",
|
|
47
|
+
});
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
dispatch(actions.updateMilestone({
|
|
51
|
+
id: context.row.id,
|
|
52
|
+
amount: { value: amount, unit: currency }
|
|
53
|
+
}));
|
|
54
|
+
toast("Milestone amount updated", {
|
|
55
|
+
type: "success",
|
|
56
|
+
});
|
|
57
|
+
return true;
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
field: "expectedCompletionDate",
|
|
62
|
+
title: "Expected Completion",
|
|
63
|
+
editable: true,
|
|
64
|
+
align: "center",
|
|
65
|
+
renderCell: (value) => {
|
|
66
|
+
return value ? new Date(value).toLocaleDateString() : "Not set";
|
|
67
|
+
},
|
|
68
|
+
onSave: (newValue, context) => {
|
|
69
|
+
const dateValue = newValue;
|
|
70
|
+
dispatch(actions.updateMilestone({
|
|
71
|
+
id: context.row.id,
|
|
72
|
+
expectedCompletionDate: dateValue || undefined
|
|
73
|
+
}));
|
|
74
|
+
toast("Expected completion date updated", {
|
|
75
|
+
type: "success",
|
|
76
|
+
});
|
|
77
|
+
return true;
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
field: "requiresApproval",
|
|
82
|
+
title: "Requires Approval",
|
|
83
|
+
editable: true,
|
|
84
|
+
align: "center",
|
|
85
|
+
renderCell: (value) => value ? "Yes" : "No",
|
|
86
|
+
onSave: (newValue, context) => {
|
|
87
|
+
const approved = newValue === "true" || newValue === true;
|
|
88
|
+
dispatch(actions.updateMilestone({
|
|
89
|
+
id: context.row.id,
|
|
90
|
+
requiresApproval: approved
|
|
91
|
+
}));
|
|
92
|
+
toast("Approval requirement updated", {
|
|
93
|
+
type: "success",
|
|
94
|
+
});
|
|
95
|
+
return true;
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
field: "payoutStatus",
|
|
100
|
+
title: "Status",
|
|
101
|
+
editable: true,
|
|
102
|
+
align: "center",
|
|
103
|
+
renderCell: (value) => {
|
|
104
|
+
const statusMap = {
|
|
105
|
+
PENDING: "Pending",
|
|
106
|
+
READY_FOR_REVIEW: "Ready for Review",
|
|
107
|
+
APPROVED: "Approved",
|
|
108
|
+
PAID: "Paid",
|
|
109
|
+
REJECTED: "Rejected"
|
|
110
|
+
};
|
|
111
|
+
return statusMap[value] || value;
|
|
112
|
+
},
|
|
113
|
+
onSave: (newValue, context) => {
|
|
114
|
+
dispatch(actions.updateMilestone({
|
|
115
|
+
id: context.row.id,
|
|
116
|
+
payoutStatus: newValue
|
|
117
|
+
}));
|
|
118
|
+
toast("Milestone status updated", {
|
|
119
|
+
type: "success",
|
|
120
|
+
});
|
|
121
|
+
return true;
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
field: "actions",
|
|
126
|
+
title: "Actions",
|
|
127
|
+
editable: false,
|
|
128
|
+
align: "center",
|
|
129
|
+
renderCell: (_, context) => (_jsx(Button, { onClick: () => {
|
|
130
|
+
dispatch(actions.deleteMilestone({ id: context.row.id }));
|
|
131
|
+
toast("Milestone deleted", {
|
|
132
|
+
type: "success",
|
|
133
|
+
});
|
|
134
|
+
}, size: "small", className: "text-red-600 hover:text-red-800", children: _jsx(Icon, { name: "Trash", size: 16 }) })),
|
|
135
|
+
}
|
|
136
|
+
], [actions, currency, dispatch]);
|
|
137
|
+
const handleAddMilestone = useCallback((e) => {
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
if (!newMilestone.name.trim()) {
|
|
140
|
+
toast('Name is required', {
|
|
141
|
+
type: "error",
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (!newMilestone.amount || isNaN(parseFloat(newMilestone.amount))) {
|
|
146
|
+
toast('Valid amount is required', {
|
|
147
|
+
type: "error",
|
|
148
|
+
});
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const milestoneData = {
|
|
152
|
+
id: generateId(),
|
|
153
|
+
name: newMilestone.name,
|
|
154
|
+
amount: {
|
|
155
|
+
value: parseFloat(newMilestone.amount),
|
|
156
|
+
unit: currency
|
|
157
|
+
},
|
|
158
|
+
requiresApproval: newMilestone.requiresApproval
|
|
159
|
+
};
|
|
160
|
+
if (newMilestone.expectedCompletionDate) {
|
|
161
|
+
milestoneData.expectedCompletionDate = new Date(newMilestone.expectedCompletionDate).toISOString();
|
|
162
|
+
}
|
|
163
|
+
dispatch(actions.addMilestone(milestoneData));
|
|
164
|
+
toast("Milestone added successfully", {
|
|
165
|
+
type: "success",
|
|
166
|
+
});
|
|
167
|
+
// Reset form and close edit section
|
|
168
|
+
setNewMilestone({
|
|
169
|
+
name: "",
|
|
170
|
+
amount: "",
|
|
171
|
+
expectedCompletionDate: "",
|
|
172
|
+
requiresApproval: true
|
|
173
|
+
});
|
|
174
|
+
setIsAddingNew(false);
|
|
175
|
+
}, [newMilestone, dispatch, actions, currency]);
|
|
176
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold dark:text-white", children: "Milestones" }), _jsxs("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: [milestones.length, " milestone(s) defined"] })] }), _jsxs(Button, { onClick: () => setIsAddingNew(!isAddingNew), color: "light", size: "small", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: [_jsx(Icon, { name: "Plus", size: 16, className: "mr-2" }), "Add Milestone"] })] }), isAddingNew && (_jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 p-4 rounded-lg border dark:border-gray-600", children: [_jsx("h3", { className: "text-lg font-medium mb-4 dark:text-white", children: "Add New Milestone" }), _jsxs("form", { onSubmit: handleAddMilestone, className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsx(TextInput, { label: "Name *", value: newMilestone.name, onChange: (e) => setNewMilestone({ ...newMilestone, name: e.target.value }), className: "w-full", required: true }), _jsx(TextInput, { label: `Amount (${currency}) *`, type: "number", value: newMilestone.amount, onChange: (e) => setNewMilestone({ ...newMilestone, amount: e.target.value }), className: "w-full", placeholder: "0.00", step: "0.01", required: true }), _jsx(DatePicker, { value: newMilestone.expectedCompletionDate ? new Date(newMilestone.expectedCompletionDate) : undefined, onChange: (e) => {
|
|
177
|
+
const date = e.target.value ? new Date(e.target.value) : null;
|
|
178
|
+
setNewMilestone({ ...newMilestone, expectedCompletionDate: date?.toISOString() || "" });
|
|
179
|
+
}, name: "expected-completion-date", placeholder: "Select expected completion date" }), _jsxs("div", { className: "flex items-center pt-6", children: [_jsx("input", { type: "checkbox", id: "requiresApproval", checked: newMilestone.requiresApproval, onChange: (e) => setNewMilestone({ ...newMilestone, requiresApproval: e.target.checked }), className: "mr-2 h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" }), _jsx("label", { htmlFor: "requiresApproval", className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Requires Approval" })] })] }), _jsxs("div", { className: "flex gap-3", children: [_jsx(Button, { type: "submit", color: "light", size: "small", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: "Add Milestone" }), _jsx(Button, { type: "button", onClick: () => {
|
|
180
|
+
setIsAddingNew(false);
|
|
181
|
+
setNewMilestone({
|
|
182
|
+
name: "",
|
|
183
|
+
amount: "",
|
|
184
|
+
expectedCompletionDate: "",
|
|
185
|
+
requiresApproval: true
|
|
186
|
+
});
|
|
187
|
+
}, color: "light", size: "small", className: "cursor-pointer hover:bg-gray-600 hover:text-white", children: "Cancel" })] })] })] })), milestones.length > 0 ? (_jsx(ObjectSetTable, { data: milestones, columns: columns, onAdd: () => setIsAddingNew(true), onDelete: (row) => {
|
|
188
|
+
dispatch(actions.deleteMilestone({ id: row.id }));
|
|
189
|
+
toast("Milestone deleted", {
|
|
190
|
+
type: "success",
|
|
191
|
+
});
|
|
192
|
+
} })) : (_jsxs("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400 border-2 border-dashed border-gray-300 dark:border-gray-600 rounded-lg", children: [_jsx(Icon, { name: "Calendar", size: 48, className: "mx-auto mb-4 text-gray-400" }), _jsx("p", { className: "text-lg font-medium", children: "No milestones defined yet" }), _jsx("p", { className: "text-sm", children: "Add your first milestone to get started" })] }))] }));
|
|
193
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PaymentTermsState } from "../../document-models/payment-terms/gen/schema/types.js";
|
|
2
|
+
export interface RetainerTabProps {
|
|
3
|
+
state: PaymentTermsState;
|
|
4
|
+
dispatch: (action: any) => void;
|
|
5
|
+
actions: any;
|
|
6
|
+
}
|
|
7
|
+
export declare function RetainerTab({ state, dispatch, actions }: RetainerTabProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=retainer-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retainer-tab.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/retainer-tab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,yDAAyD,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,GAAG,CAAC;CACd;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CAoOzE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useMemo } from "react";
|
|
3
|
+
import { TextInput, Select, Textarea, DatePicker } from "@powerhousedao/document-engineering";
|
|
4
|
+
import { Button, toast } from "@powerhousedao/design-system";
|
|
5
|
+
export function RetainerTab({ state, dispatch, actions }) {
|
|
6
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
7
|
+
const [formData, setFormData] = useState({
|
|
8
|
+
retainerAmount: state.retainerDetails?.retainerAmount?.value?.toString() || "",
|
|
9
|
+
billingFrequency: state.retainerDetails?.billingFrequency || "MONTHLY",
|
|
10
|
+
startDate: state.retainerDetails?.startDate || "",
|
|
11
|
+
endDate: state.retainerDetails?.endDate || "",
|
|
12
|
+
autoRenew: state.retainerDetails?.autoRenew || false,
|
|
13
|
+
servicesIncluded: state.retainerDetails?.servicesIncluded || ""
|
|
14
|
+
});
|
|
15
|
+
const billingFrequencyOptions = useMemo(() => [
|
|
16
|
+
{ label: "Weekly", value: "WEEKLY" },
|
|
17
|
+
{ label: "Biweekly", value: "BIWEEKLY" },
|
|
18
|
+
{ label: "Monthly", value: "MONTHLY" }
|
|
19
|
+
], []);
|
|
20
|
+
const handleSubmit = useCallback((e) => {
|
|
21
|
+
e.preventDefault();
|
|
22
|
+
if (!formData.retainerAmount || isNaN(parseFloat(formData.retainerAmount))) {
|
|
23
|
+
toast("Please enter a valid retainer amount", {
|
|
24
|
+
type: "error",
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!formData.startDate) {
|
|
29
|
+
toast("Start date is required", {
|
|
30
|
+
type: "error",
|
|
31
|
+
});
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!formData.servicesIncluded.trim()) {
|
|
35
|
+
toast("Services included description is required", {
|
|
36
|
+
type: "error",
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Convert date strings to ISO format for the schema
|
|
41
|
+
const startDate = new Date(formData.startDate).toISOString();
|
|
42
|
+
const endDate = formData.endDate ? new Date(formData.endDate).toISOString() : undefined;
|
|
43
|
+
dispatch(actions.setRetainerDetails({
|
|
44
|
+
retainerAmount: {
|
|
45
|
+
value: parseFloat(formData.retainerAmount),
|
|
46
|
+
unit: state.currency
|
|
47
|
+
},
|
|
48
|
+
billingFrequency: formData.billingFrequency,
|
|
49
|
+
startDate: startDate,
|
|
50
|
+
endDate: endDate,
|
|
51
|
+
autoRenew: formData.autoRenew,
|
|
52
|
+
servicesIncluded: formData.servicesIncluded
|
|
53
|
+
}));
|
|
54
|
+
toast("Retainer configuration saved", {
|
|
55
|
+
type: "success",
|
|
56
|
+
});
|
|
57
|
+
setIsEditing(false);
|
|
58
|
+
}, [formData, dispatch, actions, state.currency]);
|
|
59
|
+
const handleCancel = useCallback(() => {
|
|
60
|
+
setFormData({
|
|
61
|
+
retainerAmount: state.retainerDetails?.retainerAmount?.value?.toString() || "",
|
|
62
|
+
billingFrequency: state.retainerDetails?.billingFrequency || "MONTHLY",
|
|
63
|
+
startDate: state.retainerDetails?.startDate || "",
|
|
64
|
+
endDate: state.retainerDetails?.endDate || "",
|
|
65
|
+
autoRenew: state.retainerDetails?.autoRenew || false,
|
|
66
|
+
servicesIncluded: state.retainerDetails?.servicesIncluded || ""
|
|
67
|
+
});
|
|
68
|
+
setIsEditing(false);
|
|
69
|
+
}, [state.retainerDetails]);
|
|
70
|
+
if (!isEditing) {
|
|
71
|
+
return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex justify-between items-center mb-4", children: [_jsx("h2", { className: "text-xl font-semibold dark:text-white", children: "Retainer Configuration" }), _jsx(Button, { onClick: () => setIsEditing(true), color: "light", size: "small", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: state.retainerDetails ? "Edit Configuration" : "Configure Retainer" })] }), state.retainerDetails ? (_jsxs("div", { className: "grid grid-cols-2 gap-6", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Retainer Amount" }), _jsx("p", { className: "text-lg dark:text-white", children: state.retainerDetails.retainerAmount
|
|
72
|
+
? `${state.retainerDetails.retainerAmount.value} ${state.retainerDetails.retainerAmount.unit}`
|
|
73
|
+
: "Not set" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Billing Frequency" }), _jsx("p", { className: "text-lg dark:text-white", children: state.retainerDetails.billingFrequency })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Start Date" }), _jsx("p", { className: "text-lg dark:text-white", children: state.retainerDetails.startDate })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "End Date" }), _jsx("p", { className: "text-lg dark:text-white", children: state.retainerDetails.endDate || "Ongoing" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Auto Renew" }), _jsx("p", { className: "text-lg dark:text-white", children: state.retainerDetails.autoRenew ? "Yes" : "No" })] }), _jsxs("div", { className: "col-span-2", children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Services Included" }), _jsx("div", { className: "bg-gray-50 dark:bg-gray-700 p-3 rounded border dark:border-gray-600", children: _jsx("p", { className: "text-sm dark:text-white", children: state.retainerDetails.servicesIncluded }) })] })] })) : (_jsxs("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400", children: [_jsx("p", { children: "No retainer configuration set up yet." }), _jsx("p", { className: "text-sm", children: "Click \"Configure Retainer\" to get started." })] }))] }));
|
|
74
|
+
}
|
|
75
|
+
return (_jsxs("form", { onSubmit: handleSubmit, className: "space-y-6", children: [_jsx("div", { className: "flex justify-between items-center mb-4", children: _jsx("h2", { className: "text-xl font-semibold dark:text-white", children: "Configure Retainer" }) }), _jsxs("div", { className: "grid grid-cols-2 gap-6", children: [_jsx(TextInput, { label: "Retainer Amount *", type: "number", value: formData.retainerAmount, onChange: (e) => setFormData({ ...formData, retainerAmount: e.target.value }), className: "w-full", placeholder: "0.00", step: "0.01", required: true }), _jsx(Select, { label: "Billing Frequency *", options: billingFrequencyOptions, value: formData.billingFrequency, onChange: (value) => setFormData({ ...formData, billingFrequency: value }) }), _jsx(DatePicker, { value: formData.startDate ? new Date(formData.startDate) : undefined, onChange: (e) => {
|
|
76
|
+
const date = e.target.value ? new Date(e.target.value) : null;
|
|
77
|
+
setFormData({ ...formData, startDate: date?.toISOString() || "" });
|
|
78
|
+
}, name: "start-date", placeholder: "Select start date", required: true }), _jsx(DatePicker, { value: formData.endDate ? new Date(formData.endDate) : undefined, onChange: (e) => {
|
|
79
|
+
const date = e.target.value ? new Date(e.target.value) : null;
|
|
80
|
+
setFormData({ ...formData, endDate: date?.toISOString() || "" });
|
|
81
|
+
}, name: "end-date", placeholder: "Select end date (optional)" }), _jsx("div", { className: "col-span-2", children: _jsx(Textarea, { label: "Services Included *", value: formData.servicesIncluded, onChange: (e) => setFormData({ ...formData, servicesIncluded: e.target.value }), className: "w-full", rows: 4, placeholder: "Describe the services included in the retainer...", required: true }) }), _jsx("div", { className: "col-span-2", children: _jsxs("div", { className: "flex items-center", children: [_jsx("input", { type: "checkbox", id: "autoRenew", checked: formData.autoRenew, onChange: (e) => setFormData({ ...formData, autoRenew: e.target.checked }), className: "mr-2 h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" }), _jsx("label", { htmlFor: "autoRenew", className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Auto-Renew Retainer" })] }) })] }), _jsxs("div", { className: "flex gap-3", children: [_jsx(Button, { type: "submit", color: "light", size: "small", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: "Save Configuration" }), _jsx(Button, { type: "button", onClick: handleCancel, color: "light", size: "small", className: "cursor-pointer hover:bg-gray-600 hover:text-white", children: "Cancel" })] })] }));
|
|
82
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/request-for-proposals/editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAgBlD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAYjC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,2CAuIxC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { actions, } from "../../document-models/request-for-proposals/index.js";
|
|
3
|
+
import { useSelectedDocument } from "@powerhousedao/reactor-browser";
|
|
4
|
+
import { DatePicker, Select, TextInput, } from "@powerhousedao/document-engineering";
|
|
5
|
+
import { MarkdownEditor } from "./markdown-editor.js";
|
|
6
|
+
const statusOptions = [
|
|
7
|
+
{ label: "DRAFT", value: "DRAFT" },
|
|
8
|
+
{ label: "REQUEST_FOR_COMMMENTS", value: "REQUEST_FOR_COMMMENTS" },
|
|
9
|
+
{ label: "CANCELED", value: "CANCELED" },
|
|
10
|
+
{ label: "OPEN_FOR_PROPOSALS", value: "OPEN_FOR_PROPOSALS" },
|
|
11
|
+
{ label: "AWARDED", value: "AWARDED" },
|
|
12
|
+
{ label: "NOT_AWARDED", value: "NOT_AWARDED" },
|
|
13
|
+
{ label: "CLOSED", value: "CLOSED" },
|
|
14
|
+
];
|
|
15
|
+
export default function Editor(props) {
|
|
16
|
+
let dispatch;
|
|
17
|
+
const { document } = props;
|
|
18
|
+
const state = document?.state
|
|
19
|
+
.global;
|
|
20
|
+
if (!document) {
|
|
21
|
+
return _jsx("div", { children: "No document selected" });
|
|
22
|
+
}
|
|
23
|
+
if (props.dispatch) {
|
|
24
|
+
dispatch = props.dispatch;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const selectedDocument = useSelectedDocument();
|
|
28
|
+
dispatch = selectedDocument[1];
|
|
29
|
+
}
|
|
30
|
+
return (_jsx("div", { className: "w-full bg-gray-50", children: _jsxs("div", { className: "p-6 max-w-4xl mx-auto min-h-screen", children: [_jsx("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm", children: _jsx("h1", { className: "text-3xl font-bold text-gray-900 mb-2", children: "Request for Proposals" }) }), _jsx("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm", children: _jsxs("div", { className: "flex flex-row gap-6", children: [_jsxs("div", { className: "flex-1", children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: "Code" }), _jsx(TextInput, { className: "w-full", defaultValue: state.code || "", onBlur: (e) => {
|
|
31
|
+
if (e.target.value !== state.code) {
|
|
32
|
+
dispatch(actions.editRfp({ code: e.target.value }));
|
|
33
|
+
}
|
|
34
|
+
}, placeholder: "Enter rfp code" })] }), _jsxs("div", { className: "flex-1", children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: "Title" }), _jsx(TextInput, { className: "w-full", defaultValue: state.title || "", onBlur: (e) => {
|
|
35
|
+
if (e.target.value !== state.title) {
|
|
36
|
+
dispatch(actions.editRfp({ title: e.target.value }));
|
|
37
|
+
}
|
|
38
|
+
}, placeholder: "Enter rfp title" })] }), _jsx("div", { className: "w-[150px]", children: _jsx(Select, { label: "Status", options: statusOptions, value: state.status, onChange: (value) => dispatch(actions.editRfp({ status: value })) }) })] }) }), _jsx("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm", children: _jsx(MarkdownEditor, { height: 200, label: "Summary", value: state.summary ?? "", onChange: () => { }, onBlur: (value) => dispatch(actions.editRfp({ summary: value })) }) }), _jsxs("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm", children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: "Submission Deadline" }), _jsx("div", { className: "w-[250px]", children: _jsx(DatePicker, { value: state.deadline ? new Date(state.deadline) : undefined, onChange: (e) => {
|
|
39
|
+
const date = e.target.value ? new Date(e.target.value) : null;
|
|
40
|
+
dispatch(actions.editRfp({ deadline: date?.toISOString() }));
|
|
41
|
+
}, name: "submission-deadline", placeholder: "Select submission deadline" }) })] }), _jsx("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm", children: _jsx(MarkdownEditor, { height: 200, label: "Eligibility Criteria", value: state.eligibilityCriteria ?? "", onChange: () => { }, onBlur: (value) => dispatch(actions.editRfp({ eligibilityCriteria: value })) }) }), _jsx("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm", children: _jsx(MarkdownEditor, { height: 200, label: "Evaluation Criteria", value: state.evaluationCriteria ?? "", onChange: () => { }, onBlur: (value) => dispatch(actions.editRfp({ evaluationCriteria: value })) }) })] }) }));
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../editors/request-for-proposals/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,eAAO,MAAM,MAAM,EAAE,YASpB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Editor from "./editor.js";
|
|
2
|
+
export const module = {
|
|
3
|
+
Component: Editor,
|
|
4
|
+
documentTypes: ["powerhouse/rfp"],
|
|
5
|
+
config: {
|
|
6
|
+
id: "request-for-proposals-editor",
|
|
7
|
+
disableExternalControls: true,
|
|
8
|
+
documentToolbarEnabled: true,
|
|
9
|
+
showSwitchboardLink: true,
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export default module;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type MarkdownEditorMode = "preview" | "edit" | "live";
|
|
2
|
+
interface MarkdownEditorProps {
|
|
3
|
+
value: string;
|
|
4
|
+
onChange: (value: string) => void;
|
|
5
|
+
onBlur?: (value: string) => void;
|
|
6
|
+
height?: number;
|
|
7
|
+
label?: string;
|
|
8
|
+
labelClassName?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function MarkdownEditor({ value, onChange, onBlur, height, label, labelClassName, }: MarkdownEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=markdown-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-editor.d.ts","sourceRoot":"","sources":["../../../editors/request-for-proposals/markdown-editor.tsx"],"names":[],"mappings":"AAeA,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAY,EACZ,KAAiB,EACjB,cAAqD,GACtD,EAAE,mBAAmB,2CAsJrB"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import remarkGfm from "remark-gfm";
|
|
4
|
+
import rehypeSlug from "rehype-slug";
|
|
5
|
+
import { useLocalStorage } from "usehooks-ts";
|
|
6
|
+
// Custom preview renderer to make links open in new tabs and ensure proper list rendering
|
|
7
|
+
const previewOptions = {
|
|
8
|
+
components: {
|
|
9
|
+
a: ({ ...props }) => (_jsx("a", { ...props, target: "_blank", rel: "noopener noreferrer" })),
|
|
10
|
+
},
|
|
11
|
+
rehypePlugins: [rehypeSlug],
|
|
12
|
+
remarkPlugins: [remarkGfm],
|
|
13
|
+
};
|
|
14
|
+
export function MarkdownEditor({ value, onChange, onBlur, height = 350, label = "Content", labelClassName = "text-sm leading-4 mb-3 font-medium", }) {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
16
|
+
const [MDEditor, setMDEditor] = useState(null);
|
|
17
|
+
const [contentValue, setContentValue] = useState(" ");
|
|
18
|
+
const [isLoaded, setIsLoaded] = useState(false);
|
|
19
|
+
const [viewMarkdownMode, setViewMarkdownMode] = useLocalStorage("markdown-editor-view-mode", "live");
|
|
20
|
+
// Load the MDEditor component dynamically
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
import("@uiw/react-md-editor").then((module) => {
|
|
23
|
+
setMDEditor(() => module.default);
|
|
24
|
+
setIsLoaded(true);
|
|
25
|
+
}).catch((error) => {
|
|
26
|
+
console.error("Failed to load MDEditor:", error);
|
|
27
|
+
});
|
|
28
|
+
}, []);
|
|
29
|
+
// Update contentValue when value prop changes
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (isLoaded) {
|
|
32
|
+
const stringValue = typeof value === 'string' ? value : '';
|
|
33
|
+
const safeValue = stringValue.trim() || " ";
|
|
34
|
+
setContentValue(safeValue);
|
|
35
|
+
}
|
|
36
|
+
}, [value, isLoaded]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!MDEditor)
|
|
39
|
+
return;
|
|
40
|
+
const handleViewButtonClick = () => {
|
|
41
|
+
const buttonLive = document.querySelector("button[data-name='live']");
|
|
42
|
+
const buttonEdit = document.querySelector("button[data-name='edit']");
|
|
43
|
+
const buttonPreview = document.querySelector("button[data-name='preview']");
|
|
44
|
+
const liveLi = buttonLive?.closest("li");
|
|
45
|
+
const editLi = buttonEdit?.closest("li");
|
|
46
|
+
const previewLi = buttonPreview?.closest("li");
|
|
47
|
+
if (previewLi && previewLi.classList.contains("active")) {
|
|
48
|
+
setViewMarkdownMode("preview");
|
|
49
|
+
}
|
|
50
|
+
if (editLi && editLi.classList.contains("active")) {
|
|
51
|
+
setViewMarkdownMode("edit");
|
|
52
|
+
}
|
|
53
|
+
if (liveLi && liveLi.classList.contains("active")) {
|
|
54
|
+
setViewMarkdownMode("live");
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
document.addEventListener("click", handleViewButtonClick, true);
|
|
58
|
+
return () => {
|
|
59
|
+
document.removeEventListener("click", handleViewButtonClick, true);
|
|
60
|
+
};
|
|
61
|
+
}, [MDEditor, setViewMarkdownMode]);
|
|
62
|
+
// Handle content changes
|
|
63
|
+
const handleContentChange = (newValue) => {
|
|
64
|
+
if (newValue !== undefined) {
|
|
65
|
+
const stringValue = typeof newValue === 'string' ? newValue : '';
|
|
66
|
+
// Only replace completely empty strings with a space, preserve all other content
|
|
67
|
+
const safeValue = stringValue === '' ? " " : stringValue;
|
|
68
|
+
setContentValue(safeValue);
|
|
69
|
+
onChange(newValue); // Keep the original value for the parent component
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
// Handle content blur
|
|
73
|
+
const handleContentBlur = (e) => {
|
|
74
|
+
if (onBlur) {
|
|
75
|
+
onBlur(e.target.value);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
return (_jsxs("div", { className: "w-full", children: [_jsx("style", { children: `
|
|
79
|
+
.w-md-editor-preview ul {
|
|
80
|
+
list-style-type: disc !important;
|
|
81
|
+
padding-left: 2em !important;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.w-md-editor-preview ol {
|
|
85
|
+
list-style-type: decimal !important;
|
|
86
|
+
padding-left: 2em !important;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Ensure proper table styling */
|
|
90
|
+
.w-md-editor-preview table {
|
|
91
|
+
border-collapse: collapse;
|
|
92
|
+
width: 100%;
|
|
93
|
+
margin: 1em 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.w-md-editor-preview th,
|
|
97
|
+
.w-md-editor-preview td {
|
|
98
|
+
border: 1px solid #ddd;
|
|
99
|
+
padding: 8px;
|
|
100
|
+
text-align: left;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.w-md-editor-preview th {
|
|
104
|
+
background-color: #f5f5f5;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.w-md-editor-text-pre code, .w-md-editor-text-pre div {
|
|
108
|
+
font-size: 16px !important;
|
|
109
|
+
line-height: 24px !important;
|
|
110
|
+
}
|
|
111
|
+
.w-md-editor-text-input {
|
|
112
|
+
font-size: 16px !important;
|
|
113
|
+
line-height: 24px !important;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
` }), label && _jsx("p", { className: labelClassName, children: label }), !isLoaded && (_jsx("div", { className: "w-full border border-gray-300 rounded-md p-3 bg-white", style: { height: `${height}px` }, children: _jsx("div", { className: "w-full h-full flex items-center justify-center text-gray-500", children: "Loading editor..." }) })), isLoaded && MDEditor && (_jsx("div", { "data-color-mode": "light", className: "w-full", children: _jsx(MDEditor, { height: height, value: contentValue, onChange: handleContentChange, onBlur: handleContentBlur, previewOptions: previewOptions, enableScroll: true, preview: viewMarkdownMode, textareaProps: {
|
|
117
|
+
placeholder: "Write your content here...",
|
|
118
|
+
} }) }))] }));
|
|
119
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/workstream/editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkClD,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAejC,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,GAAG,2CAqzBxC"}
|