@powerhousedao/network-admin 0.0.64 → 1.0.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/document-models/document-models.d.ts.map +1 -1
- package/dist/document-models/document-models.js +0 -2
- package/dist/document-models/index.d.ts +0 -1
- package/dist/document-models/index.d.ts.map +1 -1
- package/dist/document-models/index.js +0 -1
- package/dist/document-models/network-profile/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/document-model.js +84 -84
- package/dist/document-models/network-profile/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/ph-factories.js +0 -2
- package/dist/document-models/network-profile/gen/reducer.d.ts +0 -1
- package/dist/document-models/network-profile/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/schema/types.d.ts +2 -6
- package/dist/document-models/network-profile/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/schema/zod.d.ts +2 -8
- package/dist/document-models/network-profile/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/schema/zod.js +2 -6
- package/dist/document-models/network-profile/gen/utils.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/utils.js +1 -3
- package/dist/document-models/network-profile/hooks.d.ts +2 -2
- package/dist/document-models/network-profile/hooks.d.ts.map +1 -1
- package/dist/document-models/network-profile/module.d.ts +1 -1
- package/dist/document-models/network-profile/module.d.ts.map +1 -1
- package/dist/document-models/network-profile/module.js +1 -1
- package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts +1 -0
- package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts.map +1 -1
- package/dist/document-models/network-profile/src/reducers/network-profile-management.js +18 -27
- package/dist/document-models/network-profile/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/network-profile/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/network-profile/src/tests/document-model.test.js +6 -92
- package/dist/document-models/network-profile/src/tests/network-profile-management.test.js +115 -69
- package/dist/document-models/payment-terms/actions.d.ts +2 -1
- package/dist/document-models/payment-terms/actions.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/clauses/error.d.ts +40 -1
- package/dist/document-models/payment-terms/gen/clauses/error.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/clauses/error.js +32 -1
- package/dist/document-models/payment-terms/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/document-model.js +180 -89
- package/dist/document-models/payment-terms/gen/milestones/error.d.ts +26 -1
- package/dist/document-models/payment-terms/gen/milestones/error.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/milestones/error.js +18 -1
- package/dist/document-models/payment-terms/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/ph-factories.js +2 -1
- package/dist/document-models/payment-terms/gen/reducer.d.ts +0 -1
- package/dist/document-models/payment-terms/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/reducer.js +9 -4
- package/dist/document-models/payment-terms/gen/schema/types.d.ts +29 -14
- package/dist/document-models/payment-terms/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/schema/zod.d.ts +12 -36
- package/dist/document-models/payment-terms/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/schema/zod.js +55 -29
- package/dist/document-models/payment-terms/gen/terms/actions.d.ts +9 -5
- package/dist/document-models/payment-terms/gen/terms/actions.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/terms/creators.d.ts +4 -3
- package/dist/document-models/payment-terms/gen/terms/creators.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/terms/creators.js +3 -2
- package/dist/document-models/payment-terms/gen/terms/operations.d.ts +3 -2
- package/dist/document-models/payment-terms/gen/terms/operations.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/utils.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/utils.js +3 -2
- package/dist/document-models/payment-terms/hooks.d.ts +2 -2
- package/dist/document-models/payment-terms/hooks.d.ts.map +1 -1
- package/dist/document-models/payment-terms/module.d.ts +1 -1
- package/dist/document-models/payment-terms/module.d.ts.map +1 -1
- package/dist/document-models/payment-terms/module.js +1 -1
- package/dist/document-models/payment-terms/src/reducers/clauses.d.ts +1 -0
- package/dist/document-models/payment-terms/src/reducers/clauses.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/reducers/clauses.js +15 -13
- package/dist/document-models/payment-terms/src/reducers/milestones.d.ts +1 -0
- package/dist/document-models/payment-terms/src/reducers/milestones.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/reducers/milestones.js +12 -10
- package/dist/document-models/payment-terms/src/reducers/terms.d.ts +1 -0
- package/dist/document-models/payment-terms/src/reducers/terms.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/reducers/terms.js +24 -14
- package/dist/document-models/payment-terms/src/tests/clauses.test.js +21 -26
- package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/tests/document-model.test.js +6 -92
- package/dist/document-models/payment-terms/src/tests/milestones.test.js +19 -22
- package/dist/document-models/payment-terms/src/tests/terms.test.js +29 -24
- package/dist/document-models/payment-terms/tests/terms.test.js +15 -5
- package/dist/document-models/request-for-proposals/gen/document-model.js +4 -4
- package/dist/document-models/request-for-proposals/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/ph-factories.js +4 -6
- package/dist/document-models/request-for-proposals/gen/reducer.d.ts +0 -1
- package/dist/document-models/request-for-proposals/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts +9 -64
- package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/utils.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/utils.js +5 -7
- package/dist/document-models/request-for-proposals/hooks.d.ts +2 -2
- package/dist/document-models/request-for-proposals/hooks.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/module.d.ts +1 -1
- package/dist/document-models/request-for-proposals/module.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/module.js +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.js +4 -3
- package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/proposals.js +5 -4
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.js +3 -2
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts +1 -2
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.js +181 -24
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.js +6 -92
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts +1 -2
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.js +327 -33
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts +1 -2
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.js +240 -15
- package/dist/document-models/workstream/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/document-model.js +16 -16
- package/dist/document-models/workstream/gen/reducer.d.ts +0 -1
- package/dist/document-models/workstream/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/schema/types.d.ts +1 -1
- package/dist/document-models/workstream/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/schema/zod.d.ts +5 -35
- package/dist/document-models/workstream/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/utils.js +1 -1
- package/dist/document-models/workstream/hooks.d.ts +2 -2
- package/dist/document-models/workstream/hooks.d.ts.map +1 -1
- package/dist/document-models/workstream/module.d.ts +1 -1
- package/dist/document-models/workstream/module.d.ts.map +1 -1
- package/dist/document-models/workstream/module.js +1 -1
- package/dist/document-models/workstream/src/reducers/proposals.d.ts +1 -0
- package/dist/document-models/workstream/src/reducers/proposals.d.ts.map +1 -1
- package/dist/document-models/workstream/src/reducers/proposals.js +6 -83
- package/dist/document-models/workstream/src/reducers/workstream.d.ts +1 -0
- package/dist/document-models/workstream/src/reducers/workstream.d.ts.map +1 -1
- package/dist/document-models/workstream/src/reducers/workstream.js +7 -6
- package/dist/document-models/workstream/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/workstream/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/workstream/src/tests/document-model.test.js +3 -89
- 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 +318 -0
- package/dist/document-models/workstream/src/tests/proposals.test.js +25 -26
- 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 +210 -0
- package/dist/document-models/workstream/src/tests/workstream.test.js +29 -34
- package/dist/editors/hooks/useNetworkProfileDocument.d.ts +4 -0
- package/dist/editors/hooks/useNetworkProfileDocument.d.ts.map +1 -0
- package/dist/editors/hooks/useNetworkProfileDocument.js +8 -0
- package/dist/editors/hooks/usePaymentTermsDocument.d.ts +4 -0
- package/dist/editors/hooks/usePaymentTermsDocument.d.ts.map +1 -0
- package/dist/editors/hooks/usePaymentTermsDocument.js +8 -0
- package/dist/editors/hooks/useRequestForProposalsDocument.d.ts +4 -0
- package/dist/editors/hooks/useRequestForProposalsDocument.d.ts.map +1 -0
- package/dist/editors/hooks/useRequestForProposalsDocument.js +8 -0
- package/dist/editors/hooks/useWorkstreamDocument.d.ts +4 -0
- package/dist/editors/hooks/useWorkstreamDocument.d.ts.map +1 -0
- package/dist/editors/hooks/useWorkstreamDocument.js +8 -0
- package/dist/editors/index.d.ts +6 -6
- package/dist/editors/index.d.ts.map +1 -1
- package/dist/editors/index.js +6 -6
- package/dist/editors/network-admin/components/CreateDocument.d.ts.map +1 -1
- package/dist/editors/network-admin/components/CreateDocument.js +12 -8
- package/dist/editors/network-admin/components/DriveExplorer.d.ts +1 -1
- package/dist/editors/network-admin/components/DriveExplorer.d.ts.map +1 -1
- package/dist/editors/network-admin/components/DriveExplorer.js +230 -53
- package/dist/editors/network-admin/components/FolderTree.d.ts +1 -9
- package/dist/editors/network-admin/components/FolderTree.d.ts.map +1 -1
- package/dist/editors/network-admin/components/FolderTree.js +55 -216
- package/dist/editors/network-admin/components/icons/PaymentIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/components/icons/RfpIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/components/icons/SowIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/components/icons/WorkstreamIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/config.d.ts +0 -1
- package/dist/editors/network-admin/config.d.ts.map +1 -1
- package/dist/editors/network-admin/config.js +1 -1
- package/dist/editors/network-admin/editor.d.ts +1 -2
- package/dist/editors/network-admin/editor.d.ts.map +1 -1
- package/dist/editors/network-admin/editor.js +1 -4
- package/dist/editors/network-admin/index.d.ts +3 -0
- package/dist/editors/network-admin/index.d.ts.map +1 -0
- package/dist/editors/network-admin/index.js +10 -0
- package/dist/editors/network-profile/editor.d.ts +1 -1
- package/dist/editors/network-profile/editor.d.ts.map +1 -1
- package/dist/editors/network-profile/editor.js +13 -45
- 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 +10 -0
- package/dist/editors/payment-terms/basic-terms-tab.d.ts +10 -0
- package/dist/editors/payment-terms/basic-terms-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/basic-terms-tab.js +89 -0
- package/dist/editors/payment-terms/clauses-tab.d.ts +12 -0
- package/dist/editors/payment-terms/clauses-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/clauses-tab.js +213 -0
- package/dist/editors/payment-terms/cost-materials-tab.d.ts +10 -0
- package/dist/editors/payment-terms/cost-materials-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/cost-materials-tab.js +63 -0
- package/dist/editors/payment-terms/editor.d.ts +2 -0
- package/dist/editors/payment-terms/editor.d.ts.map +1 -1
- package/dist/editors/payment-terms/editor.js +55 -39
- package/dist/editors/payment-terms/escrow-tab.d.ts +10 -0
- package/dist/editors/payment-terms/escrow-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/escrow-tab.js +57 -0
- package/dist/editors/payment-terms/evaluation-tab.d.ts +10 -0
- package/dist/editors/payment-terms/evaluation-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/evaluation-tab.js +63 -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 +10 -0
- package/dist/editors/payment-terms/milestones-tab.d.ts +10 -0
- package/dist/editors/payment-terms/milestones-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/milestones-tab.js +205 -0
- package/dist/editors/payment-terms/retainer-tab.d.ts +10 -0
- package/dist/editors/payment-terms/retainer-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/retainer-tab.js +91 -0
- package/dist/editors/request-for-proposals/editor.d.ts.map +1 -1
- package/dist/editors/request-for-proposals/editor.js +4 -4
- 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 +10 -0
- package/dist/editors/request-for-proposals/markdown-editor.d.ts.map +1 -1
- package/dist/editors/request-for-proposals/markdown-editor.js +3 -3
- package/dist/editors/workstream/editor.d.ts.map +1 -1
- package/dist/editors/workstream/editor.js +165 -290
- 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 +10 -0
- package/dist/editors/workstream/project-management-import.d.ts +3 -0
- package/dist/editors/workstream/project-management-import.d.ts.map +1 -0
- package/dist/editors/workstream/project-management-import.js +5 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/powerhouse.manifest.json +6 -27
- package/dist/processors/factory.d.ts +1 -1
- package/dist/processors/factory.d.ts.map +1 -1
- package/dist/processors/factory.js +1 -1
- package/dist/processors/index.d.ts +1 -1
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +1 -1
- package/dist/processors/workstreams/factory.d.ts.map +1 -1
- package/dist/processors/workstreams/factory.js +1 -4
- package/dist/processors/workstreams/index.d.ts +2 -4
- package/dist/processors/workstreams/index.d.ts.map +1 -1
- package/dist/processors/workstreams/index.js +43 -102
- package/dist/processors/workstreams/migrations.d.ts.map +1 -1
- package/dist/processors/workstreams/migrations.js +15 -12
- package/dist/scripts/sow-mirror/mirror_sow_state.js +114 -119
- package/dist/style.css +6885 -6085
- package/dist/subgraphs/index.d.ts +5 -1
- package/dist/subgraphs/index.d.ts.map +1 -1
- package/dist/subgraphs/index.js +5 -1
- package/dist/subgraphs/network-profile/index.d.ts +11 -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.map +1 -0
- package/dist/subgraphs/network-profile/resolvers.js +205 -0
- package/dist/subgraphs/network-profile/schema.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/schema.js +139 -0
- package/dist/subgraphs/networks/resolvers.d.ts +2 -2
- package/dist/subgraphs/networks/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/networks/resolvers.js +8 -138
- package/dist/subgraphs/networks/schema.d.ts.map +1 -1
- package/dist/subgraphs/networks/schema.js +1 -66
- package/dist/subgraphs/{builders-addon → payment-terms}/index.d.ts +1 -1
- package/dist/subgraphs/payment-terms/index.d.ts.map +1 -0
- package/dist/subgraphs/{builders-addon → payment-terms}/index.js +2 -2
- 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 +277 -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 +324 -0
- package/dist/subgraphs/request-for-proposals/index.d.ts +11 -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 +145 -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 +11 -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 +181 -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/subgraphs/workstreams/index.d.ts +1 -4
- package/dist/subgraphs/workstreams/index.d.ts.map +1 -1
- package/dist/subgraphs/workstreams/index.js +0 -6
- package/dist/subgraphs/workstreams/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/workstreams/resolvers.js +30 -495
- package/dist/subgraphs/workstreams/schema.d.ts.map +1 -1
- package/dist/subgraphs/workstreams/schema.js +35 -228
- package/dist/vite.config.d.ts.map +1 -1
- package/dist/vite.config.js +1 -6
- 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 +90 -56
- package/dist/document-models/builders/actions.d.ts +0 -14
- package/dist/document-models/builders/actions.d.ts.map +0 -1
- package/dist/document-models/builders/actions.js +0 -4
- package/dist/document-models/builders/gen/actions.d.ts +0 -4
- package/dist/document-models/builders/gen/actions.d.ts.map +0 -1
- package/dist/document-models/builders/gen/actions.js +0 -1
- package/dist/document-models/builders/gen/builders/actions.d.ts +0 -12
- package/dist/document-models/builders/gen/builders/actions.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/actions.js +0 -1
- package/dist/document-models/builders/gen/builders/creators.d.ts +0 -5
- package/dist/document-models/builders/gen/builders/creators.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/creators.js +0 -4
- package/dist/document-models/builders/gen/builders/error.d.ts +0 -2
- package/dist/document-models/builders/gen/builders/error.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/error.js +0 -1
- package/dist/document-models/builders/gen/builders/operations.d.ts +0 -8
- package/dist/document-models/builders/gen/builders/operations.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/operations.js +0 -1
- package/dist/document-models/builders/gen/creators.d.ts +0 -3
- package/dist/document-models/builders/gen/creators.d.ts.map +0 -1
- package/dist/document-models/builders/gen/creators.js +0 -2
- package/dist/document-models/builders/gen/document-model.d.ts +0 -3
- package/dist/document-models/builders/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/builders/gen/document-model.js +0 -59
- package/dist/document-models/builders/gen/document-schema.d.ts +0 -44
- package/dist/document-models/builders/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/builders/gen/document-schema.js +0 -33
- package/dist/document-models/builders/gen/document-type.d.ts +0 -2
- package/dist/document-models/builders/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/builders/gen/document-type.js +0 -1
- package/dist/document-models/builders/gen/index.d.ts +0 -12
- package/dist/document-models/builders/gen/index.d.ts.map +0 -1
- package/dist/document-models/builders/gen/index.js +0 -11
- package/dist/document-models/builders/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/builders/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/builders/gen/ph-factories.js +0 -47
- package/dist/document-models/builders/gen/reducer.d.ts +0 -3
- package/dist/document-models/builders/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/builders/gen/reducer.js +0 -23
- package/dist/document-models/builders/gen/schema/index.d.ts +0 -3
- package/dist/document-models/builders/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/builders/gen/schema/index.js +0 -2
- package/dist/document-models/builders/gen/schema/types.d.ts +0 -158
- package/dist/document-models/builders/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/builders/gen/schema/types.js +0 -1
- package/dist/document-models/builders/gen/schema/zod.d.ts +0 -13
- package/dist/document-models/builders/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/builders/gen/schema/zod.js +0 -21
- package/dist/document-models/builders/gen/types.d.ts +0 -12
- package/dist/document-models/builders/gen/types.d.ts.map +0 -1
- package/dist/document-models/builders/gen/types.js +0 -1
- package/dist/document-models/builders/gen/utils.d.ts +0 -15
- package/dist/document-models/builders/gen/utils.d.ts.map +0 -1
- package/dist/document-models/builders/gen/utils.js +0 -51
- package/dist/document-models/builders/hooks.d.ts +0 -14
- package/dist/document-models/builders/hooks.d.ts.map +0 -1
- package/dist/document-models/builders/hooks.js +0 -25
- package/dist/document-models/builders/index.d.ts +0 -6
- package/dist/document-models/builders/index.d.ts.map +0 -1
- package/dist/document-models/builders/index.js +0 -5
- package/dist/document-models/builders/module.d.ts +0 -5
- package/dist/document-models/builders/module.d.ts.map +0 -1
- package/dist/document-models/builders/module.js +0 -11
- package/dist/document-models/builders/src/index.d.ts +0 -2
- package/dist/document-models/builders/src/index.d.ts.map +0 -1
- package/dist/document-models/builders/src/index.js +0 -1
- package/dist/document-models/builders/src/reducers/builders.d.ts +0 -3
- package/dist/document-models/builders/src/reducers/builders.d.ts.map +0 -1
- package/dist/document-models/builders/src/reducers/builders.js +0 -8
- package/dist/document-models/builders/src/tests/builders.test.d.ts +0 -6
- package/dist/document-models/builders/src/tests/builders.test.d.ts.map +0 -1
- package/dist/document-models/builders/src/tests/builders.test.js +0 -29
- package/dist/document-models/builders/src/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/builders/src/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/builders/src/tests/document-model.test.js +0 -104
- package/dist/document-models/builders/src/utils.d.ts +0 -2
- package/dist/document-models/builders/src/utils.d.ts.map +0 -1
- package/dist/document-models/builders/src/utils.js +0 -1
- package/dist/document-models/builders/tests/builders.test.d.ts +0 -2
- package/dist/document-models/builders/tests/builders.test.d.ts.map +0 -1
- package/dist/document-models/builders/tests/builders.test.js +0 -25
- package/dist/document-models/builders/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/builders/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/builders/tests/document-model.test.js +0 -104
- package/dist/document-models/builders/utils.d.ts +0 -14
- package/dist/document-models/builders/utils.d.ts.map +0 -1
- package/dist/document-models/builders/utils.js +0 -7
- package/dist/document-models/network-profile/gen/document-schema.d.ts +0 -80
- package/dist/document-models/network-profile/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/payment-terms/gen/document-schema.d.ts +0 -95
- package/dist/document-models/payment-terms/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/request-for-proposals/gen/document-schema.d.ts +0 -83
- package/dist/document-models/request-for-proposals/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/workstream/gen/document-schema.d.ts +0 -71
- package/dist/document-models/workstream/gen/document-schema.d.ts.map +0 -1
- package/dist/editors/builders/editor.d.ts +0 -3
- package/dist/editors/builders/editor.d.ts.map +0 -1
- package/dist/editors/builders/editor.js +0 -285
- package/dist/editors/builders/hooks/useRemoteBuilderProfiles.d.ts +0 -20
- package/dist/editors/builders/hooks/useRemoteBuilderProfiles.d.ts.map +0 -1
- package/dist/editors/builders/hooks/useRemoteBuilderProfiles.js +0 -57
- package/dist/editors/builders/module.d.ts +0 -4
- package/dist/editors/builders/module.d.ts.map +0 -1
- package/dist/editors/builders/module.js +0 -10
- package/dist/editors/builders/utils/graphql-client.d.ts +0 -41
- package/dist/editors/builders/utils/graphql-client.d.ts.map +0 -1
- package/dist/editors/builders/utils/graphql-client.js +0 -189
- package/dist/editors/editors.d.ts +0 -3
- package/dist/editors/editors.d.ts.map +0 -1
- package/dist/editors/editors.js +0 -14
- package/dist/editors/network-admin/components/DriveContents.d.ts +0 -3
- package/dist/editors/network-admin/components/DriveContents.d.ts.map +0 -1
- package/dist/editors/network-admin/components/DriveContents.js +0 -10
- package/dist/editors/network-admin/components/EmptyState.d.ts +0 -3
- package/dist/editors/network-admin/components/EmptyState.d.ts.map +0 -1
- package/dist/editors/network-admin/components/EmptyState.js +0 -10
- package/dist/editors/network-admin/components/Files.d.ts +0 -3
- package/dist/editors/network-admin/components/Files.d.ts.map +0 -1
- package/dist/editors/network-admin/components/Files.js +0 -12
- package/dist/editors/network-admin/components/Folders.d.ts +0 -3
- package/dist/editors/network-admin/components/Folders.d.ts.map +0 -1
- package/dist/editors/network-admin/components/Folders.js +0 -12
- package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts +0 -3
- package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts.map +0 -1
- package/dist/editors/network-admin/components/NavigationBreadcrumbs.js +0 -6
- package/dist/editors/network-admin/module.d.ts +0 -4
- package/dist/editors/network-admin/module.d.ts.map +0 -1
- package/dist/editors/network-admin/module.js +0 -10
- package/dist/editors/network-profile/components/EditName.d.ts +0 -3
- package/dist/editors/network-profile/components/EditName.d.ts.map +0 -1
- package/dist/editors/network-profile/components/EditName.js +0 -31
- package/dist/editors/network-profile/module.d.ts +0 -4
- package/dist/editors/network-profile/module.d.ts.map +0 -1
- package/dist/editors/network-profile/module.js +0 -10
- package/dist/editors/payment-terms/components/clauses-section.d.ts +0 -12
- package/dist/editors/payment-terms/components/clauses-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/clauses-section.js +0 -269
- package/dist/editors/payment-terms/components/escrow-section.d.ts +0 -13
- package/dist/editors/payment-terms/components/escrow-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/escrow-section.js +0 -72
- package/dist/editors/payment-terms/components/evaluation-section.d.ts +0 -13
- package/dist/editors/payment-terms/components/evaluation-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/evaluation-section.js +0 -94
- package/dist/editors/payment-terms/components/header-section.d.ts +0 -16
- package/dist/editors/payment-terms/components/header-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/header-section.js +0 -67
- package/dist/editors/payment-terms/components/milestones-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/milestones-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/milestones-section.js +0 -236
- package/dist/editors/payment-terms/components/parties-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/parties-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/parties-section.js +0 -36
- package/dist/editors/payment-terms/components/payment-config-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/payment-config-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/payment-config-section.js +0 -68
- package/dist/editors/payment-terms/components/time-materials-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/time-materials-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/time-materials-section.js +0 -68
- package/dist/editors/payment-terms/module.d.ts +0 -4
- package/dist/editors/payment-terms/module.d.ts.map +0 -1
- package/dist/editors/payment-terms/module.js +0 -10
- package/dist/editors/request-for-proposals/components/EditName.d.ts +0 -3
- package/dist/editors/request-for-proposals/components/EditName.d.ts.map +0 -1
- package/dist/editors/request-for-proposals/components/EditName.js +0 -31
- package/dist/editors/request-for-proposals/module.d.ts +0 -4
- package/dist/editors/request-for-proposals/module.d.ts.map +0 -1
- package/dist/editors/request-for-proposals/module.js +0 -10
- package/dist/editors/workstream/module.d.ts +0 -4
- package/dist/editors/workstream/module.d.ts.map +0 -1
- package/dist/editors/workstream/module.js +0 -10
- package/dist/subgraphs/builders-addon/index.d.ts.map +0 -1
- package/dist/subgraphs/builders-addon/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/builders-addon/resolvers.js +0 -376
- package/dist/subgraphs/builders-addon/schema.d.ts.map +0 -1
- package/dist/subgraphs/builders-addon/schema.js +0 -209
- /package/dist/subgraphs/{builders-addon → network-profile}/resolvers.d.ts +0 -0
- /package/dist/subgraphs/{builders-addon → network-profile}/schema.d.ts +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useMemo } from "react";
|
|
3
|
+
import { toast } from "@powerhousedao/design-system";
|
|
4
|
+
import { Select, TextInput, Button } from "@powerhousedao/document-engineering";
|
|
5
|
+
import {} from "../../document-models/payment-terms/index.js";
|
|
6
|
+
export function BasicTermsTab({ state, dispatch, actions, }) {
|
|
7
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
8
|
+
const [formData, setFormData] = useState({
|
|
9
|
+
proposer: state.proposer || "",
|
|
10
|
+
payer: state.payer || "",
|
|
11
|
+
currency: state.currency || "USD",
|
|
12
|
+
paymentModel: state.paymentModel || "MILESTONE",
|
|
13
|
+
totalAmount: state.totalAmount?.value?.toString() || "",
|
|
14
|
+
status: state.status || "DRAFT",
|
|
15
|
+
useEscrow: !!(state.escrowDetails && state.escrowDetails.releaseConditions),
|
|
16
|
+
});
|
|
17
|
+
const handleSubmit = useCallback((e) => {
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
dispatch(actions.setBasicTerms({
|
|
20
|
+
proposer: formData.proposer,
|
|
21
|
+
payer: formData.payer,
|
|
22
|
+
currency: formData.currency,
|
|
23
|
+
paymentModel: formData.paymentModel,
|
|
24
|
+
totalAmount: formData.totalAmount
|
|
25
|
+
? {
|
|
26
|
+
value: parseFloat(formData.totalAmount),
|
|
27
|
+
unit: formData.currency,
|
|
28
|
+
}
|
|
29
|
+
: undefined,
|
|
30
|
+
}));
|
|
31
|
+
if (formData.status !== state.status) {
|
|
32
|
+
dispatch(actions.updateStatus({ status: formData.status }));
|
|
33
|
+
}
|
|
34
|
+
// Handle escrow toggle
|
|
35
|
+
if (formData.useEscrow && !state.escrowDetails) {
|
|
36
|
+
dispatch(actions.setEscrowDetails({
|
|
37
|
+
amountHeld: { value: 0, unit: formData.currency },
|
|
38
|
+
releaseConditions: "Upon project completion",
|
|
39
|
+
escrowProvider: "",
|
|
40
|
+
proofOfFundsDocumentId: "",
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
else if (!formData.useEscrow && state.escrowDetails) {
|
|
44
|
+
dispatch(actions.setEscrowDetails({
|
|
45
|
+
amountHeld: { value: 0, unit: formData.currency },
|
|
46
|
+
releaseConditions: "",
|
|
47
|
+
escrowProvider: "",
|
|
48
|
+
proofOfFundsDocumentId: "",
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
toast("Basic terms updated successfully", {
|
|
52
|
+
type: "success",
|
|
53
|
+
});
|
|
54
|
+
setIsEditing(false);
|
|
55
|
+
}, [formData, dispatch, actions, state.status, state.escrowDetails]);
|
|
56
|
+
const handleCancel = useCallback(() => {
|
|
57
|
+
setFormData({
|
|
58
|
+
proposer: state.proposer || "",
|
|
59
|
+
payer: state.payer || "",
|
|
60
|
+
currency: state.currency || "USD",
|
|
61
|
+
paymentModel: state.paymentModel || "MILESTONE",
|
|
62
|
+
totalAmount: state.totalAmount?.value?.toString() || "",
|
|
63
|
+
status: state.status || "DRAFT",
|
|
64
|
+
useEscrow: !!(state.escrowDetails && state.escrowDetails.releaseConditions),
|
|
65
|
+
});
|
|
66
|
+
setIsEditing(false);
|
|
67
|
+
}, [state]);
|
|
68
|
+
if (!isEditing) {
|
|
69
|
+
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", children: "Basic Information" }), _jsx(Button, { onClick: () => setIsEditing(true), color: "light", size: "sm", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: "Edit Terms" })] }), _jsxs("div", { className: "grid grid-cols-2 gap-6", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Proposer" }), _jsx("p", { className: "text-lg", children: state.proposer || "Not set" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Payer" }), _jsx("p", { className: "text-lg", children: state.payer || "Not set" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Currency" }), _jsx("p", { className: "text-lg", children: state.currency })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Payment Model" }), _jsx("p", { className: "text-lg", children: state.paymentModel.replace(/_/g, " ") })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Total Amount" }), _jsx("p", { className: "text-lg", children: state.totalAmount
|
|
70
|
+
? `${state.totalAmount.value} ${state.totalAmount.unit}`
|
|
71
|
+
: "Not set" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Status" }), _jsx("p", { className: "text-lg", children: state.status })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Escrow" }), _jsx("p", { className: "text-lg", children: state.escrowDetails && state.escrowDetails.releaseConditions
|
|
72
|
+
? "Enabled"
|
|
73
|
+
: "Disabled" })] })] })] }));
|
|
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", children: "Edit Basic Terms" }) }), _jsxs("div", { className: "grid grid-cols-2 gap-6", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Proposer *" }), _jsx(TextInput, { value: formData.proposer, onChange: (e) => setFormData({ ...formData, proposer: e.target.value }), placeholder: "Enter proposer name", required: true })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Payer *" }), _jsx(TextInput, { value: formData.payer, onChange: (e) => setFormData({ ...formData, payer: e.target.value }), placeholder: "Enter payer name", required: true })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Currency *" }), _jsx(Select, { value: formData.currency, onChange: (value) => setFormData({ ...formData, currency: value }), options: [
|
|
76
|
+
{ value: "USD", label: "USD" },
|
|
77
|
+
{ value: "EUR", label: "EUR" },
|
|
78
|
+
{ value: "GBP", label: "GBP" },
|
|
79
|
+
], placeholder: "Select currency", required: true })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Payment Model *" }), _jsx(Select, { value: formData.paymentModel, onChange: (value) => setFormData({ ...formData, paymentModel: value }), options: [
|
|
80
|
+
{ value: "MILESTONE", label: "Milestone" },
|
|
81
|
+
{ value: "COST_AND_MATERIALS", label: "Cost & Materials" },
|
|
82
|
+
{ value: "RETAINER", label: "Retainer" },
|
|
83
|
+
], placeholder: "Select payment model", required: true })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Total Amount" }), _jsx(TextInput, { value: formData.totalAmount, onChange: (e) => setFormData({ ...formData, totalAmount: e.target.value }), placeholder: "0.00", type: "number", step: "0.01" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-1", children: "Status *" }), _jsx(Select, { value: formData.status, onChange: (value) => setFormData({ ...formData, status: value }), options: [
|
|
84
|
+
{ value: "DRAFT", label: "Draft" },
|
|
85
|
+
{ value: "SUBMITTED", label: "Submitted" },
|
|
86
|
+
{ value: "ACCEPTED", label: "Accepted" },
|
|
87
|
+
{ value: "CANCELLED", label: "Cancelled" },
|
|
88
|
+
], placeholder: "Select status", required: true })] }), _jsx("div", { className: "col-span-2", children: _jsxs("div", { className: "flex items-center", children: [_jsx("input", { type: "checkbox", id: "useEscrow", checked: formData.useEscrow, onChange: (e) => setFormData({ ...formData, useEscrow: e.target.checked }), className: "mr-2 h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" }), _jsx("label", { htmlFor: "useEscrow", className: "text-sm font-medium text-gray-700", children: "Use Escrow" })] }) })] }), _jsxs("div", { className: "flex gap-3", children: [_jsx(Button, { type: "submit", color: "light", size: "sm", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: "Save Terms" }), _jsx(Button, { type: "button", onClick: handleCancel, color: "light", size: "sm", className: "cursor-pointer hover:bg-gray-600 hover:text-white", children: "Cancel" })] })] }));
|
|
89
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BonusClause, PenaltyClause } from "../../document-models/payment-terms/gen/types.js";
|
|
2
|
+
import type { PaymentTermsAction } from "../../document-models/payment-terms/gen/actions.js";
|
|
3
|
+
import { type actions as paymentTermsActions } from "../../document-models/payment-terms/index.js";
|
|
4
|
+
export interface ClausesTabProps {
|
|
5
|
+
bonusClauses: BonusClause[];
|
|
6
|
+
penaltyClauses: PenaltyClause[];
|
|
7
|
+
dispatch: (action: PaymentTermsAction) => void;
|
|
8
|
+
actions: typeof paymentTermsActions;
|
|
9
|
+
currency: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ClausesTab({ bonusClauses, penaltyClauses, dispatch, actions, currency, }: ClausesTabProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=clauses-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clauses-tab.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/clauses-tab.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACd,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnG,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,EACzB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,OAAO,EACP,QAAgB,GACjB,EAAE,eAAe,2CA+XjB"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useMemo } from "react";
|
|
3
|
+
import { ObjectSetTable, TextInput, Textarea, Button, } from "@powerhousedao/document-engineering";
|
|
4
|
+
import { Icon, toast } from "@powerhousedao/design-system";
|
|
5
|
+
import { generateId } from "document-model/core";
|
|
6
|
+
import {} from "../../document-models/payment-terms/index.js";
|
|
7
|
+
export function ClausesTab({ bonusClauses, penaltyClauses, dispatch, actions, currency = "USD", }) {
|
|
8
|
+
const [activeSubTab, setActiveSubTab] = useState("bonus");
|
|
9
|
+
const [isAddingNew, setIsAddingNew] = useState(false);
|
|
10
|
+
const [newClause, setNewClause] = useState({
|
|
11
|
+
condition: "",
|
|
12
|
+
amount: "",
|
|
13
|
+
comment: "",
|
|
14
|
+
});
|
|
15
|
+
const bonusColumns = useMemo(() => [
|
|
16
|
+
{
|
|
17
|
+
field: "condition",
|
|
18
|
+
title: "Condition",
|
|
19
|
+
editable: true,
|
|
20
|
+
align: "left",
|
|
21
|
+
onSave: (newValue, context) => {
|
|
22
|
+
dispatch(actions.updateBonusClause({
|
|
23
|
+
id: context.row.id,
|
|
24
|
+
condition: newValue,
|
|
25
|
+
}));
|
|
26
|
+
toast("Bonus clause condition updated", {
|
|
27
|
+
type: "success",
|
|
28
|
+
});
|
|
29
|
+
return true;
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
field: "bonusAmount",
|
|
34
|
+
title: `Bonus Amount (${currency})`,
|
|
35
|
+
editable: true,
|
|
36
|
+
align: "right",
|
|
37
|
+
renderCell: (value) => {
|
|
38
|
+
return value ? `${value.value} ${value.unit}` : "";
|
|
39
|
+
},
|
|
40
|
+
onSave: (newValue, context) => {
|
|
41
|
+
const amount = parseFloat(newValue);
|
|
42
|
+
if (isNaN(amount)) {
|
|
43
|
+
toast("Please enter a valid amount", {
|
|
44
|
+
type: "error",
|
|
45
|
+
});
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
dispatch(actions.updateBonusClause({
|
|
49
|
+
id: context.row.id,
|
|
50
|
+
bonusAmount: { value: amount, unit: currency },
|
|
51
|
+
}));
|
|
52
|
+
toast("Bonus amount updated", {
|
|
53
|
+
type: "success",
|
|
54
|
+
});
|
|
55
|
+
return true;
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
field: "comment",
|
|
60
|
+
title: "Comment",
|
|
61
|
+
editable: true,
|
|
62
|
+
align: "left",
|
|
63
|
+
renderCell: (value) => value || "-",
|
|
64
|
+
onSave: (newValue, context) => {
|
|
65
|
+
dispatch(actions.updateBonusClause({
|
|
66
|
+
id: context.row.id,
|
|
67
|
+
comment: newValue || undefined,
|
|
68
|
+
}));
|
|
69
|
+
toast("Bonus clause comment updated", {
|
|
70
|
+
type: "success",
|
|
71
|
+
});
|
|
72
|
+
return true;
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
], [actions, currency, dispatch]);
|
|
76
|
+
const penaltyColumns = useMemo(() => [
|
|
77
|
+
{
|
|
78
|
+
field: "condition",
|
|
79
|
+
title: "Condition",
|
|
80
|
+
editable: true,
|
|
81
|
+
align: "left",
|
|
82
|
+
onSave: (newValue, context) => {
|
|
83
|
+
dispatch(actions.updatePenaltyClause({
|
|
84
|
+
id: context.row.id,
|
|
85
|
+
condition: newValue,
|
|
86
|
+
}));
|
|
87
|
+
toast("Penalty clause condition updated", {
|
|
88
|
+
type: "success",
|
|
89
|
+
});
|
|
90
|
+
return true;
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
field: "deductionAmount",
|
|
95
|
+
title: `Deduction Amount (${currency})`,
|
|
96
|
+
editable: true,
|
|
97
|
+
align: "right",
|
|
98
|
+
renderCell: (value) => {
|
|
99
|
+
return value ? `${value.value} ${value.unit}` : "";
|
|
100
|
+
},
|
|
101
|
+
onSave: (newValue, context) => {
|
|
102
|
+
const amount = parseFloat(newValue);
|
|
103
|
+
if (isNaN(amount)) {
|
|
104
|
+
toast("Please enter a valid amount", {
|
|
105
|
+
type: "error",
|
|
106
|
+
});
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
dispatch(actions.updatePenaltyClause({
|
|
110
|
+
id: context.row.id,
|
|
111
|
+
deductionAmount: { value: amount, unit: currency },
|
|
112
|
+
}));
|
|
113
|
+
toast("Deduction amount updated", {
|
|
114
|
+
type: "success",
|
|
115
|
+
});
|
|
116
|
+
return true;
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
field: "comment",
|
|
121
|
+
title: "Comment",
|
|
122
|
+
editable: true,
|
|
123
|
+
align: "left",
|
|
124
|
+
renderCell: (value) => value || "-",
|
|
125
|
+
onSave: (newValue, context) => {
|
|
126
|
+
dispatch(actions.updatePenaltyClause({
|
|
127
|
+
id: context.row.id,
|
|
128
|
+
comment: newValue || undefined,
|
|
129
|
+
}));
|
|
130
|
+
toast("Penalty clause comment updated", {
|
|
131
|
+
type: "success",
|
|
132
|
+
});
|
|
133
|
+
return true;
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
], [actions, currency, dispatch]);
|
|
137
|
+
const handleAddClause = useCallback((e) => {
|
|
138
|
+
e.preventDefault();
|
|
139
|
+
if (!newClause.condition.trim()) {
|
|
140
|
+
toast("Condition is required", {
|
|
141
|
+
type: "error",
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (!newClause.amount || isNaN(parseFloat(newClause.amount))) {
|
|
146
|
+
toast("Valid amount is required", {
|
|
147
|
+
type: "error",
|
|
148
|
+
});
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (activeSubTab === "bonus") {
|
|
152
|
+
dispatch(actions.addBonusClause({
|
|
153
|
+
id: generateId(),
|
|
154
|
+
condition: newClause.condition,
|
|
155
|
+
bonusAmount: {
|
|
156
|
+
value: parseFloat(newClause.amount),
|
|
157
|
+
unit: currency,
|
|
158
|
+
},
|
|
159
|
+
comment: newClause.comment || undefined,
|
|
160
|
+
}));
|
|
161
|
+
toast("Bonus clause added successfully", {
|
|
162
|
+
type: "success",
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
dispatch(actions.addPenaltyClause({
|
|
167
|
+
id: generateId(),
|
|
168
|
+
condition: newClause.condition,
|
|
169
|
+
deductionAmount: {
|
|
170
|
+
value: parseFloat(newClause.amount),
|
|
171
|
+
unit: currency,
|
|
172
|
+
},
|
|
173
|
+
comment: newClause.comment || undefined,
|
|
174
|
+
}));
|
|
175
|
+
toast("Penalty clause added successfully", {
|
|
176
|
+
type: "success",
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
setNewClause({
|
|
180
|
+
condition: "",
|
|
181
|
+
amount: "",
|
|
182
|
+
comment: "",
|
|
183
|
+
});
|
|
184
|
+
setIsAddingNew(false);
|
|
185
|
+
}, [newClause, activeSubTab, dispatch, actions, currency]);
|
|
186
|
+
const currentClauses = activeSubTab === "bonus" ? bonusClauses : penaltyClauses;
|
|
187
|
+
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: "Bonus & Penalty Clauses" }), _jsxs("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: [bonusClauses.length, " bonus clause(s), ", penaltyClauses.length, " ", "penalty clause(s)"] })] }), _jsxs(Button, { onClick: () => setIsAddingNew(!isAddingNew), color: "light", size: "sm", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: [_jsx(Icon, { name: "Plus", size: 16, className: "mr-2" }), "Add ", activeSubTab === "bonus" ? "Bonus" : "Penalty", " Clause"] })] }), _jsxs("div", { className: "flex space-x-1 border-b border-gray-200 dark:border-gray-600", children: [_jsxs("button", { onClick: () => setActiveSubTab("bonus"), className: `px-4 py-2 text-sm font-medium rounded-t-lg ${activeSubTab === "bonus"
|
|
188
|
+
? "bg-blue-50 dark:bg-blue-900 text-blue-700 dark:text-blue-300 border-b-2 border-blue-700 dark:border-blue-300"
|
|
189
|
+
: "text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200"}`, children: ["Bonus Clauses (", bonusClauses.length, ")"] }), _jsxs("button", { onClick: () => setActiveSubTab("penalty"), className: `px-4 py-2 text-sm font-medium rounded-t-lg ${activeSubTab === "penalty"
|
|
190
|
+
? "bg-red-50 dark:bg-red-900 text-red-700 dark:text-red-300 border-b-2 border-red-700 dark:border-red-300"
|
|
191
|
+
: "text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200"}`, children: ["Penalty Clauses (", penaltyClauses.length, ")"] })] }), isAddingNew && (_jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 p-4 rounded-lg border dark:border-gray-600", children: [_jsxs("h3", { className: "text-lg font-medium mb-4 dark:text-white", children: ["Add New ", activeSubTab === "bonus" ? "Bonus" : "Penalty", " Clause"] }), _jsxs("form", { onSubmit: handleAddClause, className: "space-y-4", children: [_jsx(TextInput, { label: "Condition *", value: newClause.condition, onChange: (e) => setNewClause({ ...newClause, condition: e.target.value }), className: "w-full", required: true }), _jsx(TextInput, { label: `${activeSubTab === "bonus" ? "Bonus" : "Deduction"} Amount (${currency}) *`, type: "number", value: newClause.amount, onChange: (e) => setNewClause({ ...newClause, amount: e.target.value }), className: "w-full", placeholder: "0.00", step: "0.01", required: true }), _jsx(Textarea, { label: "Comment", value: newClause.comment, onChange: (e) => setNewClause({ ...newClause, comment: e.target.value }), className: "w-full", rows: 3, placeholder: "Optional comment or additional details..." }), _jsxs("div", { className: "flex gap-3", children: [_jsxs(Button, { type: "submit", color: "light", size: "sm", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: ["Add ", activeSubTab === "bonus" ? "Bonus" : "Penalty", " Clause"] }), _jsx(Button, { type: "button", onClick: () => {
|
|
192
|
+
setIsAddingNew(false);
|
|
193
|
+
setNewClause({
|
|
194
|
+
condition: "",
|
|
195
|
+
amount: "",
|
|
196
|
+
comment: "",
|
|
197
|
+
});
|
|
198
|
+
}, color: "light", size: "sm", className: "cursor-pointer hover:bg-gray-600 hover:text-white", children: "Cancel" })] })] })] })), currentClauses.length > 0 ? (activeSubTab === "bonus" ? (_jsx(ObjectSetTable, { data: bonusClauses, columns: bonusColumns, onAdd: () => setIsAddingNew(true), onDelete: (row) => {
|
|
199
|
+
dispatch(actions.deleteBonusClause({
|
|
200
|
+
id: row.id,
|
|
201
|
+
}));
|
|
202
|
+
toast("Bonus clause deleted", {
|
|
203
|
+
type: "success",
|
|
204
|
+
});
|
|
205
|
+
} })) : (_jsx(ObjectSetTable, { data: penaltyClauses, columns: penaltyColumns, onAdd: () => setIsAddingNew(true), onDelete: (row) => {
|
|
206
|
+
dispatch(actions.deletePenaltyClause({
|
|
207
|
+
id: row.id,
|
|
208
|
+
}));
|
|
209
|
+
toast("Penalty clause deleted", {
|
|
210
|
+
type: "success",
|
|
211
|
+
});
|
|
212
|
+
} }))) : (_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: "Checkmark", size: 48, className: "mx-auto mb-4 text-gray-400" }), _jsxs("p", { className: "text-lg font-medium", children: ["No ", activeSubTab, " clauses defined yet"] }), _jsxs("p", { className: "text-sm", children: ["Add your first ", activeSubTab, " clause to get started"] })] }))] }));
|
|
213
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PaymentTermsState } from "../../document-models/payment-terms/gen/schema/types.js";
|
|
2
|
+
import type { PaymentTermsAction } from "../../document-models/payment-terms/gen/actions.js";
|
|
3
|
+
import { type actions as paymentTermsActions } from "../../document-models/payment-terms/index.js";
|
|
4
|
+
export interface CostMaterialsTabProps {
|
|
5
|
+
state: PaymentTermsState;
|
|
6
|
+
dispatch: (action: PaymentTermsAction) => void;
|
|
7
|
+
actions: typeof paymentTermsActions;
|
|
8
|
+
}
|
|
9
|
+
export declare function CostMaterialsTab({ state, dispatch, actions, }: CostMaterialsTabProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=cost-materials-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-materials-tab.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/cost-materials-tab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,yDAAyD,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnG,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;CACrC;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE,qBAAqB,2CA6NvB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback } from "react";
|
|
3
|
+
import { TextInput, Select, Button } from "@powerhousedao/document-engineering";
|
|
4
|
+
import { toast } from "@powerhousedao/design-system";
|
|
5
|
+
import {} from "../../document-models/payment-terms/index.js";
|
|
6
|
+
export function CostMaterialsTab({ state, dispatch, actions, }) {
|
|
7
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
8
|
+
const [formData, setFormData] = useState({
|
|
9
|
+
hourlyRate: state.costAndMaterials?.hourlyRate?.value?.toString() || "",
|
|
10
|
+
variableCap: state.costAndMaterials?.variableCap?.value?.toString() || "",
|
|
11
|
+
billingFrequency: state.costAndMaterials?.billingFrequency || "MONTHLY",
|
|
12
|
+
timesheetRequired: state.costAndMaterials?.timesheetRequired || false,
|
|
13
|
+
});
|
|
14
|
+
const handleSubmit = useCallback((e) => {
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
dispatch(actions.setCostAndMaterials({
|
|
17
|
+
hourlyRate: formData.hourlyRate
|
|
18
|
+
? {
|
|
19
|
+
value: parseFloat(formData.hourlyRate),
|
|
20
|
+
unit: state.currency,
|
|
21
|
+
}
|
|
22
|
+
: undefined,
|
|
23
|
+
variableCap: formData.variableCap
|
|
24
|
+
? {
|
|
25
|
+
value: parseFloat(formData.variableCap),
|
|
26
|
+
unit: state.currency,
|
|
27
|
+
}
|
|
28
|
+
: undefined,
|
|
29
|
+
billingFrequency: formData.billingFrequency,
|
|
30
|
+
timesheetRequired: formData.timesheetRequired,
|
|
31
|
+
}));
|
|
32
|
+
toast("Cost & Materials configuration saved", {
|
|
33
|
+
type: "success",
|
|
34
|
+
});
|
|
35
|
+
setIsEditing(false);
|
|
36
|
+
}, [formData, dispatch, actions, state.currency]);
|
|
37
|
+
const handleCancel = useCallback(() => {
|
|
38
|
+
setFormData({
|
|
39
|
+
hourlyRate: state.costAndMaterials?.hourlyRate?.value?.toString() || "",
|
|
40
|
+
variableCap: state.costAndMaterials?.variableCap?.value?.toString() || "",
|
|
41
|
+
billingFrequency: state.costAndMaterials?.billingFrequency || "MONTHLY",
|
|
42
|
+
timesheetRequired: state.costAndMaterials?.timesheetRequired || false,
|
|
43
|
+
});
|
|
44
|
+
setIsEditing(false);
|
|
45
|
+
}, [state.costAndMaterials]);
|
|
46
|
+
if (!isEditing) {
|
|
47
|
+
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: "Cost & Materials Configuration" }), _jsx(Button, { onClick: () => setIsEditing(true), color: "light", size: "sm", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: state.costAndMaterials
|
|
48
|
+
? "Edit Configuration"
|
|
49
|
+
: "Configure Cost & Materials" })] }), state.costAndMaterials ? (_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: "Hourly Rate" }), _jsx("p", { className: "text-lg dark:text-white", children: state.costAndMaterials.hourlyRate
|
|
50
|
+
? `${state.costAndMaterials.hourlyRate.value} ${state.costAndMaterials.hourlyRate.unit}`
|
|
51
|
+
: "Not set" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Variable Cap" }), _jsx("p", { className: "text-lg dark:text-white", children: state.costAndMaterials.variableCap
|
|
52
|
+
? `${state.costAndMaterials.variableCap.value} ${state.costAndMaterials.variableCap.unit}`
|
|
53
|
+
: "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.costAndMaterials.billingFrequency })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Timesheet Required" }), _jsx("p", { className: "text-lg dark:text-white", children: state.costAndMaterials.timesheetRequired ? "Yes" : "No" })] })] })) : (_jsxs("div", { className: "text-center py-8 text-gray-500 dark:text-gray-400", children: [_jsx("p", { children: "No cost & materials configuration set up yet." }), _jsx("p", { className: "text-sm", children: "Click \"Configure Cost & Materials\" to get started." })] }))] }));
|
|
54
|
+
}
|
|
55
|
+
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 Cost & Materials" }) }), _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: "Hourly Rate" }), _jsx(TextInput, { value: formData.hourlyRate, onChange: (e) => setFormData({ ...formData, hourlyRate: e.target.value }), placeholder: "0.00", type: "number", step: "0.01" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Variable Cap" }), _jsx(TextInput, { value: formData.variableCap, onChange: (e) => setFormData({ ...formData, variableCap: e.target.value }), placeholder: "0.00", type: "number", step: "0.01" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1", children: "Billing Frequency *" }), _jsx(Select, { value: formData.billingFrequency, onChange: (value) => setFormData({
|
|
56
|
+
...formData,
|
|
57
|
+
billingFrequency: value,
|
|
58
|
+
}), options: [
|
|
59
|
+
{ value: "WEEKLY", label: "Weekly" },
|
|
60
|
+
{ value: "BIWEEKLY", label: "Biweekly" },
|
|
61
|
+
{ value: "MONTHLY", label: "Monthly" },
|
|
62
|
+
], placeholder: "Select billing frequency", required: true })] }), _jsxs("div", { className: "flex items-center pt-6", children: [_jsx("input", { type: "checkbox", id: "timesheetRequired", checked: formData.timesheetRequired, onChange: (e) => setFormData({ ...formData, timesheetRequired: e.target.checked }), className: "mr-2 h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded" }), _jsx("label", { htmlFor: "timesheetRequired", className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: "Timesheet Required" })] })] }), _jsxs("div", { className: "flex gap-3", children: [_jsx(Button, { type: "submit", color: "light", size: "sm", className: "cursor-pointer hover:bg-blue-600 hover:text-white", children: "Save Configuration" }), _jsx(Button, { type: "button", onClick: handleCancel, color: "light", size: "sm", className: "cursor-pointer hover:bg-gray-600 hover:text-white", children: "Cancel" })] })] }));
|
|
63
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/editor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/editor.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAgB1D,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAEjC,MAAM,CAAC,OAAO,UAAU,MAAM,4CA+W7B"}
|
|
@@ -1,48 +1,64 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ToastContainer, DocumentToolbar, } from "@powerhousedao/design-system/connect";
|
|
2
|
+
import { setSelectedNode, useDocumentById, useParentFolderForSelectedNode, } from "@powerhousedao/reactor-browser";
|
|
3
|
+
import { Button, Icon, toast, ToastContainer, } from "@powerhousedao/design-system";
|
|
5
4
|
import { actions, } from "../../document-models/payment-terms/index.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
5
|
+
import { BasicTermsTab } from "./basic-terms-tab.js";
|
|
6
|
+
import { MilestonesTab } from "./milestones-tab.js";
|
|
7
|
+
import { ClausesTab } from "./clauses-tab.js";
|
|
8
|
+
import { CostMaterialsTab } from "./cost-materials-tab.js";
|
|
9
|
+
import { RetainerTab } from "./retainer-tab.js";
|
|
10
|
+
import { EscrowTab } from "./escrow-tab.js";
|
|
11
|
+
import { EvaluationTab } from "./evaluation-tab.js";
|
|
12
|
+
import { useSelectedPaymentTermsDocument } from "../hooks/usePaymentTermsDocument.js";
|
|
13
|
+
import { DocumentToolbar } from "@powerhousedao/design-system";
|
|
15
14
|
export default function Editor() {
|
|
15
|
+
// Getting dispatch from props or selected document
|
|
16
16
|
const [doc, dispatch] = useSelectedPaymentTermsDocument();
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
const state = doc?.state.global;
|
|
18
|
+
const getStatusColor = (status) => {
|
|
19
|
+
switch (status) {
|
|
20
|
+
case "DRAFT":
|
|
21
|
+
return "bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200";
|
|
22
|
+
case "SUBMITTED":
|
|
23
|
+
return "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200";
|
|
24
|
+
case "ACCEPTED":
|
|
25
|
+
return "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200";
|
|
26
|
+
case "CANCELLED":
|
|
27
|
+
return "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200";
|
|
28
|
+
default:
|
|
29
|
+
return "bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200";
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const getStatusIcon = (status) => {
|
|
33
|
+
switch (status) {
|
|
34
|
+
case "DRAFT":
|
|
35
|
+
return "CalendarTime";
|
|
36
|
+
case "SUBMITTED":
|
|
37
|
+
return "ArrowUp";
|
|
38
|
+
case "ACCEPTED":
|
|
39
|
+
return "CheckCircle";
|
|
40
|
+
case "CANCELLED":
|
|
41
|
+
return "ArrowLeft";
|
|
42
|
+
default:
|
|
43
|
+
return "CalendarTime";
|
|
25
44
|
}
|
|
26
|
-
}
|
|
27
|
-
const
|
|
28
|
-
const
|
|
45
|
+
};
|
|
46
|
+
const totalMilestones = state.milestoneSchedule?.length || 0;
|
|
47
|
+
const completedMilestones = state.milestoneSchedule?.filter((m) => m.payoutStatus === "PAID").length ||
|
|
48
|
+
0;
|
|
49
|
+
// Get the parent folder node for the currently selected node
|
|
50
|
+
const parentFolder = useParentFolderForSelectedNode();
|
|
51
|
+
// Set the selected node to the parent folder node (close the editor)
|
|
29
52
|
function handleClose() {
|
|
30
53
|
setSelectedNode(parentFolder?.id);
|
|
31
54
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
: 0;
|
|
42
|
-
// Calculate total milestone value and paid amount
|
|
43
|
-
const totalMilestoneValue = displayState.milestoneSchedule?.reduce((sum, m) => sum + (m.amount?.value || 0), 0) || 0;
|
|
44
|
-
const paidMilestoneValue = displayState.milestoneSchedule
|
|
45
|
-
?.filter((m) => m.payoutStatus === "PAID")
|
|
46
|
-
.reduce((sum, m) => sum + (m.amount?.value || 0), 0) || 0;
|
|
47
|
-
return (_jsxs(_Fragment, { children: [_jsx(DocumentToolbar, { document: displayDoc, onClose: handleClose }), _jsx("div", { className: "min-h-screen bg-stone-50 font-sans text-slate-800", children: _jsxs("div", { className: "max-w-[1400px] mx-auto p-6", children: [_jsx(HeaderSection, { state: displayState, dispatch: dispatch, actions: actions, progressPercentage: progressPercentage, completedMilestones: completedMilestones, totalMilestones: totalMilestones, totalValue: displayState.totalAmount?.value || totalMilestoneValue, paidValue: paidMilestoneValue }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-5 mt-6 items-start", children: [_jsx(PartiesSection, { state: displayState, dispatch: dispatch, actions: actions }), _jsx(PaymentConfigSection, { state: displayState, dispatch: dispatch, actions: actions }), _jsx(EscrowSection, { state: displayState, dispatch: dispatch, actions: actions, isExpanded: escrowExpanded, onToggleExpand: () => setEscrowExpanded(!escrowExpanded) }), _jsx(EvaluationSection, { state: displayState, dispatch: dispatch, actions: actions, isExpanded: evaluationExpanded, onToggleExpand: () => setEvaluationExpanded(!evaluationExpanded) })] }), _jsxs("div", { className: "flex flex-col gap-5 mt-5", children: [displayState.paymentModel === "MILESTONE" && (_jsx(MilestonesSection, { milestones: displayState.milestoneSchedule, dispatch: dispatch, actions: actions, currency: displayState.currency })), displayState.paymentModel === "TIME_AND_MATERIALS" && (_jsx(TimeAndMaterialsSection, { state: displayState, dispatch: dispatch, actions: actions })), _jsx(ClausesSection, { bonusClauses: displayState.bonusClauses, penaltyClauses: displayState.penaltyClauses, dispatch: dispatch, actions: actions, currency: displayState.currency })] })] }) }), _jsx(ToastContainer, {})] }));
|
|
55
|
+
return (_jsxs(_Fragment, { children: [_jsx(DocumentToolbar, { document: doc, onClose: handleClose }), _jsx("div", { className: "min-h-screen bg-gray-50 dark:bg-gray-900", children: _jsxs("div", { className: "max-w-7xl mx-auto p-6", children: [_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm p-6 mb-6", children: [_jsxs("div", { className: "flex justify-between items-start", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "CalendarTime", size: 32, className: "text-blue-600 dark:text-blue-400" }), _jsxs("div", { children: [_jsx("h1", { className: "text-3xl font-bold text-gray-900 dark:text-white mb-2", children: "Payment Terms Document" }), _jsx("p", { className: "text-gray-600 dark:text-gray-300", children: "Manage payment terms, milestones, and contract clauses" })] })] }), _jsxs("div", { className: `flex items-center gap-2 px-3 py-2 rounded-full font-medium ${getStatusColor(state.status)}`, children: [_jsx(Icon, { name: getStatusIcon(state.status), size: 16 }), state.status] })] }), _jsxs("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4 mt-6", children: [_jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 p-4 rounded-lg border border-gray-200 dark:border-gray-600", children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Icon, { name: "BarChart", size: 16, className: "text-blue-600 dark:text-blue-400" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 font-medium", children: "Payment Model" })] }), _jsx("p", { className: "text-lg font-semibold dark:text-white", children: state.paymentModel.replace(/_/g, " ") })] }), _jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 p-4 rounded-lg border border-gray-200 dark:border-gray-600", children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Icon, { name: "BarChart", size: 16, className: "text-green-600 dark:text-green-400" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 font-medium", children: "Currency" })] }), _jsx("p", { className: "text-lg font-semibold dark:text-white", children: state.currency })] }), _jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 p-4 rounded-lg border border-gray-200 dark:border-gray-600", children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Icon, { name: "BarChart", size: 16, className: "text-yellow-600 dark:text-yellow-400" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 font-medium", children: "Total Amount" })] }), _jsx("p", { className: "text-lg font-semibold dark:text-white", children: state.totalAmount
|
|
56
|
+
? `${state.totalAmount.value} ${state.totalAmount.unit}`
|
|
57
|
+
: "Not set" })] }), _jsxs("div", { className: "bg-gray-50 dark:bg-gray-700 p-4 rounded-lg border border-gray-200 dark:border-gray-600", children: [_jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(Icon, { name: "BarChart", size: 16, className: "text-purple-600 dark:text-purple-400" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 font-medium", children: "Progress" })] }), _jsx("p", { className: "text-lg font-semibold dark:text-white", children: state.paymentModel === "MILESTONE"
|
|
58
|
+
? `${completedMilestones} / ${totalMilestones}`
|
|
59
|
+
: "N/A" })] })] })] }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "CalendarTime", size: 20, className: "text-blue-600 dark:text-blue-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Basic Terms" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Configure the basic payment terms and details" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(BasicTermsTab, { state: state, dispatch: dispatch, actions: actions }) })] }), state.paymentModel === "MILESTONE" && (_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "BarChart", size: 20, className: "text-green-600 dark:text-green-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Milestone Schedule" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Define project milestones and payment amounts" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(MilestonesTab, { milestones: state.milestoneSchedule, dispatch: dispatch, actions: actions, currency: state.currency }) })] })), state.paymentModel === "COST_AND_MATERIALS" && (_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "BarChart", size: 20, className: "text-yellow-600 dark:text-yellow-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Cost & Materials" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Configure hourly rates, billing frequency, and caps" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(CostMaterialsTab, { state: state, dispatch: dispatch, actions: actions }) })] })), state.paymentModel === "RETAINER" && (_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "BarChart", size: 20, className: "text-purple-600 dark:text-purple-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Retainer Details" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Configure retainer amount, frequency, and services" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(RetainerTab, { state: state, dispatch: dispatch, actions: actions }) })] })), state.escrowDetails &&
|
|
60
|
+
state.escrowDetails.releaseConditions &&
|
|
61
|
+
(state.paymentModel === "MILESTONE" ||
|
|
62
|
+
state.paymentModel === "COST_AND_MATERIALS" ||
|
|
63
|
+
state.paymentModel === "RETAINER") && (_jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "BarChart", size: 20, className: "text-orange-600 dark:text-orange-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Escrow Details" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Configure escrow payment arrangements" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(EscrowTab, { state: state, dispatch: dispatch, actions: actions }) })] })), _jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "BarChart", size: 20, className: "text-red-600 dark:text-red-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Bonus & Penalty Clauses" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Add performance-based bonus and penalty conditions" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(ClausesTab, { bonusClauses: state.bonusClauses, penaltyClauses: state.penaltyClauses, dispatch: dispatch, actions: actions, currency: state.currency }) })] }), _jsxs("div", { className: "bg-white dark:bg-gray-800 rounded-lg shadow-sm", children: [_jsx("div", { className: "px-6 py-4 border-b border-gray-200 dark:border-gray-700", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Icon, { name: "BarChart", size: 20, className: "text-indigo-600 dark:text-indigo-400" }), _jsxs("div", { children: [_jsx("h2", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Evaluation Terms" }), _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-300 mt-1", children: "Define performance evaluation criteria and processes" })] })] }) }), _jsx("div", { className: "p-6", children: _jsx(EvaluationTab, { state: state, dispatch: dispatch, actions: actions }) })] })] })] }) }), _jsx(ToastContainer, {})] }));
|
|
48
64
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PaymentTermsState } from "../../document-models/payment-terms/gen/schema/types.js";
|
|
2
|
+
import type { PaymentTermsAction } from "../../document-models/payment-terms/gen/actions.js";
|
|
3
|
+
import { type actions as paymentTermsActions } from "../../document-models/payment-terms/index.js";
|
|
4
|
+
export interface EscrowTabProps {
|
|
5
|
+
state: PaymentTermsState;
|
|
6
|
+
dispatch: (action: PaymentTermsAction) => void;
|
|
7
|
+
actions: typeof paymentTermsActions;
|
|
8
|
+
}
|
|
9
|
+
export declare function EscrowTab({ state, dispatch, actions }: EscrowTabProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=escrow-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escrow-tab.d.ts","sourceRoot":"","sources":["../../../editors/payment-terms/escrow-tab.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAC;AACjG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,KAAK,OAAO,IAAI,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnG,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,mBAAmB,CAAC;CACrC;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,cAAc,2CA4LrE"}
|