@powerhousedao/contributor-billing 0.1.39 → 0.1.41
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/index.d.ts +1 -0
- package/dist/document-models/index.d.ts.map +1 -1
- package/dist/document-models/index.js +1 -0
- package/dist/document-models/resource-template/actions.d.ts +32 -0
- package/dist/document-models/resource-template/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/actions.js +12 -0
- package/dist/document-models/resource-template/gen/actions.d.ts +14 -0
- package/dist/document-models/resource-template/gen/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/actions.js +6 -0
- package/dist/document-models/resource-template/gen/audience-management/actions.d.ts +12 -0
- package/dist/document-models/resource-template/gen/audience-management/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/audience-management/actions.js +1 -0
- package/dist/document-models/resource-template/gen/audience-management/creators.d.ts +5 -0
- package/dist/document-models/resource-template/gen/audience-management/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/audience-management/creators.js +4 -0
- package/dist/document-models/resource-template/gen/audience-management/error.d.ts +21 -0
- package/dist/document-models/resource-template/gen/audience-management/error.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/audience-management/error.js +20 -0
- package/dist/document-models/resource-template/gen/audience-management/operations.d.ts +8 -0
- package/dist/document-models/resource-template/gen/audience-management/operations.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/audience-management/operations.js +3 -0
- package/dist/document-models/resource-template/gen/creators.d.ts +13 -0
- package/dist/document-models/resource-template/gen/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/creators.js +12 -0
- package/dist/document-models/resource-template/gen/document-model.d.ts +3 -0
- package/dist/document-models/resource-template/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/document-model.js +410 -0
- package/dist/document-models/resource-template/gen/document-schema.d.ts +408 -0
- package/dist/document-models/resource-template/gen/document-schema.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/document-schema.js +33 -0
- package/dist/document-models/resource-template/gen/document-type.d.ts +2 -0
- package/dist/document-models/resource-template/gen/document-type.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/document-type.js +1 -0
- package/dist/document-models/resource-template/gen/facet-targeting/actions.d.ts +20 -0
- package/dist/document-models/resource-template/gen/facet-targeting/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/facet-targeting/actions.js +1 -0
- package/dist/document-models/resource-template/gen/facet-targeting/creators.d.ts +7 -0
- package/dist/document-models/resource-template/gen/facet-targeting/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/facet-targeting/creators.js +6 -0
- package/dist/document-models/resource-template/gen/facet-targeting/error.d.ts +28 -0
- package/dist/document-models/resource-template/gen/facet-targeting/error.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/facet-targeting/error.js +29 -0
- package/dist/document-models/resource-template/gen/facet-targeting/operations.d.ts +10 -0
- package/dist/document-models/resource-template/gen/facet-targeting/operations.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/facet-targeting/operations.js +3 -0
- package/dist/document-models/resource-template/gen/index.d.ts +17 -0
- package/dist/document-models/resource-template/gen/index.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/index.js +16 -0
- package/dist/document-models/resource-template/gen/option-group-management/actions.d.ts +16 -0
- package/dist/document-models/resource-template/gen/option-group-management/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/option-group-management/actions.js +1 -0
- package/dist/document-models/resource-template/gen/option-group-management/creators.d.ts +6 -0
- package/dist/document-models/resource-template/gen/option-group-management/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/option-group-management/creators.js +5 -0
- package/dist/document-models/resource-template/gen/option-group-management/error.d.ts +28 -0
- package/dist/document-models/resource-template/gen/option-group-management/error.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/option-group-management/error.js +29 -0
- package/dist/document-models/resource-template/gen/option-group-management/operations.d.ts +9 -0
- package/dist/document-models/resource-template/gen/option-group-management/operations.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/option-group-management/operations.js +3 -0
- package/dist/document-models/resource-template/gen/ph-factories.d.ts +23 -0
- package/dist/document-models/resource-template/gen/ph-factories.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/ph-factories.js +61 -0
- package/dist/document-models/resource-template/gen/reducer.d.ts +3 -0
- package/dist/document-models/resource-template/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/reducer.js +98 -0
- package/dist/document-models/resource-template/gen/schema/index.d.ts +3 -0
- package/dist/document-models/resource-template/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/schema/index.js +2 -0
- package/dist/document-models/resource-template/gen/schema/types.d.ts +305 -0
- package/dist/document-models/resource-template/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/schema/types.js +1 -0
- package/dist/document-models/resource-template/gen/schema/zod.d.ts +37 -0
- package/dist/document-models/resource-template/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/schema/zod.js +236 -0
- package/dist/document-models/resource-template/gen/service-category-management/actions.d.ts +12 -0
- package/dist/document-models/resource-template/gen/service-category-management/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-category-management/actions.js +1 -0
- package/dist/document-models/resource-template/gen/service-category-management/creators.d.ts +5 -0
- package/dist/document-models/resource-template/gen/service-category-management/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-category-management/creators.js +4 -0
- package/dist/document-models/resource-template/gen/service-category-management/error.d.ts +2 -0
- package/dist/document-models/resource-template/gen/service-category-management/error.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-category-management/error.js +1 -0
- package/dist/document-models/resource-template/gen/service-category-management/operations.d.ts +8 -0
- package/dist/document-models/resource-template/gen/service-category-management/operations.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-category-management/operations.js +3 -0
- package/dist/document-models/resource-template/gen/service-management/actions.d.ts +24 -0
- package/dist/document-models/resource-template/gen/service-management/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-management/actions.js +1 -0
- package/dist/document-models/resource-template/gen/service-management/creators.d.ts +8 -0
- package/dist/document-models/resource-template/gen/service-management/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-management/creators.js +7 -0
- package/dist/document-models/resource-template/gen/service-management/error.d.ts +52 -0
- package/dist/document-models/resource-template/gen/service-management/error.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-management/error.js +61 -0
- package/dist/document-models/resource-template/gen/service-management/operations.d.ts +11 -0
- package/dist/document-models/resource-template/gen/service-management/operations.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/service-management/operations.js +3 -0
- package/dist/document-models/resource-template/gen/template-management/actions.d.ts +20 -0
- package/dist/document-models/resource-template/gen/template-management/actions.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/template-management/actions.js +1 -0
- package/dist/document-models/resource-template/gen/template-management/creators.d.ts +7 -0
- package/dist/document-models/resource-template/gen/template-management/creators.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/template-management/creators.js +6 -0
- package/dist/document-models/resource-template/gen/template-management/error.d.ts +2 -0
- package/dist/document-models/resource-template/gen/template-management/error.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/template-management/error.js +1 -0
- package/dist/document-models/resource-template/gen/template-management/operations.d.ts +10 -0
- package/dist/document-models/resource-template/gen/template-management/operations.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/template-management/operations.js +3 -0
- package/dist/document-models/resource-template/gen/types.d.ts +12 -0
- package/dist/document-models/resource-template/gen/types.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/types.js +1 -0
- package/dist/document-models/resource-template/gen/utils.d.ts +15 -0
- package/dist/document-models/resource-template/gen/utils.d.ts.map +1 -0
- package/dist/document-models/resource-template/gen/utils.js +65 -0
- package/dist/document-models/resource-template/hooks.d.ts +11 -0
- package/dist/document-models/resource-template/hooks.d.ts.map +1 -0
- package/dist/document-models/resource-template/hooks.js +26 -0
- package/dist/document-models/resource-template/index.d.ts +10 -0
- package/dist/document-models/resource-template/index.d.ts.map +1 -0
- package/dist/document-models/resource-template/index.js +9 -0
- package/dist/document-models/resource-template/module.d.ts +5 -0
- package/dist/document-models/resource-template/module.d.ts.map +1 -0
- package/dist/document-models/resource-template/module.js +10 -0
- package/dist/document-models/resource-template/src/index.d.ts +2 -0
- package/dist/document-models/resource-template/src/index.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/index.js +1 -0
- package/dist/document-models/resource-template/src/reducers/audience-management.d.ts +3 -0
- package/dist/document-models/resource-template/src/reducers/audience-management.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/reducers/audience-management.js +17 -0
- package/dist/document-models/resource-template/src/reducers/facet-targeting.d.ts +3 -0
- package/dist/document-models/resource-template/src/reducers/facet-targeting.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/reducers/facet-targeting.js +46 -0
- package/dist/document-models/resource-template/src/reducers/option-group-management.d.ts +3 -0
- package/dist/document-models/resource-template/src/reducers/option-group-management.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/reducers/option-group-management.js +42 -0
- package/dist/document-models/resource-template/src/reducers/service-category-management.d.ts +3 -0
- package/dist/document-models/resource-template/src/reducers/service-category-management.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/reducers/service-category-management.js +10 -0
- package/dist/document-models/resource-template/src/reducers/service-management.d.ts +3 -0
- package/dist/document-models/resource-template/src/reducers/service-management.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/reducers/service-management.js +68 -0
- package/dist/document-models/resource-template/src/reducers/template-management.d.ts +3 -0
- package/dist/document-models/resource-template/src/reducers/template-management.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/reducers/template-management.js +32 -0
- package/dist/document-models/resource-template/src/tests/audience-management.test.d.ts +6 -0
- package/dist/document-models/resource-template/src/tests/audience-management.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/audience-management.test.js +29 -0
- package/dist/document-models/resource-template/src/tests/document-model.test.d.ts +10 -0
- package/dist/document-models/resource-template/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/document-model.test.js +104 -0
- package/dist/document-models/resource-template/src/tests/facet-targeting.test.d.ts +6 -0
- package/dist/document-models/resource-template/src/tests/facet-targeting.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/facet-targeting.test.js +49 -0
- package/dist/document-models/resource-template/src/tests/option-group-management.test.d.ts +6 -0
- package/dist/document-models/resource-template/src/tests/option-group-management.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/option-group-management.test.js +39 -0
- package/dist/document-models/resource-template/src/tests/service-category-management.test.d.ts +6 -0
- package/dist/document-models/resource-template/src/tests/service-category-management.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/service-category-management.test.js +29 -0
- package/dist/document-models/resource-template/src/tests/service-management.test.d.ts +6 -0
- package/dist/document-models/resource-template/src/tests/service-management.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/service-management.test.js +59 -0
- package/dist/document-models/resource-template/src/tests/template-management.test.d.ts +6 -0
- package/dist/document-models/resource-template/src/tests/template-management.test.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/tests/template-management.test.js +49 -0
- package/dist/document-models/resource-template/src/utils.d.ts +2 -0
- package/dist/document-models/resource-template/src/utils.d.ts.map +1 -0
- package/dist/document-models/resource-template/src/utils.js +1 -0
- package/dist/document-models/resource-template/utils.d.ts +14 -0
- package/dist/document-models/resource-template/utils.d.ts.map +1 -0
- package/dist/document-models/resource-template/utils.js +7 -0
- package/dist/document-models/service-offering/actions.d.ts +2 -0
- package/dist/document-models/service-offering/actions.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/document-model.js +47 -2
- package/dist/document-models/service-offering/gen/document-schema.d.ts +35 -16
- package/dist/document-models/service-offering/gen/document-schema.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/offering-management/actions.d.ts +10 -2
- package/dist/document-models/service-offering/gen/offering-management/actions.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/offering-management/creators.d.ts +4 -2
- package/dist/document-models/service-offering/gen/offering-management/creators.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/offering-management/creators.js +3 -1
- package/dist/document-models/service-offering/gen/offering-management/error.d.ts +20 -1
- package/dist/document-models/service-offering/gen/offering-management/error.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/offering-management/error.js +25 -0
- package/dist/document-models/service-offering/gen/offering-management/operations.d.ts +3 -1
- package/dist/document-models/service-offering/gen/offering-management/operations.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/ph-factories.js +1 -0
- package/dist/document-models/service-offering/gen/reducer.d.ts +1 -1
- package/dist/document-models/service-offering/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/reducer.js +9 -1
- package/dist/document-models/service-offering/gen/schema/types.d.ts +21 -11
- package/dist/document-models/service-offering/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/schema/zod.d.ts +3 -1
- package/dist/document-models/service-offering/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/schema/zod.js +14 -0
- package/dist/document-models/service-offering/gen/utils.d.ts.map +1 -1
- package/dist/document-models/service-offering/gen/utils.js +1 -0
- package/dist/document-models/service-offering/src/reducers/offering-management.d.ts.map +1 -1
- package/dist/document-models/service-offering/src/reducers/offering-management.js +22 -4
- package/dist/document-models/service-offering/src/reducers/option-group-management.d.ts.map +1 -1
- package/dist/document-models/service-offering/src/reducers/option-group-management.js +8 -11
- package/dist/document-models/service-offering/src/reducers/service-management.d.ts.map +1 -1
- package/dist/document-models/service-offering/src/reducers/service-management.js +12 -15
- package/dist/document-models/service-offering/src/reducers/tier-management.d.ts.map +1 -1
- package/dist/document-models/service-offering/src/reducers/tier-management.js +19 -21
- package/dist/document-models/service-offering/src/tests/offering-management.test.js +1 -81
- package/dist/document-models/service-offering/src/tests/tier-management.test.d.ts +4 -0
- package/dist/document-models/service-offering/src/tests/tier-management.test.d.ts.map +1 -1
- package/dist/document-models/service-offering/src/tests/tier-management.test.js +109 -1
- package/dist/editors/accounts-editor/components/AccountForm.d.ts.map +1 -1
- package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts.map +1 -1
- package/dist/editors/builder-team-admin/components/DriveExplorer.js +4 -0
- package/dist/editors/builder-team-admin/components/FolderTree.d.ts +1 -1
- package/dist/editors/builder-team-admin/components/FolderTree.d.ts.map +1 -1
- package/dist/editors/builder-team-admin/components/FolderTree.js +134 -9
- package/dist/editors/builder-team-admin/components/ResourcesServices.d.ts +8 -0
- package/dist/editors/builder-team-admin/components/ResourcesServices.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/ResourcesServices.js +76 -0
- package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.d.ts +27 -0
- package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.js +123 -0
- package/dist/editors/index.d.ts +1 -0
- package/dist/editors/index.d.ts.map +1 -1
- package/dist/editors/index.js +1 -0
- package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts +9 -0
- package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts.map +1 -0
- package/dist/editors/resource-template-editor/components/FacetTargeting.js +451 -0
- package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts +9 -0
- package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts.map +1 -0
- package/dist/editors/resource-template-editor/components/TemplateInfo.js +988 -0
- package/dist/editors/resource-template-editor/editor.d.ts +2 -0
- package/dist/editors/resource-template-editor/editor.d.ts.map +1 -0
- package/dist/editors/resource-template-editor/editor.js +149 -0
- package/dist/editors/resource-template-editor/module.d.ts +4 -0
- package/dist/editors/resource-template-editor/module.d.ts.map +1 -0
- package/dist/editors/resource-template-editor/module.js +10 -0
- package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts +9 -0
- package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts.map +1 -0
- package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.js +1050 -0
- package/dist/editors/service-offering-editor/components/ServicesList.d.ts.map +1 -1
- package/dist/editors/service-offering-editor/components/ServicesList.js +1 -1
- package/dist/editors/service-offering-editor/components/TabNavigation.d.ts.map +1 -1
- package/dist/editors/service-offering-editor/components/TabNavigation.js +17 -3
- package/dist/editors/service-offering-editor/components/TheMatrix.d.ts.map +1 -1
- package/dist/editors/service-offering-editor/components/TheMatrix.js +284 -25
- package/dist/editors/service-offering-editor/editor.d.ts.map +1 -1
- package/dist/editors/service-offering-editor/editor.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/style.css +25 -0
- package/dist/subgraphs/budget-statements/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/budget-statements/resolvers.js +76 -11
- package/dist/subgraphs/budget-statements/schema.d.ts.map +1 -1
- package/dist/subgraphs/budget-statements/schema.js +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { FileItem } from "@powerhousedao/design-system/connect";
|
|
3
|
+
import { FolderItem } from "@powerhousedao/design-system/connect";
|
|
4
|
+
import { isFolderNodeKind, isFileNodeKind, setSelectedNode, useSelectedNodePath, useNodesInSelectedDriveOrFolder, useUserPermissions, showCreateDocumentModal, } from "@powerhousedao/reactor-browser";
|
|
5
|
+
import { useEffect, useRef, useState } from "react";
|
|
6
|
+
import { Plus, FileText, Package } from "lucide-react";
|
|
7
|
+
import { useResourcesServicesAutoPlacement } from "../hooks/useResourcesServicesAutoPlacement.js";
|
|
8
|
+
const RESOURCE_TEMPLATES_FOLDER_NAME = "Resource Templates";
|
|
9
|
+
const SERVICE_OFFERINGS_FOLDER_NAME = "Service Offerings";
|
|
10
|
+
/**
|
|
11
|
+
* Component for the Resources & Services custom view.
|
|
12
|
+
* Shows two auto-generated folders: Resource Templates and Service Offerings.
|
|
13
|
+
* Users can create powerhouse/resource-template docs in Resource Templates
|
|
14
|
+
* and powerhouse/service-offering docs in Service Offerings.
|
|
15
|
+
*/
|
|
16
|
+
export function ResourcesServices() {
|
|
17
|
+
const hasNavigatedToFolder = useRef(false);
|
|
18
|
+
const selectedNodePath = useSelectedNodePath();
|
|
19
|
+
const nodesInCurrentFolder = useNodesInSelectedDriveOrFolder();
|
|
20
|
+
const { isAllowedToCreateDocuments } = useUserPermissions();
|
|
21
|
+
// Use the shared auto-placement hook - this handles:
|
|
22
|
+
// 1. Creating the "Resource Templates" folder if it doesn't exist
|
|
23
|
+
// 2. Creating the "Service Offerings" folder if it doesn't exist
|
|
24
|
+
const { resourceTemplatesFolder, serviceOfferingsFolder, resourceTemplateDocuments, serviceOfferingDocuments, } = useResourcesServicesAutoPlacement();
|
|
25
|
+
// Determine which folder we're currently in (if any)
|
|
26
|
+
const currentFolderId = selectedNodePath.at(-1)?.id;
|
|
27
|
+
const isInResourceTemplates = currentFolderId === resourceTemplatesFolder?.id;
|
|
28
|
+
const isInServiceOfferings = currentFolderId === serviceOfferingsFolder?.id;
|
|
29
|
+
const isInRootView = !isInResourceTemplates && !isInServiceOfferings;
|
|
30
|
+
// Navigate to root view initially (deselect any node)
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (resourceTemplatesFolder &&
|
|
33
|
+
serviceOfferingsFolder &&
|
|
34
|
+
!hasNavigatedToFolder.current) {
|
|
35
|
+
hasNavigatedToFolder.current = true;
|
|
36
|
+
// Don't select any node so we show the root view with both folders
|
|
37
|
+
setSelectedNode("");
|
|
38
|
+
}
|
|
39
|
+
}, [resourceTemplatesFolder, serviceOfferingsFolder]);
|
|
40
|
+
// Show loading state while folders are being created
|
|
41
|
+
if (!resourceTemplatesFolder || !serviceOfferingsFolder) {
|
|
42
|
+
return (_jsx("div", { className: "flex items-center justify-center h-64", children: _jsx("div", { className: "text-gray-500", children: "Setting up Resources & Services folders..." }) }));
|
|
43
|
+
}
|
|
44
|
+
// Handler for creating new documents
|
|
45
|
+
const handleCreateDocument = (documentType, folderId) => {
|
|
46
|
+
setSelectedNode(folderId);
|
|
47
|
+
// Small delay to ensure the folder is selected before showing modal
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
showCreateDocumentModal(documentType);
|
|
50
|
+
}, 100);
|
|
51
|
+
};
|
|
52
|
+
// Get folder and file nodes from current selection
|
|
53
|
+
const folderNodes = nodesInCurrentFolder.filter((n) => isFolderNodeKind(n));
|
|
54
|
+
const fileNodes = nodesInCurrentFolder.filter((n) => isFileNodeKind(n));
|
|
55
|
+
// Render the root view with both folder cards
|
|
56
|
+
if (isInRootView) {
|
|
57
|
+
return (_jsxs("div", { children: [_jsx("div", { className: "text-2xl font-bold text-center mb-6", children: "Resources & Services" }), _jsxs("div", { className: "space-y-6 px-6", children: [_jsx("p", { className: "text-gray-600 text-center mb-8", children: "Manage your resource templates and service offerings. Click on a folder to view or create documents." }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs("div", { className: "border border-gray-200 rounded-lg p-6 hover:border-blue-400 hover:shadow-md transition-all cursor-pointer", onClick: () => setSelectedNode(resourceTemplatesFolder.id), children: [_jsxs("div", { className: "flex items-center gap-3 mb-4", children: [_jsx("div", { className: "p-2 bg-blue-50 rounded-lg", children: _jsx(FileText, { className: "w-6 h-6 text-blue-600" }) }), _jsx("h3", { className: "text-lg font-semibold", children: RESOURCE_TEMPLATES_FOLDER_NAME })] }), _jsx("p", { className: "text-gray-600 text-sm mb-4", children: "Define resource templates that can be used across service offerings." }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-sm text-gray-500", children: [resourceTemplateDocuments.length, " template", resourceTemplateDocuments.length !== 1 ? "s" : ""] }), isAllowedToCreateDocuments && (_jsxs("button", { type: "button", className: "flex items-center gap-1 text-sm text-blue-600 hover:text-blue-800", onClick: (e) => {
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
handleCreateDocument("powerhouse/resource-template", resourceTemplatesFolder.id);
|
|
60
|
+
}, children: [_jsx(Plus, { size: 14 }), "Add new"] }))] })] }), _jsxs("div", { className: "border border-gray-200 rounded-lg p-6 hover:border-indigo-400 hover:shadow-md transition-all cursor-pointer", onClick: () => setSelectedNode(serviceOfferingsFolder.id), children: [_jsxs("div", { className: "flex items-center gap-3 mb-4", children: [_jsx("div", { className: "p-2 bg-indigo-50 rounded-lg", children: _jsx(Package, { className: "w-6 h-6 text-indigo-600" }) }), _jsx("h3", { className: "text-lg font-semibold", children: SERVICE_OFFERINGS_FOLDER_NAME })] }), _jsx("p", { className: "text-gray-600 text-sm mb-4", children: "Create and manage service offerings with pricing tiers and options." }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-sm text-gray-500", children: [serviceOfferingDocuments.length, " offering", serviceOfferingDocuments.length !== 1 ? "s" : ""] }), isAllowedToCreateDocuments && (_jsxs("button", { type: "button", className: "flex items-center gap-1 text-sm text-indigo-600 hover:text-indigo-800", onClick: (e) => {
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
handleCreateDocument("powerhouse/service-offering", serviceOfferingsFolder.id);
|
|
63
|
+
}, children: [_jsx(Plus, { size: 14 }), "Add new"] }))] })] })] })] })] }));
|
|
64
|
+
}
|
|
65
|
+
// Render folder contents view (Resource Templates or Service Offerings)
|
|
66
|
+
const currentFolderName = isInResourceTemplates
|
|
67
|
+
? RESOURCE_TEMPLATES_FOLDER_NAME
|
|
68
|
+
: SERVICE_OFFERINGS_FOLDER_NAME;
|
|
69
|
+
const documentType = isInResourceTemplates
|
|
70
|
+
? "powerhouse/resource-template"
|
|
71
|
+
: "powerhouse/service-offering";
|
|
72
|
+
const hasFolders = folderNodes.length > 0;
|
|
73
|
+
const hasFiles = fileNodes.length > 0;
|
|
74
|
+
const isEmpty = !hasFolders && !hasFiles;
|
|
75
|
+
return (_jsxs("div", { children: [_jsx("div", { className: "text-2xl font-bold text-center mb-4", children: currentFolderName }), _jsxs("div", { className: "space-y-6 px-6", children: [_jsxs("div", { className: "flex h-9 flex-row items-center gap-2 text-gray-500 border-b border-gray-200 pb-3", children: [_jsx("div", { className: "transition-colors hover:text-gray-800 cursor-pointer", onClick: () => setSelectedNode(""), role: "button", children: "Resources & Services" }), _jsx("span", { children: "/" }), _jsx("div", { className: "text-gray-800", children: currentFolderName }), _jsx("span", { children: "/" }), isAllowedToCreateDocuments && (_jsxs("button", { type: "button", className: "ml-1 flex items-center justify-center gap-2 rounded-md bg-gray-50 px-2 py-1.5 transition-colors hover:bg-gray-200 hover:text-gray-800", onClick: () => showCreateDocumentModal(documentType), children: [_jsx(Plus, { size: 14 }), "Add new"] }))] }), hasFolders && (_jsxs("div", { children: [_jsx("h3", { className: "mb-2 text-sm font-bold text-gray-600", children: "Folders" }), _jsx("div", { className: "flex flex-wrap gap-4", children: folderNodes.map((folderNode) => (_jsx(FolderItem, { folderNode: folderNode }, folderNode.id))) })] })), hasFiles && (_jsxs("div", { children: [_jsx("h3", { className: "mb-2 text-sm font-semibold text-gray-600", children: "Documents" }), _jsx("div", { className: "flex flex-wrap gap-4", children: fileNodes.map((fileNode) => (_jsx(FileItem, { fileNode: fileNode }, fileNode.id))) })] })), isEmpty && (_jsxs("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [_jsx("div", { className: "text-gray-400 mb-2", children: isInResourceTemplates ? (_jsx(FileText, { className: "w-16 h-16 mx-auto" })) : (_jsx(Package, { className: "w-16 h-16 mx-auto" })) }), _jsxs("p", { className: "text-gray-500 text-sm", children: ["No ", currentFolderName.toLowerCase(), " yet.", isAllowedToCreateDocuments && (_jsxs(_Fragment, { children: [" ", "Click \"Add new\" to create your first", " ", isInResourceTemplates ? "resource template" : "service offering", "."] }))] })] }))] })] }));
|
|
76
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { FolderNode, FileNode } from "document-drive";
|
|
2
|
+
interface UseResourcesServicesAutoPlacementResult {
|
|
3
|
+
/** The Resource Templates folder node, or null if it doesn't exist yet */
|
|
4
|
+
resourceTemplatesFolder: FolderNode | null;
|
|
5
|
+
/** The Service Offerings folder node, or null if it doesn't exist yet */
|
|
6
|
+
serviceOfferingsFolder: FolderNode | null;
|
|
7
|
+
/** Set of all node IDs within the Resource Templates folder tree */
|
|
8
|
+
resourceTemplatesNodeIds: Set<string>;
|
|
9
|
+
/** Set of all node IDs within the Service Offerings folder tree */
|
|
10
|
+
serviceOfferingsNodeIds: Set<string>;
|
|
11
|
+
/** All resource template documents within the Resource Templates folder */
|
|
12
|
+
resourceTemplateDocuments: FileNode[];
|
|
13
|
+
/** All service offering documents within the Service Offerings folder */
|
|
14
|
+
serviceOfferingDocuments: FileNode[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Hook that handles automatic creation of "Resource Templates" and "Service Offerings" folders
|
|
18
|
+
* for the Resources & Services section.
|
|
19
|
+
*
|
|
20
|
+
* This hook:
|
|
21
|
+
* 1. Creates the "Resource Templates" folder if it doesn't exist
|
|
22
|
+
* 2. Creates the "Service Offerings" folder if it doesn't exist
|
|
23
|
+
* 3. Provides access to documents within each folder
|
|
24
|
+
*/
|
|
25
|
+
export declare function useResourcesServicesAutoPlacement(): UseResourcesServicesAutoPlacementResult;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=useResourcesServicesAutoPlacement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResourcesServicesAutoPlacement.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/hooks/useResourcesServicesAutoPlacement.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAQ,MAAM,gBAAgB,CAAC;AAKjE,UAAU,uCAAuC;IAC/C,0EAA0E;IAC1E,uBAAuB,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3C,yEAAyE;IACzE,sBAAsB,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1C,oEAAoE;IACpE,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,mEAAmE;IACnE,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,2EAA2E;IAC3E,yBAAyB,EAAE,QAAQ,EAAE,CAAC;IACtC,yEAAyE;IACzE,wBAAwB,EAAE,QAAQ,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,IAAI,uCAAuC,CAiJ3F"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef } from "react";
|
|
2
|
+
import { isFolderNodeKind, isFileNodeKind, addFolder, useSelectedDrive, useDocumentsInSelectedDrive, } from "@powerhousedao/reactor-browser";
|
|
3
|
+
const RESOURCE_TEMPLATES_FOLDER_NAME = "Resource Templates";
|
|
4
|
+
const SERVICE_OFFERINGS_FOLDER_NAME = "Service Offerings";
|
|
5
|
+
/**
|
|
6
|
+
* Hook that handles automatic creation of "Resource Templates" and "Service Offerings" folders
|
|
7
|
+
* for the Resources & Services section.
|
|
8
|
+
*
|
|
9
|
+
* This hook:
|
|
10
|
+
* 1. Creates the "Resource Templates" folder if it doesn't exist
|
|
11
|
+
* 2. Creates the "Service Offerings" folder if it doesn't exist
|
|
12
|
+
* 3. Provides access to documents within each folder
|
|
13
|
+
*/
|
|
14
|
+
export function useResourcesServicesAutoPlacement() {
|
|
15
|
+
const [driveDocument] = useSelectedDrive();
|
|
16
|
+
const documentsInDrive = useDocumentsInSelectedDrive();
|
|
17
|
+
// Track folder creation to prevent duplicates
|
|
18
|
+
const hasCreatedResourceTemplatesFolder = useRef(false);
|
|
19
|
+
const hasCreatedServiceOfferingsFolder = useRef(false);
|
|
20
|
+
// Find the "Resource Templates" folder in the drive
|
|
21
|
+
const resourceTemplatesFolder = useMemo(() => {
|
|
22
|
+
if (!driveDocument)
|
|
23
|
+
return null;
|
|
24
|
+
const nodes = driveDocument.state.global.nodes;
|
|
25
|
+
return (nodes.find((node) => isFolderNodeKind(node) &&
|
|
26
|
+
node.name === RESOURCE_TEMPLATES_FOLDER_NAME) ?? null);
|
|
27
|
+
}, [driveDocument]);
|
|
28
|
+
// Find the "Service Offerings" folder in the drive
|
|
29
|
+
const serviceOfferingsFolder = useMemo(() => {
|
|
30
|
+
if (!driveDocument)
|
|
31
|
+
return null;
|
|
32
|
+
const nodes = driveDocument.state.global.nodes;
|
|
33
|
+
return (nodes.find((node) => isFolderNodeKind(node) && node.name === SERVICE_OFFERINGS_FOLDER_NAME) ?? null);
|
|
34
|
+
}, [driveDocument]);
|
|
35
|
+
// Build a set of all node IDs within the Resource Templates folder tree
|
|
36
|
+
const resourceTemplatesNodeIds = useMemo(() => {
|
|
37
|
+
const nodeIds = new Set();
|
|
38
|
+
if (!resourceTemplatesFolder || !driveDocument)
|
|
39
|
+
return nodeIds;
|
|
40
|
+
const allNodes = driveDocument.state.global.nodes;
|
|
41
|
+
const collectNodeIds = (parentId) => {
|
|
42
|
+
nodeIds.add(parentId);
|
|
43
|
+
for (const node of allNodes) {
|
|
44
|
+
if (isFolderNodeKind(node) && node.parentFolder === parentId) {
|
|
45
|
+
collectNodeIds(node.id);
|
|
46
|
+
}
|
|
47
|
+
else if (isFileNodeKind(node) &&
|
|
48
|
+
node.parentFolder === parentId &&
|
|
49
|
+
node.documentType === "powerhouse/resource-template") {
|
|
50
|
+
nodeIds.add(node.id);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
collectNodeIds(resourceTemplatesFolder.id);
|
|
55
|
+
return nodeIds;
|
|
56
|
+
}, [resourceTemplatesFolder, driveDocument]);
|
|
57
|
+
// Build a set of all node IDs within the Service Offerings folder tree
|
|
58
|
+
const serviceOfferingsNodeIds = useMemo(() => {
|
|
59
|
+
const nodeIds = new Set();
|
|
60
|
+
if (!serviceOfferingsFolder || !driveDocument)
|
|
61
|
+
return nodeIds;
|
|
62
|
+
const allNodes = driveDocument.state.global.nodes;
|
|
63
|
+
const collectNodeIds = (parentId) => {
|
|
64
|
+
nodeIds.add(parentId);
|
|
65
|
+
for (const node of allNodes) {
|
|
66
|
+
if (isFolderNodeKind(node) && node.parentFolder === parentId) {
|
|
67
|
+
collectNodeIds(node.id);
|
|
68
|
+
}
|
|
69
|
+
else if (isFileNodeKind(node) &&
|
|
70
|
+
node.parentFolder === parentId &&
|
|
71
|
+
node.documentType === "powerhouse/service-offering") {
|
|
72
|
+
nodeIds.add(node.id);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
collectNodeIds(serviceOfferingsFolder.id);
|
|
77
|
+
return nodeIds;
|
|
78
|
+
}, [serviceOfferingsFolder, driveDocument]);
|
|
79
|
+
// Get resource template documents within the Resource Templates folder
|
|
80
|
+
const resourceTemplateDocuments = useMemo(() => {
|
|
81
|
+
if (!driveDocument)
|
|
82
|
+
return [];
|
|
83
|
+
return driveDocument.state.global.nodes.filter((node) => isFileNodeKind(node) &&
|
|
84
|
+
node.documentType === "powerhouse/resource-template" &&
|
|
85
|
+
resourceTemplatesNodeIds.has(node.id));
|
|
86
|
+
}, [driveDocument, resourceTemplatesNodeIds]);
|
|
87
|
+
// Get service offering documents within the Service Offerings folder
|
|
88
|
+
const serviceOfferingDocuments = useMemo(() => {
|
|
89
|
+
if (!driveDocument)
|
|
90
|
+
return [];
|
|
91
|
+
return driveDocument.state.global.nodes.filter((node) => isFileNodeKind(node) &&
|
|
92
|
+
node.documentType === "powerhouse/service-offering" &&
|
|
93
|
+
serviceOfferingsNodeIds.has(node.id));
|
|
94
|
+
}, [driveDocument, serviceOfferingsNodeIds]);
|
|
95
|
+
// Create Resource Templates folder if it doesn't exist
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!driveDocument ||
|
|
98
|
+
resourceTemplatesFolder ||
|
|
99
|
+
hasCreatedResourceTemplatesFolder.current)
|
|
100
|
+
return;
|
|
101
|
+
hasCreatedResourceTemplatesFolder.current = true;
|
|
102
|
+
const driveId = driveDocument.header.id;
|
|
103
|
+
void addFolder(driveId, RESOURCE_TEMPLATES_FOLDER_NAME);
|
|
104
|
+
}, [driveDocument, resourceTemplatesFolder]);
|
|
105
|
+
// Create Service Offerings folder if it doesn't exist
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
if (!driveDocument ||
|
|
108
|
+
serviceOfferingsFolder ||
|
|
109
|
+
hasCreatedServiceOfferingsFolder.current)
|
|
110
|
+
return;
|
|
111
|
+
hasCreatedServiceOfferingsFolder.current = true;
|
|
112
|
+
const driveId = driveDocument.header.id;
|
|
113
|
+
void addFolder(driveId, SERVICE_OFFERINGS_FOLDER_NAME);
|
|
114
|
+
}, [driveDocument, serviceOfferingsFolder]);
|
|
115
|
+
return {
|
|
116
|
+
resourceTemplatesFolder,
|
|
117
|
+
serviceOfferingsFolder,
|
|
118
|
+
resourceTemplatesNodeIds,
|
|
119
|
+
serviceOfferingsNodeIds,
|
|
120
|
+
resourceTemplateDocuments,
|
|
121
|
+
serviceOfferingDocuments,
|
|
122
|
+
};
|
|
123
|
+
}
|
package/dist/editors/index.d.ts
CHANGED
|
@@ -8,4 +8,5 @@ export { SnapshotReportEditor } from "./snapshot-report-editor/module.js";
|
|
|
8
8
|
export { ExpenseReport } from "./expense-report/module.js";
|
|
9
9
|
export { ServiceSubscriptionsEditor } from "./service-subscriptions-editor/module.js";
|
|
10
10
|
export { ServiceOfferingEditor } from "./service-offering-editor/module.js";
|
|
11
|
+
export { ResourceTemplateEditor } from "./resource-template-editor/module.js";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC"}
|
package/dist/editors/index.js
CHANGED
|
@@ -8,3 +8,4 @@ export { SnapshotReportEditor } from "./snapshot-report-editor/module.js";
|
|
|
8
8
|
export { ExpenseReport } from "./expense-report/module.js";
|
|
9
9
|
export { ServiceSubscriptionsEditor } from "./service-subscriptions-editor/module.js";
|
|
10
10
|
export { ServiceOfferingEditor } from "./service-offering-editor/module.js";
|
|
11
|
+
export { ResourceTemplateEditor } from "./resource-template-editor/module.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DocumentDispatch } from "@powerhousedao/reactor-browser";
|
|
2
|
+
import type { ResourceTemplateDocument, ResourceTemplateAction } from "../../../document-models/resource-template/gen/types.js";
|
|
3
|
+
interface FacetTargetingProps {
|
|
4
|
+
document: ResourceTemplateDocument;
|
|
5
|
+
dispatch: DocumentDispatch<ResourceTemplateAction>;
|
|
6
|
+
}
|
|
7
|
+
export declare function FacetTargeting({ document, dispatch }: FacetTargetingProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=FacetTargeting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FacetTargeting.d.ts","sourceRoot":"","sources":["../../../../editors/resource-template-editor/components/FacetTargeting.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,yDAAyD,CAAC;AAQjE,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,wBAAwB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACpD;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAyTzE"}
|