@powerhousedao/builder-team-admin 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +179 -0
- package/dist/document-models/builders/actions.d.ts +14 -0
- package/dist/document-models/builders/actions.d.ts.map +1 -0
- package/dist/document-models/builders/actions.js +4 -0
- package/dist/document-models/builders/gen/actions.d.ts +4 -0
- package/dist/document-models/builders/gen/actions.d.ts.map +1 -0
- package/dist/document-models/builders/gen/actions.js +1 -0
- package/dist/document-models/builders/gen/builders/actions.d.ts +12 -0
- package/dist/document-models/builders/gen/builders/actions.d.ts.map +1 -0
- package/dist/document-models/builders/gen/builders/actions.js +1 -0
- package/dist/document-models/builders/gen/builders/creators.d.ts +5 -0
- package/dist/document-models/builders/gen/builders/creators.d.ts.map +1 -0
- package/dist/document-models/builders/gen/builders/creators.js +4 -0
- package/dist/document-models/builders/gen/builders/error.d.ts +2 -0
- package/dist/document-models/builders/gen/builders/error.d.ts.map +1 -0
- package/dist/document-models/builders/gen/builders/error.js +1 -0
- package/dist/document-models/builders/gen/builders/operations.d.ts +8 -0
- package/dist/document-models/builders/gen/builders/operations.d.ts.map +1 -0
- package/dist/document-models/builders/gen/builders/operations.js +3 -0
- package/dist/document-models/builders/gen/creators.d.ts +3 -0
- package/dist/document-models/builders/gen/creators.d.ts.map +1 -0
- package/dist/document-models/builders/gen/creators.js +2 -0
- package/dist/document-models/builders/gen/document-model.d.ts +3 -0
- package/dist/document-models/builders/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/builders/gen/document-model.js +59 -0
- package/dist/document-models/builders/gen/document-schema.d.ts +142 -0
- package/dist/document-models/builders/gen/document-schema.d.ts.map +1 -0
- package/dist/document-models/builders/gen/document-schema.js +33 -0
- package/dist/document-models/builders/gen/document-type.d.ts +2 -0
- package/dist/document-models/builders/gen/document-type.d.ts.map +1 -0
- package/dist/document-models/builders/gen/document-type.js +1 -0
- package/dist/document-models/builders/gen/index.d.ts +12 -0
- package/dist/document-models/builders/gen/index.d.ts.map +1 -0
- package/dist/document-models/builders/gen/index.js +11 -0
- package/dist/document-models/builders/gen/ph-factories.d.ts +23 -0
- package/dist/document-models/builders/gen/ph-factories.d.ts.map +1 -0
- package/dist/document-models/builders/gen/ph-factories.js +47 -0
- package/dist/document-models/builders/gen/reducer.d.ts +3 -0
- package/dist/document-models/builders/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/builders/gen/reducer.js +21 -0
- package/dist/document-models/builders/gen/schema/index.d.ts +3 -0
- package/dist/document-models/builders/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/builders/gen/schema/index.js +2 -0
- package/dist/document-models/builders/gen/schema/types.d.ts +146 -0
- package/dist/document-models/builders/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/builders/gen/schema/types.js +1 -0
- package/dist/document-models/builders/gen/schema/zod.d.ts +13 -0
- package/dist/document-models/builders/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/builders/gen/schema/zod.js +21 -0
- package/dist/document-models/builders/gen/types.d.ts +12 -0
- package/dist/document-models/builders/gen/types.d.ts.map +1 -0
- package/dist/document-models/builders/gen/types.js +1 -0
- package/dist/document-models/builders/gen/utils.d.ts +15 -0
- package/dist/document-models/builders/gen/utils.d.ts.map +1 -0
- package/dist/document-models/builders/gen/utils.js +51 -0
- package/dist/document-models/builders/hooks.d.ts +11 -0
- package/dist/document-models/builders/hooks.d.ts.map +1 -0
- package/dist/document-models/builders/hooks.js +26 -0
- package/dist/document-models/builders/index.d.ts +10 -0
- package/dist/document-models/builders/index.d.ts.map +1 -0
- package/dist/document-models/builders/index.js +9 -0
- package/dist/document-models/builders/module.d.ts +5 -0
- package/dist/document-models/builders/module.d.ts.map +1 -0
- package/dist/document-models/builders/module.js +10 -0
- package/dist/document-models/builders/src/index.d.ts +2 -0
- package/dist/document-models/builders/src/index.d.ts.map +1 -0
- package/dist/document-models/builders/src/index.js +1 -0
- package/dist/document-models/builders/src/reducers/builders.d.ts +3 -0
- package/dist/document-models/builders/src/reducers/builders.d.ts.map +1 -0
- package/dist/document-models/builders/src/reducers/builders.js +8 -0
- package/dist/document-models/builders/src/tests/builders.test.d.ts +6 -0
- package/dist/document-models/builders/src/tests/builders.test.d.ts.map +1 -0
- package/dist/document-models/builders/src/tests/builders.test.js +29 -0
- package/dist/document-models/builders/src/tests/document-model.test.d.ts +10 -0
- package/dist/document-models/builders/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/builders/src/tests/document-model.test.js +104 -0
- package/dist/document-models/builders/src/utils.d.ts +2 -0
- package/dist/document-models/builders/src/utils.d.ts.map +1 -0
- package/dist/document-models/builders/src/utils.js +1 -0
- package/dist/document-models/builders/utils.d.ts +14 -0
- package/dist/document-models/builders/utils.d.ts.map +1 -0
- package/dist/document-models/builders/utils.js +7 -0
- package/dist/document-models/document-models.d.ts +3 -0
- package/dist/document-models/document-models.d.ts.map +1 -0
- package/dist/document-models/document-models.js +6 -0
- package/dist/document-models/expense-report/actions.d.ts +27 -0
- package/dist/document-models/expense-report/actions.d.ts.map +1 -0
- package/dist/document-models/expense-report/actions.js +4 -0
- package/dist/document-models/expense-report/gen/actions.d.ts +4 -0
- package/dist/document-models/expense-report/gen/actions.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/actions.js +1 -0
- package/dist/document-models/expense-report/gen/creators.d.ts +3 -0
- package/dist/document-models/expense-report/gen/creators.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/creators.js +2 -0
- package/dist/document-models/expense-report/gen/document-model.d.ts +3 -0
- package/dist/document-models/expense-report/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/document-model.js +202 -0
- package/dist/document-models/expense-report/gen/document-schema.d.ts +199 -0
- package/dist/document-models/expense-report/gen/document-schema.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/document-schema.js +33 -0
- package/dist/document-models/expense-report/gen/document-type.d.ts +2 -0
- package/dist/document-models/expense-report/gen/document-type.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/document-type.js +1 -0
- package/dist/document-models/expense-report/gen/index.d.ts +12 -0
- package/dist/document-models/expense-report/gen/index.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/index.js +11 -0
- package/dist/document-models/expense-report/gen/ph-factories.d.ts +23 -0
- package/dist/document-models/expense-report/gen/ph-factories.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/ph-factories.js +186 -0
- package/dist/document-models/expense-report/gen/reducer.d.ts +3 -0
- package/dist/document-models/expense-report/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/reducer.js +73 -0
- package/dist/document-models/expense-report/gen/schema/index.d.ts +3 -0
- package/dist/document-models/expense-report/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/schema/index.js +2 -0
- package/dist/document-models/expense-report/gen/schema/types.d.ts +258 -0
- package/dist/document-models/expense-report/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/schema/types.js +1 -0
- package/dist/document-models/expense-report/gen/schema/zod.d.ts +32 -0
- package/dist/document-models/expense-report/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/schema/zod.js +200 -0
- package/dist/document-models/expense-report/gen/types.d.ts +12 -0
- package/dist/document-models/expense-report/gen/types.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/types.js +1 -0
- package/dist/document-models/expense-report/gen/utils.d.ts +15 -0
- package/dist/document-models/expense-report/gen/utils.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/utils.js +190 -0
- package/dist/document-models/expense-report/gen/wallet/actions.d.ts +64 -0
- package/dist/document-models/expense-report/gen/wallet/actions.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/wallet/actions.js +1 -0
- package/dist/document-models/expense-report/gen/wallet/creators.d.ts +18 -0
- package/dist/document-models/expense-report/gen/wallet/creators.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/wallet/creators.js +17 -0
- package/dist/document-models/expense-report/gen/wallet/error.d.ts +2 -0
- package/dist/document-models/expense-report/gen/wallet/error.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/wallet/error.js +1 -0
- package/dist/document-models/expense-report/gen/wallet/operations.d.ts +21 -0
- package/dist/document-models/expense-report/gen/wallet/operations.d.ts.map +1 -0
- package/dist/document-models/expense-report/gen/wallet/operations.js +3 -0
- package/dist/document-models/expense-report/hooks.d.ts +11 -0
- package/dist/document-models/expense-report/hooks.d.ts.map +1 -0
- package/dist/document-models/expense-report/hooks.js +26 -0
- package/dist/document-models/expense-report/index.d.ts +10 -0
- package/dist/document-models/expense-report/index.d.ts.map +1 -0
- package/dist/document-models/expense-report/index.js +9 -0
- package/dist/document-models/expense-report/module.d.ts +5 -0
- package/dist/document-models/expense-report/module.d.ts.map +1 -0
- package/dist/document-models/expense-report/module.js +10 -0
- package/dist/document-models/expense-report/src/index.d.ts +2 -0
- package/dist/document-models/expense-report/src/index.d.ts.map +1 -0
- package/dist/document-models/expense-report/src/index.js +1 -0
- package/dist/document-models/expense-report/src/reducers/wallet.d.ts +3 -0
- package/dist/document-models/expense-report/src/reducers/wallet.d.ts.map +1 -0
- package/dist/document-models/expense-report/src/reducers/wallet.js +196 -0
- package/dist/document-models/expense-report/src/tests/document-model.test.d.ts +10 -0
- package/dist/document-models/expense-report/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/expense-report/src/tests/document-model.test.js +104 -0
- package/dist/document-models/expense-report/src/tests/wallet.test.d.ts +6 -0
- package/dist/document-models/expense-report/src/tests/wallet.test.d.ts.map +1 -0
- package/dist/document-models/expense-report/src/tests/wallet.test.js +159 -0
- package/dist/document-models/expense-report/src/utils.d.ts +2 -0
- package/dist/document-models/expense-report/src/utils.d.ts.map +1 -0
- package/dist/document-models/expense-report/src/utils.js +1 -0
- package/dist/document-models/expense-report/utils.d.ts +14 -0
- package/dist/document-models/expense-report/utils.d.ts.map +1 -0
- package/dist/document-models/expense-report/utils.js +7 -0
- package/dist/document-models/index.d.ts +3 -0
- package/dist/document-models/index.d.ts.map +1 -0
- package/dist/document-models/index.js +2 -0
- package/dist/document-models/service-subscriptions/actions.d.ts +25 -0
- package/dist/document-models/service-subscriptions/actions.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/actions.js +9 -0
- package/dist/document-models/service-subscriptions/gen/actions.d.ts +8 -0
- package/dist/document-models/service-subscriptions/gen/actions.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/actions.js +3 -0
- package/dist/document-models/service-subscriptions/gen/categories/actions.d.ts +16 -0
- package/dist/document-models/service-subscriptions/gen/categories/actions.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/categories/actions.js +1 -0
- package/dist/document-models/service-subscriptions/gen/categories/creators.d.ts +6 -0
- package/dist/document-models/service-subscriptions/gen/categories/creators.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/categories/creators.js +5 -0
- package/dist/document-models/service-subscriptions/gen/categories/error.d.ts +2 -0
- package/dist/document-models/service-subscriptions/gen/categories/error.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/categories/error.js +1 -0
- package/dist/document-models/service-subscriptions/gen/categories/operations.d.ts +9 -0
- package/dist/document-models/service-subscriptions/gen/categories/operations.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/categories/operations.js +3 -0
- package/dist/document-models/service-subscriptions/gen/creators.d.ts +7 -0
- package/dist/document-models/service-subscriptions/gen/creators.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/creators.js +6 -0
- package/dist/document-models/service-subscriptions/gen/document-model.d.ts +3 -0
- package/dist/document-models/service-subscriptions/gen/document-model.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/document-model.js +194 -0
- package/dist/document-models/service-subscriptions/gen/document-schema.d.ts +180 -0
- package/dist/document-models/service-subscriptions/gen/document-schema.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/document-schema.js +33 -0
- package/dist/document-models/service-subscriptions/gen/document-type.d.ts +2 -0
- package/dist/document-models/service-subscriptions/gen/document-type.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/document-type.js +1 -0
- package/dist/document-models/service-subscriptions/gen/index.d.ts +14 -0
- package/dist/document-models/service-subscriptions/gen/index.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/index.js +13 -0
- package/dist/document-models/service-subscriptions/gen/ph-factories.d.ts +23 -0
- package/dist/document-models/service-subscriptions/gen/ph-factories.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/ph-factories.js +45 -0
- package/dist/document-models/service-subscriptions/gen/reducer.d.ts +3 -0
- package/dist/document-models/service-subscriptions/gen/reducer.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/reducer.js +67 -0
- package/dist/document-models/service-subscriptions/gen/schema/index.d.ts +3 -0
- package/dist/document-models/service-subscriptions/gen/schema/index.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/schema/index.js +2 -0
- package/dist/document-models/service-subscriptions/gen/schema/types.d.ts +274 -0
- package/dist/document-models/service-subscriptions/gen/schema/types.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/schema/types.js +1 -0
- package/dist/document-models/service-subscriptions/gen/schema/zod.d.ts +31 -0
- package/dist/document-models/service-subscriptions/gen/schema/zod.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/schema/zod.js +199 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/actions.d.ts +32 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/actions.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/actions.js +1 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/creators.d.ts +10 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/creators.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/creators.js +9 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/error.d.ts +2 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/error.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/error.js +1 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/operations.d.ts +13 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/operations.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/subscriptions/operations.js +3 -0
- package/dist/document-models/service-subscriptions/gen/types.d.ts +12 -0
- package/dist/document-models/service-subscriptions/gen/types.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/types.js +1 -0
- package/dist/document-models/service-subscriptions/gen/utils.d.ts +15 -0
- package/dist/document-models/service-subscriptions/gen/utils.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/utils.js +53 -0
- package/dist/document-models/service-subscriptions/gen/vendors/actions.d.ts +16 -0
- package/dist/document-models/service-subscriptions/gen/vendors/actions.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/vendors/actions.js +1 -0
- package/dist/document-models/service-subscriptions/gen/vendors/creators.d.ts +6 -0
- package/dist/document-models/service-subscriptions/gen/vendors/creators.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/vendors/creators.js +5 -0
- package/dist/document-models/service-subscriptions/gen/vendors/error.d.ts +2 -0
- package/dist/document-models/service-subscriptions/gen/vendors/error.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/vendors/error.js +1 -0
- package/dist/document-models/service-subscriptions/gen/vendors/operations.d.ts +9 -0
- package/dist/document-models/service-subscriptions/gen/vendors/operations.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/gen/vendors/operations.js +3 -0
- package/dist/document-models/service-subscriptions/hooks.d.ts +11 -0
- package/dist/document-models/service-subscriptions/hooks.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/hooks.js +26 -0
- package/dist/document-models/service-subscriptions/index.d.ts +10 -0
- package/dist/document-models/service-subscriptions/index.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/index.js +9 -0
- package/dist/document-models/service-subscriptions/module.d.ts +5 -0
- package/dist/document-models/service-subscriptions/module.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/module.js +10 -0
- package/dist/document-models/service-subscriptions/src/index.d.ts +2 -0
- package/dist/document-models/service-subscriptions/src/index.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/index.js +1 -0
- package/dist/document-models/service-subscriptions/src/reducers/categories.d.ts +3 -0
- package/dist/document-models/service-subscriptions/src/reducers/categories.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/reducers/categories.js +24 -0
- package/dist/document-models/service-subscriptions/src/reducers/subscriptions.d.ts +3 -0
- package/dist/document-models/service-subscriptions/src/reducers/subscriptions.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/reducers/subscriptions.js +114 -0
- package/dist/document-models/service-subscriptions/src/reducers/vendors.d.ts +3 -0
- package/dist/document-models/service-subscriptions/src/reducers/vendors.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/reducers/vendors.js +30 -0
- package/dist/document-models/service-subscriptions/src/tests/categories.test.d.ts +6 -0
- package/dist/document-models/service-subscriptions/src/tests/categories.test.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/tests/categories.test.js +39 -0
- package/dist/document-models/service-subscriptions/src/tests/document-model.test.d.ts +10 -0
- package/dist/document-models/service-subscriptions/src/tests/document-model.test.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/tests/document-model.test.js +104 -0
- package/dist/document-models/service-subscriptions/src/tests/subscriptions.test.d.ts +6 -0
- package/dist/document-models/service-subscriptions/src/tests/subscriptions.test.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/tests/subscriptions.test.js +79 -0
- package/dist/document-models/service-subscriptions/src/tests/vendors.test.d.ts +6 -0
- package/dist/document-models/service-subscriptions/src/tests/vendors.test.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/tests/vendors.test.js +39 -0
- package/dist/document-models/service-subscriptions/src/utils.d.ts +2 -0
- package/dist/document-models/service-subscriptions/src/utils.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/src/utils.js +1 -0
- package/dist/document-models/service-subscriptions/utils.d.ts +14 -0
- package/dist/document-models/service-subscriptions/utils.d.ts.map +1 -0
- package/dist/document-models/service-subscriptions/utils.js +7 -0
- package/dist/editors/builder-team-admin/components/CreateDocument.d.ts +6 -0
- package/dist/editors/builder-team-admin/components/CreateDocument.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/CreateDocument.js +18 -0
- package/dist/editors/builder-team-admin/components/DriveContents.d.ts +6 -0
- package/dist/editors/builder-team-admin/components/DriveContents.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/DriveContents.js +38 -0
- package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts +7 -0
- package/dist/editors/builder-team-admin/components/DriveExplorer.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/DriveExplorer.js +45 -0
- package/dist/editors/builder-team-admin/components/EmptyState.d.ts +3 -0
- package/dist/editors/builder-team-admin/components/EmptyState.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/EmptyState.js +10 -0
- package/dist/editors/builder-team-admin/components/ExpenseReportsStats.d.ts +11 -0
- package/dist/editors/builder-team-admin/components/ExpenseReportsStats.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/ExpenseReportsStats.js +137 -0
- package/dist/editors/builder-team-admin/components/Files.d.ts +3 -0
- package/dist/editors/builder-team-admin/components/Files.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/Files.js +12 -0
- package/dist/editors/builder-team-admin/components/FolderTree.d.ts +14 -0
- package/dist/editors/builder-team-admin/components/FolderTree.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/FolderTree.js +209 -0
- package/dist/editors/builder-team-admin/components/Folders.d.ts +3 -0
- package/dist/editors/builder-team-admin/components/Folders.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/Folders.js +12 -0
- package/dist/editors/builder-team-admin/components/NavigationBreadcrumbs.d.ts +3 -0
- package/dist/editors/builder-team-admin/components/NavigationBreadcrumbs.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/NavigationBreadcrumbs.js +6 -0
- package/dist/editors/builder-team-admin/components/expense-reports.d.ts +2 -0
- package/dist/editors/builder-team-admin/components/expense-reports.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/expense-reports.js +250 -0
- package/dist/editors/builder-team-admin/components/overview/ProfileHeader.d.ts +10 -0
- package/dist/editors/builder-team-admin/components/overview/ProfileHeader.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/overview/ProfileHeader.js +24 -0
- package/dist/editors/builder-team-admin/components/overview/SubscriptionsStats.d.ts +15 -0
- package/dist/editors/builder-team-admin/components/overview/SubscriptionsStats.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/overview/SubscriptionsStats.js +61 -0
- package/dist/editors/builder-team-admin/components/overview/TeamMembersOverview.d.ts +10 -0
- package/dist/editors/builder-team-admin/components/overview/TeamMembersOverview.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/overview/TeamMembersOverview.js +97 -0
- package/dist/editors/builder-team-admin/components/team-members.d.ts +2 -0
- package/dist/editors/builder-team-admin/components/team-members.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/components/team-members.js +200 -0
- package/dist/editors/builder-team-admin/config.d.ts +4 -0
- package/dist/editors/builder-team-admin/config.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/config.js +10 -0
- package/dist/editors/builder-team-admin/editor.d.ts +4 -0
- package/dist/editors/builder-team-admin/editor.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/editor.js +11 -0
- package/dist/editors/builder-team-admin/module.d.ts +3 -0
- package/dist/editors/builder-team-admin/module.d.ts.map +1 -0
- package/dist/editors/builder-team-admin/module.js +10 -0
- package/dist/editors/builders/editor.d.ts +3 -0
- package/dist/editors/builders/editor.d.ts.map +1 -0
- package/dist/editors/builders/editor.js +204 -0
- package/dist/editors/builders/module.d.ts +4 -0
- package/dist/editors/builders/module.d.ts.map +1 -0
- package/dist/editors/builders/module.js +10 -0
- package/dist/editors/editors.d.ts +3 -0
- package/dist/editors/editors.d.ts.map +1 -0
- package/dist/editors/editors.js +8 -0
- package/dist/editors/expense-report/components/AddBillingStatementModal.d.ts +11 -0
- package/dist/editors/expense-report/components/AddBillingStatementModal.d.ts.map +1 -0
- package/dist/editors/expense-report/components/AddBillingStatementModal.js +195 -0
- package/dist/editors/expense-report/components/AggregatedExpensesTable.d.ts +11 -0
- package/dist/editors/expense-report/components/AggregatedExpensesTable.d.ts.map +1 -0
- package/dist/editors/expense-report/components/AggregatedExpensesTable.js +388 -0
- package/dist/editors/expense-report/components/ExpenseReportPDF.d.ts +10 -0
- package/dist/editors/expense-report/components/ExpenseReportPDF.d.ts.map +1 -0
- package/dist/editors/expense-report/components/ExpenseReportPDF.js +287 -0
- package/dist/editors/expense-report/components/ExpenseReportTransactionsTable.d.ts +14 -0
- package/dist/editors/expense-report/components/ExpenseReportTransactionsTable.d.ts.map +1 -0
- package/dist/editors/expense-report/components/ExpenseReportTransactionsTable.js +64 -0
- package/dist/editors/expense-report/components/WalletsTable.d.ts +12 -0
- package/dist/editors/expense-report/components/WalletsTable.d.ts.map +1 -0
- package/dist/editors/expense-report/components/WalletsTable.js +456 -0
- package/dist/editors/expense-report/config.d.ts +3 -0
- package/dist/editors/expense-report/config.d.ts.map +1 -0
- package/dist/editors/expense-report/config.js +3 -0
- package/dist/editors/expense-report/editor.d.ts +2 -0
- package/dist/editors/expense-report/editor.d.ts.map +1 -0
- package/dist/editors/expense-report/editor.js +107 -0
- package/dist/editors/expense-report/hooks/useSyncWallet.d.ts +5 -0
- package/dist/editors/expense-report/hooks/useSyncWallet.d.ts.map +1 -0
- package/dist/editors/expense-report/hooks/useSyncWallet.js +150 -0
- package/dist/editors/expense-report/hooks/useWalletSync.d.ts +9 -0
- package/dist/editors/expense-report/hooks/useWalletSync.d.ts.map +1 -0
- package/dist/editors/expense-report/hooks/useWalletSync.js +78 -0
- package/dist/editors/expense-report/module.d.ts +3 -0
- package/dist/editors/expense-report/module.d.ts.map +1 -0
- package/dist/editors/expense-report/module.js +9 -0
- package/dist/editors/index.d.ts +4 -0
- package/dist/editors/index.d.ts.map +1 -0
- package/dist/editors/index.js +3 -0
- package/dist/editors/service-subscriptions-editor/components/AddCategoryModal.d.ts +7 -0
- package/dist/editors/service-subscriptions-editor/components/AddCategoryModal.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/AddCategoryModal.js +39 -0
- package/dist/editors/service-subscriptions-editor/components/AddSubscriptionModal.d.ts +10 -0
- package/dist/editors/service-subscriptions-editor/components/AddSubscriptionModal.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/AddSubscriptionModal.js +64 -0
- package/dist/editors/service-subscriptions-editor/components/AddVendorModal.d.ts +7 -0
- package/dist/editors/service-subscriptions-editor/components/AddVendorModal.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/AddVendorModal.js +43 -0
- package/dist/editors/service-subscriptions-editor/components/CategoriesList.d.ts +8 -0
- package/dist/editors/service-subscriptions-editor/components/CategoriesList.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/CategoriesList.js +23 -0
- package/dist/editors/service-subscriptions-editor/components/EditName.d.ts +3 -0
- package/dist/editors/service-subscriptions-editor/components/EditName.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/EditName.js +31 -0
- package/dist/editors/service-subscriptions-editor/components/StatsOverview.d.ts +8 -0
- package/dist/editors/service-subscriptions-editor/components/StatsOverview.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/StatsOverview.js +32 -0
- package/dist/editors/service-subscriptions-editor/components/SubscriptionsList.d.ts +10 -0
- package/dist/editors/service-subscriptions-editor/components/SubscriptionsList.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/SubscriptionsList.js +88 -0
- package/dist/editors/service-subscriptions-editor/components/VendorsList.d.ts +8 -0
- package/dist/editors/service-subscriptions-editor/components/VendorsList.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/components/VendorsList.js +23 -0
- package/dist/editors/service-subscriptions-editor/editor.d.ts +2 -0
- package/dist/editors/service-subscriptions-editor/editor.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/editor.js +60 -0
- package/dist/editors/service-subscriptions-editor/module.d.ts +4 -0
- package/dist/editors/service-subscriptions-editor/module.d.ts.map +1 -0
- package/dist/editors/service-subscriptions-editor/module.js +10 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/package.json +119 -0
- package/dist/powerhouse.manifest.json +27 -0
- package/dist/processors/index.d.ts +2 -0
- package/dist/processors/index.d.ts.map +1 -0
- package/dist/processors/index.js +1 -0
- package/dist/style.css +3948 -0
- package/dist/subgraphs/index.d.ts +2 -0
- package/dist/subgraphs/index.d.ts.map +1 -0
- package/dist/subgraphs/index.js +1 -0
- package/dist/subgraphs/service-subscriptions/index.d.ts +11 -0
- package/dist/subgraphs/service-subscriptions/index.d.ts.map +1 -0
- package/dist/subgraphs/service-subscriptions/index.js +11 -0
- package/dist/subgraphs/service-subscriptions/resolvers.d.ts +3 -0
- package/dist/subgraphs/service-subscriptions/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/service-subscriptions/resolvers.js +228 -0
- package/dist/subgraphs/service-subscriptions/schema.d.ts +3 -0
- package/dist/subgraphs/service-subscriptions/schema.d.ts.map +1 -0
- package/dist/subgraphs/service-subscriptions/schema.js +193 -0
- package/dist/vite.config.d.ts +3 -0
- package/dist/vite.config.d.ts.map +1 -0
- package/dist/vite.config.js +13 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +15 -0
- package/package.json +119 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FileItem } from "@powerhousedao/design-system/connect";
|
|
3
|
+
import { useNodesInSelectedDriveOrFolder, isFileNodeKind, } from "@powerhousedao/reactor-browser";
|
|
4
|
+
/** Shows the files in the selected drive or folder */
|
|
5
|
+
export function Files() {
|
|
6
|
+
const nodes = useNodesInSelectedDriveOrFolder();
|
|
7
|
+
const fileNodes = nodes.filter((n) => isFileNodeKind(n));
|
|
8
|
+
const hasFiles = fileNodes.length > 0;
|
|
9
|
+
if (!hasFiles)
|
|
10
|
+
return null;
|
|
11
|
+
return (_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))) })] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Custom view types that don't correspond to document models */
|
|
2
|
+
export type CustomView = "team-members" | "expense-reports" | null;
|
|
3
|
+
type FolderTreeProps = {
|
|
4
|
+
onCustomViewChange?: (view: CustomView) => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Sidebar navigation component with hardcoded navigation sections.
|
|
8
|
+
* Displays Builder Profile, Team Members, Service Subscriptions, and Expense Reports.
|
|
9
|
+
* Clicking a section navigates to an existing document or creates one if none exists.
|
|
10
|
+
* The Expense Reports section dynamically shows folder contents as child nodes.
|
|
11
|
+
*/
|
|
12
|
+
export declare function FolderTree({ onCustomViewChange }: FolderTreeProps): import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=FolderTree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FolderTree.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/FolderTree.tsx"],"names":[],"mappings":"AAoBA,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC;AA4FnE,KAAK,eAAe,GAAG;IACrB,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,kBAAkB,EAAE,EAAE,eAAe,kDAmKjE"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Sidebar, SidebarProvider, } from "@powerhousedao/document-engineering";
|
|
3
|
+
import { setSelectedNode, showCreateDocumentModal, useDocumentsInSelectedDrive, useSelectedDrive, isFolderNodeKind, isFileNodeKind, } from "@powerhousedao/reactor-browser";
|
|
4
|
+
import { CreditCard, FileText, User, Users, Folder } from "lucide-react";
|
|
5
|
+
import { useMemo, useState } from "react";
|
|
6
|
+
const ICON_SIZE = 16;
|
|
7
|
+
const EXPENSE_REPORTS_FOLDER_NAME = "Expense Reports";
|
|
8
|
+
/**
|
|
9
|
+
* Maps navigation section IDs to their corresponding document types.
|
|
10
|
+
* When a section is clicked, the corresponding document type will be created or navigated to.
|
|
11
|
+
* A null value indicates the section uses a custom view instead.
|
|
12
|
+
*/
|
|
13
|
+
const SECTION_TO_DOCUMENT_TYPE = {
|
|
14
|
+
"builder-profile": "powerhouse/builder-profile",
|
|
15
|
+
"team-members": null, // Uses custom TeamMembers component
|
|
16
|
+
"service-subscriptions": "powerhouse/service-subscriptions",
|
|
17
|
+
"expense-reports": null, // Uses custom ExpenseReports component
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Maps navigation section IDs to custom view identifiers.
|
|
21
|
+
*/
|
|
22
|
+
const SECTION_TO_CUSTOM_VIEW = {
|
|
23
|
+
"team-members": "team-members",
|
|
24
|
+
"expense-reports": "expense-reports",
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Base navigation sections for the Builder Team Admin drive.
|
|
28
|
+
* The expense-reports section will have dynamic children added based on folder contents.
|
|
29
|
+
*/
|
|
30
|
+
const BASE_NAVIGATION_SECTIONS = [
|
|
31
|
+
{
|
|
32
|
+
id: "builder-profile",
|
|
33
|
+
title: "Builder Profile",
|
|
34
|
+
icon: _jsx(User, { size: ICON_SIZE }),
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: "team-members",
|
|
38
|
+
title: "Team Members",
|
|
39
|
+
icon: _jsx(Users, { size: ICON_SIZE }),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "service-subscriptions",
|
|
43
|
+
title: "Service Subscriptions",
|
|
44
|
+
icon: _jsx(CreditCard, { size: ICON_SIZE }),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "expense-reports",
|
|
48
|
+
title: "Expense Reports",
|
|
49
|
+
icon: _jsx(FileText, { size: ICON_SIZE }),
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* Recursively builds SidebarNode children from folder contents.
|
|
54
|
+
* Folders get folder icons, files get document icons.
|
|
55
|
+
*/
|
|
56
|
+
function buildSidebarNodesFromFolder(parentId, allNodes) {
|
|
57
|
+
// Find all nodes that are direct children of the parent folder
|
|
58
|
+
const childNodes = allNodes.filter((node) => {
|
|
59
|
+
if (isFolderNodeKind(node)) {
|
|
60
|
+
return node.parentFolder === parentId;
|
|
61
|
+
}
|
|
62
|
+
if (isFileNodeKind(node)) {
|
|
63
|
+
return node.parentFolder === parentId;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
});
|
|
67
|
+
return childNodes.map((node) => {
|
|
68
|
+
const isFolder = isFolderNodeKind(node);
|
|
69
|
+
const sidebarNode = {
|
|
70
|
+
id: node.id,
|
|
71
|
+
title: node.name,
|
|
72
|
+
icon: isFolder ? (_jsx(Folder, { size: ICON_SIZE })) : (_jsx(FileText, { size: ICON_SIZE })),
|
|
73
|
+
};
|
|
74
|
+
// Recursively add children for folders
|
|
75
|
+
if (isFolder) {
|
|
76
|
+
const children = buildSidebarNodesFromFolder(node.id, allNodes);
|
|
77
|
+
if (children.length > 0) {
|
|
78
|
+
sidebarNode.children = children;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return sidebarNode;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Sidebar navigation component with hardcoded navigation sections.
|
|
86
|
+
* Displays Builder Profile, Team Members, Service Subscriptions, and Expense Reports.
|
|
87
|
+
* Clicking a section navigates to an existing document or creates one if none exists.
|
|
88
|
+
* The Expense Reports section dynamically shows folder contents as child nodes.
|
|
89
|
+
*/
|
|
90
|
+
export function FolderTree({ onCustomViewChange }) {
|
|
91
|
+
const [activeNodeId, setActiveNodeId] = useState(BASE_NAVIGATION_SECTIONS[0].id);
|
|
92
|
+
const documentsInDrive = useDocumentsInSelectedDrive();
|
|
93
|
+
const [driveDocument] = useSelectedDrive();
|
|
94
|
+
// Find the "Expense Reports" folder in the drive
|
|
95
|
+
const expenseReportsFolder = useMemo(() => {
|
|
96
|
+
if (!driveDocument)
|
|
97
|
+
return null;
|
|
98
|
+
const nodes = driveDocument.state.global.nodes;
|
|
99
|
+
return nodes.find((node) => isFolderNodeKind(node) && node.name === EXPENSE_REPORTS_FOLDER_NAME);
|
|
100
|
+
}, [driveDocument]);
|
|
101
|
+
// Build a set of all node IDs that are within the Expense Reports folder tree
|
|
102
|
+
const expenseReportsNodeIds = useMemo(() => {
|
|
103
|
+
const nodeIds = new Set();
|
|
104
|
+
if (!expenseReportsFolder || !driveDocument)
|
|
105
|
+
return nodeIds;
|
|
106
|
+
const allNodes = driveDocument.state.global.nodes;
|
|
107
|
+
// Recursively collect all node IDs within the Expense Reports folder
|
|
108
|
+
const collectNodeIds = (parentId) => {
|
|
109
|
+
nodeIds.add(parentId);
|
|
110
|
+
for (const node of allNodes) {
|
|
111
|
+
if (isFolderNodeKind(node) && node.parentFolder === parentId) {
|
|
112
|
+
collectNodeIds(node.id);
|
|
113
|
+
}
|
|
114
|
+
else if (isFileNodeKind(node) && node.parentFolder === parentId) {
|
|
115
|
+
nodeIds.add(node.id);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
collectNodeIds(expenseReportsFolder.id);
|
|
120
|
+
return nodeIds;
|
|
121
|
+
}, [expenseReportsFolder, driveDocument]);
|
|
122
|
+
// Build navigation sections with dynamic expense reports children
|
|
123
|
+
const navigationSections = useMemo(() => {
|
|
124
|
+
if (!expenseReportsFolder || !driveDocument) {
|
|
125
|
+
return BASE_NAVIGATION_SECTIONS;
|
|
126
|
+
}
|
|
127
|
+
const allNodes = driveDocument.state.global.nodes;
|
|
128
|
+
const expenseReportsChildren = buildSidebarNodesFromFolder(expenseReportsFolder.id, allNodes);
|
|
129
|
+
// Replace the expense-reports section with one that has children
|
|
130
|
+
return BASE_NAVIGATION_SECTIONS.map((section) => {
|
|
131
|
+
if (section.id === "expense-reports" &&
|
|
132
|
+
expenseReportsChildren.length > 0) {
|
|
133
|
+
return {
|
|
134
|
+
...section,
|
|
135
|
+
children: expenseReportsChildren,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return section;
|
|
139
|
+
});
|
|
140
|
+
}, [expenseReportsFolder, driveDocument]);
|
|
141
|
+
// Check if builder profile document exists - don't show sidebar if it doesn't
|
|
142
|
+
const hasBuilderProfile = useMemo(() => {
|
|
143
|
+
if (!documentsInDrive)
|
|
144
|
+
return false;
|
|
145
|
+
return documentsInDrive.some((doc) => doc.header.documentType === "powerhouse/builder-profile");
|
|
146
|
+
}, [documentsInDrive]);
|
|
147
|
+
// Create a map of document type to existing document (first one found)
|
|
148
|
+
const existingDocumentsByType = useMemo(() => {
|
|
149
|
+
const map = {};
|
|
150
|
+
if (!documentsInDrive)
|
|
151
|
+
return map;
|
|
152
|
+
for (const doc of documentsInDrive) {
|
|
153
|
+
const docType = doc.header.documentType;
|
|
154
|
+
// Only store the first document of each type (singleton pattern)
|
|
155
|
+
if (!map[docType]) {
|
|
156
|
+
map[docType] = doc.header.id;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return map;
|
|
160
|
+
}, [documentsInDrive]);
|
|
161
|
+
// Don't render if no builder profile exists
|
|
162
|
+
if (!hasBuilderProfile) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const handleActiveNodeChange = (node) => {
|
|
166
|
+
setActiveNodeId(node.id);
|
|
167
|
+
// Check if this is a child node within the Expense Reports folder
|
|
168
|
+
if (expenseReportsNodeIds.has(node.id)) {
|
|
169
|
+
// Check if it's a folder or a document
|
|
170
|
+
const driveNode = driveDocument?.state.global.nodes.find((n) => n.id === node.id);
|
|
171
|
+
if (driveNode && isFolderNodeKind(driveNode)) {
|
|
172
|
+
// It's a folder - navigate to it within the expense reports view
|
|
173
|
+
onCustomViewChange?.("expense-reports");
|
|
174
|
+
setSelectedNode(node.id);
|
|
175
|
+
}
|
|
176
|
+
else if (driveNode && isFileNodeKind(driveNode)) {
|
|
177
|
+
// It's a document - open the document editor
|
|
178
|
+
onCustomViewChange?.(null);
|
|
179
|
+
setSelectedNode(node.id);
|
|
180
|
+
}
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Check if this section has a custom view
|
|
184
|
+
const customView = SECTION_TO_CUSTOM_VIEW[node.id];
|
|
185
|
+
if (customView) {
|
|
186
|
+
onCustomViewChange?.(customView);
|
|
187
|
+
setSelectedNode(""); // Deselect any document so custom view can render
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Clear custom view when navigating to a document
|
|
191
|
+
onCustomViewChange?.(null);
|
|
192
|
+
const documentType = SECTION_TO_DOCUMENT_TYPE[node.id];
|
|
193
|
+
if (!documentType)
|
|
194
|
+
return;
|
|
195
|
+
const existingDocId = existingDocumentsByType[documentType];
|
|
196
|
+
if (existingDocId) {
|
|
197
|
+
// Navigate to the existing document
|
|
198
|
+
setSelectedNode(existingDocId);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
// Create a new document
|
|
202
|
+
showCreateDocumentModal(documentType);
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
return (_jsx(SidebarProvider, { nodes: navigationSections, children: _jsx(Sidebar, { className: "pt-1", nodes: navigationSections, activeNodeId: activeNodeId, onActiveNodeChange: handleActiveNodeChange, sidebarTitle: "Builder Team Admin", showSearchBar: false, resizable: true, allowPinning: false, showStatusFilter: false, initialWidth: 256, defaultLevel: 2, handleOnTitleClick: () => {
|
|
206
|
+
onCustomViewChange?.(null);
|
|
207
|
+
setSelectedNode("");
|
|
208
|
+
} }) }));
|
|
209
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Folders.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/Folders.tsx"],"names":[],"mappings":"AAMA,wDAAwD;AACxD,wBAAgB,OAAO,mDAgBtB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FolderItem } from "@powerhousedao/design-system/connect";
|
|
3
|
+
import { useNodesInSelectedDriveOrFolder, isFolderNodeKind, } from "@powerhousedao/reactor-browser";
|
|
4
|
+
/** Shows the folders in the selected drive or folder */
|
|
5
|
+
export function Folders() {
|
|
6
|
+
const nodes = useNodesInSelectedDriveOrFolder();
|
|
7
|
+
const folderNodes = nodes.filter((n) => isFolderNodeKind(n));
|
|
8
|
+
const hasFolders = folderNodes.length > 0;
|
|
9
|
+
if (!hasFolders)
|
|
10
|
+
return null;
|
|
11
|
+
return (_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))) })] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationBreadcrumbs.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/NavigationBreadcrumbs.tsx"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,wBAAgB,qBAAqB,4CAMpC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Breadcrumbs } from "@powerhousedao/design-system/connect";
|
|
3
|
+
/** Shows the navigation breadcrumbs for the selected drive or folder */
|
|
4
|
+
export function NavigationBreadcrumbs() {
|
|
5
|
+
return (_jsx("div", { className: "border-b border-gray-200 pb-3 space-y-3", children: _jsx(Breadcrumbs, {}) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expense-reports.d.ts","sourceRoot":"","sources":["../../../../editors/builder-team-admin/components/expense-reports.tsx"],"names":[],"mappings":"AAqJA,wBAAgB,cAAc,4CAiS7B"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FileItem } from "@powerhousedao/design-system/connect";
|
|
3
|
+
import { FolderItem } from "@powerhousedao/design-system/connect";
|
|
4
|
+
import { isFolderNodeKind, isFileNodeKind, addFolder, useSelectedDrive, setSelectedNode, useSelectedNodePath, useNodesInSelectedDriveOrFolder, useSelectedDriveId, useUserPermissions, useDocumentsInSelectedDrive, useNodeActions, } from "@powerhousedao/reactor-browser";
|
|
5
|
+
import { useMemo, useEffect, useRef, useState, Fragment } from "react";
|
|
6
|
+
import { Plus } from "lucide-react";
|
|
7
|
+
import { ExpenseReportsStats } from "./ExpenseReportsStats.js";
|
|
8
|
+
const EXPENSE_REPORTS_FOLDER_NAME = "Expense Reports";
|
|
9
|
+
/**
|
|
10
|
+
* Simple inline input for creating new folders.
|
|
11
|
+
*/
|
|
12
|
+
function FolderNameInput({ onSubmit, onCancel, }) {
|
|
13
|
+
const [value, setValue] = useState("New Folder");
|
|
14
|
+
const inputRef = useRef(null);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
inputRef.current?.focus();
|
|
17
|
+
inputRef.current?.select();
|
|
18
|
+
}, []);
|
|
19
|
+
const handleKeyDown = (e) => {
|
|
20
|
+
if (e.key === "Enter") {
|
|
21
|
+
e.preventDefault();
|
|
22
|
+
if (value.trim()) {
|
|
23
|
+
onSubmit(value.trim());
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (e.key === "Escape") {
|
|
27
|
+
onCancel();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
return (_jsx("input", { ref: inputRef, type: "text", value: value, onChange: (e) => setValue(e.target.value), onKeyDown: handleKeyDown, onBlur: () => {
|
|
31
|
+
if (value.trim()) {
|
|
32
|
+
onSubmit(value.trim());
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
onCancel();
|
|
36
|
+
}
|
|
37
|
+
}, className: "text-gray-800 bg-transparent border-b border-gray-400 outline-none px-1 py-0.5 text-sm min-w-[100px]", placeholder: "New Folder" }));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Custom breadcrumbs component that treats "Expense Reports" folder as the root.
|
|
41
|
+
* Only shows path from "Expense Reports" folder onwards.
|
|
42
|
+
* Includes folder creation functionality.
|
|
43
|
+
*/
|
|
44
|
+
function ExpenseReportsBreadcrumbs({ rootFolderId }) {
|
|
45
|
+
const selectedNodePath = useSelectedNodePath();
|
|
46
|
+
const selectedDriveId = useSelectedDriveId();
|
|
47
|
+
const { isAllowedToCreateDocuments } = useUserPermissions();
|
|
48
|
+
const [isCreating, setIsCreating] = useState(false);
|
|
49
|
+
// Find the index of the root folder in the path
|
|
50
|
+
const rootIndex = selectedNodePath.findIndex((node) => node.id === rootFolderId);
|
|
51
|
+
// Get the path starting from (and including) the root folder
|
|
52
|
+
const visiblePath = rootIndex >= 0 ? selectedNodePath.slice(rootIndex) : selectedNodePath;
|
|
53
|
+
const handleAddNew = () => {
|
|
54
|
+
setIsCreating(true);
|
|
55
|
+
};
|
|
56
|
+
const handleSubmit = (name) => {
|
|
57
|
+
if (!isAllowedToCreateDocuments || !selectedDriveId)
|
|
58
|
+
return;
|
|
59
|
+
const parentFolderId = selectedNodePath.at(-1)?.id;
|
|
60
|
+
addFolder(selectedDriveId, name, parentFolderId)
|
|
61
|
+
.then((node) => {
|
|
62
|
+
if (node) {
|
|
63
|
+
setSelectedNode(node);
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
.catch((error) => {
|
|
67
|
+
console.error(error);
|
|
68
|
+
})
|
|
69
|
+
.finally(() => {
|
|
70
|
+
setIsCreating(false);
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
const handleCancel = () => {
|
|
74
|
+
setIsCreating(false);
|
|
75
|
+
};
|
|
76
|
+
return (_jsxs("div", { className: "flex h-9 flex-row items-center gap-2 text-gray-500 border-b border-gray-200 pb-3", children: [visiblePath.map((node) => (_jsxs(Fragment, { children: [_jsx("div", { className: "transition-colors last-of-type:text-gray-800 hover:text-gray-800 cursor-pointer", onClick: () => setSelectedNode(node.id), role: "button", children: node.name }), _jsx("span", { children: "/" })] }, node.id))), isAllowedToCreateDocuments &&
|
|
77
|
+
(isCreating ? (_jsx(FolderNameInput, { onSubmit: handleSubmit, onCancel: handleCancel })) : (_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: handleAddNew, children: [_jsx(Plus, { size: 14 }), "Add new"] })))] }));
|
|
78
|
+
}
|
|
79
|
+
export function ExpenseReports() {
|
|
80
|
+
const [driveDocument] = useSelectedDrive();
|
|
81
|
+
const hasCreatedFolder = useRef(false);
|
|
82
|
+
const hasNavigatedToFolder = useRef(false);
|
|
83
|
+
const selectedNodePath = useSelectedNodePath();
|
|
84
|
+
const nodesInCurrentFolder = useNodesInSelectedDriveOrFolder();
|
|
85
|
+
const documentsInDrive = useDocumentsInSelectedDrive();
|
|
86
|
+
// Find the "Expense Reports" folder in the drive
|
|
87
|
+
const expenseReportsFolder = useMemo(() => {
|
|
88
|
+
if (!driveDocument)
|
|
89
|
+
return null;
|
|
90
|
+
const nodes = driveDocument.state.global.nodes;
|
|
91
|
+
return nodes.find((node) => isFolderNodeKind(node) && node.name === EXPENSE_REPORTS_FOLDER_NAME);
|
|
92
|
+
}, [driveDocument]);
|
|
93
|
+
// Build a set of all node IDs within the Expense Reports folder tree
|
|
94
|
+
const expenseReportsFolderNodeIds = useMemo(() => {
|
|
95
|
+
const nodeIds = new Set();
|
|
96
|
+
if (!expenseReportsFolder || !driveDocument)
|
|
97
|
+
return nodeIds;
|
|
98
|
+
const allNodes = driveDocument.state.global.nodes;
|
|
99
|
+
// Recursively collect all node IDs within the Expense Reports folder
|
|
100
|
+
const collectNodeIds = (parentId) => {
|
|
101
|
+
nodeIds.add(parentId);
|
|
102
|
+
for (const node of allNodes) {
|
|
103
|
+
if (isFolderNodeKind(node) && node.parentFolder === parentId) {
|
|
104
|
+
collectNodeIds(node.id);
|
|
105
|
+
}
|
|
106
|
+
else if (isFileNodeKind(node) && node.parentFolder === parentId) {
|
|
107
|
+
nodeIds.add(node.id);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
collectNodeIds(expenseReportsFolder.id);
|
|
112
|
+
return nodeIds;
|
|
113
|
+
}, [expenseReportsFolder, driveDocument]);
|
|
114
|
+
// Filter expense report documents that are inside the Expense Reports folder
|
|
115
|
+
const expenseReportDocuments = useMemo(() => {
|
|
116
|
+
if (!documentsInDrive || !driveDocument)
|
|
117
|
+
return [];
|
|
118
|
+
// Get file nodes for expense reports in the Expense Reports folder
|
|
119
|
+
const expenseReportFileNodes = driveDocument.state.global.nodes.filter((node) => isFileNodeKind(node) &&
|
|
120
|
+
node.documentType === "powerhouse/expense-report" &&
|
|
121
|
+
expenseReportsFolderNodeIds.has(node.id));
|
|
122
|
+
// Map file node IDs to their documents
|
|
123
|
+
const fileNodeIds = new Set(expenseReportFileNodes.map((n) => n.id));
|
|
124
|
+
return documentsInDrive.filter((doc) => doc.header.documentType === "powerhouse/expense-report" &&
|
|
125
|
+
fileNodeIds.has(doc.header.id));
|
|
126
|
+
}, [documentsInDrive, driveDocument, expenseReportsFolderNodeIds]);
|
|
127
|
+
// Create folder if it doesn't exist
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
if (!driveDocument || expenseReportsFolder || hasCreatedFolder.current)
|
|
130
|
+
return;
|
|
131
|
+
hasCreatedFolder.current = true;
|
|
132
|
+
const driveId = driveDocument.header.id;
|
|
133
|
+
void addFolder(driveId, EXPENSE_REPORTS_FOLDER_NAME);
|
|
134
|
+
}, [driveDocument, expenseReportsFolder]);
|
|
135
|
+
// Navigate to the folder when it exists (only once on mount)
|
|
136
|
+
useEffect(() => {
|
|
137
|
+
if (expenseReportsFolder && !hasNavigatedToFolder.current) {
|
|
138
|
+
hasNavigatedToFolder.current = true;
|
|
139
|
+
setSelectedNode(expenseReportsFolder.id);
|
|
140
|
+
}
|
|
141
|
+
}, [expenseReportsFolder]);
|
|
142
|
+
// Check if we're currently within the Expense Reports folder tree
|
|
143
|
+
const isWithinExpenseReports = useMemo(() => {
|
|
144
|
+
if (!expenseReportsFolder)
|
|
145
|
+
return false;
|
|
146
|
+
return selectedNodePath.some((node) => node.id === expenseReportsFolder.id);
|
|
147
|
+
}, [selectedNodePath, expenseReportsFolder]);
|
|
148
|
+
// If user navigated outside Expense Reports folder, bring them back
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (expenseReportsFolder &&
|
|
151
|
+
!isWithinExpenseReports &&
|
|
152
|
+
hasNavigatedToFolder.current) {
|
|
153
|
+
setSelectedNode(expenseReportsFolder.id);
|
|
154
|
+
}
|
|
155
|
+
}, [expenseReportsFolder, isWithinExpenseReports]);
|
|
156
|
+
// Track which documents have been processed for auto-placement
|
|
157
|
+
const processedDocsRef = useRef(new Set());
|
|
158
|
+
// Get node actions for moving files
|
|
159
|
+
const { onMoveNode } = useNodeActions();
|
|
160
|
+
// Get year folders that exist directly under the Expense Reports folder
|
|
161
|
+
const yearFolders = useMemo(() => {
|
|
162
|
+
if (!driveDocument || !expenseReportsFolder)
|
|
163
|
+
return new Map();
|
|
164
|
+
const folders = new Map(); // year string -> folder node
|
|
165
|
+
for (const node of driveDocument.state.global.nodes) {
|
|
166
|
+
if (isFolderNodeKind(node) &&
|
|
167
|
+
node.parentFolder === expenseReportsFolder.id &&
|
|
168
|
+
/^\d{4}$/.test(node.name) // folder name is a 4-digit year
|
|
169
|
+
) {
|
|
170
|
+
folders.set(node.name, node);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return folders;
|
|
174
|
+
}, [driveDocument, expenseReportsFolder]);
|
|
175
|
+
// Auto-place expense reports into year folders based on periodStart
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
if (!driveDocument || !expenseReportsFolder || !documentsInDrive)
|
|
178
|
+
return;
|
|
179
|
+
const driveId = driveDocument.header.id;
|
|
180
|
+
const allNodes = driveDocument.state.global.nodes;
|
|
181
|
+
// Find expense report file nodes that are directly in the Expense Reports root folder
|
|
182
|
+
const expenseReportNodesInRoot = allNodes.filter((node) => isFileNodeKind(node) &&
|
|
183
|
+
node.documentType === "powerhouse/expense-report" &&
|
|
184
|
+
node.parentFolder === expenseReportsFolder.id);
|
|
185
|
+
// Process each expense report in the root folder
|
|
186
|
+
for (const fileNode of expenseReportNodesInRoot) {
|
|
187
|
+
// Skip if already processed
|
|
188
|
+
if (processedDocsRef.current.has(fileNode.id))
|
|
189
|
+
continue;
|
|
190
|
+
// Find the corresponding document to get periodStart
|
|
191
|
+
const doc = documentsInDrive.find((d) => d.header.documentType === "powerhouse/expense-report" &&
|
|
192
|
+
d.header.id === fileNode.id);
|
|
193
|
+
if (!doc)
|
|
194
|
+
continue;
|
|
195
|
+
const periodStart = doc.state.global.periodStart;
|
|
196
|
+
if (!periodStart) {
|
|
197
|
+
// No period defined - leave in root folder (this signals something is wrong)
|
|
198
|
+
processedDocsRef.current.add(fileNode.id);
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
// Extract year from periodStart
|
|
202
|
+
const year = new Date(periodStart).getFullYear().toString();
|
|
203
|
+
// Mark as processed immediately to prevent duplicate processing
|
|
204
|
+
processedDocsRef.current.add(fileNode.id);
|
|
205
|
+
// Check if year folder exists
|
|
206
|
+
const existingYearFolder = yearFolders.get(year);
|
|
207
|
+
if (existingYearFolder) {
|
|
208
|
+
// Year folder exists - move the document there
|
|
209
|
+
onMoveNode(fileNode, existingYearFolder).catch((error) => {
|
|
210
|
+
console.error(`Failed to move expense report to ${year} folder:`, error);
|
|
211
|
+
// Remove from processed so it can be retried
|
|
212
|
+
processedDocsRef.current.delete(fileNode.id);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
// Create year folder first, then move the document
|
|
217
|
+
addFolder(driveId, year, expenseReportsFolder.id)
|
|
218
|
+
.then((newFolder) => {
|
|
219
|
+
if (newFolder) {
|
|
220
|
+
// Move the document to the new year folder
|
|
221
|
+
return onMoveNode(fileNode, newFolder);
|
|
222
|
+
}
|
|
223
|
+
})
|
|
224
|
+
.catch((error) => {
|
|
225
|
+
console.error(`Failed to create ${year} folder or move expense report:`, error);
|
|
226
|
+
// Remove from processed so it can be retried
|
|
227
|
+
processedDocsRef.current.delete(fileNode.id);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}, [
|
|
232
|
+
driveDocument,
|
|
233
|
+
expenseReportsFolder,
|
|
234
|
+
documentsInDrive,
|
|
235
|
+
yearFolders,
|
|
236
|
+
onMoveNode,
|
|
237
|
+
]);
|
|
238
|
+
// Show loading state while folder is being created
|
|
239
|
+
if (!expenseReportsFolder) {
|
|
240
|
+
return (_jsx("div", { className: "flex items-center justify-center h-64", children: _jsx("div", { className: "text-gray-500", children: "Setting up Expense Reports folder..." }) }));
|
|
241
|
+
}
|
|
242
|
+
// Get folder and file nodes from current selection
|
|
243
|
+
const folderNodes = nodesInCurrentFolder.filter((n) => isFolderNodeKind(n));
|
|
244
|
+
const fileNodes = nodesInCurrentFolder.filter((n) => isFileNodeKind(n));
|
|
245
|
+
const hasFolders = folderNodes.length > 0;
|
|
246
|
+
const hasFiles = fileNodes.length > 0;
|
|
247
|
+
const isEmpty = !hasFolders && !hasFiles;
|
|
248
|
+
const hasExpenseReports = expenseReportDocuments.length > 0;
|
|
249
|
+
return (_jsxs("div", { children: [_jsx("div", { className: "text-2xl font-bold text-center mb-4", children: "Expense Reports" }), _jsxs("div", { className: "space-y-6 px-6", children: [hasExpenseReports && (_jsx(ExpenseReportsStats, { expenseReportDocuments: expenseReportDocuments })), _jsx(ExpenseReportsBreadcrumbs, { rootFolderId: expenseReportsFolder.id }), 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: _jsx("svg", { className: "w-16 h-16 mx-auto", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1, d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }) }), _jsx("p", { className: "text-gray-500 text-sm", children: "No expense reports yet. Add documents to this folder to get started." })] }))] })] }));
|
|
250
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BuilderProfileDocument } from "@powerhousedao/builder-profile/document-models/builder-profile";
|
|
2
|
+
type ProfileHeaderProps = {
|
|
3
|
+
builderProfileDoc: BuilderProfileDocument | null;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Hero section displaying the builder team profile with avatar and name.
|
|
7
|
+
*/
|
|
8
|
+
export declare function ProfileHeader({ builderProfileDoc }: ProfileHeaderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=ProfileHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileHeader.d.ts","sourceRoot":"","sources":["../../../../../editors/builder-team-admin/components/overview/ProfileHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAE7G,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,iBAAiB,EAAE,EAAE,kBAAkB,kDA2DtE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Hero section displaying the builder team profile with avatar and name.
|
|
4
|
+
*/
|
|
5
|
+
export function ProfileHeader({ builderProfileDoc }) {
|
|
6
|
+
if (!builderProfileDoc) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const { name, icon, slug } = builderProfileDoc.state.global;
|
|
10
|
+
const displayName = name || "Unnamed Team";
|
|
11
|
+
const initials = displayName
|
|
12
|
+
.split(" ")
|
|
13
|
+
.map((word) => word[0])
|
|
14
|
+
.join("")
|
|
15
|
+
.slice(0, 2)
|
|
16
|
+
.toUpperCase();
|
|
17
|
+
return (_jsxs("div", { className: "relative overflow-hidden rounded-2xl bg-gradient-to-br from-slate-50 via-indigo-50/40 to-blue-50/30 p-8 border border-slate-200/60", children: [_jsx("div", { className: "absolute -right-16 -top-16 h-48 w-48 rounded-full bg-gradient-to-br from-indigo-200/30 to-blue-200/30 blur-2xl" }), _jsx("div", { className: "absolute -bottom-12 -left-12 h-32 w-32 rounded-full bg-gradient-to-br from-slate-200/40 to-indigo-200/30 blur-xl" }), _jsxs("div", { className: "relative z-10 flex items-center gap-6", children: [_jsxs("div", { className: "relative", children: [icon ? (_jsx("img", { src: icon, alt: displayName, className: "h-20 w-20 rounded-2xl object-cover shadow-lg shadow-slate-300/50 ring-4 ring-white/80", onError: (e) => {
|
|
18
|
+
e.currentTarget.style.display = "none";
|
|
19
|
+
const fallback = e.currentTarget.nextElementSibling;
|
|
20
|
+
if (fallback) {
|
|
21
|
+
fallback.style.display = "flex";
|
|
22
|
+
}
|
|
23
|
+
} })) : null, _jsx("div", { className: `h-20 w-20 rounded-2xl bg-gradient-to-br from-indigo-500 to-blue-600 shadow-lg shadow-indigo-400/30 ring-4 ring-white/80 ${icon ? "hidden" : "flex"} items-center justify-center`, children: _jsx("span", { className: "text-2xl font-bold text-white", children: initials }) })] }), _jsxs("div", { children: [_jsx("h1", { className: "text-3xl font-bold tracking-tight text-slate-900", children: displayName }), slug && (_jsxs("p", { className: "mt-1 text-base font-medium text-slate-500", children: ["@", slug] }))] })] })] }));
|
|
24
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ServiceSubscription } from "@powerhousedao/builder-team-admin/document-models/service-subscriptions";
|
|
2
|
+
type SubscriptionsStatsProps = {
|
|
3
|
+
subscriptions: ServiceSubscription[];
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Displays subscription statistics in a 4-column card grid.
|
|
7
|
+
* Shows: Active count, Trial count, Monthly cost estimate, Seats usage.
|
|
8
|
+
*/
|
|
9
|
+
export declare function SubscriptionsStats({ subscriptions }: SubscriptionsStatsProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
/**
|
|
11
|
+
* Empty state placeholder when no subscriptions document exists.
|
|
12
|
+
*/
|
|
13
|
+
export declare function SubscriptionsEmptyState(): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=SubscriptionsStats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubscriptionsStats.d.ts","sourceRoot":"","sources":["../../../../../editors/builder-team-admin/components/overview/SubscriptionsStats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yEAAyE,CAAC;AAEnH,KAAK,uBAAuB,GAAG;IAC7B,aAAa,EAAE,mBAAmB,EAAE,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,EAAE,uBAAuB,2CA+E5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,4CA6BtC"}
|